@openpkg-ts/doc-generator 0.1.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.
@@ -0,0 +1,221 @@
1
+ import { SpecMember } from "@openpkg-ts/spec";
2
+ interface CollapsibleMethodProps {
3
+ /** Method member to display */
4
+ member: SpecMember;
5
+ /** Default expanded state */
6
+ defaultExpanded?: boolean;
7
+ /** Custom className */
8
+ className?: string;
9
+ /** Custom header renderer */
10
+ renderHeader?: (member: SpecMember, expanded: boolean, toggle: () => void) => React.ReactNode;
11
+ /** Custom content renderer */
12
+ renderContent?: (member: SpecMember) => React.ReactNode;
13
+ }
14
+ /**
15
+ * Headless collapsible method component.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * <CollapsibleMethod member={method} defaultExpanded />
20
+ *
21
+ * // Custom rendering
22
+ * <CollapsibleMethod
23
+ * member={method}
24
+ * renderHeader={(m, expanded, toggle) => (
25
+ * <button onClick={toggle}>{m.name}</button>
26
+ * )}
27
+ * />
28
+ * ```
29
+ */
30
+ declare function CollapsibleMethod({ member, defaultExpanded, className, renderHeader, renderContent }: CollapsibleMethodProps): React.ReactNode;
31
+ import { SpecExample } from "@openpkg-ts/spec";
32
+ interface ExampleBlockProps {
33
+ /** Examples to display (string or SpecExample) */
34
+ examples: (string | SpecExample)[];
35
+ /** Custom className */
36
+ className?: string;
37
+ /** Custom example renderer */
38
+ renderExample?: (example: string | SpecExample, index: number) => React.ReactNode;
39
+ }
40
+ /**
41
+ * Normalize example to string content.
42
+ */
43
+ declare function getExampleCode(example: string | SpecExample): string;
44
+ /**
45
+ * Get example title if available.
46
+ */
47
+ declare function getExampleTitle(example: string | SpecExample): string | undefined;
48
+ /**
49
+ * Get example language.
50
+ */
51
+ declare function getExampleLanguage(example: string | SpecExample): string;
52
+ /**
53
+ * Clean code by removing markdown fences.
54
+ */
55
+ declare function cleanCode(code: string): string;
56
+ /**
57
+ * Headless example block component.
58
+ *
59
+ * @example
60
+ * ```tsx
61
+ * <ExampleBlock examples={exp.examples} />
62
+ *
63
+ * // Custom rendering
64
+ * <ExampleBlock
65
+ * examples={exp.examples}
66
+ * renderExample={(ex) => <CustomCode code={getExampleCode(ex)} />}
67
+ * />
68
+ * ```
69
+ */
70
+ declare function ExampleBlock({ examples, className, renderExample }: ExampleBlockProps): React.ReactNode;
71
+ import { SpecSchema, SpecSignatureParameter } from "@openpkg-ts/spec";
72
+ interface ExpandablePropertyProps {
73
+ /** Parameter to display */
74
+ param: SpecSignatureParameter;
75
+ /** Nesting depth */
76
+ depth?: number;
77
+ /** Custom className */
78
+ className?: string;
79
+ }
80
+ interface NestedPropertyProps {
81
+ /** Property name */
82
+ name: string;
83
+ /** Property schema */
84
+ schema: SpecSchema;
85
+ /** Is required */
86
+ required?: boolean;
87
+ /** Nesting depth */
88
+ depth?: number;
89
+ }
90
+ /**
91
+ * Nested property display.
92
+ */
93
+ declare function NestedProperty({ name, schema, required, depth }: NestedPropertyProps): React.ReactNode;
94
+ /**
95
+ * Headless expandable property for parameters with nested objects.
96
+ *
97
+ * @example
98
+ * ```tsx
99
+ * <ExpandableProperty param={param} />
100
+ * ```
101
+ */
102
+ declare function ExpandableProperty({ param, depth, className }: ExpandablePropertyProps): React.ReactNode;
103
+ import { SpecMember as SpecMember2 } from "@openpkg-ts/spec";
104
+ interface MembersTableProps {
105
+ /** Members to display */
106
+ members: SpecMember2[];
107
+ /** Custom className */
108
+ className?: string;
109
+ /** Group by kind (constructor, property, method) */
110
+ groupByKind?: boolean;
111
+ /** Custom member renderer */
112
+ renderMember?: (member: SpecMember2, index: number) => React.ReactNode;
113
+ }
114
+ interface MemberGroups {
115
+ constructors: SpecMember2[];
116
+ properties: SpecMember2[];
117
+ methods: SpecMember2[];
118
+ accessors: SpecMember2[];
119
+ other: SpecMember2[];
120
+ }
121
+ /**
122
+ * Group members by their kind.
123
+ */
124
+ declare function groupMembersByKind(members: SpecMember2[]): MemberGroups;
125
+ interface MemberRowProps {
126
+ member: SpecMember2;
127
+ }
128
+ /**
129
+ * Individual member row.
130
+ */
131
+ declare function MemberRow({ member }: MemberRowProps): React.ReactNode;
132
+ /**
133
+ * Headless members table for classes/interfaces.
134
+ *
135
+ * @example
136
+ * ```tsx
137
+ * <MembersTable members={exp.members} groupByKind />
138
+ * ```
139
+ */
140
+ declare function MembersTable({ members, className, groupByKind, renderMember }: MembersTableProps): React.ReactNode;
141
+ import { SpecMember as SpecMember3, SpecSignatureParameter as SpecSignatureParameter2 } from "@openpkg-ts/spec";
142
+ interface ParamTableProps {
143
+ /** Parameters or members to display */
144
+ items: (SpecSignatureParameter2 | SpecMember3)[];
145
+ /** Show required indicator */
146
+ showRequired?: boolean;
147
+ /** Custom className */
148
+ className?: string;
149
+ /** Render custom row */
150
+ renderRow?: (item: SpecSignatureParameter2 | SpecMember3, index: number) => React.ReactNode;
151
+ }
152
+ interface ParamRowProps {
153
+ item: SpecSignatureParameter2 | SpecMember3;
154
+ showRequired?: boolean;
155
+ }
156
+ /**
157
+ * Individual parameter row component.
158
+ */
159
+ declare function ParamRow({ item, showRequired }: ParamRowProps): React.ReactNode;
160
+ /**
161
+ * Headless parameter table component.
162
+ *
163
+ * @example
164
+ * ```tsx
165
+ * <ParamTable items={sig.parameters} />
166
+ *
167
+ * // Custom row rendering
168
+ * <ParamTable
169
+ * items={sig.parameters}
170
+ * renderRow={(item) => <CustomRow key={item.name} param={item} />}
171
+ * />
172
+ * ```
173
+ */
174
+ declare function ParamTable({ items, showRequired, className, renderRow }: ParamTableProps): React.ReactNode;
175
+ import { SpecExport } from "@openpkg-ts/spec";
176
+ interface SignatureProps {
177
+ /** The to render signature for */
178
+ export: SpecExport;
179
+ /** Index of signature to render (for overloaded functions) */
180
+ signatureIndex?: number;
181
+ /** Custom className */
182
+ className?: string;
183
+ /** Render prop for custom rendering */
184
+ children?: (signature: string) => React.ReactNode;
185
+ }
186
+ /**
187
+ * Headless signature component. Renders a type signature string.
188
+ *
189
+ * @example
190
+ * ```tsx
191
+ * // Default rendering
192
+ * <Signature export={fn} />
193
+ *
194
+ * // Custom rendering
195
+ * <Signature export={fn}>
196
+ * {(sig) => <pre>{sig}</pre>}
197
+ * </Signature>
198
+ * ```
199
+ */
200
+ declare function Signature({ export: exp, signatureIndex, className, children }: SignatureProps): React.ReactNode;
201
+ import { SpecMember as SpecMember4, SpecSignatureParameter as SpecSignatureParameter3 } from "@openpkg-ts/spec";
202
+ interface TypeTableProps {
203
+ /** Members or parameters to display */
204
+ items: (SpecSignatureParameter3 | SpecMember4)[];
205
+ /** Show required indicator */
206
+ showRequired?: boolean;
207
+ /** Custom className */
208
+ className?: string;
209
+ /** Render custom row */
210
+ renderRow?: (item: SpecSignatureParameter3 | SpecMember4, index: number) => React.ReactNode;
211
+ }
212
+ /**
213
+ * Headless type table for displaying interface/type members.
214
+ *
215
+ * @example
216
+ * ```tsx
217
+ * <TypeTable items={exp.members} />
218
+ * ```
219
+ */
220
+ declare function TypeTable({ items, showRequired, className, renderRow }: TypeTableProps): React.ReactNode;
221
+ export { groupMembersByKind, getExampleTitle, getExampleLanguage, getExampleCode, cleanCode, TypeTableProps, TypeTable, SignatureProps, Signature, ParamTableProps, ParamTable, ParamRowProps, ParamRow, NestedPropertyProps, NestedProperty, MembersTableProps, MembersTable, MemberRowProps, MemberRow, MemberGroups, ExpandablePropertyProps, ExpandableProperty, ExampleBlockProps, ExampleBlock, CollapsibleMethodProps, CollapsibleMethod };
package/dist/react.js ADDED
@@ -0,0 +1,35 @@
1
+ import {
2
+ CollapsibleMethod,
3
+ ExampleBlock,
4
+ ExpandableProperty,
5
+ MemberRow,
6
+ MembersTable,
7
+ NestedProperty,
8
+ ParamRow,
9
+ ParamTable,
10
+ Signature,
11
+ TypeTable,
12
+ cleanCode,
13
+ getExampleCode,
14
+ getExampleLanguage,
15
+ getExampleTitle,
16
+ groupMembersByKind
17
+ } from "./shared/chunk-e5fkh3kh.js";
18
+ import"./shared/chunk-taeg9090.js";
19
+ export {
20
+ groupMembersByKind,
21
+ getExampleTitle,
22
+ getExampleLanguage,
23
+ getExampleCode,
24
+ cleanCode,
25
+ TypeTable,
26
+ Signature,
27
+ ParamTable,
28
+ ParamRow,
29
+ NestedProperty,
30
+ MembersTable,
31
+ MemberRow,
32
+ ExpandableProperty,
33
+ ExampleBlock,
34
+ CollapsibleMethod
35
+ };