@classic-homes/theme-docs 0.1.0 → 0.2.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 (52) hide show
  1. package/dist/lib/components/Breadcrumbs.svelte +55 -0
  2. package/dist/lib/components/Breadcrumbs.svelte.d.ts +14 -0
  3. package/dist/lib/components/CategoryIndex.svelte +51 -0
  4. package/dist/lib/components/CategoryIndex.svelte.d.ts +13 -0
  5. package/dist/lib/components/DocPage.svelte +172 -0
  6. package/dist/lib/components/DocPage.svelte.d.ts +60 -0
  7. package/dist/lib/components/DocPager.svelte +49 -0
  8. package/dist/lib/components/DocPager.svelte.d.ts +12 -0
  9. package/dist/lib/components/MarkdownPage.svelte +3 -1
  10. package/dist/lib/components/MermaidDiagram.svelte +2 -0
  11. package/dist/lib/components/MermaidInit.svelte +2 -0
  12. package/dist/lib/components/TableOfContents.svelte +114 -125
  13. package/dist/lib/components/TableOfContents.svelte.d.ts +11 -4
  14. package/dist/lib/components/TagIndex.svelte +42 -0
  15. package/dist/lib/components/TagIndex.svelte.d.ts +14 -0
  16. package/dist/lib/components/TagList.svelte +45 -0
  17. package/dist/lib/components/TagList.svelte.d.ts +15 -0
  18. package/dist/lib/components/TocPanel.svelte +27 -9
  19. package/dist/lib/components/TocPanel.svelte.d.ts +10 -3
  20. package/dist/lib/components/enhance.d.ts +29 -0
  21. package/dist/lib/components/enhance.js +179 -0
  22. package/dist/lib/components/sidebar.d.ts +33 -0
  23. package/dist/lib/components/sidebar.js +84 -0
  24. package/dist/lib/content/browser.d.ts +6 -0
  25. package/dist/lib/content/browser.js +5 -0
  26. package/dist/lib/content/index.d.ts +13 -0
  27. package/dist/lib/content/index.js +12 -0
  28. package/dist/lib/content/load.d.ts +77 -0
  29. package/dist/lib/content/load.js +366 -0
  30. package/dist/lib/content/nav.d.ts +36 -0
  31. package/dist/lib/content/nav.js +81 -0
  32. package/dist/lib/content/render.d.ts +38 -0
  33. package/dist/lib/content/render.js +84 -0
  34. package/dist/lib/content/types.d.ts +90 -0
  35. package/dist/lib/content/types.js +5 -0
  36. package/dist/lib/index.d.ts +14 -2
  37. package/dist/lib/index.js +14 -2
  38. package/dist/lib/parser/api.d.ts +12 -0
  39. package/dist/lib/parser/api.js +10 -0
  40. package/dist/lib/parser/extensions.d.ts +27 -15
  41. package/dist/lib/parser/extensions.js +58 -53
  42. package/dist/lib/parser/index.d.ts +4 -1
  43. package/dist/lib/parser/index.js +104 -27
  44. package/dist/lib/sanitize/index.d.ts +11 -0
  45. package/dist/lib/sanitize/index.js +122 -0
  46. package/dist/lib/search/index.d.ts +57 -0
  47. package/dist/lib/search/index.js +82 -0
  48. package/dist/lib/styles/markdown.css +138 -0
  49. package/dist/lib/types/frontmatter.d.ts +21 -0
  50. package/dist/lib/vite/index.d.ts +17 -0
  51. package/dist/lib/vite/index.js +38 -0
  52. package/package.json +51 -4
@@ -0,0 +1,38 @@
1
+ /**
2
+ * `@classic-homes/theme-docs/vite` — regenerate docs content while you write.
3
+ *
4
+ * Runs your `generate` step (typically `loadDocs` → `renderDocs` → write JSON) when the
5
+ * dev server starts and whenever a file under `watch` changes, then reloads the page.
6
+ * Builds run it once before bundling, so the generated files are always current.
7
+ */
8
+ import path from 'node:path';
9
+ export function docsContent(options) {
10
+ const { generate, debounce = 200 } = options;
11
+ const watched = (Array.isArray(options.watch) ? options.watch : [options.watch]).map((p) => path.resolve(p));
12
+ const isWatched = (file) => watched.some((w) => file === w || file.startsWith(w + path.sep));
13
+ let timer;
14
+ return {
15
+ name: 'classic-theme-docs:content',
16
+ async buildStart() {
17
+ await generate();
18
+ },
19
+ configureServer(server) {
20
+ server.watcher.add(watched);
21
+ server.watcher.on('all', (_event, file) => {
22
+ if (!isWatched(path.resolve(file)))
23
+ return;
24
+ clearTimeout(timer);
25
+ timer = setTimeout(async () => {
26
+ try {
27
+ await generate();
28
+ server.config.logger.info('[docs] content regenerated', { timestamp: true });
29
+ server.ws.send({ type: 'full-reload' });
30
+ }
31
+ catch (err) {
32
+ server.config.logger.error(`[docs] content regeneration failed:\n${err.stack ?? err}`);
33
+ }
34
+ }, debounce);
35
+ });
36
+ },
37
+ };
38
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@classic-homes/theme-docs",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Markdown documentation components for the Classic theme system",
5
5
  "type": "module",
6
6
  "main": "./dist/lib/index.js",
@@ -14,6 +14,36 @@
14
14
  "import": "./dist/lib/index.js",
15
15
  "default": "./dist/lib/index.js"
16
16
  },
