@ouraihub/preset-blog 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 OurAI Hub
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,276 @@
1
+ # @ouraihub/preset-blog
2
+
3
+ 博客场景的预设配置,提供优化的阅读体验和常用组件配置。
4
+
5
+ ## 特性
6
+
7
+ - 📖 **优化的阅读体验** - 更大的字号、更宽松的行高,适合长文本阅读
8
+ - 🎨 **完整的设计令牌** - 颜色、字体、间距等设计系统
9
+ - 🧩 **常用组件配置** - 文章卡片、标签、分页、评论区等
10
+ - 📐 **响应式布局** - 首页、文章页、归档页、标签页等布局配置
11
+ - 🌗 **暗色主题支持** - 基于 CSS 变量的主题系统
12
+
13
+ ## 安装
14
+
15
+ ```bash
16
+ pnpm add @ouraihub/preset-blog
17
+ ```
18
+
19
+ ## 使用
20
+
21
+ ### 完整预设
22
+
23
+ ```typescript
24
+ import { blogPreset } from '@ouraihub/preset-blog';
25
+
26
+ // 使用完整预设
27
+ const config = {
28
+ preset: blogPreset,
29
+ };
30
+ ```
31
+
32
+ ### 按需导入
33
+
34
+ ```typescript
35
+ import { blogTokens, blogComponents, blogLayout } from '@ouraihub/preset-blog';
36
+
37
+ // 只使用设计令牌
38
+ const tokens = blogTokens;
39
+
40
+ // 只使用组件配置
41
+ const components = blogComponents;
42
+
43
+ // 只使用布局配置
44
+ const layout = blogLayout;
45
+ ```
46
+
47
+ ## 设计令牌
48
+
49
+ ### 颜色
50
+
51
+ ```typescript
52
+ blogTokens.colors = {
53
+ brand: {
54
+ primary: 'hsl(210, 100%, 50%)',
55
+ primaryLight: 'hsl(210, 100%, 97%)',
56
+ primaryDark: 'hsl(210, 100%, 30%)',
57
+ },
58
+ content: {
59
+ heading: 'hsl(0, 0%, 10%)',
60
+ body: 'hsl(0, 0%, 20%)',
61
+ muted: 'hsl(0, 0%, 50%)',
62
+ link: 'hsl(210, 100%, 50%)',
63
+ linkHover: 'hsl(210, 100%, 40%)',
64
+ },
65
+ semantic: {
66
+ featured: 'hsl(45, 100%, 51%)',
67
+ new: 'hsl(142, 76%, 36%)',
68
+ popular: 'hsl(0, 84%, 60%)',
69
+ archived: 'hsl(0, 0%, 65%)',
70
+ },
71
+ };
72
+ ```
73
+
74
+ ### 字体
75
+
76
+ ```typescript
77
+ blogTokens.typography = {
78
+ fontFamily: {
79
+ body: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, ...',
80
+ heading: '"Georgia", "Times New Roman", serif',
81
+ code: '"Fira Code", "Cascadia Code", "Consolas", monospace',
82
+ },
83
+ fontSize: {
84
+ articleTitle: '2.5rem',
85
+ articleBody: '1.125rem',
86
+ meta: '0.875rem',
87
+ tag: '0.8125rem',
88
+ },
89
+ lineHeight: {
90
+ heading: 1.2,
91
+ body: 1.75,
92
+ code: 1.6,
93
+ },
94
+ };
95
+ ```
96
+
97
+ ## 组件配置
98
+
99
+ ### 文章卡片
100
+
101
+ ```typescript
102
+ {
103
+ name: 'ArticleCard',
104
+ enabled: true,
105
+ defaults: {
106
+ showExcerpt: true,
107
+ showThumbnail: true,
108
+ showMeta: true,
109
+ showTags: true,
110
+ excerptLength: 150,
111
+ },
112
+ variants: {
113
+ featured: { /* 特色文章样式 */ },
114
+ compact: { /* 紧凑样式 */ },
115
+ },
116
+ }
117
+ ```
118
+
119
+ ### 标签
120
+
121
+ ```typescript
122
+ {
123
+ name: 'Tag',
124
+ enabled: true,
125
+ defaults: {
126
+ variant: 'default',
127
+ size: 'sm',
128
+ clickable: true,
129
+ },
130
+ variants: {
131
+ default: { /* 默认样式 */ },
132
+ primary: { /* 主色样式 */ },
133
+ outlined: { /* 描边样式 */ },
134
+ },
135
+ }
136
+ ```
137
+
138
+ ### 分页
139
+
140
+ ```typescript
141
+ {
142
+ name: 'Pagination',
143
+ enabled: true,
144
+ defaults: {
145
+ showFirstLast: true,
146
+ showPrevNext: true,
147
+ maxPages: 7,
148
+ },
149
+ }
150
+ ```
151
+
152
+ ### 其他组件
153
+
154
+ - **Comments** - 评论区配置
155
+ - **TableOfContents** - 目录配置
156
+ - **AuthorBio** - 作者信息配置
157
+ - **RelatedPosts** - 相关文章配置
158
+
159
+ ## 布局配置
160
+
161
+ ### 首页布局
162
+
163
+ ```typescript
164
+ blogLayout.layouts.home = {
165
+ type: 'grid',
166
+ columns: 12,
167
+ areas: {
168
+ mobile: ['header', 'main', 'footer'],
169
+ desktop: ['header', 'main + sidebar', 'footer'],
170
+ },
171
+ };
172
+ ```
173
+
174
+ ### 文章页布局
175
+
176
+ ```typescript
177
+ blogLayout.layouts.article = {
178
+ type: 'grid',
179
+ columns: 12,
180
+ areas: {
181
+ mobile: ['header', 'article', 'footer'],
182
+ desktop: ['header', 'toc + article + sidebar', 'footer'],
183
+ },
184
+ styles: {
185
+ article: {
186
+ maxWidth: '720px',
187
+ margin: '0 auto',
188
+ },
189
+ },
190
+ };
191
+ ```
192
+
193
+ ### 归档页布局
194
+
195
+ ```typescript
196
+ blogLayout.layouts.archive = {
197
+ type: 'flex',
198
+ styles: {
199
+ container: {
200
+ maxWidth: '800px',
201
+ margin: '0 auto',
202
+ },
203
+ },
204
+ };
205
+ ```
206
+
207
+ ### 标签页布局
208
+
209
+ ```typescript
210
+ blogLayout.layouts.tags = {
211
+ type: 'grid',
212
+ columns: 12,
213
+ areas: {
214
+ mobile: ['header', 'cloud', 'list', 'footer'],
215
+ desktop: ['header', 'cloud', 'list + sidebar', 'footer'],
216
+ },
217
+ };
218
+ ```
219
+
220
+ ## 响应式断点
221
+
222
+ ```typescript
223
+ blogLayout.breakpoints = {
224
+ xs: '320px',
225
+ sm: '640px',
226
+ md: '768px',
227
+ lg: '1024px',
228
+ xl: '1280px',
229
+ '2xl': '1536px',
230
+ };
231
+ ```
232
+
233
+ ## 自定义配置
234
+
235
+ ### 扩展设计令牌
236
+
237
+ ```typescript
238
+ import { blogPreset } from '@ouraihub/preset-blog';
239
+
240
+ const customPreset = {
241
+ ...blogPreset,
242
+ tokens: {
243
+ ...blogPreset.tokens,
244
+ colors: {
245
+ ...blogPreset.tokens.colors,
246
+ brand: {
247
+ primary: '#your-color',
248
+ },
249
+ },
250
+ },
251
+ };
252
+ ```
253
+
254
+ ### 覆盖组件配置
255
+
256
+ ```typescript
257
+ import { blogPreset } from '@ouraihub/preset-blog';
258
+
259
+ const customPreset = {
260
+ ...blogPreset,
261
+ components: blogPreset.components?.map(comp =>
262
+ comp.name === 'ArticleCard'
263
+ ? { ...comp, defaults: { ...comp.defaults, excerptLength: 200 } }
264
+ : comp
265
+ ),
266
+ };
267
+ ```
268
+
269
+ ## 依赖
270
+
271
+ - `@ouraihub/core` - 核心类型定义
272
+ - `@ouraihub/tokens` - 基础设计令牌
273
+
274
+ ## License
275
+
276
+ MIT
@@ -0,0 +1,20 @@
1
+ /**
2
+ * 博客预设的组件配置
3
+ *
4
+ * 定义博客场景中常用组件的默认配置和样式。
5
+ */
6
+ import type { ComponentConfig } from '@ouraihub/core/preset';
7
+ /**
8
+ * 博客预设的组件配置列表
9
+ *
10
+ * 包含:
11
+ * - 文章卡片(ArticleCard)
12
+ * - 标签(Tag)
13
+ * - 分页(Pagination)
14
+ * - 评论区(Comments)
15
+ * - 目录(TableOfContents)
16
+ * - 作者信息(AuthorBio)
17
+ * - 相关文章(RelatedPosts)
18
+ */
19
+ export declare const blogComponents: ComponentConfig[];
20
+ //# sourceMappingURL=components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../src/components.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,EAAE,eAAe,EAmP3C,CAAC"}
@@ -0,0 +1,256 @@
1
+ /**
2
+ * 博客预设的组件配置
3
+ *
4
+ * 定义博客场景中常用组件的默认配置和样式。
5
+ */
6
+ /**
7
+ * 博客预设的组件配置列表
8
+ *
9
+ * 包含:
10
+ * - 文章卡片(ArticleCard)
11
+ * - 标签(Tag)
12
+ * - 分页(Pagination)
13
+ * - 评论区(Comments)
14
+ * - 目录(TableOfContents)
15
+ * - 作者信息(AuthorBio)
16
+ * - 相关文章(RelatedPosts)
17
+ */
18
+ export const blogComponents = [
19
+ {
20
+ name: 'ArticleCard',
21
+ enabled: true,
22
+ defaults: {
23
+ showExcerpt: true,
24
+ showThumbnail: true,
25
+ showMeta: true,
26
+ showTags: true,
27
+ excerptLength: 150,
28
+ },
29
+ styles: {
30
+ container: {
31
+ padding: 'var(--ui-space-6)',
32
+ borderRadius: 'var(--ui-radius-lg)',
33
+ boxShadow: 'var(--ui-shadow-sm)',
34
+ transition: 'var(--ui-transition-base)',
35
+ },
36
+ title: {
37
+ fontSize: 'var(--ui-text-xl)',
38
+ fontWeight: 'var(--ui-font-weight-bold)',
39
+ lineHeight: 'var(--ui-line-height-tight)',
40
+ marginBottom: 'var(--ui-space-3)',
41
+ },
42
+ excerpt: {
43
+ fontSize: 'var(--ui-text-base)',
44
+ lineHeight: 'var(--ui-line-height-relaxed)',
45
+ color: 'var(--ui-text-secondary)',
46
+ },
47
+ },
48
+ variants: {
49
+ featured: {
50
+ showThumbnail: true,
51
+ thumbnailSize: 'large',
52
+ styles: {
53
+ container: {
54
+ background: 'var(--ui-primary-light)',
55
+ border: '2px solid var(--ui-primary)',
56
+ },
57
+ },
58
+ },
59
+ compact: {
60
+ showExcerpt: false,
61
+ showThumbnail: false,
62
+ styles: {
63
+ container: {
64
+ padding: 'var(--ui-space-4)',
65
+ },
66
+ },
67
+ },
68
+ },
69
+ },
70
+ {
71
+ name: 'Tag',
72
+ enabled: true,
73
+ defaults: {
74
+ variant: 'default',
75
+ size: 'sm',
76
+ clickable: true,
77
+ },
78
+ styles: {
79
+ container: {
80
+ display: 'inline-flex',
81
+ alignItems: 'center',
82
+ padding: 'var(--ui-space-1) var(--ui-space-3)',
83
+ borderRadius: 'var(--ui-radius-sm)',
84
+ fontSize: 'var(--ui-text-sm)',
85
+ fontWeight: 'var(--ui-font-weight-medium)',
86
+ transition: 'var(--ui-transition-fast)',
87
+ },
88
+ },
89
+ variants: {
90
+ default: {
91
+ styles: {
92
+ container: {
93
+ background: 'var(--ui-surface)',
94
+ color: 'var(--ui-text)',
95
+ border: '1px solid var(--ui-border)',
96
+ },
97
+ },
98
+ },
99
+ primary: {
100
+ styles: {
101
+ container: {
102
+ background: 'var(--ui-primary)',
103
+ color: 'white',
104
+ },
105
+ },
106
+ },
107
+ outlined: {
108
+ styles: {
109
+ container: {
110
+ background: 'transparent',
111
+ color: 'var(--ui-text)',
112
+ border: '1px solid var(--ui-border)',
113
+ },
114
+ },
115
+ },
116
+ },
117
+ },
118
+ {
119
+ name: 'Pagination',
120
+ enabled: true,
121
+ defaults: {
122
+ showFirstLast: true,
123
+ showPrevNext: true,
124
+ maxPages: 7,
125
+ variant: 'default',
126
+ },
127
+ styles: {
128
+ container: {
129
+ display: 'flex',
130
+ alignItems: 'center',
131
+ justifyContent: 'center',
132
+ gap: 'var(--ui-space-2)',
133
+ marginTop: 'var(--ui-space-8)',
134
+ },
135
+ button: {
136
+ padding: 'var(--ui-space-2) var(--ui-space-4)',
137
+ borderRadius: 'var(--ui-radius-md)',
138
+ fontSize: 'var(--ui-text-base)',
139
+ fontWeight: 'var(--ui-font-weight-medium)',
140
+ transition: 'var(--ui-transition-fast)',
141
+ border: '1px solid var(--ui-border)',
142
+ },
143
+ active: {
144
+ background: 'var(--ui-primary)',
145
+ color: 'white',
146
+ borderColor: 'var(--ui-primary)',
147
+ },
148
+ },
149
+ },
150
+ {
151
+ name: 'Comments',
152
+ enabled: true,
153
+ defaults: {
154
+ provider: 'native',
155
+ showAvatar: true,
156
+ showReplyButton: true,
157
+ maxDepth: 3,
158
+ sortBy: 'newest',
159
+ },
160
+ styles: {
161
+ container: {
162
+ marginTop: 'var(--ui-space-12)',
163
+ paddingTop: 'var(--ui-space-8)',
164
+ borderTop: '1px solid var(--ui-border)',
165
+ },
166
+ comment: {
167
+ padding: 'var(--ui-space-4)',
168
+ marginBottom: 'var(--ui-space-4)',
169
+ borderRadius: 'var(--ui-radius-md)',
170
+ background: 'var(--ui-surface)',
171
+ },
172
+ },
173
+ },
174
+ {
175
+ name: 'TableOfContents',
176
+ enabled: true,
177
+ defaults: {
178
+ maxDepth: 3,
179
+ showNumbers: false,
180
+ sticky: true,
181
+ highlightActive: true,
182
+ },
183
+ styles: {
184
+ container: {
185
+ padding: 'var(--ui-space-6)',
186
+ borderRadius: 'var(--ui-radius-lg)',
187
+ background: 'var(--ui-surface)',
188
+ border: '1px solid var(--ui-border)',
189
+ },
190
+ link: {
191
+ display: 'block',
192
+ padding: 'var(--ui-space-2) var(--ui-space-3)',
193
+ fontSize: 'var(--ui-text-sm)',
194
+ color: 'var(--ui-text-secondary)',
195
+ transition: 'var(--ui-transition-fast)',
196
+ },
197
+ active: {
198
+ color: 'var(--ui-primary)',
199
+ fontWeight: 'var(--ui-font-weight-semibold)',
200
+ },
201
+ },
202
+ },
203
+ {
204
+ name: 'AuthorBio',
205
+ enabled: true,
206
+ defaults: {
207
+ showAvatar: true,
208
+ showSocial: true,
209
+ showBio: true,
210
+ avatarSize: 'md',
211
+ },
212
+ styles: {
213
+ container: {
214
+ display: 'flex',
215
+ gap: 'var(--ui-space-4)',
216
+ padding: 'var(--ui-space-6)',
217
+ borderRadius: 'var(--ui-radius-lg)',
218
+ background: 'var(--ui-surface)',
219
+ marginTop: 'var(--ui-space-8)',
220
+ },
221
+ name: {
222
+ fontSize: 'var(--ui-text-lg)',
223
+ fontWeight: 'var(--ui-font-weight-bold)',
224
+ marginBottom: 'var(--ui-space-2)',
225
+ },
226
+ bio: {
227
+ fontSize: 'var(--ui-text-base)',
228
+ lineHeight: 'var(--ui-line-height-relaxed)',
229
+ color: 'var(--ui-text-secondary)',
230
+ },
231
+ },
232
+ },
233
+ {
234
+ name: 'RelatedPosts',
235
+ enabled: true,
236
+ defaults: {
237
+ count: 3,
238
+ algorithm: 'tags',
239
+ showThumbnail: true,
240
+ layout: 'grid',
241
+ },
242
+ styles: {
243
+ container: {
244
+ marginTop: 'var(--ui-space-12)',
245
+ paddingTop: 'var(--ui-space-8)',
246
+ borderTop: '1px solid var(--ui-border)',
247
+ },
248
+ grid: {
249
+ display: 'grid',
250
+ gridTemplateColumns: 'repeat(auto-fit, minmax(280px, 1fr))',
251
+ gap: 'var(--ui-space-6)',
252
+ },
253
+ },
254
+ },
255
+ ];
256
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Preset } from '@ouraihub/core/preset';
2
+ export declare const blogPreset: Preset;
3
+ export { blogTokens } from './tokens';
4
+ export { blogComponents } from './components';
5
+ export { blogLayout } from './layouts';
6
+ export type * from '@ouraihub/core/preset';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAKpD,eAAO,MAAM,UAAU,EAAE,MAaxB,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,mBAAmB,uBAAuB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ import { blogTokens } from './tokens';
2
+ import { blogComponents } from './components';
3
+ import { blogLayout } from './layouts';
4
+ export const blogPreset = {
5
+ options: {
6
+ name: 'blog',
7
+ version: '0.1.0',
8
+ description: '博客场景的预设配置,提供优化的阅读体验和常用组件配置',
9
+ author: '@ouraihub',
10
+ tags: ['blog', 'content', 'reading'],
11
+ isDefault: false,
12
+ },
13
+ tokens: blogTokens,
14
+ components: blogComponents,
15
+ layout: blogLayout,
16
+ };
17
+ export { blogTokens } from './tokens';
18
+ export { blogComponents } from './components';
19
+ export { blogLayout } from './layouts';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAW;IAChC,OAAO,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,4BAA4B;QACzC,MAAM,EAAE,WAAW;QACnB,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;QACpC,SAAS,EAAE,KAAK;KACjB;IAED,MAAM,EAAE,UAAU;IAClB,UAAU,EAAE,cAAc;IAC1B,MAAM,EAAE,UAAU;CACnB,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * 博客预设的布局配置
3
+ *
4
+ * 定义博客场景中常用的页面布局配置。
5
+ */
6
+ import type { LayoutConfig } from '@ouraihub/core/preset';
7
+ /**
8
+ * 博客预设的布局配置
9
+ *
10
+ * 提供:
11
+ * - 响应式容器宽度
12
+ * - 栅格系统配置
13
+ * - 响应式断点
14
+ * - 常见布局模式
15
+ */
16
+ export declare const blogLayout: LayoutConfig;
17
+ //# sourceMappingURL=layouts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../src/layouts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,EAAE,YA4KxB,CAAC"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * 博客预设的布局配置
3
+ *
4
+ * 定义博客场景中常用的页面布局配置。
5
+ */
6
+ /**
7
+ * 博客预设的布局配置
8
+ *
9
+ * 提供:
10
+ * - 响应式容器宽度
11
+ * - 栅格系统配置
12
+ * - 响应式断点
13
+ * - 常见布局模式
14
+ */
15
+ export const blogLayout = {
16
+ type: 'grid',
17
+ // 容器最大宽度 - 优化阅读体验
18
+ maxWidth: '1200px',
19
+ // 容器内边距
20
+ containerPadding: 'var(--ui-space-4)',
21
+ // 栅格列数
22
+ columns: 12,
23
+ // 栅格间隙
24
+ gap: 'var(--ui-space-6)',
25
+ // 响应式断点
26
+ breakpoints: {
27
+ xs: '320px',
28
+ sm: '640px',
29
+ md: '768px',
30
+ lg: '1024px',
31
+ xl: '1280px',
32
+ '2xl': '1536px',
33
+ },
34
+ // 布局模式配置
35
+ layouts: {
36
+ /**
37
+ * 首页布局
38
+ * - 全宽容器
39
+ * - 文章列表网格
40
+ * - 侧边栏(可选)
41
+ */
42
+ home: {
43
+ type: 'grid',
44
+ columns: 12,
45
+ areas: {
46
+ // 移动端:单列
47
+ mobile: [
48
+ 'header header header header header header header header header header header header',
49
+ 'main main main main main main main main main main main main',
50
+ 'footer footer footer footer footer footer footer footer footer footer footer footer',
51
+ ],
52
+ // 桌面端:主内容 + 侧边栏
53
+ desktop: [
54
+ 'header header header header header header header header header header header header',
55
+ 'main main main main main main main main main sidebar sidebar sidebar',
56
+ 'footer footer footer footer footer footer footer footer footer footer footer footer',
57
+ ],
58
+ },
59
+ styles: {
60
+ main: {
61
+ display: 'grid',
62
+ gridTemplateColumns: 'repeat(auto-fill, minmax(320px, 1fr))',
63
+ gap: 'var(--ui-space-6)',
64
+ },
65
+ sidebar: {
66
+ position: 'sticky',
67
+ top: 'var(--ui-space-8)',
68
+ height: 'fit-content',
69
+ },
70
+ },
71
+ },
72
+ /**
73
+ * 文章页布局
74
+ * - 居中的阅读区域
75
+ * - 目录侧边栏(可选)
76
+ * - 优化的阅读宽度
77
+ */
78
+ article: {
79
+ type: 'grid',
80
+ columns: 12,
81
+ areas: {
82
+ // 移动端:单列
83
+ mobile: [
84
+ 'header header header header header header header header header header header header',
85
+ 'article article article article article article article article article article article article',
86
+ 'footer footer footer footer footer footer footer footer footer footer footer footer',
87
+ ],
88
+ // 桌面端:目录 + 文章 + 侧边栏
89
+ desktop: [
90
+ 'header header header header header header header header header header header header',
91
+ 'toc toc article article article article article article sidebar sidebar sidebar sidebar',
92
+ 'footer footer footer footer footer footer footer footer footer footer footer footer',
93
+ ],
94
+ },
95
+ styles: {
96
+ article: {
97
+ maxWidth: '720px',
98
+ margin: '0 auto',
99
+ padding: 'var(--ui-space-8) var(--ui-space-4)',
100
+ },
101
+ toc: {
102
+ position: 'sticky',
103
+ top: 'var(--ui-space-8)',
104
+ height: 'fit-content',
105
+ display: 'none',
106
+ },
107
+ sidebar: {
108
+ position: 'sticky',
109
+ top: 'var(--ui-space-8)',
110
+ height: 'fit-content',
111
+ },
112
+ },
113
+ responsive: {
114
+ lg: {
115
+ toc: {
116
+ display: 'block',
117
+ },
118
+ },
119
+ },
120
+ },
121
+ /**
122
+ * 归档页布局
123
+ * - 时间线或列表视图
124
+ * - 年份分组
125
+ */
126
+ archive: {
127
+ type: 'flex',
128
+ styles: {
129
+ container: {
130
+ maxWidth: '800px',
131
+ margin: '0 auto',
132
+ padding: 'var(--ui-space-8) var(--ui-space-4)',
133
+ },
134
+ timeline: {
135
+ position: 'relative',
136
+ paddingLeft: 'var(--ui-space-8)',
137
+ },
138
+ },
139
+ },
140
+ /**
141
+ * 标签页布局
142
+ * - 标签云
143
+ * - 标签下的文章列表
144
+ */
145
+ tags: {
146
+ type: 'grid',
147
+ columns: 12,
148
+ areas: {
149
+ mobile: [
150
+ 'header header header header header header header header header header header header',
151
+ 'cloud cloud cloud cloud cloud cloud cloud cloud cloud cloud cloud cloud',
152
+ 'list list list list list list list list list list list list',
153
+ 'footer footer footer footer footer footer footer footer footer footer footer footer',
154
+ ],
155
+ desktop: [
156
+ 'header header header header header header header header header header header header',
157
+ 'cloud cloud cloud cloud cloud cloud cloud cloud cloud cloud cloud cloud',
158
+ 'list list list list list list list list list sidebar sidebar sidebar',
159
+ 'footer footer footer footer footer footer footer footer footer footer footer footer',
160
+ ],
161
+ },
162
+ styles: {
163
+ cloud: {
164
+ display: 'flex',
165
+ flexWrap: 'wrap',
166
+ gap: 'var(--ui-space-3)',
167
+ padding: 'var(--ui-space-8) var(--ui-space-4)',
168
+ justifyContent: 'center',
169
+ },
170
+ list: {
171
+ display: 'grid',
172
+ gridTemplateColumns: 'repeat(auto-fill, minmax(320px, 1fr))',
173
+ gap: 'var(--ui-space-6)',
174
+ },
175
+ },
176
+ },
177
+ },
178
+ };
179
+ //# sourceMappingURL=layouts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layouts.js","sourceRoot":"","sources":["../src/layouts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * 博客预设的设计令牌配置
3
+ *
4
+ * 提供适合博客场景的颜色、字体、间距等设计令牌。
5
+ * 基于 @ouraihub/tokens 的基础令牌进行扩展和定制。
6
+ */
7
+ import type { DesignTokens } from '@ouraihub/core/preset';
8
+ /**
9
+ * 博客预设的设计令牌
10
+ *
11
+ * 特点:
12
+ * - 优化的阅读体验(更大的字号、更宽松的行高)
13
+ * - 适合长文本的颜色对比度
14
+ * - 清晰的视觉层次
15
+ */
16
+ export declare const blogTokens: DesignTokens;
17
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,EAAE,YAgHxB,CAAC"}
package/dist/tokens.js ADDED
@@ -0,0 +1,107 @@
1
+ /**
2
+ * 博客预设的设计令牌配置
3
+ *
4
+ * 提供适合博客场景的颜色、字体、间距等设计令牌。
5
+ * 基于 @ouraihub/tokens 的基础令牌进行扩展和定制。
6
+ */
7
+ /**
8
+ * 博客预设的设计令牌
9
+ *
10
+ * 特点:
11
+ * - 优化的阅读体验(更大的字号、更宽松的行高)
12
+ * - 适合长文本的颜色对比度
13
+ * - 清晰的视觉层次
14
+ */
15
+ export const blogTokens = {
16
+ colors: {
17
+ // 品牌色 - 使用温暖的蓝色,适合博客场景
18
+ brand: {
19
+ primary: 'hsl(210, 100%, 50%)',
20
+ primaryLight: 'hsl(210, 100%, 97%)',
21
+ primaryDark: 'hsl(210, 100%, 30%)',
22
+ },
23
+ // 内容色 - 优化阅读体验
24
+ content: {
25
+ heading: 'hsl(0, 0%, 10%)',
26
+ body: 'hsl(0, 0%, 20%)',
27
+ muted: 'hsl(0, 0%, 50%)',
28
+ link: 'hsl(210, 100%, 50%)',
29
+ linkHover: 'hsl(210, 100%, 40%)',
30
+ },
31
+ // 语义色 - 用于标签、徽章等
32
+ semantic: {
33
+ featured: 'hsl(45, 100%, 51%)',
34
+ new: 'hsl(142, 76%, 36%)',
35
+ popular: 'hsl(0, 84%, 60%)',
36
+ archived: 'hsl(0, 0%, 65%)',
37
+ },
38
+ },
39
+ spacing: {
40
+ // 文章内容间距
41
+ articleGap: '2rem',
42
+ sectionGap: '4rem',
43
+ // 卡片间距
44
+ cardPadding: '1.5rem',
45
+ cardGap: '1.5rem',
46
+ // 容器间距
47
+ containerPadding: '1rem',
48
+ containerPaddingLg: '2rem',
49
+ },
50
+ typography: {
51
+ fontFamily: {
52
+ // 正文字体 - 优化阅读体验
53
+ body: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
54
+ // 标题字体 - 更有个性
55
+ heading: '"Georgia", "Times New Roman", serif',
56
+ // 代码字体
57
+ code: '"Fira Code", "Cascadia Code", "Consolas", monospace',
58
+ },
59
+ fontSize: {
60
+ // 文章标题
61
+ articleTitle: '2.5rem',
62
+ // 文章正文 - 更大的字号提升阅读体验
63
+ articleBody: '1.125rem',
64
+ // 元信息(日期、作者等)
65
+ meta: '0.875rem',
66
+ // 标签
67
+ tag: '0.8125rem',
68
+ },
69
+ fontWeight: {
70
+ normal: 400,
71
+ medium: 500,
72
+ semibold: 600,
73
+ bold: 700,
74
+ },
75
+ lineHeight: {
76
+ // 标题行高 - 紧凑
77
+ heading: 1.2,
78
+ // 正文行高 - 宽松,提升阅读体验
79
+ body: 1.75,
80
+ // 代码行高
81
+ code: 1.6,
82
+ },
83
+ letterSpacing: {
84
+ tight: '-0.02em',
85
+ normal: '0',
86
+ wide: '0.02em',
87
+ },
88
+ },
89
+ shadows: {
90
+ // 卡片阴影
91
+ card: '0 2px 8px rgba(0, 0, 0, 0.08)',
92
+ cardHover: '0 4px 16px rgba(0, 0, 0, 0.12)',
93
+ // 浮动元素阴影
94
+ floating: '0 8px 24px rgba(0, 0, 0, 0.12)',
95
+ },
96
+ borderRadius: {
97
+ card: '0.75rem',
98
+ tag: '0.25rem',
99
+ image: '0.5rem',
100
+ },
101
+ transitions: {
102
+ fast: '150ms ease-in-out',
103
+ base: '200ms ease-in-out',
104
+ slow: '300ms ease-in-out',
105
+ },
106
+ };
107
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAiB;IACtC,MAAM,EAAE;QACN,uBAAuB;QACvB,KAAK,EAAE;YACL,OAAO,EAAE,qBAAqB;YAC9B,YAAY,EAAE,qBAAqB;YACnC,WAAW,EAAE,qBAAqB;SACnC;QAED,eAAe;QACf,OAAO,EAAE;YACP,OAAO,EAAE,iBAAiB;YAC1B,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,qBAAqB;YAC3B,SAAS,EAAE,qBAAqB;SACjC;QAED,iBAAiB;QACjB,QAAQ,EAAE;YACR,QAAQ,EAAE,oBAAoB;YAC9B,GAAG,EAAE,oBAAoB;YACzB,OAAO,EAAE,kBAAkB;YAC3B,QAAQ,EAAE,iBAAiB;SAC5B;KACF;IAED,OAAO,EAAE;QACP,SAAS;QACT,UAAU,EAAE,MAAM;QAClB,UAAU,EAAE,MAAM;QAElB,OAAO;QACP,WAAW,EAAE,QAAQ;QACrB,OAAO,EAAE,QAAQ;QAEjB,OAAO;QACP,gBAAgB,EAAE,MAAM;QACxB,kBAAkB,EAAE,MAAM;KAC3B;IAED,UAAU,EAAE;QACV,UAAU,EAAE;YACV,gBAAgB;YAChB,IAAI,EAAE,4FAA4F;YAElG,cAAc;YACd,OAAO,EAAE,qCAAqC;YAE9C,OAAO;YACP,IAAI,EAAE,qDAAqD;SAC5D;QAED,QAAQ,EAAE;YACR,OAAO;YACP,YAAY,EAAE,QAAQ;YAEtB,qBAAqB;YACrB,WAAW,EAAE,UAAU;YAEvB,cAAc;YACd,IAAI,EAAE,UAAU;YAEhB,KAAK;YACL,GAAG,EAAE,WAAW;SACjB;QAED,UAAU,EAAE;YACV,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,GAAG;YACb,IAAI,EAAE,GAAG;SACV;QAED,UAAU,EAAE;YACV,YAAY;YACZ,OAAO,EAAE,GAAG;YAEZ,mBAAmB;YACnB,IAAI,EAAE,IAAI;YAEV,OAAO;YACP,IAAI,EAAE,GAAG;SACV;QAED,aAAa,EAAE;YACb,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,QAAQ;SACf;KACF;IAED,OAAO,EAAE;QACP,OAAO;QACP,IAAI,EAAE,+BAA+B;QACrC,SAAS,EAAE,gCAAgC;QAE3C,SAAS;QACT,QAAQ,EAAE,gCAAgC;KAC3C;IAED,YAAY,EAAE;QACZ,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,QAAQ;KAChB;IAED,WAAW,EAAE;QACX,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,mBAAmB;KAC1B;CACF,CAAC"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@ouraihub/preset-blog",
3
+ "version": "0.1.0",
4
+ "description": "博客场景的预设配置,提供优化的阅读体验和常用组件配置",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ },
14
+ "./tokens": {
15
+ "types": "./dist/tokens.d.ts",
16
+ "import": "./dist/tokens.js"
17
+ },
18
+ "./components": {
19
+ "types": "./dist/components.d.ts",
20
+ "import": "./dist/components.js"
21
+ },
22
+ "./layouts": {
23
+ "types": "./dist/layouts.d.ts",
24
+ "import": "./dist/layouts.js"
25
+ }
26
+ },
27
+ "files": [
28
+ "dist",
29
+ "README.md"
30
+ ],
31
+ "keywords": [
32
+ "blog",
33
+ "preset",
34
+ "design-system",
35
+ "ui-library",
36
+ "ouraihub"
37
+ ],
38
+ "author": "@ouraihub",
39
+ "license": "MIT",
40
+ "dependencies": {
41
+ "@ouraihub/core": "0.1.0",
42
+ "@ouraihub/tokens": "0.1.0"
43
+ },
44
+ "devDependencies": {
45
+ "typescript": "^5.3.3"
46
+ },
47
+ "publishConfig": {
48
+ "access": "public"
49
+ },
50
+ "scripts": {
51
+ "build": "tsc",
52
+ "typecheck": "tsc --noEmit"
53
+ }
54
+ }