├── .husky ├── pre-commit └── commit-msg ├── components ├── blur │ ├── index.ts │ └── blur.tsx ├── card │ ├── index.ts │ └── card.tsx ├── list │ ├── index.ts │ └── list.tsx ├── logo │ ├── index.ts │ └── logo.tsx ├── mdx │ ├── index.ts │ ├── link.tsx │ ├── audio.tsx │ ├── image.tsx │ ├── copy-button.tsx │ ├── figure.tsx │ └── mdx.tsx ├── page │ ├── index.ts │ ├── page.tsx │ └── nav.tsx ├── toc │ ├── index.ts │ └── toc.tsx ├── article │ ├── index.ts │ └── article.tsx ├── footer │ ├── index.ts │ ├── theme-switcher.tsx │ └── footer.tsx ├── github │ ├── index.ts │ └── github.tsx ├── helper │ ├── index.ts │ ├── helper.tsx │ ├── tiny-button.tsx │ └── scroll-top.tsx ├── spinner │ ├── index.ts │ └── spinner.tsx ├── datetime │ ├── index.ts │ └── datetime.tsx ├── discussion │ ├── index.ts │ └── discussion.tsx ├── photo-view │ ├── index.ts │ └── photo-view.tsx ├── audio-player │ ├── index.ts │ ├── title.tsx │ └── audio-player.tsx ├── info │ ├── index.ts │ ├── about.tsx │ └── last.tsx └── icons │ ├── index.ts │ ├── laptop.tsx │ ├── discord.tsx │ ├── sun.tsx │ ├── moon.tsx │ ├── signature.tsx │ └── space.tsx ├── lib ├── meta │ ├── index.ts │ └── generate-feed.ts ├── utils │ ├── style.ts │ ├── env.ts │ ├── edge.ts │ ├── dom.ts │ ├── lodash.ts │ ├── helper.ts │ └── content.ts ├── mdx │ ├── rehype-callout.ts │ ├── rehype-audio.ts │ ├── rehype-toc.ts │ ├── rehype-code.ts │ ├── index.ts │ └── rehype-image.ts ├── constants │ └── config.ts └── api │ ├── fetch.ts │ └── github.ts ├── styles ├── vendor.css ├── tailwindcss.css ├── base.css ├── theme.css └── utilities.css ├── app ├── apple-icon.png ├── articles │ ├── [slug] │ │ └── page.tsx │ └── page.tsx ├── journal │ ├── [slug] │ │ └── page.tsx │ └── page.tsx ├── snippets │ ├── [slug] │ │ └── page.tsx │ └── page.tsx ├── page.tsx ├── feed │ └── route.ts ├── not-found.tsx ├── robots.ts ├── providers │ ├── motion-provider.tsx │ └── vercel-provider.tsx ├── icon.svg ├── sitemap.ts ├── api │ ├── content │ │ └── route.ts │ └── discussions │ │ └── route.ts ├── projects │ └── page.tsx ├── gallery │ └── page.tsx ├── og │ └── [slug] │ │ └── route.tsx └── layout.tsx ├── public └── assets │ ├── beach.jpg │ └── merriweather.ttf ├── postcss.config.mjs ├── types └── react.d.ts ├── env.ts ├── hooks ├── use-is-mounted.ts ├── use-device-listener.ts ├── use-loading.ts ├── use-theme-transition.ts ├── use-copy-to-clipboard.ts ├── use-local-storage.ts └── use-shortcut.ts ├── stores └── use-device.ts ├── .vscode └── settings.json ├── commitlint.config.ts ├── .gitignore ├── prettier.config.mjs ├── tsconfig.json ├── next.config.ts ├── LICENSE ├── scripts └── sync-blog.ts ├── eslint.config.ts ├── package.json ├── .agent └── rules │ └── rules.md ├── content-collections.ts ├── README.md └── lint_report.txt /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | npx lint-staged -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- 1 | npx --no -- commitlint --edit $1 -------------------------------------------------------------------------------- /components/blur/index.ts: -------------------------------------------------------------------------------- 1 | export * from './blur' 2 | -------------------------------------------------------------------------------- /components/card/index.ts: -------------------------------------------------------------------------------- 1 | export * from './card' 2 | -------------------------------------------------------------------------------- /components/list/index.ts: -------------------------------------------------------------------------------- 1 | export * from './list' 2 | -------------------------------------------------------------------------------- /components/logo/index.ts: -------------------------------------------------------------------------------- 1 | export * from './logo' 2 | -------------------------------------------------------------------------------- /components/mdx/index.ts: -------------------------------------------------------------------------------- 1 | export * from './mdx' 2 | -------------------------------------------------------------------------------- /components/page/index.ts: -------------------------------------------------------------------------------- 1 | export * from './page' 2 | -------------------------------------------------------------------------------- /components/toc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './toc' 2 | -------------------------------------------------------------------------------- /lib/meta/index.ts: -------------------------------------------------------------------------------- 1 | export * from './generate-feed' 2 | -------------------------------------------------------------------------------- /components/article/index.ts: -------------------------------------------------------------------------------- 1 | export * from './article' 2 | -------------------------------------------------------------------------------- /components/footer/index.ts: -------------------------------------------------------------------------------- 1 | export * from './footer' 2 | -------------------------------------------------------------------------------- /components/github/index.ts: -------------------------------------------------------------------------------- 1 | export * from './github' 2 | -------------------------------------------------------------------------------- /components/helper/index.ts: -------------------------------------------------------------------------------- 1 | export * from './helper' 2 | -------------------------------------------------------------------------------- /components/spinner/index.ts: -------------------------------------------------------------------------------- 1 | export * from './spinner' 2 | -------------------------------------------------------------------------------- /styles/vendor.css: -------------------------------------------------------------------------------- 1 | @import 'katex/dist/katex.min.css'; 2 | -------------------------------------------------------------------------------- /components/datetime/index.ts: -------------------------------------------------------------------------------- 1 | export * from './datetime' 2 | -------------------------------------------------------------------------------- /components/discussion/index.ts: -------------------------------------------------------------------------------- 1 | export * from './discussion' 2 | -------------------------------------------------------------------------------- /components/photo-view/index.ts: -------------------------------------------------------------------------------- 1 | export * from './photo-view' 2 | -------------------------------------------------------------------------------- /components/audio-player/index.ts: -------------------------------------------------------------------------------- 1 | export * from './audio-player' 2 | -------------------------------------------------------------------------------- /components/info/index.ts: -------------------------------------------------------------------------------- 1 | export * from './about' 2 | export * from './last' 3 | -------------------------------------------------------------------------------- /app/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chanshiyucx/zero/HEAD/app/apple-icon.png -------------------------------------------------------------------------------- /public/assets/beach.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chanshiyucx/zero/HEAD/public/assets/beach.jpg -------------------------------------------------------------------------------- /app/articles/[slug]/page.tsx: -------------------------------------------------------------------------------- 1 | export { Article as default, generateMetadata } from '@/components/article' 2 | -------------------------------------------------------------------------------- /app/journal/[slug]/page.tsx: -------------------------------------------------------------------------------- 1 | export { Article as default, generateMetadata } from '@/components/article' 2 | -------------------------------------------------------------------------------- /app/snippets/[slug]/page.tsx: -------------------------------------------------------------------------------- 1 | export { Article as default, generateMetadata } from '@/components/article' 2 | -------------------------------------------------------------------------------- /public/assets/merriweather.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chanshiyucx/zero/HEAD/public/assets/merriweather.ttf -------------------------------------------------------------------------------- /postcss.config.mjs: -------------------------------------------------------------------------------- 1 | const config = { 2 | plugins: { 3 | '@tailwindcss/postcss': {}, 4 | }, 5 | } 6 | 7 | export default config 8 | -------------------------------------------------------------------------------- /types/react.d.ts: -------------------------------------------------------------------------------- 1 | import 'react' 2 | 3 | declare module 'react' { 4 | interface CSSProperties { 5 | [key: `--${string}`]: string | number 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /components/icons/index.ts: -------------------------------------------------------------------------------- 1 | export * from './discord' 2 | export * from './laptop' 3 | export * from './moon' 4 | export * from './signature' 5 | export * from './space' 6 | export * from './sun' 7 | -------------------------------------------------------------------------------- /components/mdx/link.tsx: -------------------------------------------------------------------------------- 1 | import type { ComponentPropsWithoutRef } from 'react' 2 | 3 | export function Link(props: ComponentPropsWithoutRef<'a'>) { 4 | return 5 | } 6 | -------------------------------------------------------------------------------- /lib/utils/style.ts: -------------------------------------------------------------------------------- 1 | import { clsx, type ClassValue } from 'clsx' 2 | import { twMerge } from 'tailwind-merge' 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)) 6 | } 7 | -------------------------------------------------------------------------------- /components/blur/blur.tsx: -------------------------------------------------------------------------------- 1 | export function Blur() { 2 | return ( 3 |
4 | ) 5 | } 6 | -------------------------------------------------------------------------------- /lib/utils/env.ts: -------------------------------------------------------------------------------- 1 | export const isClientSide = typeof window !== 'undefined' 2 | export const isServerSide = !isClientSide 3 | 4 | export const isDev = process.env.NODE_ENV === 'development' 5 | export const isProd = !isDev 6 | -------------------------------------------------------------------------------- /components/helper/helper.tsx: -------------------------------------------------------------------------------- 1 | import { ScrollTop } from './scroll-top' 2 | 3 | export function Helper() { 4 | return ( 5 |404 | This page could not be found.
8 |
18 |
25 | Crafting interfaces. Designing elegant software and immersive 26 | digital experiences. Following curiosity relentlessly, weaving intention 27 | into every pixel. 28 |
29 | 30 |31 | Seize the day, gather ye rosebuds while ye may. Sleeping, 32 | coding, learning German, chasing light through photography. 33 |
34 |