Compare commits
	
		
			47 Commits
		
	
	
		
			2.0.0
			...
			579aa77a93
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 579aa77a93 | |||
| 9a13fc35c3 | |||
| 41675481e8 | |||
| 6d46dae265 | |||
| 9c280a1c02 | |||
| 2be6ea9813 | |||
| 6d235806a8 | |||
| 1bc940afd6 | |||
| 11abbf790d | |||
| 1f0c04a168 | |||
| 32ddc9129c | |||
| d9a103a553 | |||
| 473d1d15cb | |||
| 652955263e | |||
| 4cb215625b | |||
| 98a3ed338c | |||
| 7e5eb7fd1a | |||
| 0be31cb98f | |||
| 6386c76550 | |||
| b865b93797 | |||
| 9bed3b30a2 | |||
| 2556adb7cb | |||
| 4ad9ec7d1e | |||
| be91babd39 | |||
| e189edbfe5 | |||
| 17f37152a5 | |||
| 80c7f6ddc2 | |||
| cac399b924 | |||
| d7b0b846d2 | |||
| d04967e435 | |||
| 866ab47458 | |||
| f835e06d6f | |||
| ac31a5a608 | |||
| 0f93b9d138 | |||
| 2211107a2c | |||
| b58cbdbe0a | |||
| 49e2376dbf | |||
| 6b1eaa439a | |||
| f92f911360 | |||
| 1cdbbd4a11 | |||
| da7c5c4a58 | |||
| 931d1009ed | |||
| 43ff986963 | |||
| b9d85a5520 | |||
| 9836b40531 | |||
| ea1c3d9f1a | |||
| 28f73be784 | 
| @@ -1,7 +1,7 @@ | |||||||
| ARG REGISTRY=docker.io | ARG REGISTRY=docker.io | ||||||
| FROM ${REGISTRY}/node:22.18.0-alpine3.22 AS base | FROM ${REGISTRY}/node:22.19.0-alpine3.22 AS base | ||||||
|  |  | ||||||
| LABEL version="2.0.0" | LABEL version="2.0.5" | ||||||
| LABEL description="Astro based personal website" | LABEL description="Astro based personal website" | ||||||
|  |  | ||||||
| ENV PNPM_HOME="/pnpm" | ENV PNPM_HOME="/pnpm" | ||||||
|   | |||||||
							
								
								
									
										23
									
								
								LICENSE.md
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								LICENSE.md
									
									
									
									
									
								
							| @@ -1,23 +0,0 @@ | |||||||
