sdocs 0.0.1
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/README.md +43 -0
- package/bin/sdocs.js +2 -0
- package/dist/Sdocs.svelte +1210 -0
- package/dist/Sdocs.svelte.d.ts +5 -0
- package/dist/cli/app-plugin.d.ts +7 -0
- package/dist/cli/app-plugin.js +69 -0
- package/dist/cli/config.d.ts +12 -0
- package/dist/cli/config.js +34 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +72 -0
- package/dist/cli/server.d.ts +2 -0
- package/dist/cli/server.js +62 -0
- package/dist/docgen.d.ts +47 -0
- package/dist/docgen.js +463 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +4 -0
- package/dist/internal/ComponentPreview.svelte +58 -0
- package/dist/internal/ComponentPreview.svelte.d.ts +17 -0
- package/dist/internal/CssPropsTable.svelte +239 -0
- package/dist/internal/CssPropsTable.svelte.d.ts +11 -0
- package/dist/internal/Home.svelte +92 -0
- package/dist/internal/Home.svelte.d.ts +9 -0
- package/dist/internal/MethodsTable.svelte +72 -0
- package/dist/internal/MethodsTable.svelte.d.ts +7 -0
- package/dist/internal/PropsTable.svelte +342 -0
- package/dist/internal/PropsTable.svelte.d.ts +12 -0
- package/dist/internal/Showcase.svelte +130 -0
- package/dist/internal/Showcase.svelte.d.ts +21 -0
- package/dist/types.d.ts +162 -0
- package/dist/types.js +1 -0
- package/dist/ui/Badge/Badge.docs.svelte +46 -0
- package/dist/ui/Badge/Badge.docs.svelte.d.ts +26 -0
- package/dist/ui/Badge/Badge.svelte +59 -0
- package/dist/ui/Badge/Badge.svelte.d.ts +17 -0
- package/dist/ui/Badge/index.d.ts +1 -0
- package/dist/ui/Badge/index.js +1 -0
- package/dist/ui/Checkbox/Checkbox.docs.svelte +51 -0
- package/dist/ui/Checkbox/Checkbox.docs.svelte.d.ts +27 -0
- package/dist/ui/Checkbox/Checkbox.svelte +169 -0
- package/dist/ui/Checkbox/Checkbox.svelte.d.ts +18 -0
- package/dist/ui/Checkbox/index.d.ts +1 -0
- package/dist/ui/Checkbox/index.js +1 -0
- package/dist/ui/CodeBlock/CodeBlock.docs.svelte +28 -0
- package/dist/ui/CodeBlock/CodeBlock.docs.svelte.d.ts +24 -0
- package/dist/ui/CodeBlock/CodeBlock.svelte +101 -0
- package/dist/ui/CodeBlock/CodeBlock.svelte.d.ts +7 -0
- package/dist/ui/CodeBlock/index.d.ts +1 -0
- package/dist/ui/CodeBlock/index.js +1 -0
- package/dist/ui/Frame/Frame.docs.svelte +140 -0
- package/dist/ui/Frame/Frame.docs.svelte.d.ts +26 -0
- package/dist/ui/Frame/Frame.svelte +88 -0
- package/dist/ui/Frame/Frame.svelte.d.ts +15 -0
- package/dist/ui/Frame/index.d.ts +1 -0
- package/dist/ui/Frame/index.js +1 -0
- package/dist/ui/InputNumber/InputNumber.docs.svelte +50 -0
- package/dist/ui/InputNumber/InputNumber.docs.svelte.d.ts +26 -0
- package/dist/ui/InputNumber/InputNumber.svelte +275 -0
- package/dist/ui/InputNumber/InputNumber.svelte.d.ts +26 -0
- package/dist/ui/InputNumber/index.d.ts +1 -0
- package/dist/ui/InputNumber/index.js +1 -0
- package/dist/ui/InputText/InputText.docs.svelte +43 -0
- package/dist/ui/InputText/InputText.docs.svelte.d.ts +26 -0
- package/dist/ui/InputText/InputText.svelte +116 -0
- package/dist/ui/InputText/InputText.svelte.d.ts +22 -0
- package/dist/ui/InputText/index.d.ts +1 -0
- package/dist/ui/InputText/index.js +1 -0
- package/dist/ui/Panel/CollapsiblePanel.docs.svelte +45 -0
- package/dist/ui/Panel/CollapsiblePanel.docs.svelte.d.ts +25 -0
- package/dist/ui/Panel/CollapsiblePanel.svelte +93 -0
- package/dist/ui/Panel/CollapsiblePanel.svelte.d.ts +14 -0
- package/dist/ui/Panel/index.d.ts +1 -0
- package/dist/ui/Panel/index.js +1 -0
- package/dist/ui/Placeholder/Placeholder.docs.svelte +49 -0
- package/dist/ui/Placeholder/Placeholder.docs.svelte.d.ts +26 -0
- package/dist/ui/Placeholder/Placeholder.svelte +99 -0
- package/dist/ui/Placeholder/Placeholder.svelte.d.ts +21 -0
- package/dist/ui/Placeholder/index.d.ts +1 -0
- package/dist/ui/Placeholder/index.js +1 -0
- package/dist/ui/Radio/Radio.docs.svelte +67 -0
- package/dist/ui/Radio/Radio.docs.svelte.d.ts +27 -0
- package/dist/ui/Radio/Radio.svelte +165 -0
- package/dist/ui/Radio/Radio.svelte.d.ts +22 -0
- package/dist/ui/Radio/RadioGroup.docs.svelte +70 -0
- package/dist/ui/Radio/RadioGroup.docs.svelte.d.ts +27 -0
- package/dist/ui/Radio/RadioGroup.svelte +98 -0
- package/dist/ui/Radio/RadioGroup.svelte.d.ts +27 -0
- package/dist/ui/Radio/index.d.ts +2 -0
- package/dist/ui/Radio/index.js +2 -0
- package/dist/ui/SegmentControl/SegmentControl.docs.svelte +54 -0
- package/dist/ui/SegmentControl/SegmentControl.docs.svelte.d.ts +25 -0
- package/dist/ui/SegmentControl/SegmentControl.svelte +120 -0
- package/dist/ui/SegmentControl/SegmentControl.svelte.d.ts +18 -0
- package/dist/ui/SegmentControl/index.d.ts +1 -0
- package/dist/ui/SegmentControl/index.js +1 -0
- package/dist/ui/Stack/Stack.docs.svelte +63 -0
- package/dist/ui/Stack/Stack.docs.svelte.d.ts +26 -0
- package/dist/ui/Stack/Stack.svelte +45 -0
- package/dist/ui/Stack/Stack.svelte.d.ts +19 -0
- package/dist/ui/Stack/index.d.ts +1 -0
- package/dist/ui/Stack/index.js +1 -0
- package/dist/ui/Table/Body.svelte +17 -0
- package/dist/ui/Table/Body.svelte.d.ts +11 -0
- package/dist/ui/Table/Caption.svelte +17 -0
- package/dist/ui/Table/Caption.svelte.d.ts +11 -0
- package/dist/ui/Table/Cell.svelte +24 -0
- package/dist/ui/Table/Cell.svelte.d.ts +15 -0
- package/dist/ui/Table/Foot.svelte +17 -0
- package/dist/ui/Table/Foot.svelte.d.ts +11 -0
- package/dist/ui/Table/Head.svelte +17 -0
- package/dist/ui/Table/Head.svelte.d.ts +11 -0
- package/dist/ui/Table/Header.svelte +27 -0
- package/dist/ui/Table/Header.svelte.d.ts +17 -0
- package/dist/ui/Table/Row.svelte +19 -0
- package/dist/ui/Table/Row.svelte.d.ts +13 -0
- package/dist/ui/Table/Table.docs.svelte +197 -0
- package/dist/ui/Table/Table.docs.svelte.d.ts +28 -0
- package/dist/ui/Table/Table.svelte +140 -0
- package/dist/ui/Table/Table.svelte.d.ts +27 -0
- package/dist/ui/Table/index.js +10 -0
- package/dist/ui/css/colors.css +377 -0
- package/dist/ui/css/global.css +10 -0
- package/dist/ui/index.d.ts +12 -0
- package/dist/ui/index.js +12 -0
- package/dist/virtual-sdocs.d.ts +20 -0
- package/dist/vite-plugin.d.ts +18 -0
- package/dist/vite-plugin.js +206 -0
- package/dist/vite.d.ts +2 -0
- package/dist/vite.js +2 -0
- package/package.json +76 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { CssProps, CssControlType } from '../types.js';
|
|
3
|
+
import { Table } from '../ui/index.js';
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
cssProps: CssProps;
|
|
7
|
+
/** Current CSS values (for interactive mode) */
|
|
8
|
+
values?: Record<string, string>;
|
|
9
|
+
/** Callback when values change (enables interactive mode) */
|
|
10
|
+
onchange?: (values: Record<string, string>) => void;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
let { cssProps, values = {}, onchange }: Props = $props();
|
|
14
|
+
|
|
15
|
+
// Get sorted CSS prop names
|
|
16
|
+
let propNames = $derived(Object.keys(cssProps).sort());
|
|
17
|
+
|
|
18
|
+
// Check if we're in interactive mode
|
|
19
|
+
let isInteractive = $derived(!!onchange);
|
|
20
|
+
|
|
21
|
+
function getControlType(control: CssProps[string]['control']): CssControlType {
|
|
22
|
+
if (!control) return 'color'; // default
|
|
23
|
+
if (typeof control === 'string') return control;
|
|
24
|
+
return control.type;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function getOptions(control: CssProps[string]['control']): string[] {
|
|
28
|
+
if (typeof control === 'object' && control.options) return control.options;
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function updateValue(key: string, value: string) {
|
|
33
|
+
onchange?.({ ...values, [key]: value });
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function handleInput(key: string, event: Event) {
|
|
37
|
+
const target = event.target as HTMLInputElement | HTMLSelectElement;
|
|
38
|
+
updateValue(key, target.value);
|
|
39
|
+
}
|
|
40
|
+
</script>
|
|
41
|
+
|
|
42
|
+
{#if propNames.length > 0}
|
|
43
|
+
<Table compact borderless>
|
|
44
|
+
<Table.Head>
|
|
45
|
+
<Table.Row>
|
|
46
|
+
<Table.Header>Name</Table.Header>
|
|
47
|
+
<Table.Header>Type</Table.Header>
|
|
48
|
+
<Table.Header>Default</Table.Header>
|
|
49
|
+
<Table.Header>Description</Table.Header>
|
|
50
|
+
{#if isInteractive}
|
|
51
|
+
<Table.Header>Control</Table.Header>
|
|
52
|
+
{/if}
|
|
53
|
+
</Table.Row>
|
|
54
|
+
</Table.Head>
|
|
55
|
+
<Table.Body>
|
|
56
|
+
{#each propNames as name (name)}
|
|
57
|
+
{@const cssProp = cssProps[name]}
|
|
58
|
+
{@const controlType = getControlType(cssProp.control)}
|
|
59
|
+
{@const currentValue = values[name] || cssProp.default || ''}
|
|
60
|
+
{@const hasControl = cssProp.control !== false}
|
|
61
|
+
<Table.Row>
|
|
62
|
+
<Table.Cell>
|
|
63
|
+
<span class="css-name"><code>{name}</code></span>
|
|
64
|
+
</Table.Cell>
|
|
65
|
+
<Table.Cell>
|
|
66
|
+
<code class="css-type">{controlType}</code>
|
|
67
|
+
</Table.Cell>
|
|
68
|
+
<Table.Cell>
|
|
69
|
+
<code class="css-default">{cssProp.default ?? '-'}</code>
|
|
70
|
+
</Table.Cell>
|
|
71
|
+
<Table.Cell>
|
|
72
|
+
<span class="css-description">{cssProp.description ?? '-'}</span>
|
|
73
|
+
</Table.Cell>
|
|
74
|
+
{#if isInteractive}
|
|
75
|
+
<Table.Cell>
|
|
76
|
+
<div class="css-control">
|
|
77
|
+
{#if hasControl}
|
|
78
|
+
{#if controlType === 'color'}
|
|
79
|
+
<div class="css-control-color">
|
|
80
|
+
<input
|
|
81
|
+
type="color"
|
|
82
|
+
value={currentValue || '#888888'}
|
|
83
|
+
oninput={(e) => handleInput(name, e)}
|
|
84
|
+
/>
|
|
85
|
+
<span class="css-control-value">{currentValue || '-'}</span>
|
|
86
|
+
</div>
|
|
87
|
+
{:else if controlType === 'select'}
|
|
88
|
+
<select
|
|
89
|
+
value={currentValue}
|
|
90
|
+
onchange={(e) => handleInput(name, e)}
|
|
91
|
+
>
|
|
92
|
+
{#each getOptions(cssProp.control) as option}
|
|
93
|
+
<option value={option}>{option}</option>
|
|
94
|
+
{/each}
|
|
95
|
+
</select>
|
|
96
|
+
{:else if controlType === 'number'}
|
|
97
|
+
<input
|
|
98
|
+
type="number"
|
|
99
|
+
value={currentValue}
|
|
100
|
+
oninput={(e) => handleInput(name, e)}
|
|
101
|
+
/>
|
|
102
|
+
{:else}
|
|
103
|
+
<!-- text, length, or fallback -->
|
|
104
|
+
<input
|
|
105
|
+
type="text"
|
|
106
|
+
value={currentValue}
|
|
107
|
+
placeholder={controlType === 'length' ? '16px, 1rem' : ''}
|
|
108
|
+
oninput={(e) => handleInput(name, e)}
|
|
109
|
+
/>
|
|
110
|
+
{/if}
|
|
111
|
+
{:else}
|
|
112
|
+
<span class="no-control">-</span>
|
|
113
|
+
{/if}
|
|
114
|
+
</div>
|
|
115
|
+
</Table.Cell>
|
|
116
|
+
{/if}
|
|
117
|
+
</Table.Row>
|
|
118
|
+
{/each}
|
|
119
|
+
</Table.Body>
|
|
120
|
+
</Table>
|
|
121
|
+
{:else}
|
|
122
|
+
<p class="css-empty">No CSS props defined</p>
|
|
123
|
+
{/if}
|
|
124
|
+
|
|
125
|
+
<style>
|
|
126
|
+
.css-name {
|
|
127
|
+
white-space: nowrap;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.css-name code {
|
|
131
|
+
font-family: var(--font-mono);
|
|
132
|
+
font-weight: 600;
|
|
133
|
+
color: var(--color-text);
|
|
134
|
+
background: none;
|
|
135
|
+
padding: 0;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.css-type {
|
|
139
|
+
font-family: var(--font-mono);
|
|
140
|
+
color: var(--sky-600);
|
|
141
|
+
background: var(--sky-50);
|
|
142
|
+
padding: 2px 6px;
|
|
143
|
+
border-radius: 4px;
|
|
144
|
+
font-size: 11px;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.css-default {
|
|
148
|
+
font-family: var(--font-mono);
|
|
149
|
+
color: var(--color-text-secondary);
|
|
150
|
+
background: var(--color-bg-hover);
|
|
151
|
+
padding: 2px 6px;
|
|
152
|
+
border-radius: 4px;
|
|
153
|
+
font-size: 12px;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.css-description {
|
|
157
|
+
color: var(--color-text-secondary);
|
|
158
|
+
line-height: 1.5;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.css-empty {
|
|
162
|
+
color: var(--color-text-muted);
|
|
163
|
+
font-style: italic;
|
|
164
|
+
margin: 0;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/* Control column styles */
|
|
168
|
+
.css-control {
|
|
169
|
+
min-width: 140px;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.css-control-color {
|
|
173
|
+
display: flex;
|
|
174
|
+
align-items: center;
|
|
175
|
+
gap: 10px;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.css-control input[type='color'] {
|
|
179
|
+
width: 32px;
|
|
180
|
+
height: 28px;
|
|
181
|
+
border: 1px solid var(--color-border);
|
|
182
|
+
border-radius: 4px;
|
|
183
|
+
cursor: pointer;
|
|
184
|
+
padding: 2px;
|
|
185
|
+
flex-shrink: 0;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.css-control-value {
|
|
189
|
+
font-size: 12px;
|
|
190
|
+
font-family: var(--font-mono);
|
|
191
|
+
color: var(--color-text-muted);
|
|
192
|
+
overflow: hidden;
|
|
193
|
+
text-overflow: ellipsis;
|
|
194
|
+
white-space: nowrap;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.css-control input[type='text'],
|
|
198
|
+
.css-control input[type='number'] {
|
|
199
|
+
width: 100%;
|
|
200
|
+
max-width: 140px;
|
|
201
|
+
height: 28px;
|
|
202
|
+
padding: 0 8px;
|
|
203
|
+
border: 1px solid var(--color-border);
|
|
204
|
+
border-radius: 4px;
|
|
205
|
+
font-size: 12px;
|
|
206
|
+
font-family: var(--font-mono);
|
|
207
|
+
background: var(--color-bg-elevated);
|
|
208
|
+
color: var(--color-text);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.css-control input[type='text']:focus,
|
|
212
|
+
.css-control input[type='number']:focus {
|
|
213
|
+
outline: none;
|
|
214
|
+
border-color: var(--color-primary);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.css-control select {
|
|
218
|
+
width: 100%;
|
|
219
|
+
max-width: 140px;
|
|
220
|
+
height: 28px;
|
|
221
|
+
padding: 0 8px;
|
|
222
|
+
border: 1px solid var(--color-border);
|
|
223
|
+
border-radius: 4px;
|
|
224
|
+
font-size: 12px;
|
|
225
|
+
font-family: var(--font-mono);
|
|
226
|
+
background: var(--color-bg-elevated);
|
|
227
|
+
color: var(--color-text);
|
|
228
|
+
cursor: pointer;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.css-control select:focus {
|
|
232
|
+
outline: none;
|
|
233
|
+
border-color: var(--color-primary);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.no-control {
|
|
237
|
+
color: var(--color-text-muted);
|
|
238
|
+
}
|
|
239
|
+
</style>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CssProps } from '../types.js';
|
|
2
|
+
interface Props {
|
|
3
|
+
cssProps: CssProps;
|
|
4
|
+
/** Current CSS values (for interactive mode) */
|
|
5
|
+
values?: Record<string, string>;
|
|
6
|
+
/** Callback when values change (enables interactive mode) */
|
|
7
|
+
onchange?: (values: Record<string, string>) => void;
|
|
8
|
+
}
|
|
9
|
+
declare const CssPropsTable: import("svelte").Component<Props, {}, "">;
|
|
10
|
+
type CssPropsTable = ReturnType<typeof CssPropsTable>;
|
|
11
|
+
export default CssPropsTable;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props {
|
|
3
|
+
/** Total number of documented components */
|
|
4
|
+
componentCount?: number;
|
|
5
|
+
/** Total number of documentation pages */
|
|
6
|
+
pageCount?: number;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
let { componentCount = 0, pageCount = 0 }: Props = $props();
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<div class="Home">
|
|
13
|
+
<h1 class="Home-title">sdocs</h1>
|
|
14
|
+
<p class="Home-tagline">A lightweight documentation tool for Svelte 5 components.</p>
|
|
15
|
+
|
|
16
|
+
<div class="Home-stats">
|
|
17
|
+
{#if componentCount > 0}
|
|
18
|
+
<div class="Home-stat">
|
|
19
|
+
<span class="Home-stat-value">{componentCount}</span>
|
|
20
|
+
<span class="Home-stat-label">{componentCount === 1 ? 'Component' : 'Components'}</span>
|
|
21
|
+
</div>
|
|
22
|
+
{/if}
|
|
23
|
+
{#if pageCount > 0}
|
|
24
|
+
<div class="Home-stat">
|
|
25
|
+
<span class="Home-stat-value">{pageCount}</span>
|
|
26
|
+
<span class="Home-stat-label">{pageCount === 1 ? 'Page' : 'Pages'}</span>
|
|
27
|
+
</div>
|
|
28
|
+
{/if}
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<p class="Home-hint">Select a component or page from the sidebar to get started.</p>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<style>
|
|
35
|
+
.Home {
|
|
36
|
+
display: flex;
|
|
37
|
+
flex-direction: column;
|
|
38
|
+
align-items: center;
|
|
39
|
+
justify-content: center;
|
|
40
|
+
text-align: center;
|
|
41
|
+
min-height: 60vh;
|
|
42
|
+
padding: 48px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.Home-title {
|
|
46
|
+
font-size: 48px;
|
|
47
|
+
font-weight: 800;
|
|
48
|
+
margin: 0 0 12px;
|
|
49
|
+
color: var(--color-text);
|
|
50
|
+
letter-spacing: -0.03em;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.Home-tagline {
|
|
54
|
+
font-size: 18px;
|
|
55
|
+
color: var(--color-text-secondary);
|
|
56
|
+
margin: 0 0 40px;
|
|
57
|
+
max-width: 400px;
|
|
58
|
+
line-height: 1.5;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.Home-stats {
|
|
62
|
+
display: flex;
|
|
63
|
+
gap: 48px;
|
|
64
|
+
margin-bottom: 40px;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.Home-stat {
|
|
68
|
+
display: flex;
|
|
69
|
+
flex-direction: column;
|
|
70
|
+
align-items: center;
|
|
71
|
+
gap: 4px;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.Home-stat-value {
|
|
75
|
+
font-size: 36px;
|
|
76
|
+
font-weight: 700;
|
|
77
|
+
color: var(--color-primary);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.Home-stat-label {
|
|
81
|
+
font-size: 14px;
|
|
82
|
+
color: var(--color-text-muted);
|
|
83
|
+
text-transform: uppercase;
|
|
84
|
+
letter-spacing: 0.05em;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.Home-hint {
|
|
88
|
+
font-size: 14px;
|
|
89
|
+
color: var(--color-text-muted);
|
|
90
|
+
margin: 0;
|
|
91
|
+
}
|
|
92
|
+
</style>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
/** Total number of documented components */
|
|
3
|
+
componentCount?: number;
|
|
4
|
+
/** Total number of documentation pages */
|
|
5
|
+
pageCount?: number;
|
|
6
|
+
}
|
|
7
|
+
declare const Home: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type Home = ReturnType<typeof Home>;
|
|
9
|
+
export default Home;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { MethodType } from '../types.js';
|
|
3
|
+
import { Table } from '../ui/index.js';
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
methods: MethodType[];
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
let { methods }: Props = $props();
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
{#if methods.length > 0}
|
|
13
|
+
<Table compact borderless>
|
|
14
|
+
<Table.Head>
|
|
15
|
+
<Table.Row>
|
|
16
|
+
<Table.Header width="20%">Name</Table.Header>
|
|
17
|
+
<Table.Header width="30%">Params</Table.Header>
|
|
18
|
+
<Table.Header width="15%">Returns</Table.Header>
|
|
19
|
+
<Table.Header width="35%">Description</Table.Header>
|
|
20
|
+
</Table.Row>
|
|
21
|
+
</Table.Head>
|
|
22
|
+
<Table.Body>
|
|
23
|
+
{#each methods as method (method.name)}
|
|
24
|
+
<Table.Row>
|
|
25
|
+
<Table.Cell>
|
|
26
|
+
<code class="method-name">{method.name}()</code>
|
|
27
|
+
</Table.Cell>
|
|
28
|
+
<Table.Cell>
|
|
29
|
+
<code class="method-params">{method.params || '-'}</code>
|
|
30
|
+
</Table.Cell>
|
|
31
|
+
<Table.Cell>
|
|
32
|
+
<code class="method-return">{method.returnType || 'void'}</code>
|
|
33
|
+
</Table.Cell>
|
|
34
|
+
<Table.Cell>
|
|
35
|
+
<span class="method-description">{method.description || '-'}</span>
|
|
36
|
+
</Table.Cell>
|
|
37
|
+
</Table.Row>
|
|
38
|
+
{/each}
|
|
39
|
+
</Table.Body>
|
|
40
|
+
</Table>
|
|
41
|
+
{/if}
|
|
42
|
+
|
|
43
|
+
<style>
|
|
44
|
+
.method-name {
|
|
45
|
+
font-family: var(--font-mono);
|
|
46
|
+
font-weight: 600;
|
|
47
|
+
color: var(--color-text);
|
|
48
|
+
background: none;
|
|
49
|
+
padding: 0;
|
|
50
|
+
white-space: nowrap;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.method-params {
|
|
54
|
+
font-family: var(--font-mono);
|
|
55
|
+
color: var(--color-text-secondary);
|
|
56
|
+
font-size: 12px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.method-return {
|
|
60
|
+
font-family: var(--font-mono);
|
|
61
|
+
color: var(--sky-600);
|
|
62
|
+
background: var(--sky-50);
|
|
63
|
+
padding: 2px 6px;
|
|
64
|
+
border-radius: 4px;
|
|
65
|
+
font-size: 12px;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.method-description {
|
|
69
|
+
color: var(--color-text-secondary);
|
|
70
|
+
line-height: 1.5;
|
|
71
|
+
}
|
|
72
|
+
</style>
|