sdocs 0.0.3 → 0.0.5

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 (194) hide show
  1. package/bin/sdocs.js +1 -1
  2. package/dist/app-gen.d.ts +10 -0
  3. package/dist/app-gen.js +147 -0
  4. package/dist/cli.js +71 -0
  5. package/dist/client/App.svelte +151 -0
  6. package/dist/client/App.svelte.d.ts +14 -0
  7. package/dist/client/CollapsiblePanel.svelte +63 -0
  8. package/dist/client/CollapsiblePanel.svelte.d.ts +9 -0
  9. package/dist/client/ComponentView.svelte +321 -0
  10. package/dist/client/ComponentView.svelte.d.ts +10 -0
  11. package/dist/client/ControlsPanel.svelte +191 -0
  12. package/dist/client/ControlsPanel.svelte.d.ts +13 -0
  13. package/dist/client/DataTable.svelte +78 -0
  14. package/dist/client/DataTable.svelte.d.ts +11 -0
  15. package/dist/client/HomePage.svelte +92 -0
  16. package/dist/client/HomePage.svelte.d.ts +8 -0
  17. package/dist/client/LayoutView.svelte +27 -0
  18. package/dist/client/LayoutView.svelte.d.ts +8 -0
  19. package/dist/client/PageView.svelte +130 -0
  20. package/dist/client/PageView.svelte.d.ts +8 -0
  21. package/dist/client/PreviewFrame.svelte +100 -0
  22. package/dist/client/PreviewFrame.svelte.d.ts +10 -0
  23. package/dist/client/Sidebar.svelte +329 -0
  24. package/dist/client/Sidebar.svelte.d.ts +16 -0
  25. package/dist/client/controls/CheckboxControl.svelte +37 -0
  26. package/dist/client/controls/CheckboxControl.svelte.d.ts +8 -0
  27. package/dist/client/controls/ColorControl.svelte +47 -0
  28. package/dist/client/controls/ColorControl.svelte.d.ts +8 -0
  29. package/dist/client/controls/DimensionControl.svelte +56 -0
  30. package/dist/client/controls/DimensionControl.svelte.d.ts +8 -0
  31. package/dist/client/controls/NumberControl.svelte +44 -0
  32. package/dist/client/controls/NumberControl.svelte.d.ts +8 -0
  33. package/dist/client/controls/SelectControl.svelte +48 -0
  34. package/dist/client/controls/SelectControl.svelte.d.ts +9 -0
  35. package/dist/client/controls/TextControl.svelte +43 -0
  36. package/dist/client/controls/TextControl.svelte.d.ts +8 -0
  37. package/dist/client/router.svelte.d.ts +11 -0
  38. package/dist/client/router.svelte.js +45 -0
  39. package/dist/client/theme.css +34 -0
  40. package/dist/client/tree-builder.d.ts +30 -0
  41. package/dist/client/tree-builder.js +162 -0
  42. package/dist/commands/build.d.ts +1 -0
  43. package/dist/commands/build.js +38 -0
  44. package/dist/commands/dev.d.ts +1 -0
  45. package/dist/commands/dev.js +40 -0
  46. package/dist/commands/init.d.ts +1 -0
  47. package/dist/commands/init.js +41 -0
  48. package/dist/commands/preview.d.ts +1 -0
  49. package/dist/commands/preview.js +25 -0
  50. package/dist/config.d.ts +7 -0
  51. package/dist/config.js +57 -0
  52. package/dist/index.d.ts +2 -2
  53. package/dist/index.js +1 -4
  54. package/dist/server/discovery.d.ts +6 -0
  55. package/dist/server/discovery.js +24 -0
  56. package/dist/server/highlighter.d.ts +4 -0
  57. package/dist/server/highlighter.js +31 -0
  58. package/dist/server/meta-parser.d.ts +11 -0
  59. package/dist/server/meta-parser.js +107 -0
  60. package/dist/server/prop-parser.d.ts +5 -0
  61. package/dist/server/prop-parser.js +275 -0
  62. package/dist/server/sdocx-parser.d.ts +11 -0
  63. package/dist/server/sdocx-parser.js +197 -0
  64. package/dist/server/snippet-compiler.d.ts +27 -0
  65. package/dist/server/snippet-compiler.js +145 -0
  66. package/dist/server/snippet-extractor.d.ts +11 -0
  67. package/dist/server/snippet-extractor.js +37 -0
  68. package/dist/server/toc-extractor.d.ts +5 -0
  69. package/dist/server/toc-extractor.js +37 -0
  70. package/dist/types.d.ts +100 -148
  71. package/dist/vite.d.ts +5 -2
  72. package/dist/vite.js +266 -2
  73. package/package.json +50 -74
  74. package/README.md +0 -43
  75. package/dist/Sdocs.svelte +0 -1210
  76. package/dist/Sdocs.svelte.d.ts +0 -5
  77. package/dist/cli/app-plugin.d.ts +0 -7
  78. package/dist/cli/app-plugin.js +0 -69
  79. package/dist/cli/config.d.ts +0 -12
  80. package/dist/cli/config.js +0 -34
  81. package/dist/cli/index.js +0 -72
  82. package/dist/cli/server.d.ts +0 -2
  83. package/dist/cli/server.js +0 -64
  84. package/dist/docgen.d.ts +0 -47
  85. package/dist/docgen.js +0 -463
  86. package/dist/internal/ComponentPreview.svelte +0 -58
  87. package/dist/internal/ComponentPreview.svelte.d.ts +0 -17
  88. package/dist/internal/CssPropsTable.svelte +0 -239
  89. package/dist/internal/CssPropsTable.svelte.d.ts +0 -11
  90. package/dist/internal/Home.svelte +0 -92
  91. package/dist/internal/Home.svelte.d.ts +0 -9
  92. package/dist/internal/MethodsTable.svelte +0 -72
  93. package/dist/internal/MethodsTable.svelte.d.ts +0 -7
  94. package/dist/internal/PropsTable.svelte +0 -342
  95. package/dist/internal/PropsTable.svelte.d.ts +0 -12
  96. package/dist/internal/Showcase.svelte +0 -130
  97. package/dist/internal/Showcase.svelte.d.ts +0 -21
  98. package/dist/ui/Badge/Badge.docs.svelte +0 -46
  99. package/dist/ui/Badge/Badge.docs.svelte.d.ts +0 -26
  100. package/dist/ui/Badge/Badge.svelte +0 -59
  101. package/dist/ui/Badge/Badge.svelte.d.ts +0 -17
  102. package/dist/ui/Badge/index.d.ts +0 -1
  103. package/dist/ui/Badge/index.js +0 -1
  104. package/dist/ui/Checkbox/Checkbox.docs.svelte +0 -51
  105. package/dist/ui/Checkbox/Checkbox.docs.svelte.d.ts +0 -27
  106. package/dist/ui/Checkbox/Checkbox.svelte +0 -169
  107. package/dist/ui/Checkbox/Checkbox.svelte.d.ts +0 -18
  108. package/dist/ui/Checkbox/index.d.ts +0 -1
  109. package/dist/ui/Checkbox/index.js +0 -1
  110. package/dist/ui/CodeBlock/CodeBlock.docs.svelte +0 -28
  111. package/dist/ui/CodeBlock/CodeBlock.docs.svelte.d.ts +0 -24
  112. package/dist/ui/CodeBlock/CodeBlock.svelte +0 -101
  113. package/dist/ui/CodeBlock/CodeBlock.svelte.d.ts +0 -7
  114. package/dist/ui/CodeBlock/index.d.ts +0 -1
  115. package/dist/ui/CodeBlock/index.js +0 -1
  116. package/dist/ui/Frame/Frame.docs.svelte +0 -140
  117. package/dist/ui/Frame/Frame.docs.svelte.d.ts +0 -26
  118. package/dist/ui/Frame/Frame.svelte +0 -88
  119. package/dist/ui/Frame/Frame.svelte.d.ts +0 -15
  120. package/dist/ui/Frame/index.d.ts +0 -1
  121. package/dist/ui/Frame/index.js +0 -1
  122. package/dist/ui/InputNumber/InputNumber.docs.svelte +0 -50
  123. package/dist/ui/InputNumber/InputNumber.docs.svelte.d.ts +0 -26
  124. package/dist/ui/InputNumber/InputNumber.svelte +0 -275
  125. package/dist/ui/InputNumber/InputNumber.svelte.d.ts +0 -26
  126. package/dist/ui/InputNumber/index.d.ts +0 -1
  127. package/dist/ui/InputNumber/index.js +0 -1
  128. package/dist/ui/InputText/InputText.docs.svelte +0 -43
  129. package/dist/ui/InputText/InputText.docs.svelte.d.ts +0 -26
  130. package/dist/ui/InputText/InputText.svelte +0 -116
  131. package/dist/ui/InputText/InputText.svelte.d.ts +0 -22
  132. package/dist/ui/InputText/index.d.ts +0 -1
  133. package/dist/ui/InputText/index.js +0 -1
  134. package/dist/ui/Panel/CollapsiblePanel.docs.svelte +0 -45
  135. package/dist/ui/Panel/CollapsiblePanel.docs.svelte.d.ts +0 -25
  136. package/dist/ui/Panel/CollapsiblePanel.svelte +0 -93
  137. package/dist/ui/Panel/CollapsiblePanel.svelte.d.ts +0 -14
  138. package/dist/ui/Panel/index.d.ts +0 -1
  139. package/dist/ui/Panel/index.js +0 -1
  140. package/dist/ui/Placeholder/Placeholder.docs.svelte +0 -49
  141. package/dist/ui/Placeholder/Placeholder.docs.svelte.d.ts +0 -26
  142. package/dist/ui/Placeholder/Placeholder.svelte +0 -99
  143. package/dist/ui/Placeholder/Placeholder.svelte.d.ts +0 -21
  144. package/dist/ui/Placeholder/index.d.ts +0 -1
  145. package/dist/ui/Placeholder/index.js +0 -1
  146. package/dist/ui/Radio/Radio.docs.svelte +0 -67
  147. package/dist/ui/Radio/Radio.docs.svelte.d.ts +0 -27
  148. package/dist/ui/Radio/Radio.svelte +0 -165
  149. package/dist/ui/Radio/Radio.svelte.d.ts +0 -22
  150. package/dist/ui/Radio/RadioGroup.docs.svelte +0 -70
  151. package/dist/ui/Radio/RadioGroup.docs.svelte.d.ts +0 -27
  152. package/dist/ui/Radio/RadioGroup.svelte +0 -98
  153. package/dist/ui/Radio/RadioGroup.svelte.d.ts +0 -27
  154. package/dist/ui/Radio/index.d.ts +0 -2
  155. package/dist/ui/Radio/index.js +0 -2
  156. package/dist/ui/SegmentControl/SegmentControl.docs.svelte +0 -54
  157. package/dist/ui/SegmentControl/SegmentControl.docs.svelte.d.ts +0 -25
  158. package/dist/ui/SegmentControl/SegmentControl.svelte +0 -120
  159. package/dist/ui/SegmentControl/SegmentControl.svelte.d.ts +0 -18
  160. package/dist/ui/SegmentControl/index.d.ts +0 -1
  161. package/dist/ui/SegmentControl/index.js +0 -1
  162. package/dist/ui/Stack/Stack.docs.svelte +0 -63
  163. package/dist/ui/Stack/Stack.docs.svelte.d.ts +0 -26
  164. package/dist/ui/Stack/Stack.svelte +0 -45
  165. package/dist/ui/Stack/Stack.svelte.d.ts +0 -19
  166. package/dist/ui/Stack/index.d.ts +0 -1
  167. package/dist/ui/Stack/index.js +0 -1
  168. package/dist/ui/Table/Body.svelte +0 -17
  169. package/dist/ui/Table/Body.svelte.d.ts +0 -11
  170. package/dist/ui/Table/Caption.svelte +0 -17
  171. package/dist/ui/Table/Caption.svelte.d.ts +0 -11
  172. package/dist/ui/Table/Cell.svelte +0 -24
  173. package/dist/ui/Table/Cell.svelte.d.ts +0 -15
  174. package/dist/ui/Table/Foot.svelte +0 -17
  175. package/dist/ui/Table/Foot.svelte.d.ts +0 -11
  176. package/dist/ui/Table/Head.svelte +0 -17
  177. package/dist/ui/Table/Head.svelte.d.ts +0 -11
  178. package/dist/ui/Table/Header.svelte +0 -27
  179. package/dist/ui/Table/Header.svelte.d.ts +0 -17
  180. package/dist/ui/Table/Row.svelte +0 -19
  181. package/dist/ui/Table/Row.svelte.d.ts +0 -13
  182. package/dist/ui/Table/Table.docs.svelte +0 -197
  183. package/dist/ui/Table/Table.docs.svelte.d.ts +0 -28
  184. package/dist/ui/Table/Table.svelte +0 -140
  185. package/dist/ui/Table/Table.svelte.d.ts +0 -27
  186. package/dist/ui/Table/index.js +0 -10
  187. package/dist/ui/css/colors.css +0 -377
  188. package/dist/ui/css/global.css +0 -10
  189. package/dist/ui/index.d.ts +0 -12
  190. package/dist/ui/index.js +0 -12
  191. package/dist/virtual-sdocs.d.ts +0 -20
  192. package/dist/vite-plugin.d.ts +0 -18
  193. package/dist/vite-plugin.js +0 -206
  194. /package/dist/{cli/index.d.ts → cli.d.ts} +0 -0
