@clidey/dory 0.30.0 → 0.33.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 (70) hide show
  1. package/bin/dist/dory.js +44 -20
  2. package/bin/dist/dory.js.map +1 -1
  3. package/index.html +54 -0
  4. package/package.json +9 -4
  5. package/src/app.css +5 -0
  6. package/src/app.tsx +13 -0
  7. package/src/components/dropdown.tsx +53 -0
  8. package/src/components/hooks.tsx +36 -0
  9. package/src/components/loading.tsx +21 -0
  10. package/src/components/mdx-provider.tsx +13 -0
  11. package/src/components/navigation.tsx +58 -0
  12. package/src/components/notification.tsx +13 -0
  13. package/src/components/routes.tsx +92 -0
  14. package/src/components/search-index.ts +43 -0
  15. package/src/components/search.tsx +448 -0
  16. package/src/components/store.ts +216 -0
  17. package/src/config/mdx.js +12 -0
  18. package/src/config/mdx.ts +12 -0
  19. package/src/embed/loader.ts +200 -0
  20. package/src/embed/types.ts +54 -0
  21. package/src/embed/widget-iframe.ts +302 -0
  22. package/src/main.tsx +22 -0
  23. package/src/mdx/accordion.tsx +41 -0
  24. package/src/mdx/api-playground.tsx +659 -0
  25. package/src/mdx/api.tsx +354 -0
  26. package/src/mdx/async-api.tsx +353 -0
  27. package/src/mdx/callout.tsx +64 -0
  28. package/src/mdx/card.tsx +54 -0
  29. package/src/mdx/code.tsx +289 -0
  30. package/src/mdx/expandable.tsx +36 -0
  31. package/src/mdx/fence.tsx +74 -0
  32. package/src/mdx/icon.tsx +73 -0
  33. package/src/mdx/latex.tsx +26 -0
  34. package/src/mdx/list.tsx +7 -0
  35. package/src/mdx/mdx.tsx +47 -0
  36. package/src/mdx/mermaid.tsx +147 -0
  37. package/src/mdx/open-api.tsx +311 -0
  38. package/src/mdx/processor.ts +174 -0
  39. package/src/mdx/source.tsx +58 -0
  40. package/src/mdx/step.tsx +51 -0
  41. package/src/mdx/table.tsx +20 -0
  42. package/src/mdx/tag.tsx +53 -0
  43. package/src/mdx/text.tsx +99 -0
  44. package/src/mdx/websocket-playground.tsx +824 -0
  45. package/src/plugins/docs-assets.ts +79 -0
  46. package/src/plugins/frontmatter-dev-server.ts +158 -0
  47. package/src/plugins/frontmatter-generator.ts +157 -0
  48. package/src/plugins/html-files-middleware.ts +108 -0
  49. package/src/plugins/html-metadata-injector.ts +76 -0
  50. package/src/plugins/llm-txt-dev-server.ts +183 -0
  51. package/src/plugins/llm-txt-generator.ts +186 -0
  52. package/src/plugins/sanitize.ts +163 -0
  53. package/src/plugins/unified-mdx-plugin.ts +35 -0
  54. package/src/sdk/index.ts +89 -0
  55. package/src/sdk/react.tsx +139 -0
  56. package/src/sdk/vue.ts +107 -0
  57. package/src/theme.scss +72 -0
  58. package/src/types/config.ts +89 -0
  59. package/src/ui/header.tsx +96 -0
  60. package/src/ui/layout.tsx +237 -0
  61. package/src/ui/mobile-navigation.tsx +72 -0
  62. package/src/ui/prev-next-link.tsx +74 -0
  63. package/src/ui/table-of-content.tsx +167 -0
  64. package/src/utils/colors.ts +54 -0
  65. package/src/utils/fonts.ts +23 -0
  66. package/src/utils/functions.ts +12 -0
  67. package/src/vite-env.d.ts +1 -0
  68. package/vite.config.embed-loader.ts +28 -0
  69. package/vite.config.embed-widget.ts +31 -0
  70. package/vite.config.ts +45 -0
package/bin/dist/dory.js CHANGED
@@ -27,6 +27,26 @@ const getDoryRoot = () => {
27
27
  };
28
28
  // Get the user's current working directory
29
29
  const getUserRoot = () => process.cwd();
