@clidey/dory 0.22.0 → 0.23.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/bin/dory.ts +18 -4
- package/dist/dory.json +5 -0
- package/dist/favicon.svg +1 -1
- package/dist/index.html +6 -6
- package/dist/introduction.mdx +2 -2
- package/dist/llms.txt +2 -2
- package/docs/dory.json +5 -0
- package/docs/favicon.svg +1 -1
- package/docs/introduction.mdx +2 -2
- package/package.json +13 -10
- package/src/app.css +2 -0
- package/src/components/dropdown.tsx +30 -26
- package/src/components/loading.tsx +6 -8
- package/src/components/navigation.tsx +8 -6
- package/src/components/notification.tsx +9 -93
- package/src/components/routes.tsx +1 -1
- package/src/components/search.tsx +31 -104
- package/src/components/store.ts +4 -1
- package/src/main.tsx +9 -5
- package/src/mdx/accordion.tsx +21 -28
- package/src/mdx/api-playground.tsx +68 -83
- package/src/mdx/api.tsx +21 -21
- package/src/mdx/async-api.tsx +15 -31
- package/src/mdx/callout.tsx +27 -43
- package/src/mdx/card.tsx +20 -14
- package/src/mdx/code.tsx +26 -26
- package/src/mdx/expandable.tsx +21 -25
- package/src/mdx/fence.tsx +2 -2
- package/src/mdx/list.tsx +2 -2
- package/src/mdx/open-api.tsx +31 -45
- package/src/mdx/table.tsx +8 -3
- package/src/mdx/tag.tsx +27 -40
- package/src/mdx/text.tsx +3 -2
- package/src/mdx/websocket-playground.tsx +150 -81
- package/src/theme.scss +50 -106
- package/src/types/config.ts +47 -0
- package/src/ui/header.tsx +12 -9
- package/src/ui/layout.tsx +5 -4
- package/src/ui/mobile-navigation.tsx +36 -63
- package/src/ui/table-of-content.tsx +3 -3
- package/src/utils/colors.ts +54 -0
- package/src/utils/fonts.ts +4 -1
- package/vite.config.ts +2 -0
- package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/assets/__vite-browser-external-BIHI7g3E.js +0 -1
- package/dist/assets/_basePickBy-CsnA5_xx.js +0 -1
- package/dist/assets/_baseUniq-COwFna6s.js +0 -1
- package/dist/assets/api-playground-demo-Ct5XK2u1.js +0 -45
- package/dist/assets/api-playground-demo-vBae5R-d.js +0 -119
- package/dist/assets/arc-Dy4kITED.js +0 -1
- package/dist/assets/architectureDiagram-IEHRJDOE-BiaWQpzt.js +0 -36
- package/dist/assets/blockDiagram-JOT3LUYC-7LfUOsM7.js +0 -121
- package/dist/assets/c4Diagram-VJAJSXHY-Ca-3deDF.js +0 -10
- package/dist/assets/channel-j6jMzwSu.js +0 -1
- package/dist/assets/chunk-4BMEZGHF-Cln31Q_z.js +0 -1
- package/dist/assets/chunk-A2AXSNBT-Cj4U7K4I.js +0 -164
- package/dist/assets/chunk-AEK57VVT-1kn9120k.js +0 -220
- package/dist/assets/chunk-D6G4REZN-DMgQaOLS.js +0 -1
- package/dist/assets/chunk-RZ5BOZE2-DDd-DrSb.js +0 -1
- package/dist/assets/chunk-XZIHB7SX-sVdgMrEr.js +0 -1
- package/dist/assets/classDiagram-GIVACNV2-B9ObtIrc.js +0 -1
- package/dist/assets/classDiagram-v2-COTLJTTW-B9ObtIrc.js +0 -1
- package/dist/assets/clone-UOttdbrS.js +0 -1
- package/dist/assets/create-D-Wjvs-T.js +0 -6
- package/dist/assets/create-DpzlgYHc.js +0 -4
- package/dist/assets/cytoscape.esm-BY7v1xhs.js +0 -331
- package/dist/assets/dagre-OKDRZEBW-C4q12sCc.js +0 -4
- package/dist/assets/delete-DwAmDeAN.js +0 -4
- package/dist/assets/delete-cbziNMWs.js +0 -5
- package/dist/assets/diagram-SSKATNLV-BxNC6sGs.js +0 -43
- package/dist/assets/diagram-VNBRO52H-CukGDk3b.js +0 -24
- package/dist/assets/dory.jpeg +0 -0
- package/dist/assets/erDiagram-Q7BY3M3F-TiiVq0dv.js +0 -60
- package/dist/assets/favicon-Z67lNtJu.svg +0 -75
- package/dist/assets/features-6EEoDloV.js +0 -269
- package/dist/assets/features-EZwrzTnN.js +0 -441
- package/dist/assets/flowDiagram-4HSFHLVR-DykkGbol.js +0 -161
- package/dist/assets/ganttDiagram-APWFNJXF-Bqp95-S3.js +0 -257
- package/dist/assets/get-BeAg4Qrr.js +0 -5
- package/dist/assets/get-Dj1eDs2i.js +0 -4
- package/dist/assets/gitGraphDiagram-7IBYFJ6S-BiYVs9VI.js +0 -65
- package/dist/assets/graph-LkKKMaDZ.js +0 -1
- package/dist/assets/index-CGd7uPvh.css +0 -1
- package/dist/assets/index-vOROtq-e.js +0 -9596
- package/dist/assets/infoDiagram-PH2N3AL5-EA7h3wZa.js +0 -2
- package/dist/assets/init-Gi6I4Gst.js +0 -1
- package/dist/assets/introduction-CzXlzjWa.js +0 -38
- package/dist/assets/introduction-ylYJcPz3.js +0 -45
- package/dist/assets/journeyDiagram-U35MCT3I-BZiVuCZu.js +0 -138
- package/dist/assets/kanban-definition-NDS4AKOZ-SCdQ8OjR.js +0 -88
- package/dist/assets/layout-C9-9-M2q.js +0 -1
- package/dist/assets/linear-CTbdhYd1.js +0 -1
- package/dist/assets/mermaid.core-DUFqLK_I.js +0 -213
- package/dist/assets/mindmap-definition-ALO5MXBD-BPbKEbjk.js +0 -95
- package/dist/assets/ordinal-Cboi1Yqb.js +0 -1
- package/dist/assets/pieDiagram-IB7DONF6-DPg1sNm8.js +0 -30
- package/dist/assets/quadrantDiagram-7GDLP6J5-DmtJM50d.js +0 -7
- package/dist/assets/radar-MK3ICKWK-DnO5LA4B.js +0 -128
- package/dist/assets/receive-chat-message-B2jsY1P6.js +0 -4
- package/dist/assets/receive-chat-message-BeaC4eqS.js +0 -5
- package/dist/assets/receive-notifications-BouRLPFj.js +0 -4
- package/dist/assets/receive-notifications-DYnXRRBz.js +0 -5
- package/dist/assets/receive-presence-update-CRgeSUpk.js +0 -5
- package/dist/assets/receive-presence-update-UEm47KAG.js +0 -4
- package/dist/assets/requirementDiagram-KVF5MWMF-iNwUJLq2.js +0 -64
- package/dist/assets/sankeyDiagram-QLVOVGJD-DWLyAD59.js +0 -10
- package/dist/assets/send-chat-message-Bvf2XJiv.js +0 -5
- package/dist/assets/send-chat-message-FDmVETeD.js +0 -4
- package/dist/assets/send-presence-update-26clGQ0z.js +0 -5
- package/dist/assets/send-presence-update-DeywSKYu.js +0 -4
- package/dist/assets/sequenceDiagram-X6HHIX6F-HyRN2_g-.js +0 -122
- package/dist/assets/stateDiagram-DGXRK772-DdMr0V93.js +0 -1
- package/dist/assets/stateDiagram-v2-YXO3MK2T-D6kpXRiR.js +0 -1
- package/dist/assets/timeline-definition-BDJGKUSR-CDf8nWgC.js +0 -61
- package/dist/assets/update-BEeNDeXY.js +0 -4
- package/dist/assets/update-CykJMYvN.js +0 -5
- package/dist/assets/websocket-playground-demo-4pj7mj19.js +0 -135
- package/dist/assets/websocket-playground-demo-F71LN60e.js +0 -61
- package/dist/assets/xychartDiagram-VJFVF3MP-BY_uTq9r.js +0 -7
- package/docs/assets/dory.jpeg +0 -0
- package/src/components/dark-mode-toggle.tsx +0 -25
- package/src/index.css +0 -24
- package/src/utils/hooks.ts +0 -46
package/bin/dory.ts
CHANGED
|
@@ -99,7 +99,7 @@ const commands = {
|
|
|
99
99
|
console.log('👀 Starting your docs preview...');
|
|
100
100
|
const currentDir = process.cwd();
|
|
101
101
|
const distDir = resolve(currentDir, 'dist');
|
|
102
|
-
|
|
102
|
+
let port = parseInt(process.env.PORT || '3000', 10);
|
|
103
103
|
|
|
104
104
|
const serve = sirv(distDir, {
|
|
105
105
|
dev: false,
|
|
@@ -113,9 +113,23 @@ const commands = {
|
|
|
113
113
|
serve(req, res);
|
|
114
114
|
});
|
|
115
115
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
const tryPort = (currentPort: number) => {
|
|
117
|
+
server.listen(currentPort)
|
|
118
|
+
.on('listening', () => {
|
|
119
|
+
console.log(`🚀 Your docs are live at http://localhost:${currentPort}`);
|
|
120
|
+
})
|
|
121
|
+
.on('error', (err: any) => {
|
|
122
|
+
if (err.code === 'EADDRINUSE') {
|
|
123
|
+
console.log(`⚠️ Port ${currentPort} is busy, trying ${currentPort + 1}...`);
|
|
124
|
+
tryPort(currentPort + 1);
|
|
125
|
+
} else {
|
|
126
|
+
console.error('❌ Failed to start server:', err.message);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
tryPort(port);
|
|
119
133
|
},
|
|
120
134
|
|
|
121
135
|
'verify:content': async () => {
|
package/dist/dory.json
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "Docucod",
|
|
3
3
|
"favicon": "./favicon.svg",
|
|
4
|
+
"colors": {
|
|
5
|
+
"primary": "#0ea5e9",
|
|
6
|
+
"light": "#0C8BC6",
|
|
7
|
+
"dark": "#0284c7"
|
|
8
|
+
},
|
|
4
9
|
"fonts": {
|
|
5
10
|
"family": "Montserrat",
|
|
6
11
|
"source": "https://fonts.gstatic.com/s/googlesansflex/v5/t5sJIQcYNIWbFgDgAAzZ34auoVyXkJCOvp3SFWJbN5hF8Ju1x6sKCyp0l9sI40swNJwGpVd4AZzz0v6lJ4qFXNZhGjLvDSkV4USKMo6qQzwliVdHAy9jxTDHg_ugnAakpwGc-cxgUqDCIUI.woff2",
|
package/dist/favicon.svg
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
version="1.1"
|
|
9
9
|
id="svg1"
|
|
10
10
|
inkscape:version="1.4 (e7c3feb1, 2024-10-09)"
|
|
11
|
-
sodipodi:docname="
|
|
11
|
+
sodipodi:docname="dory-logo.svg"
|
|
12
12
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
13
13
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
14
14
|
xmlns="http://www.w3.org/2000/svg"
|
package/dist/index.html
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
|
-
<link rel="icon" href="/assets/favicon-
|
|
5
|
+
<link rel="icon" href="/assets/favicon-nLquwUQp.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
7
|
<meta name="theme-color" content="#000000" />
|
|
8
8
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<!-- Open Graph / Facebook -->
|
|
16
16
|
<meta property="og:title" content="Docucod: Generate and Maintain Documentation With No Work" />
|
|
17
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="/assets/favicon-
|
|
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" />
|
|
21
21
|
<meta property="og:site_name" content="Docucod" />
|
|
@@ -25,11 +25,11 @@
|
|
|
25
25
|
<meta name="twitter:card" content="summary_large_image" />
|
|
26
26
|
<meta name="twitter:title" content="Docucod: Generate and Maintain Documentation With No Work" />
|
|
27
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="/assets/favicon-
|
|
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" />
|
|
31
31
|
|
|
32
|
-
<link rel="apple-touch-icon" href="/assets/favicon-
|
|
32
|
+
<link rel="apple-touch-icon" href="/assets/favicon-nLquwUQp.svg" />
|
|
33
33
|
<link rel="manifest" href="/manifest.json" />
|
|
34
34
|
|
|
35
35
|
<title>Docucod - Instantly Generate and Maintain Your Documentation</title>
|
|
@@ -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-
|
|
49
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
48
|
+
<script type="module" crossorigin src="/assets/index-CrsN5P5J.js"></script>
|
|
49
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DfQ0BTd7.css">
|
|
50
50
|
</head>
|
|
51
51
|
<body>
|
|
52
52
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
package/dist/introduction.mdx
CHANGED
|
@@ -10,7 +10,7 @@ description: 'Welcome to Docucod and Dory documentation'
|
|
|
10
10
|
This documentation is powered by two complementary tools:
|
|
11
11
|
|
|
12
12
|
1. **Docucod** - An AI-powered documentation assistant that automatically generates and maintains documentation
|
|
13
|
-
2. **Dory** - A lightweight static site generator specifically designed to deploy
|
|
13
|
+
2. **Dory** - A lightweight static site generator specifically designed to deploy dory-generated documentation
|
|
14
14
|
|
|
15
15
|
## What is Docucod?
|
|
16
16
|
|
|
@@ -22,7 +22,7 @@ Docucod analyzes your codebase and automatically:
|
|
|
22
22
|
|
|
23
23
|
## What is Dory?
|
|
24
24
|
|
|
25
|
-
Dory is a lightweight static site generator built for developers who want fast, clean, and customizable documentation. It was created specifically to deploy
|
|
25
|
+
Dory is a lightweight static site generator built for developers who want fast, clean, and customizable documentation. It was created specifically to deploy dory-generated documentation with:
|
|
26
26
|
|
|
27
27
|
- 🧠 **Simple** — Drop in `.mdx` files and configure one `dory.json`
|
|
28
28
|
- ⚡ **Fast** — Instant hot reload in dev, quick static builds for prod
|
package/dist/llms.txt
CHANGED
|
@@ -10,7 +10,7 @@ Welcome to Docucod and Dory documentation
|
|
|
10
10
|
This documentation is powered by two complementary tools:
|
|
11
11
|
|
|
12
12
|
1. **Docucod** - An AI-powered documentation assistant that automatically generates and maintains documentation
|
|
13
|
-
2. **Dory** - A lightweight static site generator specifically designed to deploy
|
|
13
|
+
2. **Dory** - A lightweight static site generator specifically designed to deploy dory-generated documentation
|
|
14
14
|
|
|
15
15
|
## What is Docucod?
|
|
16
16
|
|
|
@@ -22,7 +22,7 @@ Docucod analyzes your codebase and automatically:
|
|
|
22
22
|
|
|
23
23
|
## What is Dory?
|
|
24
24
|
|
|
25
|
-
Dory is a lightweight static site generator built for developers who want fast, clean, and customizable documentation. It was created specifically to deploy
|
|
25
|
+
Dory is a lightweight static site generator built for developers who want fast, clean, and customizable documentation. It was created specifically to deploy dory-generated documentation with:
|
|
26
26
|
|
|
27
27
|
- 🧠 **Simple** — Drop in `.mdx` files and configure one `dory.json`
|
|
28
28
|
- ⚡ **Fast** — Instant hot reload in dev, quick static builds for prod
|
package/docs/dory.json
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "Docucod",
|
|
3
3
|
"favicon": "./favicon.svg",
|
|
4
|
+
"colors": {
|
|
5
|
+
"primary": "#0ea5e9",
|
|
6
|
+
"light": "#0C8BC6",
|
|
7
|
+
"dark": "#0284c7"
|
|
8
|
+
},
|
|
4
9
|
"fonts": {
|
|
5
10
|
"family": "Montserrat",
|
|
6
11
|
"source": "https://fonts.gstatic.com/s/googlesansflex/v5/t5sJIQcYNIWbFgDgAAzZ34auoVyXkJCOvp3SFWJbN5hF8Ju1x6sKCyp0l9sI40swNJwGpVd4AZzz0v6lJ4qFXNZhGjLvDSkV4USKMo6qQzwliVdHAy9jxTDHg_ugnAakpwGc-cxgUqDCIUI.woff2",
|
package/docs/favicon.svg
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
version="1.1"
|
|
9
9
|
id="svg1"
|
|
10
10
|
inkscape:version="1.4 (e7c3feb1, 2024-10-09)"
|
|
11
|
-
sodipodi:docname="
|
|
11
|
+
sodipodi:docname="dory-logo.svg"
|
|
12
12
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
13
13
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
14
14
|
xmlns="http://www.w3.org/2000/svg"
|
package/docs/introduction.mdx
CHANGED
|
@@ -10,7 +10,7 @@ description: 'Welcome to Docucod and Dory documentation'
|
|
|
10
10
|
This documentation is powered by two complementary tools:
|
|
11
11
|
|
|
12
12
|
1. **Docucod** - An AI-powered documentation assistant that automatically generates and maintains documentation
|
|
13
|
-
2. **Dory** - A lightweight static site generator specifically designed to deploy
|
|
13
|
+
2. **Dory** - A lightweight static site generator specifically designed to deploy dory-generated documentation
|
|
14
14
|
|
|
15
15
|
## What is Docucod?
|
|
16
16
|
|
|
@@ -22,7 +22,7 @@ Docucod analyzes your codebase and automatically:
|
|
|
22
22
|
|
|
23
23
|
## What is Dory?
|
|
24
24
|
|
|
25
|
-
Dory is a lightweight static site generator built for developers who want fast, clean, and customizable documentation. It was created specifically to deploy
|
|
25
|
+
Dory is a lightweight static site generator built for developers who want fast, clean, and customizable documentation. It was created specifically to deploy dory-generated documentation with:
|
|
26
26
|
|
|
27
27
|
- 🧠 **Simple** — Drop in `.mdx` files and configure one `dory.json`
|
|
28
28
|
- ⚡ **Fast** — Instant hot reload in dev, quick static builds for prod
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clidey/dory",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.23.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "A CLI tool for building and previewing documentation sites",
|
|
7
7
|
"keywords": [
|
|
@@ -24,20 +24,27 @@
|
|
|
24
24
|
"bugs": {
|
|
25
25
|
"url": "https://github.com/clidey/dory/issues"
|
|
26
26
|
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"dev": "vite",
|
|
29
|
+
"build": "tsc -b && vite build",
|
|
30
|
+
"preview": "vite preview",
|
|
31
|
+
"publish": "npm publish --access public"
|
|
32
|
+
},
|
|
27
33
|
"dependencies": {
|
|
28
34
|
"@algolia/autocomplete-core": "^1.19.2",
|
|
35
|
+
"@clidey/ux": "^0.36.0",
|
|
29
36
|
"@fortawesome/fontawesome-svg-core": "^6.7.2",
|
|
30
37
|
"@fortawesome/free-brands-svg-icons": "^6.7.2",
|
|
31
38
|
"@fortawesome/free-regular-svg-icons": "^6.7.2",
|
|
32
39
|
"@fortawesome/free-solid-svg-icons": "^6.7.2",
|
|
33
40
|
"@fortawesome/react-fontawesome": "^0.2.2",
|
|
34
|
-
"@headlessui/react": "^2.2.
|
|
41
|
+
"@headlessui/react": "^2.2.9",
|
|
35
42
|
"@heroicons/react": "^2.2.0",
|
|
36
43
|
"@mdx-js/mdx": "^3.1.0",
|
|
37
44
|
"@mdx-js/preact": "^3.1.0",
|
|
38
45
|
"@mdx-js/rollup": "^3.1.0",
|
|
39
46
|
"@preact/preset-vite": "^2.10.1",
|
|
40
|
-
"@tailwindcss/vite": "^4.1.
|
|
47
|
+
"@tailwindcss/vite": "^4.1.16",
|
|
41
48
|
"@types/react-highlight-words": "^0.20.0",
|
|
42
49
|
"classnames": "^2.5.1",
|
|
43
50
|
"flexsearch": "^0.8.205",
|
|
@@ -54,7 +61,7 @@
|
|
|
54
61
|
"saas": "^1.0.0",
|
|
55
62
|
"sass-embedded": "^1.89.2",
|
|
56
63
|
"sirv": "^3.0.1",
|
|
57
|
-
"tailwindcss": "^4.1.
|
|
64
|
+
"tailwindcss": "^4.1.16",
|
|
58
65
|
"tsx": "^4.20.4",
|
|
59
66
|
"typescript": "~5.8.3",
|
|
60
67
|
"unist-util-visit": "^5.0.0",
|
|
@@ -62,12 +69,8 @@
|
|
|
62
69
|
"vite-plugin-mdx": "^3.6.1",
|
|
63
70
|
"wouter-preact": "^3.7.1"
|
|
64
71
|
},
|
|
72
|
+
"packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39",
|
|
65
73
|
"devDependencies": {
|
|
66
74
|
"@types/node": "^24.0.12"
|
|
67
|
-
},
|
|
68
|
-
"scripts": {
|
|
69
|
-
"dev": "vite",
|
|
70
|
-
"build": "tsc -b && vite build",
|
|
71
|
-
"preview": "vite preview"
|
|
72
75
|
}
|
|
73
|
-
}
|
|
76
|
+
}
|
package/src/app.css
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
DropdownMenu,
|
|
3
|
+
DropdownMenuTrigger,
|
|
4
|
+
DropdownMenuContent,
|
|
5
|
+
DropdownMenuItem,
|
|
6
|
+
DropdownMenuSeparator,
|
|
7
|
+
Button
|
|
8
|
+
} from '@clidey/ux'
|
|
2
9
|
import { ChevronDownIcon } from '@heroicons/react/20/solid'
|
|
3
10
|
import type { ComponentChildren } from 'preact'
|
|
11
|
+
import type { ReactNode } from 'preact/compat'
|
|
4
12
|
|
|
5
13
|
interface DropdownItem {
|
|
6
14
|
icon?: ComponentChildren
|
|
@@ -11,39 +19,35 @@ interface DropdownItem {
|
|
|
11
19
|
}
|
|
12
20
|
|
|
13
21
|
interface DropdownProps {
|
|
14
|
-
buttonLabel: string
|
|
22
|
+
buttonLabel: string | ReactNode;
|
|
15
23
|
items: DropdownItem[]
|
|
16
24
|
className?: string
|
|
17
25
|
}
|
|
18
26
|
|
|
19
27
|
export default function Dropdown({ buttonLabel, items, className = '' }: DropdownProps) {
|
|
20
28
|
return (
|
|
21
|
-
<
|
|
22
|
-
<
|
|
23
|
-
<
|
|
29
|
+
<DropdownMenu>
|
|
30
|
+
<DropdownMenuTrigger>
|
|
31
|
+
<Button className={className}>
|
|
24
32
|
{buttonLabel}
|
|
25
|
-
<ChevronDownIcon
|
|
26
|
-
</
|
|
27
|
-
</
|
|
28
|
-
|
|
29
|
-
<MenuItems
|
|
30
|
-
transition
|
|
31
|
-
className="absolute left-0 right-0 z-10 mt-2 w-full origin-top-right divide-y divide-[#444444] rounded-md bg-[#1e1e1e] shadow-lg ring-1 ring-[#444444]/50 transition focus:outline-hidden data-closed:scale-95 data-closed:transform data-closed:opacity-0 data-enter:duration-100 data-enter:ease-out data-leave:duration-75 data-leave:ease-in">
|
|
33
|
+
<ChevronDownIcon className="ml-2 h-4 w-4" />
|
|
34
|
+
</Button>
|
|
35
|
+
</DropdownMenuTrigger>
|
|
36
|
+
<DropdownMenuContent>
|
|
32
37
|
{items.map((item, index) => (
|
|
33
|
-
|
|
34
|
-
<
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
</div>
|
|
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
|
+
</>
|
|
45
49
|
))}
|
|
46
|
-
</
|
|
47
|
-
</
|
|
50
|
+
</DropdownMenuContent>
|
|
51
|
+
</DropdownMenu>
|
|
48
52
|
)
|
|
49
53
|
}
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
+
import { Spinner } from '@clidey/ux';
|
|
1
2
|
import classNames from "classnames";
|
|
2
3
|
|
|
3
4
|
type ILoadingProps = {
|
|
4
5
|
className?: string;
|
|
5
|
-
|
|
6
|
+
showText?: boolean;
|
|
6
7
|
loadingText?: string;
|
|
7
8
|
textClassName?: string;
|
|
8
9
|
}
|
|
9
10
|
|
|
10
|
-
export const Loading = ({ className,
|
|
11
|
+
export const Loading = ({ className, showText = false, loadingText, textClassName }: ILoadingProps) => {
|
|
11
12
|
return (
|
|
12
|
-
<div className="h-full w-full flex flex-col justify-center items-center gap-2" role="status">
|
|
13
|
-
<
|
|
14
|
-
<path d="M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z" fill="currentColor"/>
|
|
15
|
-
<path d="M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z" fill="currentFill"/>
|
|
16
|
-
</svg>
|
|
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} />
|
|
17
15
|
{
|
|
18
|
-
|
|
16
|
+
showText &&
|
|
19
17
|
<div className={classNames("text-sm text-gray-500", textClassName)}>{ loadingText ?? "Loading..."}</div>
|
|
20
18
|
}
|
|
21
19
|
</div>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import classNames from 'classnames';
|
|
2
2
|
import { useMemo } from 'preact/hooks';
|
|
3
|
+
import { Link } from 'wouter-preact';
|
|
3
4
|
import { usePathname } from './hooks';
|
|
4
5
|
import { ALL_NAVIGATION } from './store';
|
|
5
|
-
import { Link } from 'wouter-preact';
|
|
6
6
|
|
|
7
7
|
export function Navigation() {
|
|
8
8
|
const pathname = usePathname();
|
|
@@ -20,23 +20,25 @@ export function Navigation() {
|
|
|
20
20
|
}, [effectivePath]);
|
|
21
21
|
|
|
22
22
|
return (
|
|
23
|
-
<nav className="
|
|
23
|
+
<nav className="dory-navigation text-base lg:text-sm">
|
|
24
24
|
<ul role="list" className="space-y-9">
|
|
25
25
|
{currentTab && (
|
|
26
26
|
<li key={currentTab.title}>
|
|
27
|
-
<h2 className="font-display font-medium text-
|
|
27
|
+
<h2 className="font-display font-medium text-xs">{currentTab.title}</h2>
|
|
28
28
|
{currentTab.groups.map(group => (
|
|
29
29
|
<div key={group.title}>
|
|
30
|
-
<h3 className="mt-4 text-sm font-semibold
|
|
30
|
+
<h3 className="mt-4 text-sm font-semibold">{group.title}</h3>
|
|
31
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
32
|
{group.pages.map((page) => {
|
|
33
33
|
const isActive = effectivePath === page.href;
|
|
34
34
|
return (
|
|
35
35
|
<li key={page.href} className="relative">
|
|
36
|
-
<Link
|
|
36
|
+
<Link
|
|
37
|
+
href={page.href}
|
|
38
|
+
className={classNames(
|
|
37
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',
|
|
38
40
|
{
|
|
39
|
-
'font-semibold text-
|
|
41
|
+
'font-semibold text-brand-foreground': isActive,
|
|
40
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
|
|
41
43
|
},
|
|
42
44
|
)}>
|
|
@@ -1,97 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { createContext, type ComponentChildren } from 'preact';
|
|
4
|
-
import { useContext, useState } from 'preact/hooks';
|
|
5
|
-
|
|
6
|
-
interface Notification {
|
|
7
|
-
id: number;
|
|
8
|
-
message: string;
|
|
9
|
-
description?: string;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
interface NotificationContextType {
|
|
13
|
-
showNotification: (message: string, description?: string) => void;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const NotificationContext = createContext<NotificationContextType | null>(null);
|
|
1
|
+
import { toast } from '@clidey/ux';
|
|
2
|
+
import { InfoIcon } from 'lucide-react';
|
|
17
3
|
|
|
18
4
|
export function useNotification() {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
interface NotificationProviderProps {
|
|
27
|
-
children: ComponentChildren;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export function NotificationProvider({ children }: NotificationProviderProps) {
|
|
31
|
-
const [notifications, setNotifications] = useState<Notification[]>([]);
|
|
32
|
-
|
|
33
|
-
const showNotification = (message: string, description?: string) => {
|
|
34
|
-
const id = Date.now();
|
|
35
|
-
setNotifications(prev => [...prev, { id, message, description }]);
|
|
36
|
-
|
|
37
|
-
// Auto-dismiss after 5 seconds
|
|
38
|
-
setTimeout(() => {
|
|
39
|
-
setNotifications(prev => prev.filter(notif => notif.id !== id));
|
|
40
|
-
}, 5000);
|
|
5
|
+
return {
|
|
6
|
+
showNotification: (message: string, description?: string) => {
|
|
7
|
+
toast(message, {
|
|
8
|
+
icon: <InfoIcon className="h-4 w-4" />,
|
|
9
|
+
description: description,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
41
12
|
};
|
|
42
|
-
|
|
43
|
-
// const dismissNotification = (id: number) => {
|
|
44
|
-
// setNotifications(prev => prev.filter(notif => notif.id !== id));
|
|
45
|
-
// };
|
|
46
|
-
|
|
47
|
-
return (
|
|
48
|
-
<NotificationContext.Provider value={{ showNotification }}>
|
|
49
|
-
<div
|
|
50
|
-
aria-live="assertive"
|
|
51
|
-
className="pointer-events-none fixed inset-0 flex items-start justify-end px-8 py-6 sm:p-6 z-[100]"
|
|
52
|
-
>
|
|
53
|
-
<div className="flex w-full flex-col items-end space-y-4">
|
|
54
|
-
{notifications.map((notif) => (
|
|
55
|
-
<Transition
|
|
56
|
-
key={notif.id}
|
|
57
|
-
show={true}
|
|
58
|
-
enter="transform ease-out duration-300 transition"
|
|
59
|
-
enterFrom="translate-y-2 opacity-0 sm:translate-y-0 sm:translate-x-2"
|
|
60
|
-
enterTo="translate-y-0 opacity-100 sm:translate-x-0"
|
|
61
|
-
leave="transition ease-in duration-100"
|
|
62
|
-
leaveFrom="opacity-100"
|
|
63
|
-
leaveTo="opacity-0"
|
|
64
|
-
>
|
|
65
|
-
<div className="pointer-events-auto w-full max-w-sm overflow-hidden rounded-lg bg-[#222222] shadow-lg ring-1 ring-[#444444]/5">
|
|
66
|
-
<div className="p-4">
|
|
67
|
-
<div className="flex items-start">
|
|
68
|
-
<div className="shrink-0">
|
|
69
|
-
<CheckCircleIcon aria-hidden="true" className="size-6 text-green-400" />
|
|
70
|
-
</div>
|
|
71
|
-
<div className="ml-3 w-0 flex-1 pt-0.5">
|
|
72
|
-
<p className="text-sm font-medium text-[#ffffff]">{notif.message}</p>
|
|
73
|
-
{notif.description && (
|
|
74
|
-
<p className="mt-1 text-sm text-[#aaaaaa]">{notif.description}</p>
|
|
75
|
-
)}
|
|
76
|
-
</div>
|
|
77
|
-
{/* <div className="ml-4 flex shrink-0">
|
|
78
|
-
<button
|
|
79
|
-
type="button"
|
|
80
|
-
onClick={() => dismissNotification(notif.id)}
|
|
81
|
-
className="inline-flex rounded-md bg-transparent text-[#aaaaaa] hover:text-[#ffffff] focus:ring-2 focus:ring-[#444444] focus:ring-offset-2 focus:outline-hidden"
|
|
82
|
-
>
|
|
83
|
-
<span className="sr-only">Close</span>
|
|
84
|
-
<XMarkIcon aria-hidden="true" className="size-5" />
|
|
85
|
-
</button>
|
|
86
|
-
</div> */}
|
|
87
|
-
</div>
|
|
88
|
-
</div>
|
|
89
|
-
</div>
|
|
90
|
-
</Transition>
|
|
91
|
-
))}
|
|
92
|
-
</div>
|
|
93
|
-
</div>
|
|
94
|
-
{children}
|
|
95
|
-
</NotificationContext.Provider>
|
|
96
|
-
);
|
|
97
13
|
}
|
|
@@ -12,7 +12,7 @@ export default function Routes() {
|
|
|
12
12
|
const [loading, setLoading] = useState(true);
|
|
13
13
|
|
|
14
14
|
useEffect(() => {
|
|
15
|
-
const links = document.querySelectorAll('.
|
|
15
|
+
const links = document.querySelectorAll('.dory-navigation a');
|
|
16
16
|
const listeners: (() => void)[] = [];
|
|
17
17
|
const preloaded = new Set();
|
|
18
18
|
|