@clidey/dory 1.0.8 → 1.9.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 +12 -1
- 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/dory.js +252 -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 +159 -0
- package/bin/dist/preview-server.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 +175 -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/dory.json +129 -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/installation.mdx +88 -0
- package/docs/getting-started/quick-start.mdx +53 -0
- package/docs/getting-started/whodb-ee-apps.mdx +122 -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-runtime-parity.mjs +146 -0
- package/src/app.css +19 -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 +16 -4
- 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.tsx +3 -2
- 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.ts +4 -96
- package/src/mdx/source.tsx +5 -4
- package/src/mdx/specimen.tsx +38 -6
- package/src/mdx/tabs.tsx +29 -21
- package/src/mdx/text.tsx +9 -9
- package/src/mdx/try-it-panel.tsx +284 -0
- package/src/mdx/type-scale.tsx +4 -4
- 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 +1 -1
- 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 +3 -3
- package/vite.config.ts +21 -15
|
@@ -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 WhoDB is and how to get started.'
|
|
209
|
+
lead: 'WhoDB is a database management tool for exploring schemas, managing data and visualizing relationships.'
|
|
210
|
+
meta:
|
|
211
|
+
Edition: Community
|
|
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>
|
package/docs/dory.json
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Dory",
|
|
3
|
+
"url": "https://dory.clidey.com",
|
|
4
|
+
"image": "/social-card.png",
|
|
5
|
+
"version": "1.0.8 · 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 — 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/whodb-ee-apps",
|
|
43
|
+
"getting-started/configuration"
|
|
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
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"tab": "Components",
|
|
63
|
+
"groups": [
|
|
64
|
+
{
|
|
65
|
+
"group": "Components",
|
|
66
|
+
"pages": [
|
|
67
|
+
{
|
|
68
|
+
"page": "components/overview",
|
|
69
|
+
"badge": "New"
|
|
70
|
+
},
|
|
71
|
+
"components/typography",
|
|
72
|
+
"components/code-blocks",
|
|
73
|
+
"components/callouts",
|
|
74
|
+
"components/cards",
|
|
75
|
+
"components/accordion",
|
|
76
|
+
"components/expandable",
|
|
77
|
+
"components/steps",
|
|
78
|
+
"components/tables",
|
|
79
|
+
"components/lists",
|
|
80
|
+
"components/icons",
|
|
81
|
+
"components/tags",
|
|
82
|
+
"components/images",
|
|
83
|
+
"components/layout",
|
|
84
|
+
"components/source",
|
|
85
|
+
"components/mermaid",
|
|
86
|
+
"components/latex"
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"tab": "API reference",
|
|
93
|
+
"groups": [
|
|
94
|
+
{
|
|
95
|
+
"group": "API Reference",
|
|
96
|
+
"pages": [
|
|
97
|
+
"api-reference/operations/get",
|
|
98
|
+
"api-reference/operations/create",
|
|
99
|
+
"api-reference/operations/update",
|
|
100
|
+
"api-reference/operations/delete"
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"group": "Interactive Playgrounds",
|
|
105
|
+
"pages": [
|
|
106
|
+
"playgrounds/api-playground",
|
|
107
|
+
"playgrounds/websocket-playground"
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"tab": "Realtime",
|
|
114
|
+
"groups": [
|
|
115
|
+
{
|
|
116
|
+
"group": "Realtime",
|
|
117
|
+
"pages": [
|
|
118
|
+
"api-reference/websocket-operations/receive-chat-message",
|
|
119
|
+
"api-reference/websocket-operations/send-chat-message",
|
|
120
|
+
"api-reference/websocket-operations/receive-notifications",
|
|
121
|
+
"api-reference/websocket-operations/receive-presence-update",
|
|
122
|
+
"api-reference/websocket-operations/send-presence-update"
|
|
123
|
+
]
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Dory Embedded Documentation Example</title>
|
|
7
|
+
<style>
|
|
8
|
+
* {
|
|
9
|
+
margin: 0;
|
|
10
|
+
padding: 0;
|
|
11
|
+
box-sizing: border-box;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
body {
|
|
15
|
+
font-family: system-ui, -apple-system, sans-serif;
|
|
16
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
17
|
+
min-height: 100vh;
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
justify-content: center;
|
|
21
|
+
padding: 2rem;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.container {
|
|
25
|
+
max-width: 800px;
|
|
26
|
+
background: white;
|
|
27
|
+
border-radius: 1rem;
|
|
28
|
+
padding: 3rem;
|
|
29
|
+
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
h1 {
|
|
33
|
+
font-size: 2.5rem;
|
|
34
|
+
margin-bottom: 1rem;
|
|
35
|
+
color: #1f2937;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
p {
|
|
39
|
+
font-size: 1.125rem;
|
|
40
|
+
color: #6b7280;
|
|
41
|
+
margin-bottom: 2rem;
|
|
42
|
+
line-height: 1.6;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.buttons {
|
|
46
|
+
display: flex;
|
|
47
|
+
flex-wrap: wrap;
|
|
48
|
+
gap: 1rem;
|
|
49
|
+
margin-bottom: 2rem;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
button {
|
|
53
|
+
padding: 0.75rem 1.5rem;
|
|
54
|
+
font-size: 1rem;
|
|
55
|
+
font-weight: 600;
|
|
56
|
+
border: none;
|
|
57
|
+
border-radius: 0.5rem;
|
|
58
|
+
cursor: pointer;
|
|
59
|
+
transition: all 0.2s;
|
|
60
|
+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.btn-primary {
|
|
64
|
+
background: #3b82f6;
|
|
65
|
+
color: white;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.btn-primary:hover {
|
|
69
|
+
background: #2563eb;
|
|
70
|
+
transform: translateY(-2px);
|
|
71
|
+
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.btn-secondary {
|
|
75
|
+
background: #f3f4f6;
|
|
76
|
+
color: #374151;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.btn-secondary:hover {
|
|
80
|
+
background: #e5e7eb;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.code-block {
|
|
84
|
+
background: #1f2937;
|
|
85
|
+
color: #f9fafb;
|
|
86
|
+
padding: 1.5rem;
|
|
87
|
+
border-radius: 0.5rem;
|
|
88
|
+
overflow-x: auto;
|
|
89
|
+
margin-bottom: 2rem;
|
|
90
|
+
font-family: 'Monaco', 'Menlo', monospace;
|
|
91
|
+
font-size: 0.875rem;
|
|
92
|
+
line-height: 1.6;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.status {
|
|
96
|
+
padding: 1rem;
|
|
97
|
+
background: #f0fdf4;
|
|
98
|
+
border: 1px solid #86efac;
|
|
99
|
+
border-radius: 0.5rem;
|
|
100
|
+
color: #166534;
|
|
101
|
+
margin-bottom: 1rem;
|
|
102
|
+
}
|
|
103
|
+
</style>
|
|
104
|
+
</head>
|
|
105
|
+
<body>
|
|
106
|
+
<div class="container">
|
|
107
|
+
<h1>🐟 Dory Embedded Documentation</h1>
|
|
108
|
+
<p>
|
|
109
|
+
This example demonstrates how to embed Dory documentation in your application.
|
|
110
|
+
</p>
|
|
111
|
+
|
|
112
|
+
<div id="status" class="status" style="display: none;"></div>
|
|
113
|
+
|
|
114
|
+
<div class="buttons">
|
|
115
|
+
<button class="btn-primary" onclick="DoryDocs.open()">
|
|
116
|
+
📚 Open Documentation
|
|
117
|
+
</button>
|
|
118
|
+
<button class="btn-secondary" onclick="DoryDocs.open('/features')">
|
|
119
|
+
⚡ Open Features
|
|
120
|
+
</button>
|
|
121
|
+
<button class="btn-secondary" onclick="DoryDocs.toggle()">
|
|
122
|
+
🔄 Toggle
|
|
123
|
+
</button>
|
|
124
|
+
</div>
|
|
125
|
+
|
|
126
|
+
<h2 style="margin-top: 2rem; margin-bottom: 1rem; color: #1f2937;">Integration Code</h2>
|
|
127
|
+
<div class="code-block">
|
|
128
|
+
<script src="http://localhost:3000/dist/embed.js"></script>
|
|
129
|
+
|
|
130
|
+
<script>
|
|
131
|
+
DoryDocs.init({
|
|
132
|
+
baseUrl: 'http://localhost:3000',
|
|
133
|
+
position: 'right',
|
|
134
|
+
width: 600,
|
|
135
|
+
closeOnEscape: true,
|
|
136
|
+
});
|
|
137
|
+
</script>
|
|
138
|
+
|
|
139
|
+
<button onclick="DoryDocs.open()">Help</button>
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
|
|
143
|
+
<!-- Load Dory Embed Script -->
|
|
144
|
+
<script src="http://localhost:3000/dist/embed.js"></script>
|
|
145
|
+
|
|
146
|
+
<!-- Initialize Dory -->
|
|
147
|
+
<script>
|
|
148
|
+
window.addEventListener('dory:ready', () => {
|
|
149
|
+
const status = document.getElementById('status');
|
|
150
|
+
status.style.display = 'block';
|
|
151
|
+
status.textContent = '✅ DoryDocs loaded and ready!';
|
|
152
|
+
|
|
153
|
+
DoryDocs.init({
|
|
154
|
+
baseUrl: 'http://localhost:3000',
|
|
155
|
+
position: 'right',
|
|
156
|
+
width: 400,
|
|
157
|
+
theme: 'inherit',
|
|
158
|
+
closeOnEscape: true,
|
|
159
|
+
closeOnOverlayClick: true,
|
|
160
|
+
onOpen: () => {
|
|
161
|
+
console.log('Docs opened');
|
|
162
|
+
status.textContent = '📖 Documentation opened';
|
|
163
|
+
},
|
|
164
|
+
onClose: () => {
|
|
165
|
+
console.log('Docs closed');
|
|
166
|
+
status.textContent = '✅ DoryDocs ready';
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
if (window.DoryDocs) {
|
|
172
|
+
window.dispatchEvent(new Event('dory:ready'));
|
|
173
|
+
}
|
|
174
|
+
</script>
|
|
175
|
+
</body>
|
|
176
|
+
</html>
|
package/docs/favicon.svg
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<svg width="22" height="24" viewBox="0 0 22 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M21.9941 4.99951C19.9947 3.00079 19.9947 3.00079 16.9956 0.00271368V4.99951H21.9941Z" fill="#92BFFA"/>
|
|
3
|
+
<path d="M7.49782 3.91843C7.49782 4.5155 7.98183 4.99951 8.5789 4.99951H16.9951V0.00271606H8.5789C7.98183 0.00271606 7.49782 0.486733 7.49782 1.0838V3.91843Z" fill="url(#paint0_linear_66_680)"/>
|
|
4
|
+
<path d="M21.9932 5.01123C22.0049 8.20987 21.9983 17.7036 21.9951 21.9995C21.9943 23.1041 21.0977 23.9995 19.9932 23.9995H2C0.895431 23.9995 3.87055e-07 23.1041 0 21.9995V8.59131C0 7.99426 0.48401 7.51028 1.08105 7.51025H3.91797C4.51481 7.51052 4.99902 7.99441 4.99902 8.59131V19.5024H16.9951V5.01123H21.9932Z" fill="url(#paint1_linear_66_680)"/>
|
|
5
|
+
<ellipse cx="12.3217" cy="14.276" rx="1.2973" ry="1.29647" fill="#1967D2"/>
|
|
6
|
+
<path d="M5 0.00634813C5.55157 0.00730227 5.99805 0.454718 5.99805 1.00635V4.01221C5.99805 4.64068 6.29707 5.23179 6.80273 5.60498L7.46777 6.09619C7.81171 6.35003 8.22878 6.48682 8.65625 6.48682H14.4951C15.0472 6.48682 15.4949 6.93475 15.4951 7.48682V16.98C15.4951 17.5322 15.0474 17.98 14.4951 17.98H7.49805C6.94583 17.9799 6.49808 17.5322 6.49805 16.98V8.67139C6.49806 8.23724 6.35689 7.81407 6.0957 7.46729L5.58691 6.79248C5.21558 6.29954 4.63759 6.00515 4.02051 5.99561H1C0.447722 5.9956 0 5.54789 0 4.99561V1.00049C0.000165845 0.447951 0.448441 -4.60729e-05 1.00098 0.00048876L5 0.00634813Z" fill="#FFC236"/>
|
|
7
|
+
<ellipse cx="12.9961" cy="15.505" rx="1" ry="0.999359" fill="#3630C4"/>
|
|
8
|
+
<defs>
|
|
9
|
+
<linearGradient id="paint0_linear_66_680" x1="10.9999" y1="0.00271606" x2="10.9999" y2="23.9995" gradientUnits="userSpaceOnUse">
|
|
10
|
+
<stop stop-color="#528FF4"/>
|
|
11
|
+
<stop offset="1" stop-color="#92BFFA"/>
|
|
12
|
+
</linearGradient>
|
|
13
|
+
<linearGradient id="paint1_linear_66_680" x1="10.9999" y1="0.00271606" x2="10.9999" y2="23.9995" gradientUnits="userSpaceOnUse">
|
|
14
|
+
<stop stop-color="#528FF4"/>
|
|
15
|
+
<stop offset="1" stop-color="#92BFFA"/>
|
|
16
|
+
</linearGradient>
|
|
17
|
+
</defs>
|
|
18
|
+
</svg>
|