@clidey/dory 0.24.0 โ†’ 0.29.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 (34) hide show
  1. package/bin/dist/dory.js +41 -3
  2. package/bin/dist/dory.js.map +1 -1
  3. package/bin/dory.ts +44 -3
  4. package/dist/index.html +8 -8
  5. package/package.json +1 -1
  6. package/src/components/search.tsx +5 -5
  7. package/src/components/store.ts +1 -1
  8. package/src/mdx/card.tsx +7 -7
  9. package/src/mdx/step.tsx +6 -4
  10. package/src/plugins/docs-assets.ts +79 -0
  11. package/src/plugins/html-metadata-injector.ts +76 -0
  12. package/src/theme.scss +5 -1
  13. package/src/ui/header.tsx +1 -1
  14. package/src/ui/layout.tsx +47 -14
  15. package/src/ui/table-of-content.tsx +1 -1
  16. package/src/utils/colors.ts +1 -1
  17. package/src/utils/fonts.ts +1 -1
  18. package/vite.config.ts +8 -1
  19. package/dist/api-playground-demo.mdx +0 -119
  20. package/dist/api-reference/asyncapi.json +0 -324
  21. package/dist/api-reference/openapi.json +0 -366
  22. package/dist/api-reference/operations/create.mdx +0 -5
  23. package/dist/api-reference/operations/delete.mdx +0 -5
  24. package/dist/api-reference/operations/get.mdx +0 -5
  25. package/dist/api-reference/operations/update.mdx +0 -5
  26. package/dist/api-reference/websocket-operations/receive-chat-message.mdx +0 -5
  27. package/dist/api-reference/websocket-operations/receive-notifications.mdx +0 -5
  28. package/dist/api-reference/websocket-operations/receive-presence-update.mdx +0 -5
  29. package/dist/api-reference/websocket-operations/send-chat-message.mdx +0 -5
  30. package/dist/api-reference/websocket-operations/send-presence-update.mdx +0 -5
  31. package/dist/dory.json +0 -64
  32. package/dist/features.mdx +0 -440
  33. package/dist/introduction.mdx +0 -44
  34. package/dist/websocket-playground-demo.mdx +0 -135
