@clidey/dory 1.0.7 → 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.
Files changed (198) hide show
  1. package/README.md +12 -1
  2. package/bin/chat-server.ts +270 -0
  3. package/bin/dist/analytics-server.d.ts +11 -0
  4. package/bin/dist/analytics-server.d.ts.map +1 -0
  5. package/bin/dist/analytics-server.js +121 -0
  6. package/bin/dist/analytics-server.js.map +1 -0
  7. package/bin/dist/automation.d.ts +35 -0
  8. package/bin/dist/automation.d.ts.map +1 -0
  9. package/bin/dist/automation.js +259 -0
  10. package/bin/dist/automation.js.map +1 -0
  11. package/bin/dist/chat-server.d.ts +8 -0
  12. package/bin/dist/chat-server.d.ts.map +1 -0
  13. package/bin/dist/chat-server.js +322 -0
  14. package/bin/dist/chat-server.js.map +1 -0
  15. package/bin/dist/check.d.ts +16 -0
  16. package/bin/dist/check.d.ts.map +1 -0
  17. package/bin/dist/check.js +247 -0
  18. package/bin/dist/check.js.map +1 -0
  19. package/bin/dist/dory.js +252 -402
  20. package/bin/dist/dory.js.map +1 -1
  21. package/bin/dist/i18n-init.d.ts +6 -0
  22. package/bin/dist/i18n-init.d.ts.map +1 -0
  23. package/bin/dist/i18n-init.js +56 -0
  24. package/bin/dist/i18n-init.js.map +1 -0
  25. package/bin/dist/mcp-http.d.ts +8 -0
  26. package/bin/dist/mcp-http.d.ts.map +1 -0
  27. package/bin/dist/mcp-http.js +72 -0
  28. package/bin/dist/mcp-http.js.map +1 -0
  29. package/bin/dist/mcp.d.ts +2 -0
  30. package/bin/dist/mcp.d.ts.map +1 -0
  31. package/bin/dist/mcp.js +81 -0
  32. package/bin/dist/mcp.js.map +1 -0
  33. package/bin/dist/preview-entry.d.ts +2 -0
  34. package/bin/dist/preview-entry.d.ts.map +1 -0
  35. package/bin/dist/preview-entry.js +6 -0
  36. package/bin/dist/preview-entry.js.map +1 -0
  37. package/bin/dist/preview-server.d.ts +5 -0
  38. package/bin/dist/preview-server.d.ts.map +1 -0
  39. package/bin/dist/preview-server.js +159 -0
  40. package/bin/dist/preview-server.js.map +1 -0
  41. package/bin/dist/project-config.d.ts +22 -0
  42. package/bin/dist/project-config.d.ts.map +1 -0
  43. package/bin/dist/project-config.js +44 -0
  44. package/bin/dist/project-config.js.map +1 -0
  45. package/dist/index.html +57 -0
  46. package/dist/runtime/dory-runtime.css +2 -0
  47. package/dist/runtime/dory-runtime.html +14 -0
  48. package/dist/runtime/dory-runtime.js +5490 -0
  49. package/docs/api-playground-demo.mdx +119 -0
  50. package/docs/api-reference/asyncapi.json +324 -0
  51. package/docs/api-reference/openapi.json +366 -0
  52. package/docs/api-reference/operations/create.mdx +5 -0
  53. package/docs/api-reference/operations/delete.mdx +5 -0
  54. package/docs/api-reference/operations/get.mdx +5 -0
  55. package/docs/api-reference/operations/update.mdx +5 -0
  56. package/docs/api-reference/websocket-operations/receive-chat-message.mdx +5 -0
  57. package/docs/api-reference/websocket-operations/receive-notifications.mdx +5 -0
  58. package/docs/api-reference/websocket-operations/receive-presence-update.mdx +5 -0
  59. package/docs/api-reference/websocket-operations/send-chat-message.mdx +5 -0
  60. package/docs/api-reference/websocket-operations/send-presence-update.mdx +5 -0
  61. package/docs/assets/dory.jpeg +0 -0
  62. package/docs/components/accordion.mdx +145 -0
  63. package/docs/components/callouts.mdx +134 -0
  64. package/docs/components/cards.mdx +153 -0
  65. package/docs/components/code-blocks.mdx +281 -0
  66. package/docs/components/expandable.mdx +189 -0
  67. package/docs/components/icons.mdx +71 -0
  68. package/docs/components/images.mdx +82 -0
  69. package/docs/components/latex.mdx +148 -0
  70. package/docs/components/layout.mdx +175 -0
  71. package/docs/components/lists.mdx +134 -0
  72. package/docs/components/mermaid.mdx +149 -0
  73. package/docs/components/overview.mdx +81 -0
  74. package/docs/components/source.mdx +130 -0
  75. package/docs/components/steps.mdx +122 -0
  76. package/docs/components/tables.mdx +114 -0
  77. package/docs/components/tags.mdx +179 -0
  78. package/docs/components/typography.mdx +185 -0
  79. package/docs/configuration/analytics.mdx +45 -0
  80. package/docs/configuration/chat.mdx +59 -0
  81. package/docs/configuration/dory-json.mdx +278 -0
  82. package/docs/configuration/embed.mdx +73 -0
  83. package/docs/configuration/fonts.mdx +86 -0
  84. package/docs/configuration/internationalization.mdx +61 -0
  85. package/docs/configuration/navigation.mdx +217 -0
  86. package/docs/configuration/theming.mdx +166 -0
  87. package/docs/dory.json +129 -0
  88. package/docs/embed-example.html +176 -0
  89. package/docs/favicon.svg +18 -0
  90. package/docs/features.mdx +440 -0
  91. package/docs/getting-started/automation.mdx +76 -0
  92. package/docs/getting-started/configuration.mdx +95 -0
  93. package/docs/getting-started/installation.mdx +88 -0
  94. package/docs/getting-started/quick-start.mdx +53 -0
  95. package/docs/getting-started/whodb-ee-apps.mdx +122 -0
  96. package/docs/introduction.mdx +50 -0
  97. package/docs/logo/logo.svg +18 -0
  98. package/docs/playgrounds/api-playground.mdx +122 -0
  99. package/docs/playgrounds/websocket-playground.mdx +98 -0
  100. package/docs/social-card.png +0 -0
  101. package/docs/social-card.svg +17 -0
  102. package/docs/websocket-playground-demo.mdx +135 -0
  103. package/package.json +23 -17
  104. package/scripts/verify-runtime-parity.mjs +146 -0
  105. package/src/app.css +19 -1
  106. package/src/assets/fonts/HankenGrotesk.ttf +0 -0
  107. package/src/assets/fonts/OFL.txt +94 -0
  108. package/src/components/chat-assistant.tsx +229 -0
  109. package/src/components/dropdown.tsx +3 -3
  110. package/src/components/error-boundary.tsx +2 -2
  111. package/src/components/hooks.tsx +20 -1
  112. package/src/components/navigation.tsx +82 -51
  113. package/src/components/notification.tsx +2 -3
  114. package/src/components/routes.tsx +17 -19
  115. package/src/components/search-index.test.ts +15 -0
  116. package/src/components/search-index.ts +49 -48
  117. package/src/components/search.tsx +208 -104
  118. package/src/components/store.ts +27 -9
  119. package/src/config/mdx-common.ts +11 -0
  120. package/src/config/mdx.ts +10 -11
  121. package/src/embed/loader.ts +0 -3
  122. package/src/embed/types.ts +0 -2
  123. package/src/embed/widget-iframe.ts +19 -21
  124. package/src/embedded-runtime/config.ts +138 -0
  125. package/src/embedded-runtime/index.tsx +680 -0
  126. package/src/embedded-runtime/runtime.html +14 -0
  127. package/src/entry-server.tsx +46 -124
  128. package/src/main.tsx +16 -4
  129. package/src/mdx/accordion.tsx +3 -3
  130. package/src/mdx/api-playground.tsx +18 -16
  131. package/src/mdx/async-api.tsx +2 -2
  132. package/src/mdx/card.tsx +3 -2
  133. package/src/mdx/code.tsx +11 -9
  134. package/src/mdx/fence.tsx +6 -5
  135. package/src/mdx/icon-grid.tsx +4 -1
  136. package/src/mdx/icon-names.test.ts +15 -0
  137. package/src/mdx/icon-names.ts +60 -0
  138. package/src/mdx/icon-source-variants.ts +102 -0
  139. package/src/mdx/icon.tsx +12 -73
  140. package/src/mdx/latex.tsx +3 -2
  141. package/src/mdx/mdx.tsx +1 -1
  142. package/src/mdx/mermaid.tsx +12 -6
  143. package/src/mdx/open-api.tsx +130 -74
  144. package/src/mdx/preprocess.test.ts +16 -0
  145. package/src/mdx/preprocess.ts +61 -0
  146. package/src/mdx/processor.ts +4 -96
  147. package/src/mdx/source.tsx +5 -4
  148. package/src/mdx/specimen.tsx +38 -6
  149. package/src/mdx/tabs.tsx +29 -21
  150. package/src/mdx/text.tsx +9 -9
  151. package/src/mdx/try-it-panel.tsx +284 -0
  152. package/src/mdx/type-scale.tsx +4 -4
  153. package/src/mdx/websocket-playground.tsx +21 -14
  154. package/src/plugins/analytics-injector.ts +8 -0
  155. package/src/plugins/chat-dev-server.ts +32 -0
  156. package/src/plugins/docs-assets.test.ts +25 -0
  157. package/src/plugins/docs-assets.ts +6 -2
  158. package/src/plugins/frontmatter-dev-server.ts +2 -2
  159. package/src/plugins/frontmatter-generator.ts +1 -1
  160. package/src/plugins/html-files-middleware.test.ts +21 -1
  161. package/src/plugins/html-files-middleware.ts +26 -6
  162. package/src/plugins/html-metadata-injector.ts +24 -4
  163. package/src/plugins/llm-txt-dev-server.ts +2 -2
  164. package/src/plugins/llm-txt-generator.ts +21 -4
  165. package/src/plugins/prerender.ts +47 -20
  166. package/src/plugins/robots-generator.ts +1 -1
  167. package/src/plugins/sanitize.ts +1 -1
  168. package/src/plugins/shared.ts +6 -18
  169. package/src/plugins/sitemap-generator.ts +1 -1
  170. package/src/plugins/social-preview.test.ts +71 -0
  171. package/src/plugins/social-preview.ts +87 -0
  172. package/src/plugins/unified-mdx-plugin.ts +1 -1
  173. package/src/theme.scss +630 -207
  174. package/src/types/config.ts +53 -1
  175. package/src/ui/breadcrumb.tsx +17 -0
  176. package/src/ui/docs-header-view.tsx +32 -0
  177. package/src/ui/docs-navigation-view.tsx +69 -0
  178. package/src/ui/docs-page-frame.tsx +50 -0
  179. package/src/ui/dory-mark.tsx +9 -0
  180. package/src/ui/header.tsx +33 -90
  181. package/src/ui/layout.tsx +99 -153
  182. package/src/ui/mobile-navigation.tsx +10 -8
  183. package/src/ui/page-actions.tsx +67 -0
  184. package/src/ui/page-feedback.tsx +50 -0
  185. package/src/ui/page-footer.tsx +23 -0
  186. package/src/ui/prev-next-link.tsx +15 -69
  187. package/src/ui/prev-next-view.tsx +27 -0
  188. package/src/ui/table-of-content-view.tsx +167 -0
  189. package/src/ui/table-of-content.tsx +25 -183
  190. package/src/utils/analytics.test.ts +36 -0
  191. package/src/utils/analytics.ts +35 -0
  192. package/src/utils/colors.ts +7 -0
  193. package/src/utils/content-scope.test.ts +26 -0
  194. package/src/utils/content-scope.ts +39 -0
  195. package/src/utils/search-content.ts +12 -0
  196. package/src/utils/theme.ts +1 -7
  197. package/vite.config.ssr.ts +3 -3
  198. 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
+ &lt;script src="http://localhost:3000/dist/embed.js"&gt;&lt;/script&gt;
129
+
130
+ &lt;script&gt;
131
+ DoryDocs.init({
132
+ baseUrl: 'http://localhost:3000',
133
+ position: 'right',
134
+ width: 600,
135
+ closeOnEscape: true,
136
+ });
137
+ &lt;/script&gt;
138
+
139
+ &lt;button onclick="DoryDocs.open()"&gt;Help&lt;/button&gt;
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>
@@ -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>