package/dist/vite.js CHANGED
@@ -1,2 +1,266 @@
1
- // Separate entry for vite plugin (no Svelte imports)
2
- export { sdocsPlugin, default } from './vite-plugin.js';
1
+ import { readFile } from 'node:fs/promises';
2
+ import { loadConfig, resolveConfig } from './config.js';
3
+ import { discoverDocFiles, getSdocKind } from './server/discovery.js';
4
+ import { parseDocSource } from './server/meta-parser.js';
5
+ import { parseComponent } from './server/prop-parser.js';
6
+ import { extractSnippets, extractMarkupBody, hasDefaultSnippet, generateAutoDefault, } from './server/snippet-extractor.js';
7
+ import { highlight, disposeHighlighter } from './server/highlighter.js';
8
+ import { extractTocFromHtml } from './server/toc-extractor.js';
9
+ import { parseSdocx } from './server/sdocx-parser.js';
10
+ import { parseIframeId, parsePreviewUrl, resolveImportsToAbsolute, generateIframeComponent, generatePreviewHtml, iframeVirtualId, previewUrl, buildPreviewUrl, } from './server/snippet-compiler.js';
11
+ const VIRTUAL_MODULE_ID = 'virtual:sdocs';
12
+ const RESOLVED_VIRTUAL_ID = '\0virtual:sdocs';
13
+ const IFRAME_PREFIX = '/@sdocs/iframe/';
14
+ const PREVIEW_PREFIX = '/@sdocs/preview/';
15
+ export function sdocsPlugin(userConfig) {
16
+ let config;
17
+ let root;
18
+ let server;
19
+ let docEntries = new Map();
20
+ let docImportsCache = new Map();
21
+ const buildMode = userConfig?._buildMode ?? false;
22
+ return {
23
+ name: 'sdocs',
24
+ async configResolved(resolvedConfig) {
25
+ root = resolvedConfig.root;
26
+ if (userConfig) {
27
+ config = resolveConfig(userConfig);
28
+ }
29
+ else {
30
+ config = await loadConfig(root);
31
+ }
32
+ },
33
+ configureServer(devServer) {
34
+ server = devServer;
35
+ // Middleware: serve iframe preview HTML pages
36
+ server.middlewares.use((req, res, next) => {
37
+ if (!req.url?.startsWith(PREVIEW_PREFIX))
38
+ return next();
39
+ const parsed = parsePreviewUrl(req.url);
40
+ if (!parsed)
41
+ return next();
42
+ const entry = docEntries.get(parsed.docFilePath);
43
+ if (!entry) {
44
+ res.statusCode = 404;
45
+ res.end('Doc not found');
46
+ return;
47
+ }
48
+ const snippet = entry.snippets.find((s) => s.name === parsed.snippetName);
49
+ if (!snippet) {
50
+ res.statusCode = 404;
51
+ res.end('Snippet not found');
52
+ return;
53
+ }
54
+ const iframeId = iframeVirtualId(parsed.docFilePath, parsed.snippetName);
55
+ const html = generatePreviewHtml(iframeId, config.css);
56
+ res.setHeader('Content-Type', 'text/html');
57
+ // Let Vite transform the HTML (resolves imports, injects HMR client)
58
+ server.transformIndexHtml(req.url, html).then((transformed) => {
59
+ res.end(transformed);
60
+ }).catch((err) => {
61
+ console.error('[sdocs] Preview HTML transform error:', err);
62
+ res.statusCode = 500;
63
+ res.end('Internal error');
64
+ });
65
+ });
66
+ // Watch for .sdoc file add/unlink/change
67
+ server.watcher.on('add', async (filePath) => {
68
+ if (isDocFile(filePath)) {
69
+ console.log(`[sdocs] New doc file: ${filePath}`);
70
+ await processDocFile(filePath);
71
+ invalidateVirtualModule();
72
+ }
73
+ });
74
+ server.watcher.on('unlink', (filePath) => {
75
+ if (isDocFile(filePath)) {
76
+ console.log(`[sdocs] Removed doc file: ${filePath}`);
77
+ docEntries.delete(filePath);
78
+ docImportsCache.delete(filePath);
79
+ invalidateVirtualModule();
80
+ }
81
+ });
82
+ server.watcher.on('change', async (filePath) => {
83
+ if (isDocFile(filePath)) {
84
+ console.log(`[sdocs] Doc file changed: ${filePath}`);
85
+ await processDocFile(filePath);
86
+ invalidateVirtualModule();
87
+ }
88
+ else if (isComponentReferencedByDoc(filePath)) {
89
+ console.log(`[sdocs] Component changed: ${filePath}`);
90
+ await reprocessComponentEntries(filePath);
91
+ invalidateVirtualModule();
92
+ }
93
+ });
94
+ },
95
+ async buildStart() {
96
+ const files = await discoverDocFiles(config.include, root);
97
+ console.log(`[sdocs] Discovered ${files.length} doc file(s):`);
98
+ for (const file of files) {
99
+ console.log(` - ${file}`);
100
+ await processDocFile(file);
101
+ }
102
+ },
103
+ resolveId(id) {
104
+ if (id === VIRTUAL_MODULE_ID)
105
+ return RESOLVED_VIRTUAL_ID;
106
+ if (id.startsWith(IFRAME_PREFIX))
107
+ return '\0' + id;
108
+ },
109
+ load(id) {
110
+ if (id === RESOLVED_VIRTUAL_ID) {
111
+ return generateVirtualModule();
112
+ }
113
+ // Virtual iframe wrapper component
114
+ if (id.startsWith('\0' + IFRAME_PREFIX)) {
115
+ const realId = id.slice(1);
116
+ const parsed = parseIframeId(realId);
117
+ if (!parsed)
118
+ return null;
119
+ const entry = docEntries.get(parsed.docFilePath);
120
+ if (!entry)
121
+ return null;
122
+ const snippet = entry.snippets.find((s) => s.name === parsed.snippetName);
123
+ if (!snippet)
124
+ return null;
125
+ const absoluteImports = docImportsCache.get(parsed.docFilePath) ?? [];
126
+ return generateIframeComponent(absoluteImports, snippet.body);
127
+ }
128
+ },
129
+ async buildEnd() {
130
+ await disposeHighlighter();
131
+ },
132
+ };
133
+ // ─── Process a single doc file ───
134
+ async function processDocFile(filePath) {
135
+ const source = await readFile(filePath, 'utf-8');
136
+ const kind = getSdocKind(filePath);
137
+ const isSdocx = filePath.endsWith('.sdocx');
138
+ let meta;
139
+ let componentPath = null;
140
+ let imports = [];
141
+ let snippets;
142
+ let toc;
143
+ if (isSdocx) {
144
+ // Markdown format: parse with mdsvex
145
+ const result = await parseSdocx(source, filePath, kind);
146
+ meta = result.meta;
147
+ componentPath = result.componentPath;
148
+ imports = result.imports;
149
+ snippets = result.snippets;
150
+ toc = result.toc;
151
+ // For component kind, auto-generate Default if missing
152
+ if (kind === 'component') {
153
+ const hasDefault = snippets.some((s) => s.name === 'Default');
154
+ if (!hasDefault && componentPath) {
155
+ const componentName = componentPath.split('/').pop()?.replace('.svelte', '') ?? 'Component';
156
+ snippets.unshift({
157
+ name: 'Default',
158
+ body: generateAutoDefault(componentName),
159
+ });
160
+ }
161
+ }
162
+ }
163
+ else {
164
+ // Svelte format: existing pipeline
165
+ const parsed = parseDocSource(source, filePath);
166
+ meta = parsed.meta;
167
+ componentPath = parsed.componentPath;
168
+ imports = parsed.imports;
169
+ if (kind === 'page' || kind === 'layout') {
170
+ const body = extractMarkupBody(source);
171
+ snippets = [{ name: 'Content', body }];
172
+ if (kind === 'page') {
173
+ toc = extractTocFromHtml(body);
174
+ }
175
+ }
176
+ else {
177
+ snippets = extractSnippets(source);
178
+ if (!hasDefaultSnippet(snippets)) {
179
+ const componentName = componentPath?.split('/').pop()?.replace('.svelte', '') ?? 'Component';
180
+ snippets.unshift({
181
+ name: 'Default',
182
+ body: generateAutoDefault(componentName),
183
+ });
184
+ }
185
+ }
186
+ }
187
+ // Cache resolved imports for iframe component generation
188
+ docImportsCache.set(filePath, resolveImportsToAbsolute(imports, filePath));
189
+ let componentData = null;
190
+ let highlightedSource = null;
191
+ if (kind === 'component' && componentPath) {
192
+ try {
193
+ componentData = await parseComponent(componentPath);
194
+ const componentSource = await readFile(componentPath, 'utf-8');
195
+ highlightedSource = await highlight(componentSource);
196
+ }
197
+ catch (err) {
198
+ console.warn(`[sdocs] Failed to parse component: ${componentPath}`, err);
199
+ }
200
+ }
201
+ for (const snippet of snippets) {
202
+ snippet.highlightedHtml = await highlight(snippet.body);
203
+ }
204
+ docEntries.set(filePath, {
205
+ kind,
206
+ filePath,
207
+ componentPath,
208
+ meta,
209
+ componentData,
210
+ snippets,
211
+ highlightedSource,
212
+ toc,
213
+ });
214
+ }
215
+ // ─── Generate the virtual module ───
216
+ function generateVirtualModule() {
217
+ const entries = Array.from(docEntries.values());
218
+ const data = entries.map((e) => ({
219
+ kind: e.kind,
220
+ filePath: e.filePath,
221
+ componentPath: e.componentPath,
222
+ meta: e.meta,
223
+ componentData: e.componentData,
224
+ snippets: e.snippets.map((s) => ({
225
+ name: s.name,
226
+ body: s.body,
227
+ highlightedHtml: s.highlightedHtml,
228
+ previewUrl: buildMode ? buildPreviewUrl(e.filePath, s.name) : previewUrl(e.filePath, s.name),
229
+ })),
230
+ highlightedSource: e.highlightedSource,
231
+ toc: e.toc,
232
+ }));
233
+ // Extract named CSS stylesheet names (empty array if single string or null)
234
+ const cssNames = config.css && typeof config.css === 'object'
235
+ ? Object.keys(config.css)
236
+ : [];
237
+ return `export const docs = ${JSON.stringify(data)};\nexport const cssNames = ${JSON.stringify(cssNames)};\nexport default docs;`;
238
+ }
239
+ // ─── HMR helpers ───
240
+ function invalidateVirtualModule() {
241
+ if (!server)
242
+ return;
243
+ const mod = server.moduleGraph.getModuleById(RESOLVED_VIRTUAL_ID);
244
+ if (mod) {
245
+ server.moduleGraph.invalidateModule(mod);
246
+ server.ws.send({ type: 'full-reload' });
247
+ }
248
+ }
249
+ function isDocFile(filePath) {
250
+ return filePath.endsWith('.sdoc') || filePath.endsWith('.sdocx');
251
+ }
252
+ function isComponentReferencedByDoc(filePath) {
253
+ for (const entry of docEntries.values()) {
254
+ if (entry.componentPath === filePath)
255
+ return true;
256
+ }
257
+ return false;
258
+ }
259
+ async function reprocessComponentEntries(componentPath) {
260
+ for (const [docPath, entry] of docEntries) {
261
+ if (entry.componentPath === componentPath) {
262
+ await processDocFile(docPath);
263
+ }
264
+ }
265
+ }
266
+ }
package/package.json CHANGED
@@ -1,76 +1,52 @@
1
1
  {
2
- "name": "sdocs",
3
- "version": "0.0.3",
4
- "bin": {
5
- "sdocs": "./bin/sdocs.js"
6
- },
7
- "scripts": {
8
- "dev": "vite dev",
9
- "build": "vite build && npm run prepack",
10
- "preview": "vite preview",
11
- "prepare": "svelte-kit sync || echo ''",
12
- "prepack": "svelte-kit sync && svelte-package && publint",
13
- "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
14
- "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"
15
- },
16
- "files": [
17
- "dist",
18
- "bin",
19
- "!dist/**/*.test.*",
20
- "!dist/**/*.spec.*"
21
- ],
22
- "sideEffects": [
23
- "**/*.css"
24
- ],
25
- "svelte": "./dist/index.js",
26
- "types": "./dist/index.d.ts",
27
- "type": "module",
28
- "exports": {
29
- ".": {
30
- "types": "./dist/index.d.ts",
31
- "svelte": "./dist/index.js",
32
- "default": "./dist/index.js"
33
- },
34
- "./vite": {
35
- "types": "./dist/vite.d.ts",
36
- "default": "./dist/vite.js"
37
- },
38
- "./virtual": {
39
- "types": "./dist/virtual-sdocs.d.ts"
40
- },
41
- "./Sdocs.svelte": {
42
- "svelte": "./dist/Sdocs.svelte",
43
- "default": "./dist/Sdocs.svelte"
44
- },
45
- "./ui/css/global.css": "./dist/ui/css/global.css"
46
- },
47
- "peerDependencies": {
48
- "svelte": "^5.0.0",
49
- "vite": "^6.0.0 || ^7.0.0",
50
- "@sveltejs/vite-plugin-svelte": "^5.0.0 || ^6.0.0"
51
- },
52
- "peerDependenciesMeta": {
53
- "vite": { "optional": true },
54
- "@sveltejs/vite-plugin-svelte": { "optional": true }
55
- },
56
- "devDependencies": {
57
- "@sveltejs/adapter-auto": "^7.0.0",
58
- "@sveltejs/kit": "^2.50.1",
59
- "@sveltejs/package": "^2.5.7",
60
- "@sveltejs/vite-plugin-svelte": "^6.2.4",
61
- "mdsvex": "^0.12.6",
62
- "publint": "^0.3.17",
63
- "svelte": "^5.48.2",
64
- "svelte-check": "^4.3.5",
65
- "typescript": "^5.9.3",
66
- "vite": "^7.3.1"
67
- },
68
- "keywords": [
69
- "svelte",
70
- "documentation",
71
- "components"
72
- ],
73
- "dependencies": {
74
- "lucide-svelte": "^0.563.0"
75
- }
2
+ "name": "sdocs",
3
+ "version": "0.0.5",
4
+ "description": "A lightweight documentation tool for Svelte 5 components",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "bin": {
8
+ "sdocs": "./bin/sdocs.js"
9
+ },
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "svelte": "./dist/index.js"
14
+ },
15
+ "./vite": {
16
+ "types": "./dist/vite.d.ts",
17
+ "default": "./dist/vite.js"
18
+ },
19
+ "./client": {
20
+ "svelte": "./dist/client/App.svelte"
21
+ }
22
+ },
23
+ "files": [
24
+ "dist",
25
+ "bin"
26
+ ],
27
+ "peerDependencies": {
28
+ "@sveltejs/vite-plugin-svelte": "^5.0.0 || ^6.0.0",
29
+ "svelte": "^5.0.0",
30
+ "vite": "^6.0.0 || ^7.0.0"
31
+ },
32
+ "devDependencies": {
33
+ "@sveltejs/package": "^2.5.7",
34
+ "@sveltejs/vite-plugin-svelte": "^6.2.4",
35
+ "svelte": "^5.50.0",
36
+ "svelte-check": "^4.0.0",
37
+ "typescript": "^5.7.0",
38
+ "vite": "^7.3.1",
39
+ "vitest": "^3.0.0"
40
+ },
41
+ "scripts": {
42
+ "dev": "vite",
43
+ "build": "svelte-package -i src/lib -o dist",
44
+ "check": "svelte-check --tsconfig ./tsconfig.json",
45
+ "test": "vitest run"
46
+ },
47
+ "dependencies": {
48
+ "mdsvex": "^0.12.6",
49
+ "shiki": "^3.22.0",
50
+ "tinyglobby": "^0.2.15"
51
+ }
76
52
  }
