@clidey/dory 1.0.8 → 1.10.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/README.md +59 -164
- package/bin/chat-server.ts +270 -0
- package/bin/dist/analytics-server.d.ts +11 -0
- package/bin/dist/analytics-server.d.ts.map +1 -0
- package/bin/dist/analytics-server.js +121 -0
- package/bin/dist/analytics-server.js.map +1 -0
- package/bin/dist/automation.d.ts +35 -0
- package/bin/dist/automation.d.ts.map +1 -0
- package/bin/dist/automation.js +259 -0
- package/bin/dist/automation.js.map +1 -0
- package/bin/dist/chat-server.d.ts +8 -0
- package/bin/dist/chat-server.d.ts.map +1 -0
- package/bin/dist/chat-server.js +322 -0
- package/bin/dist/chat-server.js.map +1 -0
- package/bin/dist/check.d.ts +16 -0
- package/bin/dist/check.d.ts.map +1 -0
- package/bin/dist/check.js +247 -0
- package/bin/dist/check.js.map +1 -0
- package/bin/dist/dependency-overlay.d.ts +7 -0
- package/bin/dist/dependency-overlay.d.ts.map +1 -0
- package/bin/dist/dependency-overlay.js +137 -0
- package/bin/dist/dependency-overlay.js.map +1 -0
- package/bin/dist/dory.js +254 -402
- package/bin/dist/dory.js.map +1 -1
- package/bin/dist/i18n-init.d.ts +6 -0
- package/bin/dist/i18n-init.d.ts.map +1 -0
- package/bin/dist/i18n-init.js +56 -0
- package/bin/dist/i18n-init.js.map +1 -0
- package/bin/dist/mcp-http.d.ts +8 -0
- package/bin/dist/mcp-http.d.ts.map +1 -0
- package/bin/dist/mcp-http.js +72 -0
- package/bin/dist/mcp-http.js.map +1 -0
- package/bin/dist/mcp.d.ts +2 -0
- package/bin/dist/mcp.d.ts.map +1 -0
- package/bin/dist/mcp.js +81 -0
- package/bin/dist/mcp.js.map +1 -0
- package/bin/dist/preview-entry.d.ts +2 -0
- package/bin/dist/preview-entry.d.ts.map +1 -0
- package/bin/dist/preview-entry.js +6 -0
- package/bin/dist/preview-entry.js.map +1 -0
- package/bin/dist/preview-server.d.ts +5 -0
- package/bin/dist/preview-server.d.ts.map +1 -0
- package/bin/dist/preview-server.js +146 -0
- package/bin/dist/preview-server.js.map +1 -0
- package/bin/dist/preview-static.d.ts +7 -0
- package/bin/dist/preview-static.d.ts.map +1 -0
- package/bin/dist/preview-static.js +70 -0
- package/bin/dist/preview-static.js.map +1 -0
- package/bin/dist/project-config.d.ts +22 -0
- package/bin/dist/project-config.d.ts.map +1 -0
- package/bin/dist/project-config.js +44 -0
- package/bin/dist/project-config.js.map +1 -0
- package/dist/index.html +57 -0
- package/dist/runtime/dory-runtime.css +2 -0
- package/dist/runtime/dory-runtime.html +14 -0
- package/dist/runtime/dory-runtime.js +5490 -0
- package/docs/api-playground-demo.mdx +119 -0
- package/docs/api-reference/asyncapi.json +324 -0
- package/docs/api-reference/openapi.json +366 -0
- package/docs/api-reference/operations/create.mdx +5 -0
- package/docs/api-reference/operations/delete.mdx +5 -0
- package/docs/api-reference/operations/get.mdx +5 -0
- package/docs/api-reference/operations/update.mdx +5 -0
- package/docs/api-reference/websocket-operations/receive-chat-message.mdx +5 -0
- package/docs/api-reference/websocket-operations/receive-notifications.mdx +5 -0
- package/docs/api-reference/websocket-operations/receive-presence-update.mdx +5 -0
- package/docs/api-reference/websocket-operations/send-chat-message.mdx +5 -0
- package/docs/api-reference/websocket-operations/send-presence-update.mdx +5 -0
- package/docs/assets/dory.jpeg +0 -0
- package/docs/components/accordion.mdx +145 -0
- package/docs/components/callouts.mdx +134 -0
- package/docs/components/cards.mdx +153 -0
- package/docs/components/code-blocks.mdx +281 -0
- package/docs/components/expandable.mdx +189 -0
- package/docs/components/icons.mdx +71 -0
- package/docs/components/images.mdx +82 -0
- package/docs/components/latex.mdx +148 -0
- package/docs/components/layout.mdx +178 -0
- package/docs/components/lists.mdx +134 -0
- package/docs/components/mermaid.mdx +149 -0
- package/docs/components/overview.mdx +81 -0
- package/docs/components/source.mdx +130 -0
- package/docs/components/steps.mdx +122 -0
- package/docs/components/tables.mdx +114 -0
- package/docs/components/tags.mdx +179 -0
- package/docs/components/typography.mdx +185 -0
- package/docs/configuration/analytics.mdx +45 -0
- package/docs/configuration/chat.mdx +59 -0
- package/docs/configuration/dory-json.mdx +278 -0
- package/docs/configuration/embed.mdx +73 -0
- package/docs/configuration/fonts.mdx +86 -0
- package/docs/configuration/internationalization.mdx +61 -0
- package/docs/configuration/navigation.mdx +217 -0
- package/docs/configuration/theming.mdx +166 -0
- package/docs/contributing.mdx +47 -0
- package/docs/dory.json +136 -0
- package/docs/embed-example.html +176 -0
- package/docs/favicon.svg +18 -0
- package/docs/features.mdx +440 -0
- package/docs/getting-started/automation.mdx +76 -0
- package/docs/getting-started/configuration.mdx +95 -0
- package/docs/getting-started/custom-components.mdx +60 -0
- package/docs/getting-started/installation.mdx +88 -0
- package/docs/getting-started/quick-start.mdx +53 -0
- package/docs/introduction.mdx +50 -0
- package/docs/logo/logo.svg +18 -0
- package/docs/playgrounds/api-playground.mdx +122 -0
- package/docs/playgrounds/websocket-playground.mdx +98 -0
- package/docs/social-card.png +0 -0
- package/docs/social-card.svg +17 -0
- package/docs/websocket-playground-demo.mdx +135 -0
- package/package.json +23 -17
- package/scripts/verify-component-examples.mjs +126 -0
- package/scripts/verify-runtime-parity.mjs +147 -0
- package/src/app.css +22 -1
- package/src/assets/fonts/HankenGrotesk.ttf +0 -0
- package/src/assets/fonts/OFL.txt +94 -0
- package/src/components/chat-assistant.tsx +229 -0
- package/src/components/dropdown.tsx +3 -3
- package/src/components/error-boundary.tsx +2 -2
- package/src/components/hooks.tsx +20 -1
- package/src/components/navigation.tsx +82 -51
- package/src/components/notification.tsx +2 -3
- package/src/components/routes.tsx +17 -19
- package/src/components/search-index.test.ts +15 -0
- package/src/components/search-index.ts +49 -48
- package/src/components/search.tsx +208 -104
- package/src/components/store.ts +27 -9
- package/src/config/mdx-common.ts +11 -0
- package/src/config/mdx.ts +10 -11
- package/src/embed/loader.ts +0 -3
- package/src/embed/types.ts +0 -2
- package/src/embed/widget-iframe.ts +19 -21
- package/src/embedded-runtime/config.ts +138 -0
- package/src/embedded-runtime/index.tsx +680 -0
- package/src/embedded-runtime/runtime.html +14 -0
- package/src/entry-server.tsx +46 -124
- package/src/main.tsx +17 -5
- package/src/mdx/accordion.tsx +3 -3
- package/src/mdx/api-playground.tsx +18 -16
- package/src/mdx/async-api.tsx +2 -2
- package/src/mdx/card.tsx +3 -2
- package/src/mdx/code.tsx +11 -9
- package/src/mdx/fence.tsx +6 -5
- package/src/mdx/icon-grid.tsx +4 -1
- package/src/mdx/icon-names.test.ts +15 -0
- package/src/mdx/icon-names.ts +60 -0
- package/src/mdx/icon-source-variants.ts +102 -0
- package/src/mdx/icon.tsx +12 -73
- package/src/mdx/latex.test.ts +38 -0
- package/src/mdx/latex.tsx +42 -64
- package/src/mdx/mdx.tsx +1 -1
- package/src/mdx/mermaid.tsx +12 -6
- package/src/mdx/open-api.tsx +130 -74
- package/src/mdx/preprocess.test.ts +16 -0
- package/src/mdx/preprocess.ts +61 -0
- package/src/mdx/processor.test.ts +135 -37
- package/src/mdx/processor.ts +54 -92
- package/src/mdx/source.tsx +5 -4
- package/src/mdx/specimen.tsx +57 -43
- package/src/mdx/tabs.tsx +32 -21
- package/src/mdx/text.tsx +11 -11
- package/src/mdx/try-it-panel.tsx +284 -0
- package/src/mdx/type-scale.tsx +7 -7
- package/src/mdx/websocket-playground.tsx +21 -14
- package/src/plugins/analytics-injector.ts +8 -0
- package/src/plugins/chat-dev-server.ts +32 -0
- package/src/plugins/docs-assets.test.ts +25 -0
- package/src/plugins/docs-assets.ts +6 -2
- package/src/plugins/frontmatter-dev-server.ts +2 -2
- package/src/plugins/frontmatter-generator.ts +1 -1
- package/src/plugins/html-files-middleware.test.ts +21 -1
- package/src/plugins/html-files-middleware.ts +26 -6
- package/src/plugins/html-metadata-injector.ts +24 -4
- package/src/plugins/llm-txt-dev-server.ts +2 -2
- package/src/plugins/llm-txt-generator.ts +21 -4
- package/src/plugins/prerender.ts +47 -20
- package/src/plugins/robots-generator.ts +1 -1
- package/src/plugins/sanitize.ts +6 -5
- package/src/plugins/shared.ts +6 -18
- package/src/plugins/sitemap-generator.ts +1 -1
- package/src/plugins/social-preview.test.ts +71 -0
- package/src/plugins/social-preview.ts +87 -0
- package/src/plugins/unified-mdx-plugin.ts +1 -1
- package/src/theme.scss +630 -207
- package/src/types/config.ts +53 -1
- package/src/ui/breadcrumb.tsx +17 -0
- package/src/ui/docs-header-view.tsx +32 -0
- package/src/ui/docs-navigation-view.tsx +69 -0
- package/src/ui/docs-page-frame.tsx +50 -0
- package/src/ui/dory-mark.tsx +9 -0
- package/src/ui/header.tsx +33 -90
- package/src/ui/layout.tsx +99 -153
- package/src/ui/mobile-navigation.tsx +10 -8
- package/src/ui/page-actions.tsx +67 -0
- package/src/ui/page-feedback.tsx +50 -0
- package/src/ui/page-footer.tsx +23 -0
- package/src/ui/prev-next-link.tsx +15 -69
- package/src/ui/prev-next-view.tsx +27 -0
- package/src/ui/table-of-content-view.tsx +167 -0
- package/src/ui/table-of-content.tsx +25 -183
- package/src/utils/analytics.test.ts +36 -0
- package/src/utils/analytics.ts +35 -0
- package/src/utils/colors.ts +7 -0
- package/src/utils/content-scope.test.ts +26 -0
- package/src/utils/content-scope.ts +39 -0
- package/src/utils/search-content.ts +12 -0
- package/src/utils/theme.ts +1 -7
- package/vite.config.ssr.ts +4 -4
- package/vite.config.ts +22 -16
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Navigation'
|
|
3
|
+
description: 'Configure the sidebar navigation using tabs, groups, and pages in dory.json.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Navigation
|
|
7
|
+
|
|
8
|
+
The `navigation` object in `dory.json` defines the sidebar structure. Navigation is organized into three levels: **tabs**, **groups**, and **pages**.
|
|
9
|
+
|
|
10
|
+
## Structure
|
|
11
|
+
|
|
12
|
+
```json
|
|
13
|
+
"navigation": {
|
|
14
|
+
"tabs": [
|
|
15
|
+
{
|
|
16
|
+
"tab": "Documentation",
|
|
17
|
+
"groups": [
|
|
18
|
+
{
|
|
19
|
+
"group": "Getting Started",
|
|
20
|
+
"pages": [
|
|
21
|
+
"introduction",
|
|
22
|
+
"installation",
|
|
23
|
+
"quick-start"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"group": "Components",
|
|
28
|
+
"pages": [
|
|
29
|
+
"components/overview",
|
|
30
|
+
"components/code-blocks"
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"tab": "API Reference",
|
|
37
|
+
"groups": [
|
|
38
|
+
{
|
|
39
|
+
"group": "Endpoints",
|
|
40
|
+
"pages": [
|
|
41
|
+
"api/users",
|
|
42
|
+
"api/workspaces"
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Tabs
|
|
52
|
+
|
|
53
|
+
Tabs appear at the top of the sidebar. Use multiple tabs to separate major sections of your documentation.
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"tab": "Documentation",
|
|
58
|
+
"groups": [...]
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
| Field | Type | Description |
|
|
63
|
+
| --- | --- | --- |
|
|
64
|
+
| `tab` | `string` | Tab label shown in the sidebar header. |
|
|
65
|
+
| `groups` | `Group[]` | Navigation groups within this tab. |
|
|
66
|
+
|
|
67
|
+
## Groups
|
|
68
|
+
|
|
69
|
+
Groups are collapsible sections within a tab. They appear as labeled sections in the sidebar.
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"group": "Getting Started",
|
|
74
|
+
"pages": ["introduction", "installation"]
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
| Field | Type | Description |
|
|
79
|
+
| --- | --- | --- |
|
|
80
|
+
| `group` | `string` | Group label. |
|
|
81
|
+
| `pages` | `string[]` | List of page paths within the group. |
|
|
82
|
+
|
|
83
|
+
## Pages
|
|
84
|
+
|
|
85
|
+
Pages are references to MDX files. Use paths **relative to the docs directory root**, without the `.mdx` extension.
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
"pages": [
|
|
89
|
+
"introduction",
|
|
90
|
+
"getting-started/installation",
|
|
91
|
+
"components/code-blocks"
|
|
92
|
+
]
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
A path like `"components/code-blocks"` maps to `docs/components/code-blocks.mdx`.
|
|
96
|
+
|
|
97
|
+
<Note>
|
|
98
|
+
Page paths are case-sensitive and must exactly match the filename (without `.mdx`). Use lowercase with hyphens for consistency.
|
|
99
|
+
</Note>
|
|
100
|
+
|
|
101
|
+
## Single-Tab Setup
|
|
102
|
+
|
|
103
|
+
For smaller documentation sites, one tab is enough:
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
"navigation": {
|
|
107
|
+
"tabs": [
|
|
108
|
+
{
|
|
109
|
+
"tab": "Docs",
|
|
110
|
+
"groups": [
|
|
111
|
+
{
|
|
112
|
+
"group": "Overview",
|
|
113
|
+
"pages": ["introduction"]
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"group": "Guides",
|
|
117
|
+
"pages": ["guides/setup", "guides/deployment"]
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Multi-Tab Setup
|
|
126
|
+
|
|
127
|
+
Separate documentation types with multiple tabs:
|
|
128
|
+
|
|
129
|
+
```json
|
|
130
|
+
"navigation": {
|
|
131
|
+
"tabs": [
|
|
132
|
+
{
|
|
133
|
+
"tab": "Guides",
|
|
134
|
+
"groups": [
|
|
135
|
+
{
|
|
136
|
+
"group": "Getting Started",
|
|
137
|
+
"pages": ["introduction", "installation"]
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"tab": "API Reference",
|
|
143
|
+
"groups": [
|
|
144
|
+
{
|
|
145
|
+
"group": "Users",
|
|
146
|
+
"pages": ["api/create-user", "api/get-user", "api/delete-user"]
|
|
147
|
+
}
|
|
148
|
+
]
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"tab": "SDKs",
|
|
152
|
+
"groups": [
|
|
153
|
+
{
|
|
154
|
+
"group": "Client Libraries",
|
|
155
|
+
"pages": ["sdks/javascript", "sdks/python", "sdks/go"]
|
|
156
|
+
}
|
|
157
|
+
]
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Sidebar Extras
|
|
164
|
+
|
|
165
|
+
Set `version` in `dory.json` to show the version card at the top of the sidebar. A page entry can be an object with a `badge`, which renders as a small label after the page name.
|
|
166
|
+
|
|
167
|
+
```json dory.json
|
|
168
|
+
{
|
|
169
|
+
"version": "1.0.8 · Latest",
|
|
170
|
+
"navigation": {
|
|
171
|
+
"tabs": [{
|
|
172
|
+
"tab": "Documentation",
|
|
173
|
+
"groups": [{
|
|
174
|
+
"group": "Writing Docs",
|
|
175
|
+
"pages": ["introduction", { "page": "components/overview", "badge": "New" }]
|
|
176
|
+
}]
|
|
177
|
+
}]
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
API reference pages show their method in the sidebar automatically, taken from the page's `openapi` or `asyncapi` frontmatter.
|
|
183
|
+
|
|
184
|
+
## Page Frontmatter
|
|
185
|
+
|
|
186
|
+
Each MDX page should include frontmatter with `title` and `description`. These are used for the page title, meta tags, and breadcrumbs:
|
|
187
|
+
|
|
188
|
+
```mdx
|
|
189
|
+
---
|
|
190
|
+
title: 'Installation'
|
|
191
|
+
description: 'Install and configure Dory for your project.'
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
# Installation
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
<Tip>
|
|
198
|
+
Keep `title` concise (2–5 words). The `description` is used for SEO meta tags and appears in search results, so make it a full sentence.
|
|
199
|
+
</Tip>
|
|
200
|
+
|
|
201
|
+
### Lead Paragraph and Metadata Strip
|
|
202
|
+
|
|
203
|
+
Add a `lead` string to show a larger introductory paragraph directly under the page title. Add a `meta` map to show a row of labelled facts below it. Keys are the labels and values are shown as written. YAML dates such as `2026-10-12` render as `12 Oct 2026`.
|
|
204
|
+
|
|
205
|
+
```mdx
|
|
206
|
+
---
|
|
207
|
+
title: 'Introduction'
|
|
208
|
+
description: 'What Dory is and how to get started.'
|
|
209
|
+
lead: 'Dory turns MDX pages into a documentation site with navigation, search, and interactive components.'
|
|
210
|
+
meta:
|
|
211
|
+
License: MIT
|
|
212
|
+
Updated: 2026-10-12
|
|
213
|
+
Read: 4 min
|
|
214
|
+
---
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Pages without `lead` or `meta` show neither.
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Theming'
|
|
3
|
+
description: 'Customize your documentation site colors, fonts, and appearance to match your brand.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Theming
|
|
7
|
+
|
|
8
|
+
Dory uses the default Clidey Design theme from `@clidey/ux`. It provides the Paper and Ink surfaces, Signal Blue actions, and light and dark modes. Add `dory.json` overrides to match your product's visual identity.
|
|
9
|
+
|
|
10
|
+
## Color Configuration
|
|
11
|
+
|
|
12
|
+
### Brand Colors
|
|
13
|
+
|
|
14
|
+
```json
|
|
15
|
+
"colors": {
|
|
16
|
+
"primary": "#6366f1",
|
|
17
|
+
"light": "#818cf8",
|
|
18
|
+
"dark": "#4f46e5"
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
| Field | Description |
|
|
23
|
+
| --- | --- |
|
|
24
|
+
| `primary` | Base brand color. Applied to active navigation items, links, and accent elements. |
|
|
25
|
+
| `light` | Lighter shade. Used for hover states and accents in light mode. |
|
|
26
|
+
| `dark` | Darker shade. Used for hover states and accents in dark mode. |
|
|
27
|
+
|
|
28
|
+
### Extended Colors
|
|
29
|
+
|
|
30
|
+
For deeper customization, you can control the entire page palette:
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
"colors": {
|
|
34
|
+
"primary": "#F1BF4F",
|
|
35
|
+
"light": "#F1BF4F",
|
|
36
|
+
"dark": "#F1BF4F",
|
|
37
|
+
"background": "#1a1a2e",
|
|
38
|
+
"surface": "#242440",
|
|
39
|
+
"surfaceElevated": "#2e2e4a",
|
|
40
|
+
"foreground": "#f5f5f7",
|
|
41
|
+
"mutedForeground": "#a0a0b0",
|
|
42
|
+
"border": "rgba(255, 255, 255, 0.1)",
|
|
43
|
+
"accent": "#60a5fa"
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
| Field | Description |
|
|
48
|
+
| --- | --- |
|
|
49
|
+
| `background` | Page background color. |
|
|
50
|
+
| `surface` | Header and sidebar background. |
|
|
51
|
+
| `surfaceElevated` | Elevated card/panel backgrounds. |
|
|
52
|
+
| `foreground` | Primary text color. |
|
|
53
|
+
| `mutedForeground` | Secondary/muted text color. |
|
|
54
|
+
| `border` | Border and divider color. |
|
|
55
|
+
| `accent` | Secondary accent color for interactive elements. |
|
|
56
|
+
|
|
57
|
+
## Theme Mode
|
|
58
|
+
|
|
59
|
+
Force your docs into dark or light mode regardless of the user's OS preference:
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
"theme": {
|
|
63
|
+
"mode": "dark",
|
|
64
|
+
"radius": "0.5rem"
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
| Field | Description |
|
|
69
|
+
| --- | --- |
|
|
70
|
+
| `mode` | `"dark"`, `"light"`, or `"system"` (default). Forces a specific color scheme. |
|
|
71
|
+
| `radius` | Base border-radius value for UI elements. |
|
|
72
|
+
|
|
73
|
+
## Typography
|
|
74
|
+
|
|
75
|
+
Control heading, body, and code fonts independently:
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
"fonts": {
|
|
79
|
+
"family": "Inter Tight",
|
|
80
|
+
"source": "https://fonts.gstatic.com/s/intertight/v7/...",
|
|
81
|
+
"format": "woff2",
|
|
82
|
+
"heading": {
|
|
83
|
+
"family": "Fraunces",
|
|
84
|
+
"source": "https://fonts.gstatic.com/s/fraunces/v31/...",
|
|
85
|
+
"format": "woff2",
|
|
86
|
+
"weight": "300 900"
|
|
87
|
+
},
|
|
88
|
+
"mono": {
|
|
89
|
+
"family": "JetBrains Mono",
|
|
90
|
+
"source": "https://fonts.gstatic.com/s/jetbrainsmono/v18/...",
|
|
91
|
+
"format": "woff2"
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
| Field | Description |
|
|
97
|
+
| --- | --- |
|
|
98
|
+
| `family` / `source` / `format` | Body font (applied globally). |
|
|
99
|
+
| `heading` | Optional separate font for h1-h4 headings. |
|
|
100
|
+
| `mono` | Optional separate font for code blocks and inline code. |
|
|
101
|
+
|
|
102
|
+
<Tip>
|
|
103
|
+
Combine `theme.mode: "dark"` with custom `background` and `surface` colors to create a dark-themed documentation site that matches your product's look and feel.
|
|
104
|
+
</Tip>
|
|
105
|
+
|
|
106
|
+
## Dark Mode
|
|
107
|
+
|
|
108
|
+
Dory automatically follows the user's OS/browser dark mode preference. No configuration required — it works out of the box.
|
|
109
|
+
|
|
110
|
+
The `light` and `dark` color fields let you fine-tune how your brand color appears on light and dark backgrounds respectively.
|
|
111
|
+
|
|
112
|
+
<Tip>
|
|
113
|
+
For best results: choose a `light` shade that's slightly lighter than `primary`, and a `dark` shade that's slightly darker. This ensures good contrast on both backgrounds.
|
|
114
|
+
</Tip>
|
|
115
|
+
|
|
116
|
+
## Color Palettes
|
|
117
|
+
|
|
118
|
+
Some well-tested palettes:
|
|
119
|
+
|
|
120
|
+
<AccordionGroup>
|
|
121
|
+
<Accordion title="Indigo" icon="palette">
|
|
122
|
+
```json
|
|
123
|
+
"colors": {
|
|
124
|
+
"primary": "#6366f1",
|
|
125
|
+
"light": "#818cf8",
|
|
126
|
+
"dark": "#4f46e5"
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
</Accordion>
|
|
130
|
+
<Accordion title="Sky Blue" icon="palette">
|
|
131
|
+
```json
|
|
132
|
+
"colors": {
|
|
133
|
+
"primary": "#0ea5e9",
|
|
134
|
+
"light": "#38bdf8",
|
|
135
|
+
"dark": "#0284c7"
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
</Accordion>
|
|
139
|
+
<Accordion title="Emerald Green" icon="palette">
|
|
140
|
+
```json
|
|
141
|
+
"colors": {
|
|
142
|
+
"primary": "#10b981",
|
|
143
|
+
"light": "#34d399",
|
|
144
|
+
"dark": "#059669"
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
</Accordion>
|
|
148
|
+
<Accordion title="Rose" icon="palette">
|
|
149
|
+
```json
|
|
150
|
+
"colors": {
|
|
151
|
+
"primary": "#f43f5e",
|
|
152
|
+
"light": "#fb7185",
|
|
153
|
+
"dark": "#e11d48"
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
</Accordion>
|
|
157
|
+
<Accordion title="Violet" icon="palette">
|
|
158
|
+
```json
|
|
159
|
+
"colors": {
|
|
160
|
+
"primary": "#8b5cf6",
|
|
161
|
+
"light": "#a78bfa",
|
|
162
|
+
"dark": "#7c3aed"
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
</Accordion>
|
|
166
|
+
</AccordionGroup>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Contributing to Dory'
|
|
3
|
+
description: 'Develop Dory, review its own documentation, and understand the publishing workflow.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Dory's public README introduces the product. This guide covers work on the repository itself. To create a separate documentation site, use the [quick start](/getting-started/quick-start).
|
|
7
|
+
|
|
8
|
+
## Run the repository
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
git clone https://github.com/clidey/dory.git
|
|
12
|
+
cd dory
|
|
13
|
+
pnpm install --frozen-lockfile --ignore-scripts
|
|
14
|
+
pnpm dev
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Edit Dory's own pages under `docs/`. Keep dependency lifecycle scripts disabled and preserve the repository's dependency integrity and release-age policies.
|
|
18
|
+
|
|
19
|
+
## Validate changes
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pnpm test
|
|
23
|
+
node --import tsx --test bin/dependency-overlay.test.mts bin/preview-static.test.mts
|
|
24
|
+
pnpm build
|
|
25
|
+
node bin/dist/dory.js check
|
|
26
|
+
node scripts/verify-component-examples.mjs
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The component browser check uses installed Chrome (or `DORY_CHROME_PATH`), measures preview padding and clipping, exercises tabs, and verifies math loading and failure states on desktop and mobile. It saves screenshots and a report under ignored `.dory/component-review/`; inspect these before publishing.
|
|
30
|
+
|
|
31
|
+
Review browser behavior in light and dark modes. For custom components, verify interactions and focus handling; compilation alone cannot do that.
|
|
32
|
+
|
|
33
|
+
## Preview the production site
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
pnpm preview --host 127.0.0.1 --port 3188 --strictPort
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Open `http://127.0.0.1:3188/dory/`. Review code and the exact generated site before pushing or publishing changes.
|
|
40
|
+
|
|
41
|
+
## Publish this repository's docs
|
|
42
|
+
|
|
43
|
+
The documentation workflow validates pull requests and deploys main-branch documentation to `https://clidey.github.io/dory/`. Its canonical URL and path are configured in `docs/dory.json`; GitHub Pages uses GitHub Actions as the publishing source.
|
|
44
|
+
|
|
45
|
+
Publish only the generated `dist/` artifact. Static Pages hosting includes navigation and search. Documentation chat and HTTP MCP need a separately hosted Dory server; do not put server credentials into static assets.
|
|
46
|
+
|
|
47
|
+
Imported MDX and component modules are executable source. Review them, build untrusted contributions without secrets or deployment credentials, and deploy reviewed artifacts separately. See the repository security policy for the trust boundary.
|
package/docs/dory.json
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Dory",
|
|
3
|
+
"url": "https://clidey.github.io",
|
|
4
|
+
"image": "/social-card.png",
|
|
5
|
+
"version": "1.10.0 \u00b7 Latest",
|
|
6
|
+
"copyright": "Clidey",
|
|
7
|
+
"repository": {
|
|
8
|
+
"url": "https://github.com/clidey/dory",
|
|
9
|
+
"branch": "main",
|
|
10
|
+
"path": "docs"
|
|
11
|
+
},
|
|
12
|
+
"description": "Static documentation site generator for modern teams. Build beautiful docs from MDX files.",
|
|
13
|
+
"seo": {
|
|
14
|
+
"titleTemplate": "%s \u2014 Dory"
|
|
15
|
+
},
|
|
16
|
+
"favicon": "./favicon.svg",
|
|
17
|
+
"fonts": {
|
|
18
|
+
"family": "Hanken Grotesk",
|
|
19
|
+
"heading": {
|
|
20
|
+
"family": "Bricolage Grotesque"
|
|
21
|
+
},
|
|
22
|
+
"mono": {
|
|
23
|
+
"family": "JetBrains Mono"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"logo": {
|
|
27
|
+
"light": "./logo/logo.svg",
|
|
28
|
+
"dark": "./logo/logo.svg"
|
|
29
|
+
},
|
|
30
|
+
"navigation": {
|
|
31
|
+
"tabs": [
|
|
32
|
+
{
|
|
33
|
+
"tab": "Guides",
|
|
34
|
+
"groups": [
|
|
35
|
+
{
|
|
36
|
+
"group": "Getting Started",
|
|
37
|
+
"pages": [
|
|
38
|
+
"introduction",
|
|
39
|
+
"getting-started/installation",
|
|
40
|
+
"getting-started/quick-start",
|
|
41
|
+
"getting-started/automation",
|
|
42
|
+
"getting-started/configuration",
|
|
43
|
+
"getting-started/custom-components"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"group": "Configuration",
|
|
48
|
+
"pages": [
|
|
49
|
+
"configuration/dory-json",
|
|
50
|
+
"configuration/navigation",
|
|
51
|
+
"configuration/theming",
|
|
52
|
+
"configuration/fonts",
|
|
53
|
+
"configuration/analytics",
|
|
54
|
+
"configuration/chat",
|
|
55
|
+
"configuration/internationalization",
|
|
56
|
+
"configuration/embed"
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"group": "Contribute",
|
|
61
|
+
"pages": [
|
|
62
|
+
"contributing"
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"tab": "Components",
|
|
69
|
+
"groups": [
|
|
70
|
+
{
|
|
71
|
+
"group": "Components",
|
|
72
|
+
"pages": [
|
|
73
|
+
{
|
|
74
|
+
"page": "components/overview",
|
|
75
|
+
"badge": "New"
|
|
76
|
+
},
|
|
77
|
+
"components/typography",
|
|
78
|
+
"components/code-blocks",
|
|
79
|
+
"components/callouts",
|
|
80
|
+
"components/cards",
|
|
81
|
+
"components/accordion",
|
|
82
|
+
"components/expandable",
|
|
83
|
+
"components/steps",
|
|
84
|
+
"components/tables",
|
|
85
|
+
"components/lists",
|
|
86
|
+
"components/icons",
|
|
87
|
+
"components/tags",
|
|
88
|
+
"components/images",
|
|
89
|
+
"components/layout",
|
|
90
|
+
"components/source",
|
|
91
|
+
"components/mermaid",
|
|
92
|
+
"components/latex"
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"tab": "API reference",
|
|
99
|
+
"groups": [
|
|
100
|
+
{
|
|
101
|
+
"group": "API Reference",
|
|
102
|
+
"pages": [
|
|
103
|
+
"api-reference/operations/get",
|
|
104
|
+
"api-reference/operations/create",
|
|
105
|
+
"api-reference/operations/update",
|
|
106
|
+
"api-reference/operations/delete"
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"group": "Interactive Playgrounds",
|
|
111
|
+
"pages": [
|
|
112
|
+
"playgrounds/api-playground",
|
|
113
|
+
"playgrounds/websocket-playground"
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"tab": "Realtime",
|
|
120
|
+
"groups": [
|
|
121
|
+
{
|
|
122
|
+
"group": "Realtime",
|
|
123
|
+
"pages": [
|
|
124
|
+
"api-reference/websocket-operations/receive-chat-message",
|
|
125
|
+
"api-reference/websocket-operations/send-chat-message",
|
|
126
|
+
"api-reference/websocket-operations/receive-notifications",
|
|
127
|
+
"api-reference/websocket-operations/receive-presence-update",
|
|
128
|
+
"api-reference/websocket-operations/send-presence-update"
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
]
|
|
134
|
+
},
|
|
135
|
+
"basePath": "/dory"
|
|
136
|
+
}
|