package/bin/dist/dory.js CHANGED
@@ -29,6 +29,7 @@ const commands = {
29
29
  const doryRoot = getDoryRoot();
30
30
  const doryConfigPath = resolve(userRoot, 'dory.json');
31
31
  const tempDocsDir = resolve(doryRoot, 'docs');
32
+ const docsBackupDir = resolve(doryRoot, '.docs-backup');
32
33
  const doryDistDir = resolve(doryRoot, 'dist');
33
34
  const userDistDir = resolve(userRoot, 'dist');
34
35
  // Step 1: Validate prerequisites before making any changes
@@ -63,9 +64,15 @@ const commands = {
63
64
  console.error(' Install it with: npm install -g pnpm');
64
65
  process.exit(1);
65
66
  }
66
- // Step 2: Clean up temp directories
67
+ // Step 2: Backup existing docs directory if it exists
67
68
  console.log('๐Ÿงน Preparing workspace...');
68
- if (existsSync(tempDocsDir)) {
69
+ const docsExistedBefore = existsSync(tempDocsDir);
70
+ if (docsExistedBefore) {
71
+ console.log('๐Ÿ’พ Backing up existing docs directory...');
72
+ if (existsSync(docsBackupDir)) {
73
+ rmSync(docsBackupDir, { recursive: true, force: true });
74
+ }
75
+ cpSync(tempDocsDir, docsBackupDir, { recursive: true, force: true });
69
76
  rmSync(tempDocsDir, { recursive: true, force: true });
70
77
  }
71
78
  try {
@@ -103,6 +110,14 @@ const commands = {
103
110
  }
104
111
  }
105
112
  console.log(`โœ… Copied ${copiedCount} items`);
113
+ // Verify critical files exist
114
+ const doryJsonPath = resolve(tempDocsDir, 'dory.json');
115
+ if (!existsSync(doryJsonPath)) {
116
+ console.error('โŒ dory.json was not copied to docs directory');
117
+ console.error(` Expected: ${doryJsonPath}`);
118
+ console.error(' This file is required for the build');
119
+ process.exit(1);
120
+ }
106
121
  // Step 4: Run the build
107
122
  console.log('โšก Building documentation...');
108
123
  try {
@@ -149,12 +164,19 @@ const commands = {
149
164
  console.log('โœจ Documentation ready in dist/');
150
165
  }
151
166
  finally {
152
- // Step 7: Always clean up temp directories
167
+ // Step 7: Always clean up temp directories and restore backup
153
168
  console.log('๐Ÿงน Cleaning up...');
154
169
  try {
170
+ // Remove the temporary docs directory
155
171
  if (existsSync(tempDocsDir)) {
156
172
  rmSync(tempDocsDir, { recursive: true, force: true });
157
173
  }
174
+ // Restore the original docs directory if it existed before
175
+ if (docsExistedBefore && existsSync(docsBackupDir)) {
176
+ console.log('๐Ÿ“ฆ Restoring original docs directory...');
177
+ cpSync(docsBackupDir, tempDocsDir, { recursive: true, force: true });
178
+ rmSync(docsBackupDir, { recursive: true, force: true });
179
+ }
158
180
  // Only clean up doryDistDir if it's different from userDistDir
159
181
  // (in production they're different, in dev they might be the same)
160
182
  if (doryDistDir !== userDistDir && existsSync(doryDistDir)) {
@@ -163,6 +185,22 @@ const commands = {
163
185
  }
164
186
  catch (error) {
165
187
  console.warn('โš ๏ธ Could not clean up temp directories');
188
+ // Try to restore backup even if cleanup failed
189
+ if (docsExistedBefore && existsSync(docsBackupDir)) {
190
+ console.log('๐Ÿ”„ Attempting to restore backup...');
191
+ try {
192
+ if (existsSync(tempDocsDir)) {
193
+ rmSync(tempDocsDir, { recursive: true, force: true });
194
+ }
195
+ cpSync(docsBackupDir, tempDocsDir, { recursive: true, force: true });
196
+ rmSync(docsBackupDir, { recursive: true, force: true });
197
+ }
198
+ catch (restoreError) {
199
+ console.error('โŒ Failed to restore docs backup!');
200
+ console.error(` Backup location: ${docsBackupDir}`);
201
+ console.error(' You may need to manually restore your docs directory');
202
+ }
203
+ }
166
204
  }
167
205
  console.log('โœ… Done!');
168
206
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dory.js","sourceRoot":"","sources":["../dory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dory.js","sourceRoot":"","sources":["../dory.ts"],"names":[],"mappings":"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"}
package/bin/dory.ts CHANGED
@@ -43,6 +43,7 @@ const commands = {
43
43
  const doryRoot = getDoryRoot();
44
44
  const doryConfigPath = resolve(userRoot, 'dory.json');
45
45
  const tempDocsDir = resolve(doryRoot, 'docs');
46
+ const docsBackupDir = resolve(doryRoot, '.docs-backup');
46
47
  const doryDistDir = resolve(doryRoot, 'dist');
47
48
  const userDistDir = resolve(userRoot, 'dist');
48
49
 
@@ -80,9 +81,16 @@ const commands = {
80
81
  process.exit(1);
81
82
  }
82
83
 
83
- // Step 2: Clean up temp directories
84
+ // Step 2: Backup existing docs directory if it exists
84
85
  console.log('๐Ÿงน Preparing workspace...');
85
- if (existsSync(tempDocsDir)) {
86
+ const docsExistedBefore = existsSync(tempDocsDir);
87
+
88
+ if (docsExistedBefore) {
89
+ console.log('๐Ÿ’พ Backing up existing docs directory...');
90
+ if (existsSync(docsBackupDir)) {
91
+ rmSync(docsBackupDir, { recursive: true, force: true });
92
+ }
93
+ cpSync(tempDocsDir, docsBackupDir, { recursive: true, force: true });
86
94
  rmSync(tempDocsDir, { recursive: true, force: true });
87
95
  }
88
96
 
@@ -128,6 +136,15 @@ const commands = {
128
136
 
129
137
  console.log(`โœ… Copied ${copiedCount} items`);
130
138
 
139
+ // Verify critical files exist
140
+ const doryJsonPath = resolve(tempDocsDir, 'dory.json');
141
+ if (!existsSync(doryJsonPath)) {
142
+ console.error('โŒ dory.json was not copied to docs directory');
143
+ console.error(` Expected: ${doryJsonPath}`);
144
+ console.error(' This file is required for the build');
145
+ process.exit(1);
146
+ }
147
+
131
148
  // Step 4: Run the build
132
149
  console.log('โšก Building documentation...');
133
150
 
@@ -182,13 +199,22 @@ const commands = {
182
199
  console.log('โœจ Documentation ready in dist/');
183
200
 
184
201
  } finally {
185
- // Step 7: Always clean up temp directories
202
+ // Step 7: Always clean up temp directories and restore backup
186
203
  console.log('๐Ÿงน Cleaning up...');
187
204
 
188
205
  try {
206
+ // Remove the temporary docs directory
189
207
  if (existsSync(tempDocsDir)) {
190
208
  rmSync(tempDocsDir, { recursive: true, force: true });
191
209
  }
210
+
211
+ // Restore the original docs directory if it existed before
212
+ if (docsExistedBefore && existsSync(docsBackupDir)) {
213
+ console.log('๐Ÿ“ฆ Restoring original docs directory...');
214
+ cpSync(docsBackupDir, tempDocsDir, { recursive: true, force: true });
215
+ rmSync(docsBackupDir, { recursive: true, force: true });
216
+ }
217
+
192
218
  // Only clean up doryDistDir if it's different from userDistDir
193
219
  // (in production they're different, in dev they might be the same)
194
220
  if (doryDistDir !== userDistDir && existsSync(doryDistDir)) {
@@ -196,6 +222,21 @@ const commands = {
196
222
  }
197
223
  } catch (error) {
198
224
  console.warn('โš ๏ธ Could not clean up temp directories');
225
+ // Try to restore backup even if cleanup failed
226
+ if (docsExistedBefore && existsSync(docsBackupDir)) {
227
+ console.log('๐Ÿ”„ Attempting to restore backup...');
228
+ try {
229
+ if (existsSync(tempDocsDir)) {
230
+ rmSync(tempDocsDir, { recursive: true, force: true });
231
+ }
232
+ cpSync(docsBackupDir, tempDocsDir, { recursive: true, force: true });
233
+ rmSync(docsBackupDir, { recursive: true, force: true });
234
+ } catch (restoreError) {
235
+ console.error('โŒ Failed to restore docs backup!');
236
+ console.error(` Backup location: ${docsBackupDir}`);
237
+ console.error(' You may need to manually restore your docs directory');
238
+ }
239
+ }
199
240
  }
200
241
 
201
242
  console.log('โœ… Done!');
package/dist/index.html CHANGED
@@ -7,14 +7,14 @@
7
7
  <meta name="theme-color" content="#000000" />
8
8
 
9
9
  <!-- Primary Meta Tags -->
10
- <meta name="description" content="Docucod generates and maintains up-to-date documentation from your codebase so your team can move fast, onboard quickly, and stay focused on building." />
10
+ <meta name="description" content="Docucod - Technical Documentation" />
11
11
  <meta name="keywords" content="documentation, code documentation, auto documentation, developer tools, technical documentation, codebase documentation, llm, ai, anthropic, openai, chatgpt, claude, clidey" />
12
12
  <meta name="author" content="Clidey" />
13
13
  <meta name="language" content="English" />
14
14
 
15
15
  <!-- Open Graph / Facebook -->
16
- <meta property="og:title" content="Docucod: Generate and Maintain Documentation With No Work" />
17
- <meta property="og:description" content="Docucod auto-generates and maintains up-to-date documentation from your codebase so your team can move fast, onboard quickly, and stay focused on building." />
16
+ <meta property="og:title" content="Docucod" />
17
+ <meta property="og:description" content="Docucod - Technical Documentation" />
18
18
  <meta property="og:image" content="/assets/favicon-nLquwUQp.svg" />
19
19
  <meta property="og:url" content="https://docucod.com/" />
20
20
  <meta property="og:type" content="website" />
@@ -23,8 +23,8 @@
23
23
 
24
24
  <!-- Twitter -->
25
25
  <meta name="twitter:card" content="summary_large_image" />
26
- <meta name="twitter:title" content="Docucod: Generate and Maintain Documentation With No Work" />
27
- <meta name="twitter:description" content="Docucod auto-generates and maintains up-to-date documentation from your codebase so your team can move fast, onboard quickly, and stay focused on building." />
26
+ <meta name="twitter:title" content="Docucod" />
27
+ <meta name="twitter:description" content="Docucod - Technical Documentation" />
28
28
  <meta name="twitter:image" content="/assets/favicon-nLquwUQp.svg" />
29
29
  <meta name="twitter:site" content="@ClideyOfficial" />
30
30
  <meta name="twitter:creator" content="@ClideyOfficial" />
@@ -32,7 +32,7 @@
32
32
  <link rel="apple-touch-icon" href="/assets/favicon-nLquwUQp.svg" />
33
33
  <link rel="manifest" href="/manifest.json" />
34
34
 
35
- <title>Docucod - Instantly Generate and Maintain Your Documentation</title>
35
+ <title>Docucod</title>
36
36
 
37
37
  <link rel="preconnect" href="https://fonts.googleapis.com" />
38
38
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
@@ -45,8 +45,8 @@
45
45
  person_profiles: 'identified_only', // or 'always' to create profiles for anonymous users as well
46
46
  })
47
47
  </script>
48
- <script type="module" crossorigin src="/assets/index-CrsN5P5J.js"></script>
49
- <link rel="stylesheet" crossorigin href="/assets/index-DfQ0BTd7.css">
48
+ <script type="module" crossorigin src="/assets/index-B2MKmN57.js"></script>
49
+ <link rel="stylesheet" crossorigin href="/assets/index-Btb13Da-.css">
50
50
  </head>
51
51
  <body>
52
52
  <noscript>You need to enable JavaScript to run this app.</noscript>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@clidey/dory",
3
3
  "private": false,
4
- "version": "0.24.0",
4
+ "version": "0.29.0",
5
5
  "type": "module",
6
6
  "description": "A CLI tool for building and previewing documentation sites",
7
7
  "keywords": [
@@ -93,7 +93,7 @@ function useAutocomplete({ onNavigate }: { onNavigate: () => void }) {
93
93
  function HighlightQuery({ text, query }: { text: string; query: string }) {
94
94
  return (
95
95
  <Highlighter
96
- highlightClassName="underline bg-transparent text-emerald-500"
96
+ highlightClassName="underline bg-transparent text-brand-foreground"
97
97
  searchWords={[query]}
98
98
  autoEscape={true}
99
99
  textToHighlight={text}
@@ -146,7 +146,7 @@ function SearchResult({
146
146
  <div
147
147
  id={`${id}-title`}
148
148
  aria-hidden="true"
149
- className="text-sm font-medium text-zinc-900 group-aria-selected:text-emerald-500 dark:text-white"
149
+ className="text-sm font-medium text-brand-foreground group-aria-selected:text-brand-foreground"
150
150
  >
151
151
  <HighlightQuery text={result.title} query={query} />
152
152
  </div>
@@ -195,9 +195,9 @@ function SearchResults({
195
195
  d="M12.01 12a4.237 4.237 0 0 0 1.24-3c0-.62-.132-1.207-.37-1.738M12.01 12A4.237 4.237 0 0 1 9 13.25c-.635 0-1.237-.14-1.777-.388M12.01 12l3.24 3.25m-3.715-9.661a4.25 4.25 0 0 0-5.975 5.908M4.5 15.5l11-11"
196
196
  />
197
197
  </svg>
198
- <p className="mt-2 text-xs text-zinc-700 dark:text-zinc-400">
198
+ <p className="mt-2 text-xs">
199
199
  Nothing found for{' '}
200
- <strong className="font-semibold break-words text-zinc-900 dark:text-white">
200
+ <strong className="font-semibold break-words">
201
201
  &lsquo;{query}&rsquo;
202
202
  </strong>
203
203
  . Please try again.
@@ -261,7 +261,7 @@ const SearchInput = forwardRef<
261
261
  />
262
262
  {autocompleteState.status === 'stalled' && (
263
263
  <div className="absolute inset-y-0 right-3 flex items-center">
264
- <Spinner className="h-5 w-5 animate-spin stroke-zinc-200 text-zinc-900 dark:stroke-zinc-800 dark:text-emerald-400" />
264
+ <Spinner className="h-5 w-5 animate-spin text-brand-foreground" />
265
265
  </div>
266
266
  )}
267
267
  </div>
@@ -1,6 +1,6 @@
1
1
  import type { ComponentType } from 'preact';
2
2
  import { type RouteComponentProps } from 'wouter-preact';
3
- import docsConfig from '../../docs/dory.json';
3
+ import docsConfig from '../../docs/dory.json' with { type: 'json' };
4
4
  import type { DoryConfig } from '../types/config';
5
5
  import { searchIndex } from './search-index';
6
6
 
package/src/mdx/card.tsx CHANGED
@@ -29,18 +29,18 @@ export function Card({
29
29
  icon,
30
30
  children,
31
31
  }: {
32
- title: string
33
- description: string
34
- href: string
35
- icon: string
32
+ title?: string
33
+ description?: string
34
+ href?: string
35
+ icon?: string
36
36
  children?: ComponentChildren
37
37
  }) {
38
38
  return (
39
- <UXCard className="group relative">
40
- <a href={href} className="absolute inset-0 z-10" aria-label={title} />
39
+ <UXCard className="group relative border-ring border-1 border-black/10 dark:border-white/10">
40
+ {href && <a href={href} className="absolute inset-0 z-10" aria-label={title} />}
41
41
  <CardHeader>
42
42
  <div className="flex items-center gap-3">
43
- <Icon icon={icon} className="h-8 w-8" />
43
+ {icon && <Icon icon={icon} className="h-8 w-8" />}
44
44
  <CardTitle className="text-base">{title}</CardTitle>
45
45
  </div>
46
46
  </CardHeader>
package/src/mdx/step.tsx CHANGED
@@ -40,10 +40,12 @@ export function Steps({ children }: { children: preact.ComponentChildren }) {
40
40
  )
41
41
  }
42
42
 
43
- export function Step({
44
- children
45
- }: {
46
- children: preact.ComponentChildren
43
+ export function Step({
44
+ title: _title,
45
+ children
46
+ }: {
47
+ title?: string;
48
+ children: preact.ComponentChildren
47
49
  }) {
48
50
  return <p className='text-sm'>{children}</p>
49
51
  }
@@ -0,0 +1,79 @@
1
+ import type { Plugin } from 'vite';
2
+ import { cpSync, existsSync, readdirSync, statSync } from 'fs';
3
+ import { resolve, extname } from 'path';
4
+
5
+ /**
6
+ * Plugin to copy docs assets to the build output
7
+ * Since we can't use publicDir for docs (we need to import from it),
8
+ * this plugin manually copies asset files during build
9
+ */
10
+ export function docsAssetsPlugin(): Plugin {
11
+ return {
12
+ name: 'docs-assets',
13
+ apply: 'build', // Only run during build
14
+ closeBundle() {
15
+ const docsDir = resolve(process.cwd(), 'docs');
16
+ const outDir = resolve(process.cwd(), 'dist');
17
+
18
+ if (!existsSync(docsDir)) {
19
+ console.warn('[docs-assets] docs directory not found, skipping asset copy');
20
+ return;
21
+ }
22
+
23
+ // Define asset extensions to copy
24
+ const assetExtensions = new Set([
25
+ '.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp', '.ico',
26
+ '.pdf', '.mp4', '.webm', '.mp3', '.wav',
27
+ '.woff', '.woff2', '.ttf', '.eot',
28
+ ]);
29
+
30
+ // Define file/folder patterns to skip
31
+ const skipPatterns = new Set([
32
+ 'dory.json',
33
+ 'node_modules',
34
+ '.DS_Store',
35
+ ]);
36
+
37
+ const shouldSkip = (name: string) => {
38
+ if (skipPatterns.has(name)) return true;
39
+ const ext = extname(name).toLowerCase();
40
+ // Skip MDX and JSON files (they're processed by Vite)
41
+ if (ext === '.mdx' || ext === '.md' || ext === '.json') return true;
42
+ return false;
43
+ };
44
+
45
+ const copyAssets = (srcDir: string, destDir: string, relativePath: string = '') => {
46
+ const items = readdirSync(srcDir);
47
+
48
+ for (const item of items) {
49
+ if (shouldSkip(item)) continue;
50
+
51
+ const srcPath = resolve(srcDir, item);
52
+ const destPath = resolve(destDir, item);
53
+ const itemRelativePath = relativePath ? `${relativePath}/${item}` : item;
54
+
55
+ try {
56
+ const stats = statSync(srcPath);
57
+
58
+ if (stats.isDirectory()) {
59
+ // Recursively copy directories
60
+ copyAssets(srcPath, destPath, itemRelativePath);
61
+ } else if (stats.isFile()) {
62
+ const ext = extname(item).toLowerCase();
63
+ // Copy if it's an asset file
64
+ if (assetExtensions.has(ext)) {
65
+ cpSync(srcPath, destPath, { force: true });
66
+ console.log(`[docs-assets] Copied ${itemRelativePath}`);
67
+ }
68
+ }
69
+ } catch (error) {
70
+ console.warn(`[docs-assets] Failed to copy ${itemRelativePath}:`, error);
71
+ }
72
+ }
73
+ };
74
+
75
+ console.log('[docs-assets] Copying assets from docs to dist...');
76
+ copyAssets(docsDir, outDir);
77
+ },
78
+ };
79
+ }
@@ -0,0 +1,76 @@
1
+ import type { Plugin } from 'vite';
2
+ import { readFileSync, existsSync } from 'fs';
3
+ import { resolve } from 'path';
4
+
5
+ /**
6
+ * Vite plugin that injects site metadata from dory.json into index.html
7
+ * This provides proper defaults before JavaScript hydrates the page
8
+ */
9
+ export function htmlMetadataInjector(): Plugin {
10
+ return {
11
+ name: 'html-metadata-injector',
12
+ transformIndexHtml(html) {
13
+ // Read dory.json configuration
14
+ const doryJsonPath = resolve(process.cwd(), 'docs', 'dory.json');
15
+
16
+ if (!existsSync(doryJsonPath)) {
17
+ console.warn('โš ๏ธ dory.json not found, using default metadata');
18
+ return html;
19
+ }
20
+
21
+ try {
22
+ const config = JSON.parse(readFileSync(doryJsonPath, 'utf-8'));
23
+ const siteName = config.name || 'Documentation';
24
+ const defaultTitle = config.title || siteName;
25
+ const defaultDescription = config.description || `${siteName} - Technical Documentation`;
26
+
27
+ // Replace title
28
+ html = html.replace(
29
+ /<title>.*?<\/title>/,
30
+ `<title>${defaultTitle}</title>`
31
+ );
32
+
33
+ // Replace meta description
34
+ html = html.replace(
35
+ /<meta name="description" content=".*?" \/>/,
36
+ `<meta name="description" content="${defaultDescription}" />`
37
+ );
38
+
39
+ // Replace Open Graph title
40
+ html = html.replace(
41
+ /<meta property="og:title" content=".*?" \/>/,
42
+ `<meta property="og:title" content="${defaultTitle}" />`
43
+ );
44
+
45
+ // Replace Open Graph description
46
+ html = html.replace(
47
+ /<meta property="og:description" content=".*?" \/>/,
48
+ `<meta property="og:description" content="${defaultDescription}" />`
49
+ );
50
+
51
+ // Replace Open Graph site name
52
+ html = html.replace(
53
+ /<meta property="og:site_name" content=".*?" \/>/,
54
+ `<meta property="og:site_name" content="${siteName}" />`
55
+ );
56
+
57
+ // Replace Twitter title
58
+ html = html.replace(
59
+ /<meta name="twitter:title" content=".*?" \/>/,
60
+ `<meta name="twitter:title" content="${defaultTitle}" />`
61
+ );
62
+
63
+ // Replace Twitter description
64
+ html = html.replace(
65
+ /<meta name="twitter:description" content=".*?" \/>/,
66
+ `<meta name="twitter:description" content="${defaultDescription}" />`
67
+ );
68
+
69
+ return html;
70
+ } catch (error) {
71
+ console.error('โŒ Failed to parse dory.json for metadata injection:', error);
72
+ return html;
73
+ }
74
+ },
75
+ };
76
+ }
package/src/theme.scss CHANGED
@@ -21,6 +21,8 @@
21
21
  // Using light color for light mode
22
22
  --primary: var(--brand-light);
23
23
  --primary-rgb: var(--brand-light-rgb);
24
+
25
+ --ring: rgba(0, 0, 0, 0.1);
24
26
  }
25
27
 
26
28
  // Dark mode overrides
@@ -28,6 +30,8 @@
28
30
  // Use dark color for dark mode
29
31
  --primary: var(--brand-dark);
30
32
  --primary-rgb: var(--brand-dark-rgb);
33
+
34
+ --ring: rgba(255, 255, 255, 0.1);
31
35
  }
32
36
 
33
37
  article h2:first-of-type {
@@ -45,7 +49,7 @@ article img {
45
49
 
46
50
  [data-testid="header-actions"] button,
47
51
  [data-slot="dropdown-menu-content"] {
48
- border-color: rgba(0, 0, 0, 0.1);
52
+ border-color: var(--ring);
49
53
  }
50
54
 
51
55
  [data-slot="search-input-wrapper"] {
package/src/ui/header.tsx CHANGED
@@ -2,7 +2,7 @@ import classNames from 'classnames';
2
2
  import { useEffect, useMemo, useState } from 'preact/hooks';
3
3
  import { Link } from 'wouter-preact';
4
4
  import { usePathname } from 'wouter-preact/use-browser-location';
5
- import docsConfig from '../../docs/dory.json';
5
+ import docsConfig from '../../docs/dory.json' with { type: 'json' };
6
6
  import type { DoryConfig } from '../types/config';
7
7
  import { MobileSearch, Search } from '../components/search';
8
8
  import { ALL_NAVIGATION } from '../components/store';
package/src/ui/layout.tsx CHANGED
@@ -83,28 +83,61 @@ export default function Layout({ children }: LayoutProps) {
83
83
  });
84
84
  }, [pathname]);
85
85
 
86
- const { title: group, group: title } = useMemo(() => {
87
- const group = ALL_NAVIGATION.flatMap((tab) =>
88
- tab.groups.find((group) =>
86
+ const { title: group, group: title, page } = useMemo(() => {
87
+ const group = ALL_NAVIGATION.flatMap((tab) =>
88
+ tab.groups.find((group) =>
89
89
  group.pages.some((page) => page.href === pathname)
90
90
  )
91
91
  );
92
92
  const page = completeFrontMatter.find((page) => page.path === pathname);
93
93
 
94
- useEffect(() => {
95
- if (page?.title) {
96
- document.title = page.title;
94
+ return { group: group[0]?.title, title: page?.title, page };
95
+ }, [pathname, loading]);
96
+
97
+ // Update document title and meta tags when page changes
98
+ useEffect(() => {
99
+ if (page?.title) {
100
+ document.title = page.title;
101
+
102
+ // Update Open Graph title
103
+ const ogTitle = document.querySelector('meta[property="og:title"]');
104
+ if (ogTitle) {
105
+ ogTitle.setAttribute('content', page.title);
97
106
  }
98
- if (page?.description) {
99
- const metaDescription = document.querySelector('meta[name="description"]');
100
- if (metaDescription) {
101
- metaDescription.setAttribute('content', page.description);
102
- }
107
+
108
+ // Update Twitter title
109
+ const twitterTitle = document.querySelector('meta[name="twitter:title"]');
110
+ if (twitterTitle) {
111
+ twitterTitle.setAttribute('content', page.title);
103
112
  }
104
- }, [page]);
113
+ }
105
114
 
106
- return { group: group[0]?.title, title: page?.title, };
107
- }, [pathname, loading]);
115
+ if (page?.description) {
116
+ // Update standard meta description
117
+ const metaDescription = document.querySelector('meta[name="description"]');
118
+ if (metaDescription) {
119
+ metaDescription.setAttribute('content', page.description);
120
+ }
121
+
122
+ // Update Open Graph description
123
+ const ogDescription = document.querySelector('meta[property="og:description"]');
124
+ if (ogDescription) {
125
+ ogDescription.setAttribute('content', page.description);
126
+ }
127
+
128
+ // Update Twitter description
129
+ const twitterDescription = document.querySelector('meta[name="twitter:description"]');
130
+ if (twitterDescription) {
131
+ twitterDescription.setAttribute('content', page.description);
132
+ }
133
+ }
134
+
135
+ // Update canonical URL
136
+ const ogUrl = document.querySelector('meta[property="og:url"]');
137
+ if (ogUrl) {
138
+ ogUrl.setAttribute('content', window.location.href);
139
+ }
140
+ }, [page]);
108
141
 
109
142
  const tab = useMemo(() => {
110
143
  return completeFrontMatter.find((page) => page.path === pathname);