package/README.md DELETED
@@ -1,43 +0,0 @@
1
- # sdocs
2
-
3
- A lightweight documentation tool for Svelte 5 components.
4
-
5
- Drop `.docs.svelte` files next to your components and get auto-generated interactive documentation with live previews, prop controls, CSS custom property editors, and method listings — all extracted from your source code.
6
-
7
- ## Features
8
-
9
- - Auto-detected props with interactive controls
10
- - CSS custom properties via `@cssvar` JSDoc tags
11
- - Exported function detection (methods panel)
12
- - Snippet-based examples with source code display
13
- - Vite plugin with HMR support
14
- - Zero config — works out of the box
15
-
16
- ## Quick start
17
-
18
- ```bash
19
- npm install sdocs
20
- ```
21
-
22
- ```js
23
- // vite.config.ts
24
- import { sdocsPlugin } from 'sdocs/vite';
25
-
26
- export default defineConfig({
27
- plugins: [sveltekit(), sdocsPlugin()]
28
- });
29
- ```
30
-
31
- ```svelte
32
- <!-- +page.svelte -->
33
- <script>
34
- import { Sdocs } from 'sdocs';
35
- import { docs } from 'virtual:sdocs';
36
- </script>
37
-
38
- <Sdocs {docs} />
39
- ```
40
-
41
- ## License
42
-
43
- MIT