17
+ "./parser": {
18
+ "types": "./dist/lib/parser/api.d.ts",
19
+ "import": "./dist/lib/parser/api.js",
20
+ "default": "./dist/lib/parser/api.js"
21
+ },
22
+ "./sanitize": {
23
+ "types": "./dist/lib/sanitize/index.d.ts",
24
+ "import": "./dist/lib/sanitize/index.js",
25
+ "default": "./dist/lib/sanitize/index.js"
26
+ },
27
+ "./content": {
28
+ "types": "./dist/lib/content/index.d.ts",
29
+ "import": "./dist/lib/content/index.js",
30
+ "default": "./dist/lib/content/index.js"
31
+ },
32
+ "./nav": {
33
+ "types": "./dist/lib/content/browser.d.ts",
34
+ "import": "./dist/lib/content/browser.js",
35
+ "default": "./dist/lib/content/browser.js"
36
+ },
37
+ "./search": {
38
+ "types": "./dist/lib/search/index.d.ts",
39
+ "import": "./dist/lib/search/index.js",
40
+ "default": "./dist/lib/search/index.js"
41
+ },
42
+ "./vite": {
43
+ "types": "./dist/lib/vite/index.d.ts",
44
+ "import": "./dist/lib/vite/index.js",
45
+ "default": "./dist/lib/vite/index.js"
46
+ },
17
47
  "./styles": "./dist/lib/styles/markdown.css"
18
48
  },
19
49
  "sideEffects": [
@@ -26,7 +56,9 @@
26
56
  "build": "svelte-package -i src",
27
57
  "dev": "svelte-package -i src --watch",
28
58
  "clean": "node ../../scripts/rm.mjs dist",
29
- "typecheck": "svelte-check --tsconfig ./tsconfig.json"
59
+ "typecheck": "svelte-check --tsconfig ./tsconfig.json",
60
+ "test": "vitest run",
61
+ "test:watch": "vitest"
30
62
  },
31
63
  "keywords": [
32
64
  "svelte",
@@ -44,12 +76,17 @@
44
76
  "access": "public"
45
77
  },
46
78
  "peerDependencies": {
79
+ "@classic-homes/theme-svelte": ">=1.16.0",
47
80
  "mermaid": "^11.0.0",
48
- "svelte": "^5.0.0"
81
+ "svelte": "^5.0.0",
82
+ "vite": ">=5.0.0"
49
83
  },
50
84
  "peerDependenciesMeta": {
51
85
  "mermaid": {
52
86
  "optional": true
87
+ },
88
+ "vite": {
89
+ "optional": true
53
90
  }
54
91
  },
55
92
  "dependencies": {
@@ -57,15 +94,25 @@
57
94
  "clsx": "^2.1.0",
58
95
  "js-yaml": "^4.3.2",
59
96
  "marked": "^17.0.0",
97
+ "minisearch": "7.2.0",
98
+ "sanitize-html": "2.18.0",
60
99
  "shiki": "^1.0.0",
61
100
  "tailwind-merge": "^2.2.0",
62
101
  "tailwind-variants": "^0.3.0"
63
102
  },
64
103
  "devDependencies": {
104
+ "@classic-homes/theme-svelte": "*",
65
105
  "@sveltejs/package": "^2.3.0",
106
+ "@sveltejs/vite-plugin-svelte": "7.2.0",
107
+ "@testing-library/jest-dom": "6.9.1",
108
+ "@testing-library/svelte": "5.4.2",
66
109
  "@types/js-yaml": "4.0.9",
110
+ "@types/sanitize-html": "2.16.2",
111
+ "jsdom": "28.1.0",
67
112
  "svelte": "^5.0.0",
68
113
  "svelte-check": "^4.0.0",
69
- "typescript": "^5.3.0"
114
+ "typescript": "^5.3.0",
115
+ "vite": "8.1.3",
116
+ "vitest": "4.1.11"
70
117
  }
71
118
  }