From 9f392106bd73e01c69191e3a4d4bf4eabdac9d6c Mon Sep 17 00:00:00 2001 From: KazooTTT Date: Sat, 23 Nov 2024 21:57:41 +0800 Subject: [PATCH] fix: client load --- src/components/GiscusComment.tsx | 40 +- src/pages/blog/[slug].astro | 2 +- src/pages/index.astro | 2 +- src/pages/tools/index.astro | 794 +++++++++++++++---------------- 4 files changed, 413 insertions(+), 425 deletions(-) diff --git a/src/components/GiscusComment.tsx b/src/components/GiscusComment.tsx index 7950b47..321646c 100644 --- a/src/components/GiscusComment.tsx +++ b/src/components/GiscusComment.tsx @@ -1,34 +1,28 @@ +'use client' + import React from 'react' import Giscus from '@giscus/react' const id = 'inject-comments' const GiscusComment = () => { - const [mounted, setMounted] = React.useState(false) - - React.useEffect(() => { - setMounted(true) - }, []) - return (
- {mounted ? ( - - ) : null} +
) } diff --git a/src/pages/blog/[slug].astro b/src/pages/blog/[slug].astro index d7523f5..b66e589 100644 --- a/src/pages/blog/[slug].astro +++ b/src/pages/blog/[slug].astro @@ -23,5 +23,5 @@ const { Content } = await entry.render() - + diff --git a/src/pages/index.astro b/src/pages/index.astro index 6cb066a..823b128 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -211,5 +211,5 @@ const projects = [...directProjects, ...mdProjects].slice(0, MAX_PROJECTS) - + diff --git a/src/pages/tools/index.astro b/src/pages/tools/index.astro index 7d6534c..96bac86 100644 --- a/src/pages/tools/index.astro +++ b/src/pages/tools/index.astro @@ -5,414 +5,408 @@ import Button from '@/components/Button.astro' import GiscusComment from '@/components/GiscusComment' const SOFTWARE_TOOLS = { - development: { - title: 'Development', - sections: { - ide: { - title: 'IDE & Editors', - tools: [ - { - name: 'WindSurf', - description: 'AI-Powered IDE', - href: 'https://windsurf.app/', - }, - { - name: 'Cursor', - description: 'AI-Powered Code Editor', - href: 'https://cursor.sh/', - iconPath: 'cursor' - }, - { - name: 'VS Code', - description: 'Code Editor', - href: 'https://code.visualstudio.com/', - iconPath: 'vscode' - }, - { - name: 'JetBrains Suite', - description: 'Professional IDEs', - href: 'https://www.jetbrains.com/' - } - ] - } - } - }, - design: { - title: 'Design & Creative', - sections: { - design: { - title: 'Design Software', - tools: [ - { - name: 'Figma', - description: 'Design Tool', - href: 'https://www.figma.com/', - iconPath: 'figma' - }, - { - name: 'Canva', - description: 'Design Tool', - href: 'https://www.canva.com/', - iconPath: 'canva' - } - ] - }, - recording: { - title: 'Screen Recording & Screenshots', - tools: [ - { - name: 'CleanShot X', - description: 'Screenshot & Recording', - href: 'https://cleanshot.com/' - }, - { - name: 'OBS Studio', - description: 'Streaming & Recording', - href: 'https://obsproject.com/' - }, - { - name: 'Picsew', - description: 'Screenshot Tool', - href: 'https://apps.apple.com/app/picsew-screenshot-stitching/id1208145167' - }, - { - name: 'Shotr', - description: 'Screenshot Tool', - href: 'https://shotr.app/' - }, - { - name: 'QuickRecorder', - description: 'Screen Recording', - href: '#' - } - ] - } - } - }, - productivity: { - title: 'Productivity', - sections: { - browser: { - title: 'Browsers', - tools: [ - { - name: 'Arc Browser', - description: 'Modern Browser', - href: 'https://arc.net/', - iconPath: 'arc' - }, - { - name: 'Google Chrome', - description: 'Web Browser', - href: 'https://www.google.com/chrome/' - }, - { - name: 'Microsoft Edge', - description: 'Web Browser', - href: 'https://www.microsoft.com/edge' - } - ] - }, - notes: { - title: 'Note Taking', - tools: [ - { - name: 'Obsidian', - description: 'Note Taking', - href: 'https://obsidian.md/', - iconPath: 'obsidian' - }, - { - name: 'Notion', - description: 'Note Taking', - href: 'https://notion.so/', - iconPath: 'notion' - }, - { - name: 'Flomo', - description: 'Quick Notes', - href: 'https://flomoapp.com/' - } - ] - }, - tools: { - title: 'Productivity Tools', - tools: [ - { - name: '1Password', - description: 'Password Manager', - href: 'https://1password.com/' - }, - { - name: 'Raindrop.io', - description: 'Bookmark Manager', - href: 'https://raindrop.io/' - }, - { - name: 'n8n', - description: 'Workflow Automation', - href: 'https://n8n.io/' - }, - { - name: 'Follow', - description: 'RSS Reader', - href: '#' - }, - { - name: '滴答清单', - description: 'Task Management', - href: 'https://dida365.com/' - } - ] - } - } - }, - ai: { - title: 'AI Tools', - sections: { - assistants: { - title: 'AI Assistants', - tools: [ - { - name: 'ChatGPT', - description: 'AI Assistant', - href: 'https://chat.openai.com/', - iconPath: 'chatgpt' - }, - { - name: 'Claude', - description: 'AI Assistant', - href: 'https://claude.ai/' - }, - { - name: 'Poe', - description: 'AI Platform', - href: 'https://poe.com/' - }, - { - name: 'Google Notebook LLM', - description: 'AI Assistant', - href: 'https://notebooklm.google.com/' - } - ] - } - } - }, - media: { - title: 'Media & Entertainment', - sections: { - music: { - title: 'Music', - tools: [ - { - name: 'Apple Music', - description: 'Music Streaming', - href: 'https://music.apple.com/' - }, - { - name: '网易云音乐', - description: 'Music Platform', - href: 'https://music.163.com/' - } - ] - }, - reading: { - title: 'Reading & Writing', - tools: [ - { - name: '微信读书', - description: 'Reading Platform', - href: 'https://weread.qq.com/' - }, - { - name: 'Personal Blog', - description: 'Built with Astro', - href: '/' - }, - { - name: 'Hashnode', - description: 'Blog Platform', - href: 'https://hashnode.com/' - } - ] - } - } - }, - health: { - title: 'Health & Fitness', - sections: { - tracking: { - title: 'Health Tracking', - tools: [ - { - name: 'AutoSleep', - description: 'Sleep Tracking', - href: 'https://autosleep.app/' - }, - { - name: 'Grow', - description: 'Health Tracking', - href: '#' - }, - { - name: 'Keep', - description: 'Fitness App', - href: 'https://www.gotokeep.com/' - } - ] - } - } - } + development: { + title: 'Development', + sections: { + ide: { + title: 'IDE & Editors', + tools: [ + { + name: 'WindSurf', + description: 'AI-Powered IDE', + href: 'https://windsurf.app/' + }, + { + name: 'Cursor', + description: 'AI-Powered Code Editor', + href: 'https://cursor.sh/', + iconPath: 'cursor' + }, + { + name: 'VS Code', + description: 'Code Editor', + href: 'https://code.visualstudio.com/', + iconPath: 'vscode' + }, + { + name: 'JetBrains Suite', + description: 'Professional IDEs', + href: 'https://www.jetbrains.com/' + } + ] + } + } + }, + design: { + title: 'Design & Creative', + sections: { + design: { + title: 'Design Software', + tools: [ + { + name: 'Figma', + description: 'Design Tool', + href: 'https://www.figma.com/', + iconPath: 'figma' + }, + { + name: 'Canva', + description: 'Design Tool', + href: 'https://www.canva.com/', + iconPath: 'canva' + } + ] + }, + recording: { + title: 'Screen Recording & Screenshots', + tools: [ + { + name: 'CleanShot X', + description: 'Screenshot & Recording', + href: 'https://cleanshot.com/' + }, + { + name: 'OBS Studio', + description: 'Streaming & Recording', + href: 'https://obsproject.com/' + }, + { + name: 'Picsew', + description: 'Screenshot Tool', + href: 'https://apps.apple.com/app/picsew-screenshot-stitching/id1208145167' + }, + { + name: 'Shotr', + description: 'Screenshot Tool', + href: 'https://shotr.app/' + }, + { + name: 'QuickRecorder', + description: 'Screen Recording', + href: '#' + } + ] + } + } + }, + productivity: { + title: 'Productivity', + sections: { + browser: { + title: 'Browsers', + tools: [ + { + name: 'Arc Browser', + description: 'Modern Browser', + href: 'https://arc.net/', + iconPath: 'arc' + }, + { + name: 'Google Chrome', + description: 'Web Browser', + href: 'https://www.google.com/chrome/' + }, + { + name: 'Microsoft Edge', + description: 'Web Browser', + href: 'https://www.microsoft.com/edge' + } + ] + }, + notes: { + title: 'Note Taking', + tools: [ + { + name: 'Obsidian', + description: 'Note Taking', + href: 'https://obsidian.md/', + iconPath: 'obsidian' + }, + { + name: 'Notion', + description: 'Note Taking', + href: 'https://notion.so/', + iconPath: 'notion' + }, + { + name: 'Flomo', + description: 'Quick Notes', + href: 'https://flomoapp.com/' + } + ] + }, + tools: { + title: 'Productivity Tools', + tools: [ + { + name: '1Password', + description: 'Password Manager', + href: 'https://1password.com/' + }, + { + name: 'Raindrop.io', + description: 'Bookmark Manager', + href: 'https://raindrop.io/' + }, + { + name: 'n8n', + description: 'Workflow Automation', + href: 'https://n8n.io/' + }, + { + name: 'Follow', + description: 'RSS Reader', + href: '#' + }, + { + name: '滴答清单', + description: 'Task Management', + href: 'https://dida365.com/' + } + ] + } + } + }, + ai: { + title: 'AI Tools', + sections: { + assistants: { + title: 'AI Assistants', + tools: [ + { + name: 'ChatGPT', + description: 'AI Assistant', + href: 'https://chat.openai.com/', + iconPath: 'chatgpt' + }, + { + name: 'Claude', + description: 'AI Assistant', + href: 'https://claude.ai/' + }, + { + name: 'Poe', + description: 'AI Platform', + href: 'https://poe.com/' + }, + { + name: 'Google Notebook LLM', + description: 'AI Assistant', + href: 'https://notebooklm.google.com/' + } + ] + } + } + }, + media: { + title: 'Media & Entertainment', + sections: { + music: { + title: 'Music', + tools: [ + { + name: 'Apple Music', + description: 'Music Streaming', + href: 'https://music.apple.com/' + }, + { + name: '网易云音乐', + description: 'Music Platform', + href: 'https://music.163.com/' + } + ] + }, + reading: { + title: 'Reading & Writing', + tools: [ + { + name: '微信读书', + description: 'Reading Platform', + href: 'https://weread.qq.com/' + }, + { + name: 'Personal Blog', + description: 'Built with Astro', + href: '/' + }, + { + name: 'Hashnode', + description: 'Blog Platform', + href: 'https://hashnode.com/' + } + ] + } + } + }, + health: { + title: 'Health & Fitness', + sections: { + tracking: { + title: 'Health Tracking', + tools: [ + { + name: 'AutoSleep', + description: 'Sleep Tracking', + href: 'https://autosleep.app/' + }, + { + name: 'Grow', + description: 'Health Tracking', + href: '#' + }, + { + name: 'Keep', + description: 'Fitness App', + href: 'https://www.gotokeep.com/' + } + ] + } + } + } } const DEVICES = { - computing: { - title: 'Computing Devices', - sections: { - devices: { - title: 'Devices', - tools: [ - { - name: 'Mac Mini M2 Pro', - description: '主力机 (32GB, 512GB)', - iconPath: 'apple' - }, - { - name: 'MacBook Air M1', - description: '移动办公 (16GB, 256GB)', - iconPath: 'apple' - }, - { - name: '机械师整机', - description: '台式机 (i5, 32GB, 512GB)', - iconPath: 'windows' - } - ] - } - } - }, - mobile: { - title: 'Mobile Devices', - sections: { - phone: { - title: 'Phone', - tools: [ - { - name: 'iPhone 13', - description: '手机 (256GB)', - iconPath: 'apple' - } - ] - }, - tablet: { - title: 'Tablet', - tools: [ - { - name: 'iPad Mini 5', - description: '平板', - iconPath: 'apple' - } - ] - } - } - }, - wearables: { - title: 'Smart Wearables', - sections: { - watch: { - title: 'Smart Watch', - tools: [ - { - name: 'Apple Watch S9', - description: '智能手表', - iconPath: 'apple' - } - ] - }, - audio: { - title: 'Audio Devices', - tools: [ - { - name: 'AirPods Pro 2', - description: '无线耳机', - iconPath: 'apple' - } - ] - } - } - }, - imaging: { - title: 'Imaging Equipment', - sections: { - cameras: { - title: 'Camera System', - tools: [ - { - name: '松下 GX9', - description: '相机', - iconPath: 'round-photo' - }, - { - name: 'Panasonic 14-140mm', - description: '变焦镜头', - iconPath: 'tool' - }, - { - name: 'Panasonic 25mm', - description: '定焦镜头', - iconPath: 'tool' - }, - { - name: 'Panasonic 100-300mm', - description: '长焦镜头', - iconPath: 'tool' - }, - { - name: 'DJI Action 5 Pro', - description: '运动相机', - iconPath: 'round-photo' - } - ] - } - } - } + computing: { + title: 'Computing Devices', + sections: { + devices: { + title: 'Devices', + tools: [ + { + name: 'Mac Mini M2 Pro', + description: '主力机 (32GB, 512GB)', + iconPath: 'apple' + }, + { + name: 'MacBook Air M1', + description: '移动办公 (16GB, 256GB)', + iconPath: 'apple' + }, + { + name: '机械师整机', + description: '台式机 (i5, 32GB, 512GB)', + iconPath: 'windows' + } + ] + } + } + }, + mobile: { + title: 'Mobile Devices', + sections: { + phone: { + title: 'Phone', + tools: [ + { + name: 'iPhone 13', + description: '手机 (256GB)', + iconPath: 'apple' + } + ] + }, + tablet: { + title: 'Tablet', + tools: [ + { + name: 'iPad Mini 5', + description: '平板', + iconPath: 'apple' + } + ] + } + } + }, + wearables: { + title: 'Smart Wearables', + sections: { + watch: { + title: 'Smart Watch', + tools: [ + { + name: 'Apple Watch S9', + description: '智能手表', + iconPath: 'apple' + } + ] + }, + audio: { + title: 'Audio Devices', + tools: [ + { + name: 'AirPods Pro 2', + description: '无线耳机', + iconPath: 'apple' + } + ] + } + } + }, + imaging: { + title: 'Imaging Equipment', + sections: { + cameras: { + title: 'Camera System', + tools: [ + { + name: '松下 GX9', + description: '相机', + iconPath: 'round-photo' + }, + { + name: 'Panasonic 14-140mm', + description: '变焦镜头', + iconPath: 'tool' + }, + { + name: 'Panasonic 25mm', + description: '定焦镜头', + iconPath: 'tool' + }, + { + name: 'Panasonic 100-300mm', + description: '长焦镜头', + iconPath: 'tool' + }, + { + name: 'DJI Action 5 Pro', + description: '运动相机', + iconPath: 'round-photo' + } + ] + } + } + } } --- -
- +
+ -
-
-

Tools & Devices

-

Tools, software, and devices I use daily

-
+
+
+

Tools & Devices

+

Tools, software, and devices I use daily

+
- + - -
-
- + +
+
+