| # MIT License |  | ||||||
|  |  | ||||||
| Copyright (c) 2025 Lê Vĩnh Khang |  | ||||||
|  |  | ||||||
| Copyright (c) 2025 Alex Lebens |  | ||||||
|  |  | ||||||
| Permission is hereby granted, free of charge, to any person obtaining a copy |  | ||||||
| of this software and associated documentation files (the "Software"), to deal |  | ||||||
| in the Software without restriction, including without limitation the rights |  | ||||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |  | ||||||
| copies of the Software, and to permit persons to whom the Software is |  | ||||||
| furnished to do so, subject to the following conditions: |  | ||||||
|  |  | ||||||
| The above copyright notice and this permission notice shall be included in all |  | ||||||
| copies or substantial portions of the Software. |  | ||||||
|  |  | ||||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |  | ||||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |  | ||||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |  | ||||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |  | ||||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |  | ||||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |  | ||||||
| SOFTWARE. |  | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| { | { | ||||||
|   "name": "site-profile", |   "name": "site-profile", | ||||||
|   "type": "module", |   "type": "module", | ||||||
|   "version": "2.0.0", |   "version": "2.0.5", | ||||||
|   "homepage": "https://www.alexlebens.dev", |   "homepage": "https://www.alexlebens.dev", | ||||||
|   "bugs": { |   "bugs": { | ||||||
|     "url": "https://gitea.alexlebens.dev/alexlebens/site-profile/issues", |     "url": "https://gitea.alexlebens.dev/alexlebens/site-profile/issues", | ||||||
| @@ -79,6 +79,6 @@ | |||||||
|     "prettier-plugin-tailwindcss": "^0.6.14", |     "prettier-plugin-tailwindcss": "^0.6.14", | ||||||
|     "timeago.js": "^4.0.2", |     "timeago.js": "^4.0.2", | ||||||
|     "typescript": "5.9.2", |     "typescript": "5.9.2", | ||||||
|     "typescript-eslint": "8.39.1" |     "typescript-eslint": "8.41.0" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										1610
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1610
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -27,13 +27,13 @@ const currentYear = new Date().getFullYear(); | |||||||
|               </div> |               </div> | ||||||
|  |  | ||||||
|               <span class="ml-3 text-xl font-bold text-neutral-800 dark:text-neutral-200"> |               <span class="ml-3 text-xl font-bold text-neutral-800 dark:text-neutral-200"> | ||||||
|                 Blog |                 {global.name} | ||||||
|               </span> |               </span> | ||||||
|             </div> |             </div> | ||||||
|           </a> |           </a> | ||||||
|  |  | ||||||
|           <p class="mt-4 text-sm leading-relaxed text-neutral-600 dark:text-neutral-400"> |           <p class="mt-4 text-sm leading-relaxed text-neutral-600 dark:text-neutral-400"> | ||||||
|             A description of something. |             {global.about} | ||||||
|           </p> |           </p> | ||||||
|         </div> |         </div> | ||||||
|         <!-- Left links --> |         <!-- Left links --> | ||||||
|   | |||||||
| @@ -5,21 +5,9 @@ interface Props { | |||||||
|   description: string; |   description: string; | ||||||
|   count: number; |   count: number; | ||||||
|   publishDate: string; |   publishDate: string; | ||||||
|   layoutPattern?: { |  | ||||||
|     smCol: number; |  | ||||||
|     mdCol: number; |  | ||||||
|     row: number; |  | ||||||
|     index: number; |  | ||||||
|   }; |  | ||||||
| } | } | ||||||
|  |  | ||||||
| const { slug, layoutPattern, title, description, count, publishDate } = Astro.props; | const { slug, title, description, count, publishDate } = Astro.props; | ||||||
| const isSingleItem = |  | ||||||
|   layoutPattern && |  | ||||||
|   layoutPattern.row === 1 && |  | ||||||
|   (layoutPattern.smCol === 1 || layoutPattern.mdCol === 1); |  | ||||||
|  |  | ||||||
| const formatedDescription = isSingleItem ? `No description available` : description; |  | ||||||
|  |  | ||||||
| const baseClasses = | const baseClasses = | ||||||
|   'group group-hover rounded-xl flex h-full min-h-[220px] cursor-pointer flex-col overflow-hidden'; |   'group group-hover rounded-xl flex h-full min-h-[220px] cursor-pointer flex-col overflow-hidden'; | ||||||
| @@ -32,17 +20,17 @@ const bgColorClasses = | |||||||
|     <div |     <div | ||||||
|       class={`relative min-h-0 flex-grow overflow-hidden transition-all duration-300 ${bgColorClasses}`} |       class={`relative min-h-0 flex-grow overflow-hidden transition-all duration-300 ${bgColorClasses}`} | ||||||
|     > |     > | ||||||
|       <div class="absolute inset-1 flex flex-col justify-end p-3 md:p-4 lg:p-5"> |       <div class="absolute inset-1 flex flex-col p-3 md:p-4 lg:p-5"> | ||||||
|         <h2 |         <div class="overflow-hidden"> | ||||||
|           class="group-hover:text-steel dark:group-hover:text-bermuda transition-text mb-4 text-4xl font-extrabold tracking-tight text-balance text-neutral-800 duration-300 dark:text-neutral-200" |           <h2 | ||||||
|         > |             class="group-hover:text-steel dark:group-hover:text-bermuda transition-text mb-4 text-4xl font-extrabold tracking-tight text-balance whitespace-nowrap text-neutral-800 duration-300 dark:text-neutral-200" | ||||||
|           {title} |           > | ||||||
|         </h2> |             {title} | ||||||
|         <p |           </h2> | ||||||
|           class=`mb-4 ${isSingleItem ? 'hidden lg:block' : ''} max-w-prose text-pretty font-light text-neutral-600 dark:text-neutral-400 sm:text-lg` |           <p class="mb-4 font-light text-neutral-600 sm:text-lg dark:text-neutral-400"> | ||||||
|         > |             {description} | ||||||
|           {formatedDescription} |           </p> | ||||||
|         </p> |         </div> | ||||||
|         <div |         <div | ||||||
|           class="mt-auto flex items-center justify-between pt-1 text-xs text-neutral-600 md:pt-2 dark:text-neutral-300" |           class="mt-auto flex items-center justify-between pt-1 text-xs text-neutral-600 md:pt-2 dark:text-neutral-300" | ||||||
|         > |         > | ||||||
|   | |||||||
| @@ -7,8 +7,6 @@ interface Props { | |||||||
| } | } | ||||||
|  |  | ||||||
| const { posts } = Astro.props; | const { posts } = Astro.props; | ||||||
|  |  | ||||||
| const description = 'Here are a few articles that I think are not bad, hope you like too.'; |  | ||||||
| --- | --- | ||||||
|  |  | ||||||
| <section class="mx-auto mb-10 max-w-[85rem] px-4 py-8 sm:px-6 lg:px-8 2xl:max-w-full"> | <section class="mx-auto mb-10 max-w-[85rem] px-4 py-8 sm:px-6 lg:px-8 2xl:max-w-full"> | ||||||
| @@ -17,13 +15,8 @@ const description = 'Here are a few articles that I think are not bad, hope you | |||||||
|       id="selected-articel" |       id="selected-articel" | ||||||
|       class="smooth-reveal-2 mb-4 text-5xl font-extrabold tracking-tight text-balance text-neutral-800 dark:text-neutral-200" |       class="smooth-reveal-2 mb-4 text-5xl font-extrabold tracking-tight text-balance text-neutral-800 dark:text-neutral-200" | ||||||
|     > |     > | ||||||
|       Posts |       Older Articles | ||||||
|     </h2> |     </h2> | ||||||
|     <p |  | ||||||
|       class="smooth-reveal-2 mb-8 max-w-prose font-light text-pretty text-neutral-600 sm:text-xl dark:text-neutral-400" |  | ||||||
|     > |  | ||||||
|       {description} |  | ||||||
|     </p> |  | ||||||
|   </div> |   </div> | ||||||
|  |  | ||||||
|   <div class="flex flex-col md:flex-row md:space-x-12 lg:space-x-16"> |   <div class="flex flex-col md:flex-row md:space-x-12 lg:space-x-16"> | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ interface Props { | |||||||
|  |  | ||||||
| const { title, description, url, icon } = Astro.props; | const { title, description, url, icon } = Astro.props; | ||||||
|  |  | ||||||
| const baseClasses = 'smooth-reveal-2 group group-hover flex flex-col'; | const baseClasses = 'smooth-reveal-2 group group-hover flex flex-col '; | ||||||
| const borderClasses = 'border border-neutral-100 dark:border-stone-500/20'; | const borderClasses = 'border border-neutral-100 dark:border-stone-500/20'; | ||||||
| const bgColorClasses = | const bgColorClasses = | ||||||
|   'bg-neutral-100/80 hover:bg-neutral-100 dark:bg-neutral-800/60 dark:hover:bg-neutral-800/90'; |   'bg-neutral-100/80 hover:bg-neutral-100 dark:bg-neutral-800/60 dark:hover:bg-neutral-800/90'; | ||||||
| @@ -19,7 +19,7 @@ const shadowClasses = 'shadow-xs hover:shadow-md dark:shadow-md dark:hover:shado | |||||||
|  |  | ||||||
| <div class={`${baseClasses}`}> | <div class={`${baseClasses}`}> | ||||||
|   <a |   <a | ||||||
|     class={`rounded-xl duration-300 transition-all ${borderClasses} ${bgColorClasses} ${shadowClasses}`} |     class={`rounded-xl duration-300 transition-all h-30 ${borderClasses} ${bgColorClasses} ${shadowClasses}`} | ||||||
|     href={url} |     href={url} | ||||||
|     data-astro-prefetch |     data-astro-prefetch | ||||||
|   > |   > | ||||||
|   | |||||||
| @@ -15,19 +15,19 @@ const global = await directus.request(readSingleton('site_global')); | |||||||
|       <div class="grid gap-3 sm:grid-cols-2 sm:gap-6 lg:grid-cols-3"> |       <div class="grid gap-3 sm:grid-cols-2 sm:gap-6 lg:grid-cols-3"> | ||||||
|         <FeaturesCard |         <FeaturesCard | ||||||
|           title="Cloud Engineer" |           title="Cloud Engineer" | ||||||
|           description="Full stack and multi cloud engineer" |           description="Full stack and cloud engineer." | ||||||
|           url="#" |           url="/about" | ||||||
|           icon="mdi:cloud-outline" |           icon="mdi:cloud-outline" | ||||||
|         /> |         /> | ||||||
|         <FeaturesCard |         <FeaturesCard | ||||||
|           title="Homelab" |           title="Homelab" | ||||||
|           description="Tinkering, testing, deploying, etc, etc ..." |           description="Tinkering, testing, deploying, etc, etc ..." | ||||||
|           url="#" |           url="/categories/homelab/" | ||||||
|           icon="mdi:home-variant-outline" |           icon="mdi:home-variant-outline" | ||||||
|         /> |         /> | ||||||
|         <FeaturesCard |         <FeaturesCard | ||||||
|           title="Email Me" |           title="Email" | ||||||
|           description={`Reach me at ${global.email}`} |           description={`Send me a message.`} | ||||||
|           url=`mailto:${global.email}` |           url=`mailto:${global.email}` | ||||||
|           icon="mdi:email-fast" |           icon="mdi:email-fast" | ||||||
|         /> |         /> | ||||||
|   | |||||||
| @@ -7,6 +7,7 @@ import BlogCard from '@components/blog/BlogCard.astro'; | |||||||
|  |  | ||||||
| const posts = await directus.request( | const posts = await directus.request( | ||||||
|   readItems('posts', { |   readItems('posts', { | ||||||
|  |     filter: { published: { _eq: true } }, | ||||||
|     fields: ['*'], |     fields: ['*'], | ||||||
|     sort: ['-published_date'], |     sort: ['-published_date'], | ||||||
|   }) |   }) | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| --- | --- | ||||||
| title: '二愣的小书屋 🔖' | title: 'Books 📖' | ||||||
| description: '生活总是这样,不能让人处处都满意但我们还要热情地活下去' | description: 'Books I have read or listened to' | ||||||
| --- | --- | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								src/content/categories/cloud.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/content/categories/cloud.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | --- | ||||||
|  | title: 'Cloud ☁️' | ||||||
|  | description: "Its just someone else's server" | ||||||
|  | --- | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| --- |  | ||||||
| title: 'Golang 🚀' |  | ||||||
| description: 'Go 语言的词法分析与语法分析及折腾下 Go 编译原理吗' |  | ||||||
| --- |  | ||||||
							
								
								
									
										4
									
								
								src/content/categories/homelab.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/content/categories/homelab.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | --- | ||||||
|  | title: 'Homelab 🏠' | ||||||
|  | description: 'What happens when rack servers find a home' | ||||||
|  | --- | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| --- | --- | ||||||
| title: 'kubernetes 💩' | title: 'Kubernetes ☸️' | ||||||
| description: 'Kubernetes 是一个开源系统,用于自动化部署、扩展和管理容器化应用程序。' | description: 'The container orchestration system' | ||||||
| --- | --- | ||||||
|   | |||||||
| @@ -1,4 +0,0 @@ | |||||||
| --- |  | ||||||
| title: 'Laravel 🐛' |  | ||||||
| description: '最优雅的 PHP 框架' |  | ||||||
| --- |  | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| --- | --- | ||||||
| title: '生活 💃' | title: 'Life 🏃🏻' | ||||||
| description: '房贷要还的,水电费要交的,小孩学费也贵的,钱肯定要不够的呀。所以工作不敢扔,我大部分的快乐,都是来自于生活的夹缝。' | description: 'Just random musings on everyday stuff' | ||||||
| --- | --- | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								src/content/categories/minnesota.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/content/categories/minnesota.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | --- | ||||||
|  | title: 'Minnesota 🌳' | ||||||
|  | description: 'Land of 10,000 Lakes' | ||||||
|  | --- | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| --- |  | ||||||
| title: 'MySQL' |  | ||||||
| description: 'MySQL is an open-source relational database management system (RDBMS).' |  | ||||||
| --- |  | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| --- |  | ||||||
| title: 'Nginx 🐕🦺' |  | ||||||
| description: '高性能的 HTTP 和反向代理 Web 服务器,奈何反向代理的 PHP-FMP 服务太慢。' |  | ||||||
| --- |  | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| --- |  | ||||||
| title: 'PHP 🐘' |  | ||||||
| description: 'PHP is a popular general-purpose scripting language that is especially suited to web development.' |  | ||||||
| --- |  | ||||||
							
								
								
									
										4
									
								
								src/content/categories/postgresql.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/content/categories/postgresql.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | --- | ||||||
|  | title: 'PostgreSQL' | ||||||
|  | description: 'PostgreSQL is an open-source relational database management system (RDBMS)' | ||||||
|  | --- | ||||||
							
								
								
									
										4
									
								
								src/content/categories/python.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/content/categories/python.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | --- | ||||||
|  | title: 'Python 🐍' | ||||||
|  | description: 'Generally my go to language' | ||||||
|  | --- | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| --- | --- | ||||||
| title: 'Tool 🪜' | title: 'Tool 🪜' | ||||||
| description: '停止折腾就老了吧' | description: 'Usually just the software kind' | ||||||
| --- | --- | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| --- | --- | ||||||
| title: 'What Is?' | title: 'What Is?' | ||||||
| description: '什么是快乐星球,什么是快乐星球,什么是快乐星球' | description: 'A series on discovery' | ||||||
| --- | --- | ||||||
|   | |||||||
							
								
								
									
										5
									
								
								src/env.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								src/env.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -1,8 +1,3 @@ | |||||||
| <<<<<<< HEAD |  | ||||||
| /// <reference path="../.astro/types.d.ts" /> | /// <reference path="../.astro/types.d.ts" /> | ||||||
| /// <reference types="astro/client" /> | /// <reference types="astro/client" /> | ||||||
| /// <reference types="astro/content" /> | /// <reference types="astro/content" /> | ||||||
| ======= |  | ||||||
| /// <reference types="astro/client" /> |  | ||||||
| /// <reference path="../.astro/types.d.ts" /> |  | ||||||
| >>>>>>> 184f0c7 (fix path) |  | ||||||
|   | |||||||
| @@ -25,6 +25,7 @@ export type Post = { | |||||||
|   tags: string[]; |   tags: string[]; | ||||||
|   category: string; |   category: string; | ||||||
|   selected: boolean; |   selected: boolean; | ||||||
|  |   published: boolean; | ||||||
|   content: string; |   content: string; | ||||||
|   image: string; |   image: string; | ||||||
|   image_alt: string; |   image_alt: string; | ||||||
|   | |||||||
| @@ -13,6 +13,7 @@ import blogImg from '@images/autumn_tree.png'; | |||||||
| const global = await directus.request(readSingleton('site_global')); | const global = await directus.request(readSingleton('site_global')); | ||||||
| const posts = await directus.request( | const posts = await directus.request( | ||||||
|   readItems('posts', { |   readItems('posts', { | ||||||
|  |     filter: { published: { _eq: true } }, | ||||||
|     fields: ['*'], |     fields: ['*'], | ||||||
|     sort: ['-published_date'], |     sort: ['-published_date'], | ||||||
|   }) |   }) | ||||||
| @@ -20,7 +21,7 @@ const posts = await directus.request( | |||||||
| const selectedPosts: Post[] = posts.filter((p) => p.selected); | const selectedPosts: Post[] = posts.filter((p) => p.selected); | ||||||
|  |  | ||||||
| const description = | const description = | ||||||
|   'Here are some articles that Alex Lebens believes are not bad, hope you enjoy them.'; |   "Sharing what I've learned, one post at a time. I hope you find something useful."; | ||||||
| --- | --- | ||||||
|  |  | ||||||
| <BaseLayout | <BaseLayout | ||||||
|   | |||||||
| @@ -21,6 +21,7 @@ const { category } = Astro.props; | |||||||
| const global = await directus.request(readSingleton('site_global')); | const global = await directus.request(readSingleton('site_global')); | ||||||
| const posts = await directus.request( | const posts = await directus.request( | ||||||
|   readItems('posts', { |   readItems('posts', { | ||||||
|  |     filter: { published: { _eq: true } }, | ||||||
|     fields: ['*'], |     fields: ['*'], | ||||||
|     sort: ['-published_date'], |     sort: ['-published_date'], | ||||||
|   }) |   }) | ||||||
|   | |||||||
| @@ -14,6 +14,7 @@ import categoryImg from '@images/autumn_bench.png'; | |||||||
| const global = await directus.request(readSingleton('site_global')); | const global = await directus.request(readSingleton('site_global')); | ||||||
| const posts = await directus.request( | const posts = await directus.request( | ||||||
|   readItems('posts', { |   readItems('posts', { | ||||||
|  |     filter: { published: { _eq: true } }, | ||||||
|     fields: ['*'], |     fields: ['*'], | ||||||
|     sort: ['-published_date'], |     sort: ['-published_date'], | ||||||
|   }) |   }) | ||||||
| @@ -74,7 +75,7 @@ const categories = (await getCollection('categories')) | |||||||
|   }); |   }); | ||||||
|  |  | ||||||
| const description = | const description = | ||||||
|   'Here are some categories that I am interested in, including Laravel, Golang, and my life.'; |   'Here are some of the general categories that I am interested in, including homelabs, technology, and Minnesota.'; | ||||||
| --- | --- | ||||||
|  |  | ||||||
| <BaseLayout | <BaseLayout | ||||||
| @@ -118,7 +119,6 @@ const description = | |||||||
|                 description={category.data.description} |                 description={category.data.description} | ||||||
|                 count={postMap.get(category.slug)?.length ?? 0} |                 count={postMap.get(category.slug)?.length ?? 0} | ||||||
|                 publishDate={timeago(postMap.get(category.slug)?.[0]?.published_date)} |                 publishDate={timeago(postMap.get(category.slug)?.[0]?.published_date)} | ||||||
|                 layoutPattern={category.layoutPattern} |  | ||||||
|               /> |               /> | ||||||
|             </div> |             </div> | ||||||
|           ); |           ); | ||||||
|   | |||||||
| @@ -11,7 +11,8 @@ import homeImg from '@images/autumn_mountain.png'; | |||||||
|  |  | ||||||
| const global = await directus.request(readSingleton('site_global')); | const global = await directus.request(readSingleton('site_global')); | ||||||
|  |  | ||||||
| const description = 'Writing on technology, selfhosting, and me.'; | const description = | ||||||
|  |   'Engineering the cloud by day, homelab by night, and exploring Minnesota in between.'; | ||||||
| --- | --- | ||||||
|  |  | ||||||
| <BaseLayout | <BaseLayout | ||||||
|   | |||||||
| @@ -23,6 +23,7 @@ export async function GET(context: APIContext) { | |||||||
|   // Load the content collection entries to add to our RSS feed. |   // Load the content collection entries to add to our RSS feed. | ||||||
|   const posts = await directus.request( |   const posts = await directus.request( | ||||||
|     readItems('posts', { |     readItems('posts', { | ||||||
|  |       filter: { published: { _eq: true } }, | ||||||
|       fields: ['*'], |       fields: ['*'], | ||||||
|       sort: ['-published_date'], |       sort: ['-published_date'], | ||||||
|     }) |     }) | ||||||
|   | |||||||
| @@ -1,58 +0,0 @@ | |||||||
| /** @type {import('tailwindcss').Config} */ |  | ||||||
| module.exports = { |  | ||||||
|   content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}', '*.{js,ts,jsx,tsx,mdx}'], |  | ||||||
|   darkMode: 'class', |  | ||||||
|   theme: { |  | ||||||
|     extend: { |  | ||||||
|       typography: (theme) => ({ |  | ||||||
|         DEFAULT: { |  | ||||||
|           css: { |  | ||||||
|             a: { |  | ||||||
|               color: theme('colors.zinc.900'), |  | ||||||
|               '&:hover': { |  | ||||||
|                 color: theme('colors.zinc.700'), |  | ||||||
|               }, |  | ||||||
|               textDecoration: 'underline', |  | ||||||
|               textDecorationColor: theme('colors.zinc.400'), |  | ||||||
|               textUnderlineOffset: '2px', |  | ||||||
|             }, |  | ||||||
|             'h1, h2, h3, h4, h5, h6': { |  | ||||||
|               color: theme('colors.zinc.900'), |  | ||||||
|             }, |  | ||||||
|             code: { |  | ||||||
|               color: theme('colors.zinc.900'), |  | ||||||
|               backgroundColor: theme('colors.zinc.100'), |  | ||||||
|               borderRadius: theme('borderRadius.md'), |  | ||||||
|               padding: `${theme('padding.1')} ${theme('padding.1.5')}`, |  | ||||||
|             }, |  | ||||||
|             'code::before': { |  | ||||||
|               content: '""', |  | ||||||
|             }, |  | ||||||
|             'code::after': { |  | ||||||
|               content: '""', |  | ||||||
|             }, |  | ||||||
|           }, |  | ||||||
|         }, |  | ||||||
|         invert: { |  | ||||||
|           css: { |  | ||||||
|             a: { |  | ||||||
|               color: theme('colors.zinc.100'), |  | ||||||
|               '&:hover': { |  | ||||||
|                 color: theme('colors.zinc.300'), |  | ||||||
|               }, |  | ||||||
|               textDecorationColor: theme('colors.zinc.700'), |  | ||||||
|             }, |  | ||||||
|             'h1, h2, h3, h4, h5, h6': { |  | ||||||
|               color: theme('colors.zinc.100'), |  | ||||||
|             }, |  | ||||||
|             code: { |  | ||||||
|               color: theme('colors.zinc.100'), |  | ||||||
|               backgroundColor: theme('colors.zinc.800'), |  | ||||||
|             }, |  | ||||||
|           }, |  | ||||||
|         }, |  | ||||||
|       }), |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
|   plugins: [require('@tailwindcss/typography')], |  | ||||||
| }; |  | ||||||
		Reference in New Issue
	
	Block a user