diff --git a/app/blog/[slug]/page.tsx b/app/blog/[slug]/page.tsx index 58139c0..e83f39e 100644 --- a/app/blog/[slug]/page.tsx +++ b/app/blog/[slug]/page.tsx @@ -55,17 +55,28 @@ export default function BlogPostPage({ params }: Props) { {post.tags && (
- {post.tags.map((t) => ( - - #{t} - - ))} + {post.tags.map((t, i) => { + const tagColorClasses = [ + 'bg-rose-100 text-rose-700 dark:bg-rose-900/60 dark:text-rose-200', + 'bg-emerald-100 text-emerald-700 dark:bg-emerald-900/60 dark:text-emerald-200', + 'bg-sky-100 text-sky-700 dark:bg-sky-900/60 dark:text-sky-200', + 'bg-amber-100 text-amber-700 dark:bg-amber-900/60 dark:text-amber-200', + 'bg-violet-100 text-violet-700 dark:bg-violet-900/60 dark:text-violet-200' + ]; + const color = + tagColorClasses[i % tagColorClasses.length]; + return ( + + #{t} + + ); + })}
)} diff --git a/components/hero.tsx b/components/hero.tsx index e8dc60e..2fada87 100644 --- a/components/hero.tsx +++ b/components/hero.tsx @@ -58,7 +58,7 @@ export function Hero() { }[]; return ( -
+
{initial} diff --git a/components/post-list-item.tsx b/components/post-list-item.tsx index 99382fb..0c55238 100644 --- a/components/post-list-item.tsx +++ b/components/post-list-item.tsx @@ -15,6 +15,14 @@ export function PostListItem({ post }: Props) { const excerpt = post.description || post.custom_excerpt || post.body?.raw?.slice(0, 120); + const tagColorClasses = [ + 'bg-rose-100 text-rose-700 dark:bg-rose-900/60 dark:text-rose-200', + 'bg-emerald-100 text-emerald-700 dark:bg-emerald-900/60 dark:text-emerald-200', + 'bg-sky-100 text-sky-700 dark:bg-sky-900/60 dark:text-sky-200', + 'bg-amber-100 text-amber-700 dark:bg-amber-900/60 dark:text-amber-200', + 'bg-violet-100 text-violet-700 dark:bg-violet-900/60 dark:text-violet-200' + ]; + return (
  • @@ -42,17 +50,21 @@ export function PostListItem({ post }: Props) { {post.tags && post.tags.length > 0 && (
    - {post.tags.slice(0, 4).map((t) => ( - - #{t} - - ))} + {post.tags.slice(0, 4).map((t, i) => { + const color = + tagColorClasses[i % tagColorClasses.length]; + return ( + + #{t} + + ); + })}
    )} {excerpt && ( diff --git a/components/right-sidebar.tsx b/components/right-sidebar.tsx index e75f1d3..46c9ebe 100644 --- a/components/right-sidebar.tsx +++ b/components/right-sidebar.tsx @@ -41,16 +41,26 @@ export function RightSidebar() { 標籤雲
    - {tags.map(({ tag, slug, count }) => { + {tags.map(({ tag, slug, count }, index) => { let sizeClass = 'text-[11px]'; if (count >= 5) sizeClass = 'text-sm font-semibold'; else if (count >= 3) sizeClass = 'text-xs font-medium'; + const colorClasses = [ + 'bg-rose-100 text-rose-700 dark:bg-rose-900/60 dark:text-rose-200', + 'bg-emerald-100 text-emerald-700 dark:bg-emerald-900/60 dark:text-emerald-200', + 'bg-sky-100 text-sky-700 dark:bg-sky-900/60 dark:text-sky-200', + 'bg-amber-100 text-amber-700 dark:bg-amber-900/60 dark:text-amber-200', + 'bg-violet-100 text-violet-700 dark:bg-violet-900/60 dark:text-violet-200' + ]; + const color = + colorClasses[index % colorClasses.length]; + return ( {tag}