Live, interactive inventory of every UI component. Each component is rendered with the exact same code used on our main website, ensuring perfect consistency.
Media playback with controls
Interactive buttons and actions
Status indicators and labels
Content containers
Arabic verse display with translation
Form elements and inputs
Navigation components
Alerts and status indicators
Structural layout elements
Interactive audio player with playback controls and progress tracking.
Full-featured audio player used throughout the MTWS website for Islamic content playback.

Masjid Tawheed Was-Sunnah
import AudioPlayer from '@/components/ui/AudioPlayer';
<AudioPlayer
src="/assets/general/A-Glimpse-into-the-Religion-of-Islam-Audiobook1.mp3"
title="A Glimpse into the Religion of Islam"
artist="Masjid Tawheed Was-Sunnah"
cover="/assets/general/eng-islam-audiobook.jpg"
/>Interactive buttons with various styles and states for different use cases.
Color-coded badge variants for status indicators and labels. Use Sandy Gold for upcoming events, Green for live/active, and the semantic variants for feedback states.
Six badge styles covering event status, alerts, and categorization.
import { Badge } from '@/components/ui/Badge'
<Badge variant="gold">Upcoming</Badge>
<Badge variant="green">Live</Badge>
<Badge variant="outline">Register</Badge>
<Badge variant="gray">Completed</Badge>
<Badge variant="red">Cancelled</Badge>
<Badge variant="blue">New</Badge>Badges used alongside card content to indicate event status.
Shaykh Rasheed Barbee ยท Dec 15
<div className="flex items-start gap-3">
<Badge variant="gold">Upcoming</Badge>
<div>
<h3 className="font-semibold">Understanding Tawheed</h3>
<p className="text-sm text-gray-600">Shaykh Rasheed Barbee ยท Dec 15</p>
</div>
</div>Flexible content containers with consistent styling and spacing.
Standard card layout with header, content, and footer.
This is the main content area of the card.
import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from '@/components/ui/Card';
import { Button } from '@/components/ui/Button';
<Card className="w-full max-w-md">
<CardHeader>
<CardTitle>Card Title</CardTitle>
<CardDescription>
Card description or subtitle goes here
</CardDescription>
</CardHeader>
<CardContent>
<p>This is the main content area of the card.</p>
</CardContent>
<CardFooter>
<Button>Action</Button>
</CardFooter>
</Card>Card styled for displaying seminar information.
<Card className="w-full max-w-sm">
<CardHeader>
<CardTitle>Understanding Tawheed</CardTitle>
<CardDescription>
Shaykh Rasheed Barbee
</CardDescription>
</CardHeader>
<CardContent>
<div className="space-y-2 text-sm text-gray-600">
<div>๐
December 15, 2024</div>
<div>๐ 7:00 PM - 9:00 PM</div>
<div>๐ MTWS 3714 S. Alston Ave. Durham NC 27713</div>
</div>
</CardContent>
<CardFooter>
<Button size="sm">Register</Button>
</CardFooter>
</Card>Used to display Quranic verses and Islamic quotations. Always shows Arabic text with an English translation and source reference. Never substitute UthmanicHafs for Quranic text.
Uses UthmanicHafs font with a Sandy Gold left border โ the default for Quranic verses.
ููู ูุง ุฎูููููุชู ุงููุฌูููู ููุงููุฅููุณู ุฅููููุง ููููุนูุจูุฏูููู
โAnd I did not create the jinn and mankind except to worship Me.โ
Surah Adh-Dhariyat 51:56
import { QuranVerseBlock } from '@/components/ui/QuranVerseBlock'
<QuranVerseBlock
arabic="ููู
ูุง ุฎูููููุชู ุงููุฌูููู ููุงููุฅููุณู ุฅููููุง ููููุนูุจูุฏูููู"
translation="And I did not create the jinn and mankind except to worship Me."
source="Surah Adh-Dhariyat 51:56"
/>Uses 29LTRiwaya font with a Primary Green left border โ for general Arabic quotations and hadith.
ุงูุญู ุฏ ููู ุฑุจ ุงูุนุงูู ูู
โAll praise is due to Allah, Lord of the worlds.โ
Surah Al-Fatihah 1:2
<QuranVerseBlock
variant="green"
arabic="ุงูุญู
ุฏ ููู ุฑุจ ุงูุนุงูู
ูู"
translation="All praise is due to Allah, Lord of the worlds."
source="Surah Al-Fatihah 1:2"
/>Form elements with consistent styling and validation states.
Standard text input with label and placeholder.
import { Input } from '@/components/ui/Input';
<div className="space-y-2">
<label htmlFor="email" className="text-sm font-medium">
Email Address
</label>
<Input
id="email"
type="email"
placeholder="[email protected]"
/>
</div>Example contact form with multiple input types.
import { Input } from '@/components/ui/Input';
import { Button } from '@/components/ui/Button';
<form className="space-y-4">
<div>
<label className="text-sm font-medium">Name</label>
<Input placeholder="Your full name" />
</div>
<div>
<label className="text-sm font-medium">Email</label>
<Input type="email" placeholder="[email protected]" />
</div>
<div>
<label className="text-sm font-medium">Message</label>
<textarea
className="w-full p-3 border rounded-md"
rows={4}
placeholder="Your message..."
/>
</div>
<Button type="submit">Send Message</Button>
</form>Navigation components for different contexts and layouts.
Hierarchical navigation showing user's location.
import Link from 'next/link';
<nav className="flex" aria-label="Breadcrumb">
<ol className="flex items-center space-x-2">
<li>
<Link href="/" className="text-gray-500 hover:text-gray-700">
Home
</Link>
</li>
<li className="text-gray-400">/</li>
<li>
<Link href="/seminars" className="text-gray-500 hover:text-gray-700">
Seminars
</Link>
</li>
<li className="text-gray-400">/</li>
<li className="text-gray-900 font-medium">
Understanding Tawheed
</li>
</ol>
</nav>Primary site navigation with active states.
import Link from 'next/link';
import { usePathname } from 'next/navigation';
const navItems = [
{ name: 'About', href: '/about' },
{ name: 'Seminars', href: '/seminars' },
{ name: 'Contact', href: '/contact' },
{ name: 'Donate', href: '/donate' },
];
<nav className="flex space-x-8">
{navItems.map((item) => (
<Link
key={item.name}
href={item.href}
className={cn(
'text-sm font-medium transition-colors hover:text-primary-green',
pathname === item.href
? 'text-primary-green'
: 'text-gray-700'
)}
>
{item.name}
</Link>
))}
</nav>Components for displaying status, alerts, and user feedback.
Color-coded badges for displaying item status.
// Status badge variants
<span className="bg-primary-green text-white text-xs px-2 py-1 rounded-full">
Upcoming
</span>
<span className="bg-gray-100 text-gray-800 text-xs px-2 py-1 rounded-full">
Completed
</span>
<span className="bg-red-100 text-red-800 text-xs px-2 py-1 rounded-full">
Cancelled
</span>
<span className="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded-full">
Live
</span>Informational alerts for user feedback.
Success! Your message has been sent.
Error: Please check your input and try again.
// Success alert
<div className="bg-green-50 border border-green-200 rounded-lg p-4">
<div className="flex">
<CheckIcon className="h-5 w-5 text-green-400" />
<div className="ml-3">
<p className="text-sm font-medium text-green-800">
Success! Your message has been sent.
</p>
</div>
</div>
</div>
// Error alert
<div className="bg-red-50 border border-red-200 rounded-lg p-4">
<div className="flex">
<XIcon className="h-5 w-5 text-red-400" />
<div className="ml-3">
<p className="text-sm font-medium text-red-800">
Error: Please check your input and try again.
</p>
</div>
</div>
</div>Structural components for page layout and content organization.
Standard page header with title and description.
Page description or subtitle that provides context about the content.
<div className="mb-12">
<h1 className="text-4xl font-bold text-deep-forest-green mb-4">
Page Title
</h1>
<p className="text-lg text-gray-700">
Page description or subtitle that provides context about the content.
</p>
</div>Content section with visual separation.
Section description explaining the content below.
Section content goes here...
<section className="mb-16">
<div className="mb-8">
<h2 className="text-3xl font-bold text-gray-900 mb-2">
Section Title
</h2>
<p className="text-lg text-gray-600">
Section description explaining the content below.
</p>
</div>
<div className="border-t border-gray-200 pt-8">
{/* Section content goes here */}
</div>
</section>