30
+ // Detect which package manager is available (prefer pnpm for speed, fallback to npm)
31
+ const getPackageManager = () => {
32
+ try {
33
+ execSync('pnpm --version', { stdio: 'ignore' });
34
+ return { run: 'pnpm run', exec: 'pnpm exec' };
35
+ }
36
+ catch {
37
+ try {
38
+ execSync('npm --version', { stdio: 'ignore' });
39
+ return { run: 'npm run', exec: 'npx' };
40
+ }
41
+ catch {
42
+ console.error('❌ No package manager found');
43
+ console.error(' Install npm or pnpm to use Dory');
44
+ console.error(' npm: https://nodejs.org/');
45
+ console.error(' pnpm: npm install -g pnpm');
46
+ process.exit(1);
47
+ }
48
+ }
49
+ };
30
50
  const validateDoryConfig = (config) => {
31
51
  if (!config || typeof config !== 'object') {
32
52
  throw new Error('Configuration must be a valid object');
@@ -66,15 +86,8 @@ const commands = {
66
86
  }
67
87
  process.exit(1);
68
88
  }
69
- // Check if pnpm is available
70
- try {
71
- execSync('pnpm --version', { stdio: 'ignore' });
72
- }
73
- catch {
74
- console.error('❌ pnpm is not installed');
75
- console.error(' Install it with: npm install -g pnpm');
76
- process.exit(1);
77
- }
89
+ // Detect package manager
90
+ const pm = getPackageManager();
78
91
  // Step 2: Backup existing docs directory if it exists
79
92
  console.log('🧹 Preparing workspace...');
80
93
  const docsExistedBefore = existsSync(tempDocsDir);
@@ -132,7 +145,7 @@ const commands = {
132
145
  // Step 4: Run the build
133
146
  console.log('⚡ Building documentation...');
134
147
  try {
135
- execSync('pnpm run build', {
148
+ execSync(`${pm.run} build:docs`, {
136
149
  stdio: 'inherit',
137
150
  cwd: doryRoot,
138
151
  env: { ...process.env }
@@ -178,28 +191,21 @@ const commands = {
178
191
  try {
179
192
  // Build embed loader
180
193
  console.log(' Building embed loader...');
181
- execSync('pnpm exec vite build -c vite.config.embed-loader.ts', {
194
+ execSync(`${pm.exec} vite build -c vite.config.embed-loader.ts`, {
182
195
  stdio: 'inherit',
183
196
  cwd: doryRoot,
184
197
  env: { ...process.env }
185
198
  });
186
199
  // Build embed widget
187
200
  console.log(' Building embed widget...');
188
- execSync('pnpm exec vite build -c vite.config.embed-widget.ts', {
189
- stdio: 'inherit',
190
- cwd: doryRoot,
191
- env: { ...process.env }
192
- });
193
- // Build embed app
194
- console.log(' Building embed app...');
195
- execSync('pnpm exec vite build -c vite.config.embed-app.ts', {
201
+ execSync(`${pm.exec} vite build -c vite.config.embed-widget.ts`, {
196
202
  stdio: 'inherit',
197
203
  cwd: doryRoot,
198
204
  env: { ...process.env }
199
205
  });
200
206
  // Copy embed files to user's dist if different
201
207
  if (doryDistDir !== userDistDir) {
202
- const embedFiles = ['embed.js', 'embed-widget.js', 'embed-app.js', 'embed.css'];
208
+ const embedFiles = ['embed.js', 'embed-widget.js', 'embed.css'];
203
209
  embedFiles.forEach(file => {
204
210
  const srcPath = resolve(doryDistDir, file);
205
211
  const destPath = resolve(userDistDir, file);
@@ -399,6 +405,21 @@ const commands = {
399
405
  process.exit(1);
400
406
  }
401
407
  },
408
+ version: () => {
409
+ const doryRoot = getDoryRoot();
410
+ const packageJsonPath = resolve(doryRoot, 'package.json');
411
+ try {
412
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
413
+ console.log(`🐟 Dory v${packageJson.version}`);
414
+ }
415
+ catch (error) {
416
+ console.error('❌ Failed to read version information');
417
+ if (error instanceof Error) {
418
+ console.error(` ${error.message}`);
419
+ }
420
+ process.exit(1);
421
+ }
422
+ },
402
423
  help: () => {
403
424
  console.log(`
404
425
  🐟 Dory CLI - Documentation Builder
@@ -419,6 +440,8 @@ Commands:
419
440
  Options: --content "<mdx>" or --file <path>
420
441
  Silent on success, shows errors on failure
421
442
 
443
+ version Show Dory version
444
+
422
445
  help Show this help message
423
446
 
424
447
  Examples:
@@ -426,6 +449,7 @@ Examples:
426
449
  dory preview
427
450
  dory verify:content --content "# Hello World"
428
451
  dory verify:content --file docs/intro.mdx
452
+ dory version
429
453
 
430
454
  For more information, visit: https://github.com/clidey/dory
431
455
  `);
@@ -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/index.html ADDED
@@ -0,0 +1,54 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <link rel="icon" href="./docs/favicon.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+ <meta name="theme-color" content="#000000" />
8
+
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." />
11
+ <meta name="keywords" content="documentation, code documentation, auto documentation, developer tools, technical documentation, codebase documentation, llm, ai, anthropic, openai, chatgpt, claude, clidey" />
12
+ <meta name="author" content="Clidey" />
13
+ <meta name="language" content="English" />
14
+
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." />
18
+ <meta property="og:image" content="./docs/favicon.svg" />
19
+ <meta property="og:url" content="https://docucod.com/" />
20
+ <meta property="og:type" content="website" />
21
+ <meta property="og:site_name" content="Docucod" />
22
+ <meta property="og:locale" content="en_US" />
23
+
24
+ <!-- Twitter -->
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." />
28
+ <meta name="twitter:image" content="./docs/favicon.svg" />
29
+ <meta name="twitter:site" content="@ClideyOfficial" />
30
+ <meta name="twitter:creator" content="@ClideyOfficial" />
31
+
32
+ <link rel="apple-touch-icon" href="./docs/favicon.svg" />
33
+ <link rel="manifest" href="/manifest.json" />
34
+
35
+ <title>Docucod - Instantly Generate and Maintain Your Documentation</title>
36
+
37
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
38
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
39
+ <link href="https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Inter&display=swap" rel="stylesheet">
40
+
41
+ <script>
42
+ !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.crossOrigin="anonymous",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="init be ys Ss me gs ws capture Ne calculateEventProperties xs register register_once register_for_session unregister unregister_for_session Rs getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSurveysLoaded onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey canRenderSurveyAsync identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty Is ks createPersonProfile Ps bs opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing $s debug Es getPageViewId captureTraceFeedback captureTraceMetric".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);
43
+ posthog.init('phc_hxwfcMiIgSXYKkbWl9zpQE0HaPPmlRaVXCWODricYu1', {
44
+ api_host: 'https://us.i.posthog.com',
45
+ person_profiles: 'identified_only', // or 'always' to create profiles for anonymous users as well
46
+ })
47
+ </script>
48
+ </head>
49
+ <body>
50
+ <noscript>You need to enable JavaScript to run this app.</noscript>
51
+ <div id="app"></div>
52
+ <script type="module" src="/src/main.tsx"></script>
53
+ </body>
54
+ </html>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@clidey/dory",
3
3
  "private": false,
4
- "version": "0.30.0",
4
+ "version": "0.33.0",
5
5
  "type": "module",
6
6
  "description": "A CLI tool for building and previewing documentation sites",
7
7
  "keywords": [
@@ -15,7 +15,12 @@
15
15
  "dory": "./bin/dist/dory.js"
16
16
  },
17
17
  "files": [
18
- "bin/dist/**/*"
18
+ "bin/dist",
19
+ "src",
20
+ "index.html",
21
+ "vite.config.ts",
22
+ "vite.config.embed-loader.ts",
23
+ "vite.config.embed-widget.ts"
19
24
  ],
20
25
  "repository": {
21
26
  "type": "git",
@@ -31,10 +36,10 @@
31
36
  "dev": "vite",
32
37
  "build": "npm run build:cli && tsc -b && vite build",
33
38
  "build:cli": "tsc -p tsconfig.bin.json",
34
- "build:embed": "npm run build:embed:loader && npm run build:embed:widget && npm run build:embed:app",
39
+ "build:docs": "tsc -b && vite build",
40
+ "build:embed": "npm run build:embed:loader && npm run build:embed:widget",
35
41
  "build:embed:loader": "vite build -c vite.config.embed-loader.ts",
36
42
  "build:embed:widget": "vite build -c vite.config.embed-widget.ts",
37
- "build:embed:app": "vite build -c vite.config.embed-app.ts",
38
43
  "preview": "vite preview",
39
44
  "publish": "npm run build && npm publish --access public --no-git-checks",
40
45
  "prepublishOnly": "echo 'Skipping prepublishOnly - build handled by publish script'"
package/src/app.css ADDED
@@ -0,0 +1,5 @@
1
+ @import "tailwindcss";
2
+
3
+ @custom-variant dark (&:where(.dark, .dark *));
4
+
5
+
package/src/app.tsx ADDED
@@ -0,0 +1,13 @@
1
+ import './app.css'
2
+ import './theme.scss'
3
+ import Routes from './components/routes'
4
+
5
+ export function App() {
6
+ return (
7
+ <div className="h-full antialiased">
8
+ <div className="flex min-h-full">
9
+ <Routes />
10
+ </div>
11
+ </div>
12
+ )
13
+ }
@@ -0,0 +1,53 @@
1
+ import {
2
+ DropdownMenu,
3
+ DropdownMenuTrigger,
4
+ DropdownMenuContent,
5
+ DropdownMenuItem,
6
+ DropdownMenuSeparator,
7
+ Button
8
+ } from '@clidey/ux'
9
+ import { ChevronDownIcon } from '@heroicons/react/20/solid'
10
+ import type { ComponentChildren } from 'preact'
11
+ import type { ReactNode } from 'preact/compat'
12
+
13
+ interface DropdownItem {
14
+ icon?: ComponentChildren
15
+ label: string
16
+ href?: string
17
+ onClick?: () => void
18
+ divider?: boolean
19
+ }
20
+
21
+ interface DropdownProps {
22
+ buttonLabel: string | ReactNode;
23
+ items: DropdownItem[]
24
+ className?: string
25
+ }
26
+
27
+ export default function Dropdown({ buttonLabel, items, className = '' }: DropdownProps) {
28
+ return (
29
+ <DropdownMenu>
30
+ <DropdownMenuTrigger>
31
+ <Button className={className}>
32
+ {buttonLabel}
33
+ <ChevronDownIcon className="ml-2 h-4 w-4" />
34
+ </Button>
35
+ </DropdownMenuTrigger>
36
+ <DropdownMenuContent>
37
+ {items.map((item, index) => (
38
+ <>
39
+ {item.divider && index > 0 && <DropdownMenuSeparator />}
40
+ <DropdownMenuItem
41
+ key={index}
42
+ onClick={item.onClick}
43
+ className="cursor-pointer"
44
+ >
45
+ {item.icon && <span className="mr-2">{item.icon}</span>}
46
+ {item.label}
47
+ </DropdownMenuItem>
48
+ </>
49
+ ))}
50
+ </DropdownMenuContent>
51
+ </DropdownMenu>
52
+ )
53
+ }
@@ -0,0 +1,36 @@
1
+ import { useEffect, useState } from 'preact/hooks';
2
+ import { useLocation } from 'wouter-preact';
3
+
4
+ /**
5
+ * Custom hook to get the current pathname
6
+ */
7
+ export const usePathname = () => {
8
+ const [pathname] = useLocation();
9
+ return pathname;
10
+ };
11
+
12
+ /**
13
+ * Custom hook to get the URL search params as a URLSearchParams instance
14
+ */
15
+ export const useSearchParams = () => {
16
+ const [searchParams, setSearchParams] = useState(new URLSearchParams(window.location.search));
17
+
18
+ useEffect(() => {
19
+ const handlePopState = () => {
20
+ setSearchParams(new URLSearchParams(window.location.search));
21
+ };
22
+
23
+ window.addEventListener('popstate', handlePopState);
24
+ return () => window.removeEventListener('popstate', handlePopState);
25
+ }, []);
26
+
27
+ return searchParams;
28
+ };
29
+
30
+ /**
31
+ * Custom hook to check if the app is in embedded mode
32
+ */
33
+ export const useIsEmbedded = () => {
34
+ const searchParams = useSearchParams();
35
+ return searchParams.get('embedded') === 'true';
36
+ };
@@ -0,0 +1,21 @@
1
+ import { Spinner } from '@clidey/ux';
2
+ import classNames from "classnames";
3
+
4
+ type ILoadingProps = {
5
+ className?: string;
6
+ showText?: boolean;
7
+ loadingText?: string;
8
+ textClassName?: string;
9
+ }
10
+
11
+ export const Loading = ({ className, showText = false, loadingText, textClassName }: ILoadingProps) => {
12
+ return (
13
+ <div className="h-full w-full flex flex-col justify-center items-center gap-2 min-h-[400px]" role="status">
14
+ <Spinner className={className} />
15
+ {
16
+ showText &&
17
+ <div className={classNames("text-sm text-gray-500", textClassName)}>{ loadingText ?? "Loading..."}</div>
18
+ }
19
+ </div>
20
+ )
21
+ }
@@ -0,0 +1,13 @@
1
+ import { MDXProvider } from '@mdx-js/preact';
2
+ import Layout from '../ui/layout';
3
+ import * as mdx from '../mdx/mdx';
4
+
5
+ export const withMDX = (Content: preact.ComponentType) => () => {
6
+ return (
7
+ <MDXProvider components={mdx}>
8
+ <Layout>
9
+ <Content />
10
+ </Layout>
11
+ </MDXProvider>
12
+ );
13
+ };
@@ -0,0 +1,58 @@
1
+ import classNames from 'classnames';
2
+ import { useMemo } from 'preact/hooks';
3
+ import { Link } from 'wouter-preact';
4
+ import { usePathname } from './hooks';
5
+ import { ALL_NAVIGATION } from './store';
6
+
7
+ export function Navigation() {
8
+ const pathname = usePathname();
9
+
10
+ const effectivePath = pathname === '/'
11
+ ? ALL_NAVIGATION[0]?.groups[0]?.pages[0]?.href ?? '/'
12
+ : pathname;
13
+
14
+ const currentTab = useMemo(() => {
15
+ return ALL_NAVIGATION.find(tab =>
16
+ tab.groups.some(group =>
17
+ group.pages.some(page => page.href === effectivePath)
18
+ )
19
+ );
20
+ }, [effectivePath]);
21
+
22
+ return (
23
+ <nav className="dory-navigation text-base lg:text-sm">
24
+ <ul role="list" className="space-y-9">
25
+ {currentTab && (
26
+ <li key={currentTab.title}>
27
+ <h2 className="font-display font-medium text-xs">{currentTab.title}</h2>
28
+ {currentTab.groups.map(group => (
29
+ <div key={group.title}>
30
+ <h3 className="mt-4 text-sm font-semibold">{group.title}</h3>
31
+ <ul role="list" className="mt-2 space-y-2 border-l-2 border-slate-100 lg:mt-4 lg:space-y-4 lg:border-slate-200 dark:border-slate-800">
32
+ {group.pages.map((page) => {
33
+ const isActive = effectivePath === page.href;
34
+ return (
35
+ <li key={page.href} className="relative">
36
+ <Link
37
+ href={page.href}
38
+ className={classNames(
39
+ 'block w-full pl-3.5 before:pointer-events-none before:absolute before:top-1/2 before:-left-1 before:h-1.5 before:w-1.5 before:-translate-y-1/2 before:rounded-full',
40
+ {
41
+ 'font-semibold text-brand-foreground': isActive,
42
+ 'text-slate-500 before:hidden before:bg-slate-300 hover:text-slate-600 hover:before:block dark:text-slate-400 dark:before:bg-slate-700 dark:hover:text-slate-300': !isActive
43
+ },
44
+ )}>
45
+ {page.title}
46
+ </Link>
47
+ </li>
48
+ );
49
+ })}
50
+ </ul>
51
+ </div>
52
+ ))}
53
+ </li>
54
+ )}
55
+ </ul>
56
+ </nav>
57
+ );
58
+ }
@@ -0,0 +1,13 @@
1
+ import { toast } from '@clidey/ux';
2
+ import { InfoIcon } from 'lucide-react';
3
+
4
+ export function useNotification() {
5
+ return {
6
+ showNotification: (message: string, description?: string) => {
7
+ toast(message, {
8
+ icon: <InfoIcon className="h-4 w-4" />,
9
+ description: description,
10
+ });
11
+ }
12
+ };
13
+ }
@@ -0,0 +1,92 @@
1
+ import { useEffect, useState } from 'preact/hooks';
2
+ import { Route, Router, useLocation } from 'wouter-preact';
3
+ import { usePathname } from './hooks';
4
+ import { ALL_NAVIGATION, ALL_PAGES, pathFromFilename } from './store';
5
+ import { Loading } from './loading';
6
+
7
+
8
+ export default function Routes() {
9
+ const [routes, setRoutes] = useState<any[]>([]);
10
+ const pathname = usePathname();
11
+ const [, navigate] = useLocation();
12
+ const [loading, setLoading] = useState(true);
13
+
14
+ useEffect(() => {
15
+ const links = document.querySelectorAll('.dory-navigation a');
16
+ const listeners: (() => void)[] = [];
17
+ const preloaded = new Set();
18
+
19
+ links.forEach(link => {
20
+ const href = link.getAttribute('href');
21
+ if (!href) return;
22
+
23
+ const loaderEntry = Object.entries(ALL_PAGES).find(
24
+ ([path]) => path === href
25
+ );
26
+
27
+ if (!loaderEntry) return;
28
+
29
+ const [path, loader] = loaderEntry;
30
+
31
+ const handleMouseEnter = () => {
32
+ if (!preloaded.has(path)) {
33
+ loader();
34
+ preloaded.add(path);
35
+ }
36
+ };
37
+
38
+ link.addEventListener('mouseenter', handleMouseEnter);
39
+ listeners.push(() => link.removeEventListener('mouseenter', handleMouseEnter));
40
+ });
41
+
42
+ return () => {
43
+ listeners.forEach(unsub => unsub());
44
+ };
45
+ }, []);
46
+
47
+ useEffect(() => {
48
+ setLoading(true);
49
+ const loadRoutes = async () => {
50
+ // For root path, load the first navigation page
51
+ const targetPath = pathname === '/' ? ALL_NAVIGATION[0].groups[0].pages[0].href : pathname;
52
+
53
+ const entries = await Promise.all(
54
+ Object.entries(ALL_PAGES).filter(([path]) => path === targetPath).map(async ([path, loader]) => {
55
+ const module = await loader();
56
+ const routePath = pathname === '/' ? '/' : pathFromFilename(path);
57
+ return {
58
+ path: routePath,
59
+ component: module.default,
60
+ };
61
+ })
62
+ );
63
+ setRoutes(entries);
64
+ setLoading(false);
65
+ };
66
+
67
+ loadRoutes();
68
+ }, [pathname]);
69
+
70
+ useEffect(() => {
71
+ const page = ALL_NAVIGATION.find((tab) => tab.groups.find((group) => group.pages.find((page) => page.href === pathname)));
72
+ if (!page && pathname !== '/') {
73
+ navigate(ALL_NAVIGATION[0].groups[0].pages[0].href);
74
+ window.location.reload();
75
+ }
76
+ }, [routes, pathname]);
77
+
78
+ useEffect(() => {
79
+ window.scrollTo({ top: 0, behavior: 'smooth' });
80
+ }, [pathname]);
81
+
82
+
83
+ if (loading) return <div className="h-[25vh] flex grow"><Loading /></div>;
84
+
85
+ return (
86
+ <Router>
87
+ {routes.map(({ path, component: Component }) => (
88
+ <Route key={path} path={path} component={Component} />
89
+ ))}
90
+ </Router>
91
+ );
92
+ }
@@ -0,0 +1,43 @@
1
+ import { Document } from "flexsearch";
2
+
3
+ export const searchIndex = new Document({
4
+ tokenize: 'full',
5
+ document: {
6
+ id: 'url',
7
+ index: 'content',
8
+ store: ['title', 'pageTitle'],
9
+ },
10
+ context: {
11
+ resolution: 9,
12
+ depth: 2,
13
+ bidirectional: true
14
+ }
15
+ });
16
+
17
+ export function addToSearchIndex(filename: string, data: any, content: string) {
18
+ searchIndex.add({
19
+ url: filename,
20
+ title: data.title || '',
21
+ content: content,
22
+ pageTitle: data.title
23
+ });
24
+ }
25
+
26
+ export function search(query: string, options = {}) {
27
+ if (!searchIndex) return [];
28
+
29
+ const result = searchIndex.search(query, {
30
+ ...options,
31
+ enrich: true,
32
+ });
33
+
34
+ if (result.length === 0) {
35
+ return [];
36
+ }
37
+
38
+ return result[0].result.map((item) => ({
39
+ url: item.id,
40
+ title: item.doc?.title || '',
41
+ pageTitle: item.doc?.pageTitle || '',
42
+ }));
43
+ }