| "use client" | |
| import React from 'react'; | |
| import Link from 'next/link'; | |
| import { getColorConfig, cn } from '@/lib/utils'; | |
| interface CategoryPageProps { | |
| category: { | |
| title: string; | |
| description: string; | |
| colorName: string; | |
| }; | |
| } | |
| const CategoryPage: React.FC<CategoryPageProps> = ({ category }) => { | |
| const { title, description, colorName } = category; | |
| const colorConfig = getColorConfig(colorName); | |
| return ( | |
| <div className={cn('min-h-screen', colorConfig.bg, colorConfig.text)}> | |
| <div className="container mx-auto px-4 py-8"> | |
| <nav className="mb-8"> | |
| <ol className="flex items-center space-x-3 text-sm sm:text-base"> | |
| <li className="flex items-center"> | |
| <Link href="/" className="hover:underline transition-colors duration-200 flex items-center"> | |
| <svg className="w-4 h-4 mr-2" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"> | |
| <path d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z" /> | |
| </svg> | |
| Home | |
| </Link> | |
| </li> | |
| <li className="flex items-center"> | |
| <svg className="w-5 h-5 text-gray-400" fill="currentColor" viewBox="0 0 20 20"> | |
| <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" /> | |
| </svg> | |
| <span className="ml-2 font-medium">{title}</span> | |
| </li> | |
| </ol> | |
| </nav> | |
| <div className="text-center"> | |
| <h1 className="text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tighter mb-4"> | |
| {title} | |
| </h1> | |
| <p className="font-bold font-mono italic text-lg mb-10"> | |
| {description} | |
| </p> | |
| </div> | |
| </div> | |
| </div> | |
| ); | |
| }; | |
| export default CategoryPage; |