@@ -0,0 +1,252 @@
|
|||||||
|
# CodeDocs 内容架构规划
|
||||||
|
|
||||||
|
## 愿景
|
||||||
|
为全栈、全端工程师打造一个**可查、可参考、可速查**的技术文档与知识库,覆盖从底层原理、框架实战、到面试突破的全链路。
|
||||||
|
|
||||||
|
## 一级分类(顶部菜单)
|
||||||
|
|
||||||
|
### 1. 📚 技术文档
|
||||||
|
主要技术栈与框架学习
|
||||||
|
|
||||||
|
#### 1.1 ⚙️ 后端技术
|
||||||
|
**目标用户**: 后端工程师、全栈开发者
|
||||||
|
|
||||||
|
- **Java 生态**
|
||||||
|
- Spring Framework / Spring Boot / Spring Cloud
|
||||||
|
- 核心概念 (IoC, AOP, Bean 生命周期)
|
||||||
|
- 常用注解与配置方式
|
||||||
|
- 微服务架构与分布式方案
|
||||||
|
- 性能优化与监控
|
||||||
|
- JVM 优化与性能调试
|
||||||
|
- 并发编程 (ThreadPool, Lock, Concurrent 工具)
|
||||||
|
|
||||||
|
- **数据库与缓存**
|
||||||
|
- SQL 优化与查询计划
|
||||||
|
- MySQL 索引设计与事务管理
|
||||||
|
- NoSQL (Redis, MongoDB)
|
||||||
|
- 分布式缓存方案
|
||||||
|
|
||||||
|
- **消息队列与异步**
|
||||||
|
- RabbitMQ / Kafka / RocketMQ
|
||||||
|
- 事件驱动架构
|
||||||
|
|
||||||
|
- **分布式系统**
|
||||||
|
- 一致性 (Raft, Consensus)
|
||||||
|
- 服务治理 (Nacos, Consul)
|
||||||
|
- 链路追踪 (Jaeger, SkyWalking)
|
||||||
|
|
||||||
|
#### 1.2 ⚛️ 前端开发
|
||||||
|
**目标用户**: 前端工程师、全栈开发者
|
||||||
|
|
||||||
|
- **核心框架**
|
||||||
|
- React
|
||||||
|
- Hooks 深度解析
|
||||||
|
- 状态管理 (Redux, Zustand, Jotai)
|
||||||
|
- 性能优化 (Code Splitting, Memo, Lazy)
|
||||||
|
- SSR / SSG 方案
|
||||||
|
- Vue 3
|
||||||
|
- Composition API 最佳实践
|
||||||
|
- 响应性原理
|
||||||
|
- Pinia 状态管理
|
||||||
|
|
||||||
|
- **工程化**
|
||||||
|
- 构建工具 (Webpack, Vite, Turbopack)
|
||||||
|
- 包管理 (npm, pnpm, yarn)
|
||||||
|
- CI/CD 流程
|
||||||
|
|
||||||
|
- **性能与体验**
|
||||||
|
- Web 性能指标 (LCP, FID, CLS)
|
||||||
|
- 渲染优化
|
||||||
|
- 网络优化 (CDN, 压缩)
|
||||||
|
|
||||||
|
- **跨端开发**
|
||||||
|
- React Native
|
||||||
|
- Electron
|
||||||
|
- 小程序 (微信、支付宝)
|
||||||
|
|
||||||
|
#### 1.3 🧠 算法与面试
|
||||||
|
**目标用户**: 求职者、算法爱好者
|
||||||
|
|
||||||
|
- **数据结构**
|
||||||
|
- 数组、链表、栈、队列
|
||||||
|
- 树 (二叉树、AVL、红黑树、B 树)
|
||||||
|
- 图
|
||||||
|
- 堆、优先队列
|
||||||
|
|
||||||
|
- **经典算法**
|
||||||
|
- 排序与查找
|
||||||
|
- 动态规划
|
||||||
|
- 贪心算法
|
||||||
|
- 回溯与递归
|
||||||
|
|
||||||
|
- **编程面试题**
|
||||||
|
- 按类型分类 (String, Array, Tree, Graph, DP)
|
||||||
|
- 按难度分级
|
||||||
|
- 按公司出现频率分类
|
||||||
|
|
||||||
|
- **系统设计**
|
||||||
|
- 高并发架构设计
|
||||||
|
- 分布式系统设计
|
||||||
|
- 大数据处理
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 二级分类 - 导航示例
|
||||||
|
|
||||||
|
### 技术文档 > 后端技术
|
||||||
|
```
|
||||||
|
├── Spring 全家桶
|
||||||
|
│ ├── Spring Core (IoC, AOP)
|
||||||
|
│ ├── Spring MVC
|
||||||
|
│ ├── Spring Boot 实战
|
||||||
|
│ ├── Spring Cloud 微服务
|
||||||
|
│ └── Spring Data
|
||||||
|
├── JVM 与性能
|
||||||
|
│ ├── JVM 内存模型
|
||||||
|
│ ├── GC 调优
|
||||||
|
│ └── 性能分析工具
|
||||||
|
├── 并发编程
|
||||||
|
│ ├── 线程基础
|
||||||
|
│ ├── 锁与同步
|
||||||
|
│ ├── Concurrent 工具类
|
||||||
|
│ └── 实战案例
|
||||||
|
└── 数据库
|
||||||
|
├── MySQL 核心
|
||||||
|
├── 索引优化
|
||||||
|
├── 事务与隔离
|
||||||
|
└── 分布式事务
|
||||||
|
```
|
||||||
|
|
||||||
|
### 技术文档 > 前端开发
|
||||||
|
```
|
||||||
|
├── React 进阶
|
||||||
|
│ ├── Hooks 深入
|
||||||
|
│ ├── 状态管理对比
|
||||||
|
│ ├── 性能优化
|
||||||
|
│ └── Next.js / Remix
|
||||||
|
├── 工程化实践
|
||||||
|
│ ├── 构建系统选型
|
||||||
|
│ ├── 测试体系
|
||||||
|
│ ├── 发布流程
|
||||||
|
│ └── 监控与错误追踪
|
||||||
|
└── 跨端方案
|
||||||
|
├── React Native
|
||||||
|
├── Electron
|
||||||
|
└── 小程序开发
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 三级结构示例
|
||||||
|
|
||||||
|
每个主题采用标准化格式:
|
||||||
|
|
||||||
|
```
|
||||||
|
## 主题名称
|
||||||
|
|
||||||
|
### 📌 核心概念
|
||||||
|
- 定义与原理
|
||||||
|
- 为什么需要它
|
||||||
|
|
||||||
|
### 🔧 实践指南
|
||||||
|
- 快速开始
|
||||||
|
- 常见用法
|
||||||
|
- 最佳实践
|
||||||
|
|
||||||
|
### ⚡ 性能优化
|
||||||
|
- 性能指标
|
||||||
|
- 瓶颈分析
|
||||||
|
- 优化方案
|
||||||
|
|
||||||
|
### 🎯 面试必考
|
||||||
|
- 高频问题
|
||||||
|
- 答题思路
|
||||||
|
- 深度扩展
|
||||||
|
|
||||||
|
### 📚 参考资源
|
||||||
|
- 官方文档
|
||||||
|
- 推荐阅读
|
||||||
|
- 代码示例
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2️⃣ 🛠️ 工具与资源(待扩展)
|
||||||
|
|
||||||
|
- **最佳实践**: 设计模式、代码规范、安全实践
|
||||||
|
- **常用链接**: 文档汇总、在线工具、社区论坛
|
||||||
|
- **推荐阅读**: 经典书籍、论文、博客精选
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3️⃣ 📝 Blog
|
||||||
|
- 技术分享
|
||||||
|
- 学习笔记
|
||||||
|
- 行业资讯
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 内容组织策略
|
||||||
|
|
||||||
|
### 按学习路径分级
|
||||||
|
1. **快速入门** (⏱️ 5-10分钟)
|
||||||
|
- 适合初学者快速上手
|
||||||
|
|
||||||
|
2. **深度学习** (⏱️ 30分钟-1小时)
|
||||||
|
- 详细讲解原理与实践
|
||||||
|
|
||||||
|
3. **性能与优化** (⏱️ 1-2小时)
|
||||||
|
- 高级技巧与优化方案
|
||||||
|
|
||||||
|
4. **面试突破** (⏱️ 灵活)
|
||||||
|
- 高频问题与答题框架
|
||||||
|
|
||||||
|
### 搜索与过滤支持
|
||||||
|
- 按难度筛选
|
||||||
|
- 按学习时间筛选
|
||||||
|
- 按使用频率筛选
|
||||||
|
- 按技术栈筛选
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 实施优先级
|
||||||
|
|
||||||
|
### Phase 1 (当前)
|
||||||
|
- ✅ 首页设计升级(蓝色悬停动效)
|
||||||
|
- ✅ 多级菜单配置
|
||||||
|
- ✅ 内容分类框架
|
||||||
|
|
||||||
|
### Phase 2
|
||||||
|
- 迁移现有内容到新分类
|
||||||
|
- 补充 Spring 系列完整文档
|
||||||
|
- 补充 React 进阶指南
|
||||||
|
|
||||||
|
### Phase 3
|
||||||
|
- 补充算法与面试题库
|
||||||
|
- 添加交互式代码编辑器
|
||||||
|
- 性能与搜索优化
|
||||||
|
|
||||||
|
### Phase 4
|
||||||
|
- 用户反馈收集与迭代
|
||||||
|
- 内容深化与补充
|
||||||
|
- 社区建设
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 目标数据
|
||||||
|
|
||||||
|
| 指标 | 当前 | 目标 |
|
||||||
|
|-----|------|------|
|
||||||
|
| 文档页面数 | ~30 | 200+ |
|
||||||
|
| 一级分类 | 3 | 4+ |
|
||||||
|
| 二级分类 | ~6 | 15+ |
|
||||||
|
| 代码示例数 | ~10 | 100+ |
|
||||||
|
| 日均访问 | N/A | 1000+ |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 参考标准
|
||||||
|
|
||||||
|
- 参考 Dyte Docs 的多级菜单、强大的搜索
|
||||||
|
- 参考 MDN 的结构化学习路径
|
||||||
|
- 参考 阿里技术文档 的工程最佳实践
|
||||||
@@ -0,0 +1,310 @@
|
|||||||
|
# CodeDocs 升级总结与实施指南
|
||||||
|
|
||||||
|
## 📋 已完成的升级
|
||||||
|
|
||||||
|
### 1️⃣ 首页样式升级 ✅
|
||||||
|
|
||||||
|
#### 变更清单
|
||||||
|
- **HomepageFeatures.tsx**:
|
||||||
|
- 从 3 个简单文本卡片 → 交互式卡片组件
|
||||||
|
- 支持图标、颜色、渐变背景
|
||||||
|
- 完整的 hover 动效和动画
|
||||||
|
|
||||||
|
- **HomepageFeatures.module.css**:
|
||||||
|
- 新增蓝色悬停动效 (`hover:text-primary`)
|
||||||
|
- 新增图标背景色变化
|
||||||
|
- 新增箭头滑出动画
|
||||||
|
- 新增卡片缩放 + 投影效果
|
||||||
|
- 新增分层渐变背景
|
||||||
|
- 响应式网格布局(3列→1列)
|
||||||
|
|
||||||
|
- **index.tsx**:
|
||||||
|
- 新增 3 个主要导航按钮
|
||||||
|
- 优化首页文案
|
||||||
|
- 增强视觉层级
|
||||||
|
|
||||||
|
#### 设计理念(参考 dyte-io/docs)
|
||||||
|
```
|
||||||
|
卡片组成 = icon + title + description + hover-effect
|
||||||
|
├── Icon: 根据分类变色(蓝色/青色/粉色)
|
||||||
|
├── Title: hover 时变为主色 (#2160fd)
|
||||||
|
├── Border: hover 时从半透明→主色
|
||||||
|
└── Arrow: hover 时从隐藏→显示并滑入
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2️⃣ 多级菜单配置 ✅
|
||||||
|
|
||||||
|
#### 变更清单
|
||||||
|
- **docusaurus.config.ts - navbar.items**:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
items: [
|
||||||
|
// 技术文档 - 3 级分类
|
||||||
|
{
|
||||||
|
type: 'dropdown',
|
||||||
|
label: '📚 技术文档',
|
||||||
|
items: [
|
||||||
|
'⚙️ 后端技术',
|
||||||
|
'⚛️ 前端开发',
|
||||||
|
'🧠 算法与面试'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
// 工具与资源 - 预留扩展
|
||||||
|
{
|
||||||
|
type: 'dropdown',
|
||||||
|
label: '🛠️ 工具与资源',
|
||||||
|
items: [
|
||||||
|
'📖 最佳实践',
|
||||||
|
'🔗 常用链接',
|
||||||
|
'📚 推荐阅读'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
// 其他链接
|
||||||
|
'📝 Blog',
|
||||||
|
'GitHub'
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 菜单截图预期
|
||||||
|
```
|
||||||
|
顶部导航:
|
||||||
|
[📚 技术文档 ▼] [🛠️ 工具与资源 ▼] [📝 Blog] [GitHub]
|
||||||
|
|
||||||
|
下拉展开:
|
||||||
|
📚 技术文档 ▼
|
||||||
|
├─ ⚙️ 后端技术
|
||||||
|
├─ ⚛️ 前端开发
|
||||||
|
└─ 🧠 算法与面试
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3️⃣ 样式系统升级 ✅
|
||||||
|
|
||||||
|
#### 变更清单
|
||||||
|
- **tailwind.config.js**: 新建
|
||||||
|
- 蓝色色系定义 (#2160fd)
|
||||||
|
- 青色色系支持
|
||||||
|
- 粉色色系支持
|
||||||
|
- 响应式断点优化
|
||||||
|
|
||||||
|
- **postcss.config.js**: 新建
|
||||||
|
- PostCSS 处理管道配置
|
||||||
|
|
||||||
|
- **custom.css**: 重写
|
||||||
|
- 原有 Infima 主色替换为蓝色 (#2160fd)
|
||||||
|
- 增加 Tailwind 导入(@import)
|
||||||
|
- 新增 CSS 变量系统(支持深色模式)
|
||||||
|
- 新增 hero 背景渐变
|
||||||
|
|
||||||
|
#### 颜色对照表
|
||||||
|
| 用途 | 颜色 | 十六进制 | RGB |
|
||||||
|
|------|------|---------|-----|
|
||||||
|
| 主色 (Primary) | 蓝色 | #2160fd | rgb(33 96 253) |
|
||||||
|
| 悬停强调 | 深蓝 | #1850d8 | - |
|
||||||
|
| 次色 (Secondary) | 青色 | #06b6d4 | - |
|
||||||
|
| 三色 (Tertiary) | 粉色 | #ec4899 | - |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4️⃣ 内容架构规划 ✅
|
||||||
|
|
||||||
|
#### 文档位置
|
||||||
|
- `ARCHITECTURE_PLAN.md` - 完整规划书
|
||||||
|
|
||||||
|
#### 结构概览
|
||||||
|
```
|
||||||
|
一级菜单 (4 类)
|
||||||
|
├─ 📚 技术文档
|
||||||
|
│ ├─ ⚙️ 后端技术 (Java/Spring/Database/MQ/分布式)
|
||||||
|
│ ├─ ⚛️ 前端开发 (React/Vue/工程化/跨端)
|
||||||
|
│ └─ 🧠 算法与面试 (数据结构/算法/系统设计)
|
||||||
|
├─ 🛠️ 工具与资源 (best practices/links/reading)
|
||||||
|
├─ 📝 Blog (分享与资讯)
|
||||||
|
└─ GitHub (开源)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 内容分级(学习路径)
|
||||||
|
1. **快速入门** (⏱️ 5-10 分钟) - 适合初学
|
||||||
|
2. **深度学习** (⏱️ 30 分钟-1 小时) - 详解原理
|
||||||
|
3. **性能优化** (⏱️ 1-2 小时) - 高级技巧
|
||||||
|
4. **面试突破** (⏱️ 灵活) - 频考题
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 下一步操作
|
||||||
|
|
||||||
|
### 步骤 1: 本地验证 (NOW)
|
||||||
|
```bash
|
||||||
|
cd /opt/cyy/code-docs
|
||||||
|
|
||||||
|
# 若未完成 npm install,先安装依赖
|
||||||
|
npm install
|
||||||
|
|
||||||
|
# 启动开发服务器
|
||||||
|
npm start
|
||||||
|
|
||||||
|
# 验证内容:
|
||||||
|
# ✅ 首页 3 个卡片是否显示
|
||||||
|
# ✅ 卡片 hover 是否有蓝色效果
|
||||||
|
# ✅ 菜单是否显示下拉箭头
|
||||||
|
# ✅ 深色模式是否正常
|
||||||
|
```
|
||||||
|
|
||||||
|
### 步骤 2: 迁移现有内容 (Week 1)
|
||||||
|
```
|
||||||
|
当前文件:
|
||||||
|
docs/
|
||||||
|
├─ intro-docs.mdx ✅ 保留
|
||||||
|
├─ backend-doc/ ✅ 已有结构
|
||||||
|
├─ frontend-doc/ ✅ 已有结构
|
||||||
|
├─ LeetCode/ ✅ 已有结构
|
||||||
|
└─ ...
|
||||||
|
|
||||||
|
需要处理:
|
||||||
|
1. 更新 sidebars.ts 以支持新菜单
|
||||||
|
2. 验证所有链接有效性
|
||||||
|
3. 补充缺失的 intro-docs.md 文件
|
||||||
|
```
|
||||||
|
|
||||||
|
### 步骤 3: 菜单链接修复 (Week 1)
|
||||||
|
在 navbar 中验证以下路由存在:
|
||||||
|
- `/docs/backend-doc/intro-docs`
|
||||||
|
- `/docs/frontend-doc/intro-docs`
|
||||||
|
- `/docs/LeetCode/intro-docs`
|
||||||
|
|
||||||
|
### 步骤 4: 内容扩充计划 (Phase 2)
|
||||||
|
根据 ARCHITECTURE_PLAN.md 逐步添加:
|
||||||
|
|
||||||
|
**高优先级**:
|
||||||
|
- [ ] Spring Framework 核心(5-8 篇)
|
||||||
|
- [ ] React Hooks 深入(3-5 篇)
|
||||||
|
- [ ] LeetCode 精选题库(10-15 题)
|
||||||
|
|
||||||
|
**中优先级**:
|
||||||
|
- [ ] JVM 调优系列
|
||||||
|
- [ ] Vue 3 完整指南
|
||||||
|
- [ ] 系统设计案例
|
||||||
|
|
||||||
|
**低优先级**:
|
||||||
|
- [ ] 最佳实践合集
|
||||||
|
- [ ] 工具对比
|
||||||
|
- [ ] 推荐书籍
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎨 设计效果预览
|
||||||
|
|
||||||
|
### 首页卡片效果
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────┐
|
||||||
|
│ [⚙️] 后端技术 │ → hover: border-blue, text-blue, arrow-in
|
||||||
|
│ │
|
||||||
|
│ 深度讲解 Spring Boot / Spring │
|
||||||
|
│ Cloud 核心概念、最佳实践... │
|
||||||
|
│ │
|
||||||
|
│ → │ (animated)
|
||||||
|
└─────────────────────────────────┘
|
||||||
|
|
||||||
|
动效细节:
|
||||||
|
- 渐变背景从灰→蓝色渐变
|
||||||
|
- 图标放大 10%,背景变蓝
|
||||||
|
- 标题变成蓝色 (#2160fd)
|
||||||
|
- 箭头从右侧滑入
|
||||||
|
- 整体卡片上移 4px
|
||||||
|
- 投影增强,显示深度感
|
||||||
|
```
|
||||||
|
|
||||||
|
### 顶部菜单效果
|
||||||
|
```
|
||||||
|
┌─ CodeDocs ─────┐ [📚 技术文档 ▼] [🛠️ 工具 ▼] [📝 Blog] [GitHub]
|
||||||
|
↓
|
||||||
|
┌─────────────┐
|
||||||
|
│ ⚙️ 后端 │
|
||||||
|
│ ⚛️ 前端 │
|
||||||
|
│ 🧠 算法 │
|
||||||
|
└─────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 检查清单
|
||||||
|
|
||||||
|
- [ ] npm install 完成
|
||||||
|
- [ ] npm start 本地验证通过
|
||||||
|
- [ ] 首页卡片显示正常
|
||||||
|
- [ ] 卡片 hover 效果生效
|
||||||
|
- [ ] 菜单下拉正常
|
||||||
|
- [ ] 所有链接有效
|
||||||
|
- [ ] 深色模式测试
|
||||||
|
- [ ] 响应式(手机端)测试
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📁 文件变更总结
|
||||||
|
|
||||||
|
| 文件 | 操作 | 说明 |
|
||||||
|
|-----|------|------|
|
||||||
|
| `src/components/HomepageFeatures.tsx` | ✏️ 修改 | 新组件结构 + 3 色卡片 |
|
||||||
|
| `src/components/HomepageFeatures.module.css` | ✏️ 重写 | 完整的悬停动效 |
|
||||||
|
| `src/pages/index.tsx` | ✏️ 修改 | 新的 CTA 按钮 |
|
||||||
|
| `src/css/custom.css` | ✏️ 重写 | 主色改蓝 + Tailwind 导入 |
|
||||||
|
| `docusaurus.config.ts` | ✏️ 修改 | 多级菜单配置 |
|
||||||
|
| `tailwind.config.js` | ✨ 新建 | Tailwind 配置 |
|
||||||
|
| `postcss.config.js` | ✨ 新建 | PostCSS 管道 |
|
||||||
|
| `package.json` | ✏️ 修改 | 已升级依赖版本 |
|
||||||
|
| `ARCHITECTURE_PLAN.md` | ✨ 新建 | 内容架构规划 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🆘 常见问题
|
||||||
|
|
||||||
|
### Q1: npm install 很慢?
|
||||||
|
**A**: 使用 pnpm 或 npm 阿里镜像加速
|
||||||
|
```bash
|
||||||
|
npm install -g pnpm
|
||||||
|
pnpm install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Q2: Tailwind 样式未生效?
|
||||||
|
**A**: 需要先完成 `npm install`,再运行 `npm start`
|
||||||
|
|
||||||
|
### Q3: 首页链接 404?
|
||||||
|
**A**: 检查 `/docs` 下是否存在对应的文件夹:
|
||||||
|
```bash
|
||||||
|
ls -la docs/
|
||||||
|
# 应该看到:backend-doc/ frontend-doc/ LeetCode/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Q4: 深色模式图标不清晰?
|
||||||
|
**A**: 在 custom.css 中针对 `[data-theme='dark']` 添加 color 覆盖
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📞 后续支持
|
||||||
|
|
||||||
|
需要进一步升级:
|
||||||
|
1. **搜索优化** - 集成 Algolia 优化查询
|
||||||
|
2. **版本管理** - 为 SDK 文档添加版本切换(参考 dyte-io/docs)
|
||||||
|
3. **API 文档** - 集成 OpenAPI / Swagger
|
||||||
|
4. **交互示例** - 嵌入 CodeSandbox / RunKit
|
||||||
|
5. **反馈系统** - 页面评分与问题报告
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 参考资源
|
||||||
|
|
||||||
|
- 📖 [Docusaurus 官方文档](https://docusaurus.io/)
|
||||||
|
- 🎨 [Tailwind CSS](https://tailwindcss.com/)
|
||||||
|
- 🔗 [dyte-io/docs 源代码](https://github.com/dyte-io/docs)
|
||||||
|
- 📚 [MDN 文档结构参考](https://developer.mozilla.org/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**最后更新**: 2026-05-06
|
||||||
|
**更新者**: CodeDocs 升级系统
|
||||||
|
**版本**: v2.0
|
||||||
+43
-4
@@ -50,12 +50,51 @@ const config: Config = {
|
|||||||
},
|
},
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
type: 'doc',
|
type: 'dropdown',
|
||||||
docId: 'intro-docs',
|
label: '📚 技术文档',
|
||||||
position: 'left',
|
position: 'left',
|
||||||
label: 'Docs',
|
items: [
|
||||||
|
{
|
||||||
|
type: 'doc',
|
||||||
|
docId: 'backend-doc/intro-docs',
|
||||||
|
label: '⚙️ 后端技术',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'doc',
|
||||||
|
docId: 'frontend-doc/intro-docs',
|
||||||
|
label: '⚛️ 前端开发',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'doc',
|
||||||
|
docId: 'LeetCode/intro-docs',
|
||||||
|
label: '🧠 算法与面试',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'dropdown',
|
||||||
|
label: '🛠️ 工具与资源',
|
||||||
|
position: 'left',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
label: '📖 最佳实践',
|
||||||
|
href: '#',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '🔗 常用链接',
|
||||||
|
href: '#',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '📚 推荐阅读',
|
||||||
|
href: '#',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
to: '/blog',
|
||||||
|
label: '📝 Blog',
|
||||||
|
position: 'left'
|
||||||
},
|
},
|
||||||
{ to: '/blog', label: 'Blog', position: 'left' },
|
|
||||||
{
|
{
|
||||||
href: 'https://github.com/chuyaoyuan/code-docs',
|
href: 'https://github.com/chuyaoyuan/code-docs',
|
||||||
label: 'GitHub',
|
label: 'GitHub',
|
||||||
|
|||||||
Generated
+405
-466
File diff suppressed because it is too large
Load Diff
+9
-3
@@ -16,8 +16,8 @@
|
|||||||
"typecheck": "tsc --noEmit"
|
"typecheck": "tsc --noEmit"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/core": "^3.7.0",
|
"@docusaurus/core": "^3.10.1",
|
||||||
"@docusaurus/preset-classic": "^3.7.0",
|
"@docusaurus/preset-classic": "^3.10.1",
|
||||||
"@mdx-js/react": "^3.0.0",
|
"@mdx-js/react": "^3.0.0",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
@@ -26,10 +26,16 @@
|
|||||||
"remark-math": "^6.0.0"
|
"remark-math": "^6.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@docusaurus/tsconfig": "^3.7.0",
|
"@docusaurus/tsconfig": "^3.10.1",
|
||||||
|
"autoprefixer": "^10.5.0",
|
||||||
"dotenv": "^16.4.7",
|
"dotenv": "^16.4.7",
|
||||||
|
"postcss": "^8.5.14",
|
||||||
|
"tailwindcss": "^4.2.4",
|
||||||
"typescript": "^5.4.5"
|
"typescript": "^5.4.5"
|
||||||
},
|
},
|
||||||
|
"overrides": {
|
||||||
|
"serialize-javascript": "7.0.5"
|
||||||
|
},
|
||||||
"browserslist": {
|
"browserslist": {
|
||||||
"production": [
|
"production": [
|
||||||
">0.5%",
|
">0.5%",
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
module.exports = {
|
||||||
|
plugins: {
|
||||||
|
tailwindcss: {},
|
||||||
|
autoprefixer: {},
|
||||||
|
},
|
||||||
|
};
|
||||||
@@ -3,11 +3,168 @@
|
|||||||
.features {
|
.features {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 2rem 0;
|
padding: 3rem 0;
|
||||||
|
width: 100%;
|
||||||
|
background: linear-gradient(135deg, rgba(33, 96, 253, 0.05) 0%, rgba(6, 182, 212, 0.05) 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.featureGrid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||||
|
gap: 1.5rem;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.featureSvg {
|
@media (max-width: 768px) {
|
||||||
height: 200px;
|
.featureGrid {
|
||||||
width: 200px;
|
grid-template-columns: 1fr;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Feature Card Styling */
|
||||||
|
.featureCard {
|
||||||
|
position: relative;
|
||||||
|
text-decoration: none;
|
||||||
|
color: inherit;
|
||||||
|
display: block;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cardInner {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
border-radius: 1.5rem;
|
||||||
|
border: 1px solid rgba(33, 96, 253, 0.1);
|
||||||
|
background: linear-gradient(135deg, rgba(33, 96, 253, 0.02), rgba(6, 182, 212, 0.02));
|
||||||
|
padding: 1.5rem;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 1rem;
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.featureCard:hover .cardInner {
|
||||||
|
border-color: var(--card-color, #2160fd);
|
||||||
|
background: linear-gradient(135deg, rgba(33, 96, 253, 0.08), rgba(6, 182, 212, 0.08));
|
||||||
|
box-shadow: 0 10px 30px rgba(33, 96, 253, 0.1),
|
||||||
|
0 0 1px rgba(33, 96, 253, 0.3);
|
||||||
|
transform: translateY(-4px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cardIcon {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
line-height: 1;
|
||||||
|
width: 3rem;
|
||||||
|
height: 3rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
background: rgba(33, 96, 253, 0.1);
|
||||||
|
border-radius: 1rem;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.featureCard:hover .cardIcon {
|
||||||
|
background: var(--card-color, #2160fd);
|
||||||
|
color: white;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cardContent {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cardTitle {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
font-weight: 600;
|
||||||
|
margin: 0;
|
||||||
|
color: var(--docs-color-text, #1f2937);
|
||||||
|
transition: color 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme='dark'] .cardTitle {
|
||||||
|
color: #f3f4f6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.featureCard:hover .cardTitle {
|
||||||
|
color: var(--card-color, #2160fd);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cardDescription {
|
||||||
|
font-size: 0.95rem;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin: 0;
|
||||||
|
color: var(--docs-color-text-secondary, #6b7280);
|
||||||
|
transition: color 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme='dark'] .cardDescription {
|
||||||
|
color: #d1d5db;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cardGradient {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
pointer-events: none;
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 0.3s ease;
|
||||||
|
background: radial-gradient(circle at top right, rgba(33, 96, 253, 0.15), transparent 70%);
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.featureCard:hover .cardGradient {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cardArrow {
|
||||||
|
position: absolute;
|
||||||
|
top: 1rem;
|
||||||
|
right: 1rem;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
opacity: 0;
|
||||||
|
transform: translate(8px, -8px);
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
color: var(--card-color, #2160fd);
|
||||||
|
}
|
||||||
|
|
||||||
|
.featureCard:hover .cardArrow {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation */
|
||||||
|
@keyframes slideInUp {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(20px);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cardInner {
|
||||||
|
animation: slideInUp 0.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Stagger animation for cards */
|
||||||
|
:nth-child(1) .cardInner {
|
||||||
|
animation-delay: 0.1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
:nth-child(2) .cardInner {
|
||||||
|
animation-delay: 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
:nth-child(3) .cardInner {
|
||||||
|
animation-delay: 0.3s;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,38 +1,87 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import clsx from 'clsx';
|
import Link from '@docusaurus/Link';
|
||||||
import styles from './HomepageFeatures.module.css';
|
import styles from './HomepageFeatures.module.css';
|
||||||
|
|
||||||
interface FeatureItem {
|
interface FeatureItem {
|
||||||
|
id: string;
|
||||||
title: string;
|
title: string;
|
||||||
description: string;
|
description: string;
|
||||||
|
icon: React.ReactNode;
|
||||||
|
link: string;
|
||||||
|
color: string;
|
||||||
|
gradient: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const FeatureList: FeatureItem[] = [
|
const FeatureList: FeatureItem[] = [
|
||||||
{
|
{
|
||||||
title: '📚 系统化文档',
|
id: 'backend',
|
||||||
|
title: '后端技术',
|
||||||
description:
|
description:
|
||||||
'涵盖后端(Spring Boot/Cloud)、前端(React/Vue)和算法(LeetCode),分门别类,清晰索引。',
|
'深度讲解 Spring Boot / Spring Cloud 核心概念、最佳实践与微服务架构,含真实项目案例。',
|
||||||
|
icon: '⚙️',
|
||||||
|
link: '/docs/backend-doc/intro-docs',
|
||||||
|
color: '#2160fd',
|
||||||
|
gradient: 'from-blue-500/20 to-transparent',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '⚡ 快速检索',
|
id: 'frontend',
|
||||||
|
title: '前端开发',
|
||||||
description:
|
description:
|
||||||
'集成 Algolia DocSearch,毫秒级全文检索,快速定位任意知识点。',
|
'系统化学习 React / Vue 现代框架、状态管理、组件设计与性能优化,打造高质量前端应用。',
|
||||||
|
icon: '⚛️',
|
||||||
|
link: '/docs/frontend-doc/intro-docs',
|
||||||
|
color: '#06b6d4',
|
||||||
|
gradient: 'from-cyan-500/20 to-transparent',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '🌐 持续更新',
|
id: 'algorithms',
|
||||||
|
title: '算法与面试',
|
||||||
description:
|
description:
|
||||||
'由技术团队持续维护,定期同步最新技术栈实践和面试题解析。',
|
'精选 LeetCode 题目分类讲解、编程面试题库与数据结构深度分析,快速突破算法关卡。',
|
||||||
|
icon: '🧠',
|
||||||
|
link: '/docs/LeetCode/intro-docs',
|
||||||
|
color: '#ec4899',
|
||||||
|
gradient: 'from-pink-500/20 to-transparent',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
function Feature({ title, description }: FeatureItem): JSX.Element {
|
interface FeatureCardProps extends FeatureItem {}
|
||||||
|
|
||||||
|
function FeatureCard({
|
||||||
|
title,
|
||||||
|
description,
|
||||||
|
icon,
|
||||||
|
link,
|
||||||
|
color,
|
||||||
|
gradient,
|
||||||
|
}: FeatureCardProps): JSX.Element {
|
||||||
return (
|
return (
|
||||||
<div className={clsx('col col--4')}>
|
<Link
|
||||||
<div className="text--center padding-horiz--md">
|
to={link}
|
||||||
<h3>{title}</h3>
|
className={`${styles.featureCard} group`}
|
||||||
<p>{description}</p>
|
style={
|
||||||
|
{
|
||||||
|
'--card-color': color,
|
||||||
|
} as React.CSSProperties & { '--card-color': string }
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<div className={styles.cardInner}>
|
||||||
|
{/* Icon */}
|
||||||
|
<div className={styles.cardIcon}>{icon}</div>
|
||||||
|
|
||||||
|
{/* Content */}
|
||||||
|
<div className={styles.cardContent}>
|
||||||
|
<h3 className={styles.cardTitle}>{title}</h3>
|
||||||
|
<p className={styles.cardDescription}>{description}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Gradient Background */}
|
||||||
|
<div className={`${styles.cardGradient} ${gradient}`}></div>
|
||||||
|
|
||||||
|
{/* Arrow Icon */}
|
||||||
|
<div className={styles.cardArrow}>→</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</Link>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,9 +89,9 @@ export default function HomepageFeatures(): JSX.Element {
|
|||||||
return (
|
return (
|
||||||
<section className={styles.features}>
|
<section className={styles.features}>
|
||||||
<div className="container">
|
<div className="container">
|
||||||
<div className="row">
|
<div className={styles.featureGrid}>
|
||||||
{FeatureList.map((props, idx) => (
|
{FeatureList.map((props) => (
|
||||||
<Feature key={idx} {...props} />
|
<FeatureCard key={props.id} {...props} />
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+69
-7
@@ -5,21 +5,83 @@
|
|||||||
* work well for content-centric websites.
|
* work well for content-centric websites.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Import Tailwind CSS */
|
||||||
|
@import 'tailwindcss/base';
|
||||||
|
@import 'tailwindcss/components';
|
||||||
|
@import 'tailwindcss/utilities';
|
||||||
|
|
||||||
/* You can override the default Infima variables here. */
|
/* You can override the default Infima variables here. */
|
||||||
:root {
|
:root {
|
||||||
--ifm-color-primary: #25c2a0;
|
--ifm-color-primary: #2160fd;
|
||||||
--ifm-color-primary-dark: rgb(33, 175, 144);
|
--ifm-color-primary-dark: #1850d8;
|
||||||
--ifm-color-primary-darker: rgb(31, 165, 136);
|
--ifm-color-primary-darker: #1442c4;
|
||||||
--ifm-color-primary-darkest: rgb(26, 136, 112);
|
--ifm-color-primary-darkest: #102ca0;
|
||||||
--ifm-color-primary-light: rgb(70, 203, 174);
|
--ifm-color-primary-light: #4d7ffe;
|
||||||
--ifm-color-primary-lighter: rgb(102, 212, 189);
|
--ifm-color-primary-lighter: #7a9eff;
|
||||||
--ifm-color-primary-lightest: rgb(146, 224, 208);
|
--ifm-color-primary-lightest: #a8c0ff;
|
||||||
|
|
||||||
|
--docs-color-primary: rgb(33 96 253);
|
||||||
|
--docs-color-primary-100: rgb(26 144 255);
|
||||||
|
--docs-color-primary-200: rgb(33 96 253);
|
||||||
|
|
||||||
|
--docs-color-secondary-1000: rgb(0 0 0);
|
||||||
|
--docs-color-secondary-900: rgb(25 25 25);
|
||||||
|
--docs-color-secondary-800: rgb(38 38 38);
|
||||||
|
--docs-color-secondary-700: rgb(71 71 71);
|
||||||
|
|
||||||
|
--docs-color-text: rgb(31 41 55);
|
||||||
|
--docs-color-text-100: rgb(107 114 128);
|
||||||
|
--docs-color-text-400: rgb(153 153 153);
|
||||||
|
|
||||||
|
--docs-color-text-secondary: rgb(107 114 128);
|
||||||
|
|
||||||
--ifm-code-font-size: 95%;
|
--ifm-code-font-size: 95%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[data-theme='dark'] {
|
||||||
|
--docs-color-text: rgb(243 244 246);
|
||||||
|
--docs-color-text-secondary: rgb(209 213 219);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code highlighting */
|
||||||
.docusaurus-highlight-code-line {
|
.docusaurus-highlight-code-line {
|
||||||
background-color: rgb(72, 77, 91);
|
background-color: rgb(72, 77, 91);
|
||||||
display: block;
|
display: block;
|
||||||
margin: 0 calc(-1 * var(--ifm-pre-padding));
|
margin: 0 calc(-1 * var(--ifm-pre-padding));
|
||||||
padding: 0 var(--ifm-pre-padding);
|
padding: 0 var(--ifm-pre-padding);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Enhanced link hover decoration */
|
||||||
|
.navbar__link,
|
||||||
|
.menu__link,
|
||||||
|
.table-of-contents__link,
|
||||||
|
.pagination-nav,
|
||||||
|
.footer {
|
||||||
|
--ifm-link-hover-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu__link {
|
||||||
|
--ifm-link-hover-color: var(--ifm-color-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Smooth transitions */
|
||||||
|
* {
|
||||||
|
@apply transition-colors;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hero section enhancements */
|
||||||
|
.hero {
|
||||||
|
background: linear-gradient(
|
||||||
|
135deg,
|
||||||
|
rgba(33, 96, 253, 0.05) 0%,
|
||||||
|
rgba(6, 182, 212, 0.05) 100%
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero--primary {
|
||||||
|
background-color: #f9fafb;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme='dark'] .hero--primary {
|
||||||
|
background-color: #1a1a2e;
|
||||||
|
}
|
||||||
|
|||||||
+18
-3
@@ -11,13 +11,28 @@ function HomepageHeader(): JSX.Element {
|
|||||||
return (
|
return (
|
||||||
<header className={clsx('hero hero--primary', styles.heroBanner)}>
|
<header className={clsx('hero hero--primary', styles.heroBanner)}>
|
||||||
<div className="container">
|
<div className="container">
|
||||||
<h1 className="hero__title">{siteConfig.title}</h1>
|
<h1 className="hero__title">🚀 {siteConfig.title}</h1>
|
||||||
<p className="hero__subtitle">{siteConfig.tagline}</p>
|
<p className="hero__subtitle">{siteConfig.tagline}</p>
|
||||||
|
<p style={{ fontSize: '0.95rem', color: 'rgba(0,0,0,0.6)', marginBottom: '1.5rem' }}>
|
||||||
|
为全栈、全端工程师精心打造的<strong>技术文档 + 算法面试 + 最佳实践</strong>一站式参考库
|
||||||
|
</p>
|
||||||
<div className={styles.buttons}>
|
<div className={styles.buttons}>
|
||||||
|
<Link
|
||||||
|
className="button button--primary button--lg"
|
||||||
|
to="/docs/backend-doc/intro-docs">
|
||||||
|
⚙️ 后端技术
|
||||||
|
</Link>
|
||||||
<Link
|
<Link
|
||||||
className="button button--secondary button--lg"
|
className="button button--secondary button--lg"
|
||||||
to="/docs/intro-docs">
|
to="/docs/frontend-doc/intro-docs"
|
||||||
Code Docs 介绍 - 1min ⏱️
|
style={{ marginLeft: '1rem' }}>
|
||||||
|
⚛️ 前端开发
|
||||||
|
</Link>
|
||||||
|
<Link
|
||||||
|
className="button button--outline button--lg"
|
||||||
|
to="/docs/LeetCode/intro-docs"
|
||||||
|
style={{ marginLeft: '1rem' }}>
|
||||||
|
🧠 算法面试
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,77 @@
|
|||||||
|
/** @type {import('tailwindcss').Config} */
|
||||||
|
module.exports = {
|
||||||
|
corePlugins: {
|
||||||
|
preflight: false,
|
||||||
|
},
|
||||||
|
darkMode: ['class', '[data-theme="dark"]'],
|
||||||
|
content: ['./src/**/*.{jsx,tsx,html}', './docs/**/*.{jsx,tsx,html}'],
|
||||||
|
theme: {
|
||||||
|
extend: {
|
||||||
|
colors: {
|
||||||
|
primary: {
|
||||||
|
50: '#f0f5ff',
|
||||||
|
100: '#e0ebff',
|
||||||
|
200: '#c5d9ff',
|
||||||
|
300: '#a3bdff',
|
||||||
|
400: '#7a99ff',
|
||||||
|
500: '#2160fd',
|
||||||
|
600: '#1e4fd4',
|
||||||
|
700: '#1939a8',
|
||||||
|
800: '#15278a',
|
||||||
|
900: '#121d70',
|
||||||
|
},
|
||||||
|
slate: {
|
||||||
|
50: '#f8fafc',
|
||||||
|
100: '#f1f5f9',
|
||||||
|
200: '#e2e8f0',
|
||||||
|
300: '#cbd5e1',
|
||||||
|
400: '#94a3b8',
|
||||||
|
500: '#64748b',
|
||||||
|
600: '#475569',
|
||||||
|
700: '#334155',
|
||||||
|
800: '#1e293b',
|
||||||
|
900: '#0f172a',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
fontFamily: {
|
||||||
|
sans: ['Inter', 'system-ui', 'sans-serif'],
|
||||||
|
},
|
||||||
|
spacing: {
|
||||||
|
'1': '0.25rem',
|
||||||
|
'2': '0.5rem',
|
||||||
|
'3': '0.75rem',
|
||||||
|
'4': '1rem',
|
||||||
|
'6': '1.5rem',
|
||||||
|
'8': '2rem',
|
||||||
|
'12': '3rem',
|
||||||
|
'16': '4rem',
|
||||||
|
'20': '5rem',
|
||||||
|
'24': '6rem',
|
||||||
|
},
|
||||||
|
borderRadius: {
|
||||||
|
'sm': '0.375rem',
|
||||||
|
'md': '0.5rem',
|
||||||
|
'lg': '0.75rem',
|
||||||
|
'xl': '1rem',
|
||||||
|
'2xl': '1.5rem',
|
||||||
|
'3xl': '2rem',
|
||||||
|
},
|
||||||
|
boxShadow: {
|
||||||
|
'sm': '0 1px 2px 0 rgb(0 0 0 / 0.05)',
|
||||||
|
'md': '0 4px 6px -1px rgb(0 0 0 / 0.1)',
|
||||||
|
'lg': '0 10px 15px -3px rgb(0 0 0 / 0.1)',
|
||||||
|
'xl': '0 20px 25px -5px rgb(0 0 0 / 0.1)',
|
||||||
|
},
|
||||||
|
transitionProperty: {
|
||||||
|
'colors': 'color, background-color, border-color, text-decoration-color, fill, stroke',
|
||||||
|
'all': 'all',
|
||||||
|
},
|
||||||
|
transitionDuration: {
|
||||||
|
'200': '200ms',
|
||||||
|
'300': '300ms',
|
||||||
|
'500': '500ms',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
plugins: [],
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user