@ouraihub/preset-docs 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,241 @@
1
+ # @ouraihub/preset-docs
2
+
3
+ 文档站点预设配置,提供开箱即用的文档站点解决方案。
4
+
5
+ ## 特性
6
+
7
+ - ✨ **优化可读性** - 更大的字体、更宽松的行高,专为长文档阅读优化
8
+ - 🎨 **专业配色** - 适合技术文档的配色方案,支持亮色/暗色主题
9
+ - 📦 **完整组件** - 侧边栏、目录、代码块、警告框、面包屑等文档专用组件
10
+ - 📐 **响应式布局** - 适配桌面、平板、移动端的布局配置
11
+ - 🔍 **搜索优化** - 内置搜索页面布局和样式
12
+ - 📚 **API 参考** - 专门的 API 文档页面布局
13
+
14
+ ## 安装
15
+
16
+ ```bash
17
+ pnpm add @ouraihub/preset-docs
18
+ ```
19
+
20
+ ## 使用
21
+
22
+ ### 基础使用
23
+
24
+ ```typescript
25
+ import { docsPreset } from '@ouraihub/preset-docs';
26
+
27
+ const config = {
28
+ presets: [docsPreset],
29
+ };
30
+ ```
31
+
32
+ ### 使用特定布局
33
+
34
+ ```typescript
35
+ import {
36
+ docsLayout, // 标准文档页布局
37
+ apiReferenceLayout, // API 参考页布局
38
+ searchLayout, // 搜索页布局
39
+ fullWidthLayout // 全宽布局(首页等)
40
+ } from '@ouraihub/preset-docs/layouts';
41
+
42
+ // 在你的页面中使用
43
+ const pageConfig = {
44
+ layout: docsLayout,
45
+ };
46
+ ```
47
+
48
+ ### 自定义设计令牌
49
+
50
+ ```typescript
51
+ import { docsPreset } from '@ouraihub/preset-docs';
52
+ import type { Preset } from '@ouraihub/core/preset';
53
+
54
+ const customPreset: Preset = {
55
+ ...docsPreset,
56
+ tokens: {
57
+ ...docsPreset.tokens,
58
+ colors: {
59
+ ...docsPreset.tokens?.colors,
60
+ primary: {
61
+ base: 'hsl(200, 100%, 50%)', // 自定义主色
62
+ },
63
+ },
64
+ },
65
+ };
66
+ ```
67
+
68
+ ### 自定义组件配置
69
+
70
+ ```typescript
71
+ import { docsPreset, docsComponents } from '@ouraihub/preset-docs';
72
+ import type { Preset } from '@ouraihub/core/preset';
73
+
74
+ const customPreset: Preset = {
75
+ ...docsPreset,
76
+ components: docsComponents.map(component => {
77
+ if (component.name === 'Sidebar') {
78
+ return {
79
+ ...component,
80
+ defaults: {
81
+ ...component.defaults,
82
+ width: '20rem', // 更宽的侧边栏
83
+ },
84
+ };
85
+ }
86
+ return component;
87
+ }),
88
+ };
89
+ ```
90
+
91
+ ## 包含的组件
92
+
93
+ ### Sidebar(侧边栏)
94
+ - 可折叠导航
95
+ - 固定定位支持
96
+ - 响应式隐藏
97
+
98
+ ### TableOfContents(目录)
99
+ - 自动生成目录
100
+ - 可配置深度
101
+ - 固定定位支持
102
+
103
+ ### CodeBlock(代码块)
104
+ - 语法高亮
105
+ - 行号显示
106
+ - 复制按钮
107
+ - 行高亮
108
+
109
+ ### Callout(警告框)
110
+ - 多种类型:note、tip、warning、danger
111
+ - 可选图标
112
+ - 可折叠
113
+
114
+ ### Breadcrumb(面包屑)
115
+ - 自动路径生成
116
+ - 可配置分隔符
117
+ - 最大项数限制
118
+
119
+ ### SearchModal(搜索模态框)
120
+ - 快捷键支持
121
+ - 结果高亮
122
+ - 键盘导航
123
+
124
+ ### ApiReference(API 参考)
125
+ - 类型展示
126
+ - 示例代码
127
+ - 可展开/折叠
128
+
129
+ ### Pagination(分页)
130
+ - 上一页/下一页
131
+ - 可选页码
132
+
133
+ ## 设计令牌
134
+
135
+ ### 颜色
136
+
137
+ ```css
138
+ /* 主色调 */
139
+ --ui-primary: hsl(212, 100%, 48%);
140
+
141
+ /* 代码高亮 */
142
+ --ui-code-background: hsl(220, 13%, 18%);
143
+ --ui-code-text: hsl(220, 14%, 96%);
144
+
145
+ /* 语义化颜色 */
146
+ --ui-note-background: hsl(212, 100%, 96%);
147
+ --ui-tip-background: hsl(142, 76%, 96%);
148
+ --ui-warning-background: hsl(38, 92%, 96%);
149
+ --ui-danger-background: hsl(0, 84%, 96%);
150
+ ```
151
+
152
+ ### 间距
153
+
154
+ ```css
155
+ /* 内容间距 */
156
+ --ui-content-sm: 1rem;
157
+ --ui-content-md: 1.5rem;
158
+ --ui-content-lg: 2rem;
159
+
160
+ /* 布局宽度 */
161
+ --ui-sidebar-width: 16rem;
162
+ --ui-toc-width: 14rem;
163
+ --ui-content-max-width: 48rem;
164
+ ```
165
+
166
+ ### 字体
167
+
168
+ ```css
169
+ /* 字体大小 */
170
+ --ui-body-base: 1rem;
171
+ --ui-h1: 2.5rem;
172
+ --ui-h2: 2rem;
173
+ --ui-h3: 1.5rem;
174
+
175
+ /* 行高 */
176
+ --ui-line-height-normal: 1.6;
177
+ --ui-line-height-heading: 1.3;
178
+ --ui-line-height-code: 1.7;
179
+ ```
180
+
181
+ ## 布局配置
182
+
183
+ ### 文档页布局
184
+
185
+ ```typescript
186
+ {
187
+ type: 'flex',
188
+ maxWidth: '80rem',
189
+ areas: {
190
+ sidebar: { width: '16rem' },
191
+ content: { maxWidth: '48rem' },
192
+ toc: { width: '14rem' },
193
+ }
194
+ }
195
+ ```
196
+
197
+ ### API 参考页布局
198
+
199
+ ```typescript
200
+ {
201
+ type: 'flex',
202
+ maxWidth: '80rem',
203
+ areas: {
204
+ sidebar: { width: '16rem' },
205
+ content: { maxWidth: '60rem' },
206
+ }
207
+ }
208
+ ```
209
+
210
+ ### 搜索页布局
211
+
212
+ ```typescript
213
+ {
214
+ type: 'stack',
215
+ maxWidth: '48rem',
216
+ areas: {
217
+ searchBar: { width: '100%' },
218
+ results: { width: '100%' },
219
+ }
220
+ }
221
+ ```
222
+
223
+ ## 响应式断点
224
+
225
+ ```typescript
226
+ {
227
+ sm: '640px', // 移动端
228
+ md: '768px', // 平板
229
+ lg: '1024px', // 桌面
230
+ xl: '1280px', // 大屏
231
+ }
232
+ ```
233
+
234
+ ## 依赖
235
+
236
+ - `@ouraihub/core` - 核心类型定义
237
+ - `@ouraihub/tokens` - 基础设计令牌
238
+
239
+ ## License
240
+
241
+ MIT
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/components.ts
21
+ var components_exports = {};
22
+ __export(components_exports, {
23
+ docsComponents: () => docsComponents
24
+ });
25
+ module.exports = __toCommonJS(components_exports);
26
+ var docsComponents = [
27
+ {
28
+ name: "Sidebar",
29
+ enabled: true,
30
+ defaults: {
31
+ width: "16rem",
32
+ collapsible: true,
33
+ position: "left",
34
+ sticky: true
35
+ },
36
+ styles: {
37
+ background: "var(--ui-sidebar-background)",
38
+ border: "1px solid var(--ui-sidebar-border)",
39
+ padding: "var(--ui-space-4)"
40
+ },
41
+ variants: {
42
+ collapsed: {
43
+ width: "4rem"
44
+ },
45
+ floating: {
46
+ position: "fixed",
47
+ shadow: "var(--ui-shadow-dropdown)"
48
+ }
49
+ }
50
+ },
51
+ {
52
+ name: "TableOfContents",
53
+ enabled: true,
54
+ defaults: {
55
+ width: "14rem",
56
+ position: "right",
57
+ sticky: true,
58
+ maxDepth: 3
59
+ },
60
+ styles: {
61
+ fontSize: "var(--ui-text-sm)",
62
+ lineHeight: "var(--ui-line-height-relaxed)"
63
+ },
64
+ variants: {
65
+ compact: {
66
+ maxDepth: 2,
67
+ fontSize: "var(--ui-text-xs)"
68
+ }
69
+ }
70
+ },
71
+ {
72
+ name: "CodeBlock",
73
+ enabled: true,
74
+ defaults: {
75
+ theme: "dark",
76
+ showLineNumbers: true,
77
+ copyButton: true,
78
+ highlightLines: []
79
+ },
80
+ styles: {
81
+ background: "var(--ui-code-background)",
82
+ color: "var(--ui-code-text)",
83
+ fontFamily: "var(--ui-font-mono)",
84
+ fontSize: "var(--ui-code-base)",
85
+ lineHeight: "var(--ui-line-height-code)",
86
+ borderRadius: "var(--ui-radius-lg)",
87
+ padding: "var(--ui-space-4)"
88
+ },
89
+ variants: {
90
+ inline: {
91
+ display: "inline",
92
+ padding: "0.125rem 0.375rem",
93
+ borderRadius: "var(--ui-radius-sm)"
94
+ }
95
+ }
96
+ },
97
+ {
98
+ name: "Callout",
99
+ enabled: true,
100
+ defaults: {
101
+ type: "note",
102
+ icon: true,
103
+ collapsible: false
104
+ },
105
+ styles: {
106
+ borderRadius: "var(--ui-radius-md)",
107
+ padding: "var(--ui-space-4)",
108
+ borderLeft: "4px solid"
109
+ },
110
+ variants: {
111
+ note: {
112
+ background: "var(--ui-note-background)",
113
+ borderColor: "var(--ui-note-border)",
114
+ color: "var(--ui-note-text)"
115
+ },
116
+ tip: {
117
+ background: "var(--ui-tip-background)",
118
+ borderColor: "var(--ui-tip-border)",
119
+ color: "var(--ui-tip-text)"
120
+ },
121
+ warning: {
122
+ background: "var(--ui-warning-background)",
123
+ borderColor: "var(--ui-warning-border)",
124
+ color: "var(--ui-warning-text)"
125
+ },
126
+ danger: {
127
+ background: "var(--ui-danger-background)",
128
+ borderColor: "var(--ui-danger-border)",
129
+ color: "var(--ui-danger-text)"
130
+ }
131
+ }
132
+ },
133
+ {
134
+ name: "Breadcrumb",
135
+ enabled: true,
136
+ defaults: {
137
+ separator: "/",
138
+ showHome: true,
139
+ maxItems: 5
140
+ },
141
+ styles: {
142
+ fontSize: "var(--ui-text-sm)",
143
+ color: "var(--ui-text-secondary)",
144
+ padding: "var(--ui-space-2) 0"
145
+ },
146
+ variants: {
147
+ compact: {
148
+ maxItems: 3,
149
+ separator: ">"
150
+ }
151
+ }
152
+ },
153
+ {
154
+ name: "SearchModal",
155
+ enabled: true,
156
+ defaults: {
157
+ placeholder: "Search documentation...",
158
+ hotkey: "ctrl+k",
159
+ maxResults: 10
160
+ },
161
+ styles: {
162
+ background: "var(--ui-background)",
163
+ borderRadius: "var(--ui-radius-xl)",
164
+ shadow: "var(--ui-shadow-modal)",
165
+ padding: "var(--ui-space-6)"
166
+ }
167
+ },
168
+ {
169
+ name: "ApiReference",
170
+ enabled: true,
171
+ defaults: {
172
+ showTypes: true,
173
+ showExamples: true,
174
+ expandable: true
175
+ },
176
+ styles: {
177
+ borderRadius: "var(--ui-radius-md)",
178
+ border: "1px solid var(--ui-border)",
179
+ padding: "var(--ui-space-4)"
180
+ }
181
+ },
182
+ {
183
+ name: "Pagination",
184
+ enabled: true,
185
+ defaults: {
186
+ showPrevNext: true,
187
+ showPageNumbers: false
188
+ },
189
+ styles: {
190
+ padding: "var(--ui-space-8) 0",
191
+ borderTop: "1px solid var(--ui-border)"
192
+ }
193
+ }
194
+ ];
195
+ //# sourceMappingURL=components.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components.ts"],
4
+ "sourcesContent": ["import type { ComponentConfig } from '@ouraihub/core/preset';\n\n/**\n * \u6587\u6863\u7AD9\u70B9\u7EC4\u4EF6\u914D\u7F6E\n * \n * \u63D0\u4F9B\u6587\u6863\u573A\u666F\u5E38\u7528\u7EC4\u4EF6\u7684\u9884\u8BBE\u914D\u7F6E\n */\nexport const docsComponents: ComponentConfig[] = [\n {\n name: 'Sidebar',\n enabled: true,\n defaults: {\n width: '16rem',\n collapsible: true,\n position: 'left',\n sticky: true,\n },\n styles: {\n background: 'var(--ui-sidebar-background)',\n border: '1px solid var(--ui-sidebar-border)',\n padding: 'var(--ui-space-4)',\n },\n variants: {\n collapsed: {\n width: '4rem',\n },\n floating: {\n position: 'fixed',\n shadow: 'var(--ui-shadow-dropdown)',\n },\n },\n },\n \n {\n name: 'TableOfContents',\n enabled: true,\n defaults: {\n width: '14rem',\n position: 'right',\n sticky: true,\n maxDepth: 3,\n },\n styles: {\n fontSize: 'var(--ui-text-sm)',\n lineHeight: 'var(--ui-line-height-relaxed)',\n },\n variants: {\n compact: {\n maxDepth: 2,\n fontSize: 'var(--ui-text-xs)',\n },\n },\n },\n \n {\n name: 'CodeBlock',\n enabled: true,\n defaults: {\n theme: 'dark',\n showLineNumbers: true,\n copyButton: true,\n highlightLines: [],\n },\n styles: {\n background: 'var(--ui-code-background)',\n color: 'var(--ui-code-text)',\n fontFamily: 'var(--ui-font-mono)',\n fontSize: 'var(--ui-code-base)',\n lineHeight: 'var(--ui-line-height-code)',\n borderRadius: 'var(--ui-radius-lg)',\n padding: 'var(--ui-space-4)',\n },\n variants: {\n inline: {\n display: 'inline',\n padding: '0.125rem 0.375rem',\n borderRadius: 'var(--ui-radius-sm)',\n },\n },\n },\n \n {\n name: 'Callout',\n enabled: true,\n defaults: {\n type: 'note',\n icon: true,\n collapsible: false,\n },\n styles: {\n borderRadius: 'var(--ui-radius-md)',\n padding: 'var(--ui-space-4)',\n borderLeft: '4px solid',\n },\n variants: {\n note: {\n background: 'var(--ui-note-background)',\n borderColor: 'var(--ui-note-border)',\n color: 'var(--ui-note-text)',\n },\n tip: {\n background: 'var(--ui-tip-background)',\n borderColor: 'var(--ui-tip-border)',\n color: 'var(--ui-tip-text)',\n },\n warning: {\n background: 'var(--ui-warning-background)',\n borderColor: 'var(--ui-warning-border)',\n color: 'var(--ui-warning-text)',\n },\n danger: {\n background: 'var(--ui-danger-background)',\n borderColor: 'var(--ui-danger-border)',\n color: 'var(--ui-danger-text)',\n },\n },\n },\n \n {\n name: 'Breadcrumb',\n enabled: true,\n defaults: {\n separator: '/',\n showHome: true,\n maxItems: 5,\n },\n styles: {\n fontSize: 'var(--ui-text-sm)',\n color: 'var(--ui-text-secondary)',\n padding: 'var(--ui-space-2) 0',\n },\n variants: {\n compact: {\n maxItems: 3,\n separator: '>',\n },\n },\n },\n \n {\n name: 'SearchModal',\n enabled: true,\n defaults: {\n placeholder: 'Search documentation...',\n hotkey: 'ctrl+k',\n maxResults: 10,\n },\n styles: {\n background: 'var(--ui-background)',\n borderRadius: 'var(--ui-radius-xl)',\n shadow: 'var(--ui-shadow-modal)',\n padding: 'var(--ui-space-6)',\n },\n },\n \n {\n name: 'ApiReference',\n enabled: true,\n defaults: {\n showTypes: true,\n showExamples: true,\n expandable: true,\n },\n styles: {\n borderRadius: 'var(--ui-radius-md)',\n border: '1px solid var(--ui-border)',\n padding: 'var(--ui-space-4)',\n },\n },\n \n {\n name: 'Pagination',\n enabled: true,\n defaults: {\n showPrevNext: true,\n showPageNumbers: false,\n },\n styles: {\n padding: 'var(--ui-space-8) 0',\n borderTop: '1px solid var(--ui-border)',\n },\n },\n];\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }