@openpkg-ts/doc-generator 0.3.4 → 0.4.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/README.md +1 -1
- package/dist/cli.js +1 -1
- package/dist/index.d.ts +36 -44
- package/dist/index.js +1 -3
- package/dist/react-styled.d.ts +14 -20
- package/dist/react-styled.js +834 -1124
- package/dist/react.js +1 -6
- package/dist/shared/{server-83s9r625.js → server-4yabn81t.js} +1 -21
- package/package.json +2 -2
package/dist/react-styled.js
CHANGED
|
@@ -3535,11 +3535,6 @@ function buildSignatureString(exp, sigIndex = 0) {
|
|
|
3535
3535
|
// src/components/headless/CollapsibleMethod.tsx
|
|
3536
3536
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3537
3537
|
|
|
3538
|
-
function formatReturnType2(returns) {
|
|
3539
|
-
if (!returns)
|
|
3540
|
-
return "void";
|
|
3541
|
-
return formatSchema(returns.schema);
|
|
3542
|
-
}
|
|
3543
3538
|
function formatParamPreview(params) {
|
|
3544
3539
|
if (!params || params.length === 0)
|
|
3545
3540
|
return "";
|
|
@@ -3561,7 +3556,7 @@ function CollapsibleMethod({
|
|
|
3561
3556
|
const flags = member.flags;
|
|
3562
3557
|
const isStatic = flags?.static;
|
|
3563
3558
|
const isAsync = flags?.async;
|
|
3564
|
-
const returnType =
|
|
3559
|
+
const returnType = formatReturnType(sig);
|
|
3565
3560
|
const paramPreview = formatParamPreview(sig?.parameters);
|
|
3566
3561
|
const toggle = () => setExpanded(!expanded);
|
|
3567
3562
|
useEffect(() => {
|
|
@@ -4198,11 +4193,353 @@ function TypeTable({
|
|
|
4198
4193
|
});
|
|
4199
4194
|
}
|
|
4200
4195
|
// src/components/styled/index.ts
|
|
4201
|
-
import { CodeTabs
|
|
4196
|
+
import { CodeTabs, ImportSection } from "@doccov/ui/api";
|
|
4197
|
+
|
|
4198
|
+
// src/components/styled/ClassPage.tsx
|
|
4199
|
+
import {
|
|
4200
|
+
APIParameterItem,
|
|
4201
|
+
APISection,
|
|
4202
|
+
ParameterList
|
|
4203
|
+
} from "@doccov/ui/docskit";
|
|
4204
|
+
|
|
4205
|
+
// src/adapters/spec-to-docskit.ts
|
|
4206
|
+
function specSchemaToAPISchema(schema) {
|
|
4207
|
+
if (!schema || typeof schema !== "object")
|
|
4208
|
+
return;
|
|
4209
|
+
const s = schema;
|
|
4210
|
+
const result = {};
|
|
4211
|
+
result.type = formatSchema(schema);
|
|
4212
|
+
result.typeString = result.type;
|
|
4213
|
+
if (typeof s.description === "string") {
|
|
4214
|
+
result.description = s.description;
|
|
4215
|
+
}
|
|
4216
|
+
if (s.type === "object" && s.properties && typeof s.properties === "object") {
|
|
4217
|
+
result.properties = {};
|
|
4218
|
+
for (const [key, value] of Object.entries(s.properties)) {
|
|
4219
|
+
const nestedSchema = specSchemaToAPISchema(value);
|
|
4220
|
+
if (nestedSchema) {
|
|
4221
|
+
result.properties[key] = nestedSchema;
|
|
4222
|
+
}
|
|
4223
|
+
}
|
|
4224
|
+
if (Array.isArray(s.required)) {
|
|
4225
|
+
result.required = s.required;
|
|
4226
|
+
}
|
|
4227
|
+
}
|
|
4228
|
+
return result;
|
|
4229
|
+
}
|
|
4230
|
+
function specParamToAPIParam(param) {
|
|
4231
|
+
const type = formatSchema(param.schema);
|
|
4232
|
+
const children = specSchemaToAPISchema(param.schema);
|
|
4233
|
+
const hasNestedProperties = children?.properties && Object.keys(children.properties).length > 0;
|
|
4234
|
+
return {
|
|
4235
|
+
name: param.name ?? "unknown",
|
|
4236
|
+
type,
|
|
4237
|
+
required: param.required !== false,
|
|
4238
|
+
description: param.description,
|
|
4239
|
+
children: hasNestedProperties ? children : undefined
|
|
4240
|
+
};
|
|
4241
|
+
}
|
|
4242
|
+
function specExamplesToCodeExamples(examples, defaultLang = "typescript") {
|
|
4243
|
+
if (!examples?.length)
|
|
4244
|
+
return [];
|
|
4245
|
+
return examples.map((example) => {
|
|
4246
|
+
if (typeof example === "string") {
|
|
4247
|
+
return {
|
|
4248
|
+
languageId: defaultLang,
|
|
4249
|
+
code: example,
|
|
4250
|
+
highlightLang: getLangForHighlight(defaultLang)
|
|
4251
|
+
};
|
|
4252
|
+
}
|
|
4253
|
+
return {
|
|
4254
|
+
languageId: example.language || defaultLang,
|
|
4255
|
+
code: example.code,
|
|
4256
|
+
highlightLang: getLangForHighlight(example.language || defaultLang)
|
|
4257
|
+
};
|
|
4258
|
+
});
|
|
4259
|
+
}
|
|
4260
|
+
function getLangForHighlight(lang) {
|
|
4261
|
+
const langMap = {
|
|
4262
|
+
typescript: "ts",
|
|
4263
|
+
javascript: "js",
|
|
4264
|
+
ts: "ts",
|
|
4265
|
+
js: "js",
|
|
4266
|
+
tsx: "tsx",
|
|
4267
|
+
jsx: "jsx",
|
|
4268
|
+
bash: "bash",
|
|
4269
|
+
shell: "bash",
|
|
4270
|
+
sh: "bash",
|
|
4271
|
+
curl: "bash",
|
|
4272
|
+
json: "json",
|
|
4273
|
+
python: "python",
|
|
4274
|
+
py: "python",
|
|
4275
|
+
go: "go",
|
|
4276
|
+
rust: "rust",
|
|
4277
|
+
ruby: "ruby"
|
|
4278
|
+
};
|
|
4279
|
+
return langMap[lang.toLowerCase()] || lang;
|
|
4280
|
+
}
|
|
4281
|
+
function getLanguagesFromExamples(examples) {
|
|
4282
|
+
if (!examples?.length)
|
|
4283
|
+
return [];
|
|
4284
|
+
const langSet = new Set;
|
|
4285
|
+
const languages = [];
|
|
4286
|
+
for (const example of examples) {
|
|
4287
|
+
const lang = typeof example === "string" ? "typescript" : example.language || "typescript";
|
|
4288
|
+
if (!langSet.has(lang)) {
|
|
4289
|
+
langSet.add(lang);
|
|
4290
|
+
languages.push({
|
|
4291
|
+
id: lang,
|
|
4292
|
+
label: getLanguageLabel(lang)
|
|
4293
|
+
});
|
|
4294
|
+
}
|
|
4295
|
+
}
|
|
4296
|
+
return languages;
|
|
4297
|
+
}
|
|
4298
|
+
function getLanguageLabel(lang) {
|
|
4299
|
+
const labels = {
|
|
4300
|
+
typescript: "TypeScript",
|
|
4301
|
+
javascript: "JavaScript",
|
|
4302
|
+
ts: "TypeScript",
|
|
4303
|
+
js: "JavaScript",
|
|
4304
|
+
tsx: "TSX",
|
|
4305
|
+
jsx: "JSX",
|
|
4306
|
+
bash: "Bash",
|
|
4307
|
+
shell: "Shell",
|
|
4308
|
+
sh: "Shell",
|
|
4309
|
+
curl: "cURL",
|
|
4310
|
+
json: "JSON",
|
|
4311
|
+
python: "Python",
|
|
4312
|
+
py: "Python",
|
|
4313
|
+
go: "Go",
|
|
4314
|
+
rust: "Rust",
|
|
4315
|
+
ruby: "Ruby",
|
|
4316
|
+
node: "Node.js"
|
|
4317
|
+
};
|
|
4318
|
+
return labels[lang.toLowerCase()] || lang;
|
|
4319
|
+
}
|
|
4320
|
+
function buildImportStatement(exp, spec) {
|
|
4321
|
+
const packageName = spec.meta?.name || "package";
|
|
4322
|
+
const presentation = spec.extensions?.presentation?.[exp.id];
|
|
4323
|
+
const importPath = presentation?.importPath || packageName;
|
|
4324
|
+
const alias = presentation?.alias || exp.name;
|
|
4325
|
+
if (exp.kind === "type" || exp.kind === "interface") {
|
|
4326
|
+
return `import type { ${alias} } from '${importPath}'`;
|
|
4327
|
+
}
|
|
4328
|
+
return `import { ${alias} } from '${importPath}'`;
|
|
4329
|
+
}
|
|
4202
4330
|
|
|
4203
4331
|
// src/components/styled/ClassPage.tsx
|
|
4332
|
+
import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
4333
|
+
|
|
4334
|
+
function formatMethodSignature(member) {
|
|
4335
|
+
const sig = member.signatures?.[0];
|
|
4336
|
+
const params = sig?.parameters ?? [];
|
|
4337
|
+
const returnType = formatSchema(sig?.returns?.schema);
|
|
4338
|
+
const paramStr = params.map((p) => `${p.name}${p.required === false ? "?" : ""}: ${formatSchema(p.schema)}`).join(", ");
|
|
4339
|
+
return `(${paramStr}): ${returnType}`;
|
|
4340
|
+
}
|
|
4341
|
+
function getMemberBadges(member) {
|
|
4342
|
+
const badges = [];
|
|
4343
|
+
const flags = member.flags;
|
|
4344
|
+
if (member.visibility && member.visibility !== "public") {
|
|
4345
|
+
badges.push(member.visibility);
|
|
4346
|
+
}
|
|
4347
|
+
if (flags?.static)
|
|
4348
|
+
badges.push("static");
|
|
4349
|
+
if (flags?.readonly)
|
|
4350
|
+
badges.push("readonly");
|
|
4351
|
+
if (flags?.async)
|
|
4352
|
+
badges.push("async");
|
|
4353
|
+
return badges;
|
|
4354
|
+
}
|
|
4355
|
+
function ClassPage({ export: exp, spec }) {
|
|
4356
|
+
const constructors = exp.members?.filter((m) => m.kind === "constructor") ?? [];
|
|
4357
|
+
const properties = exp.members?.filter((m) => m.kind === "property" || m.kind === "field") ?? [];
|
|
4358
|
+
const methods = exp.members?.filter((m) => m.kind === "method") ?? [];
|
|
4359
|
+
const staticProperties = properties.filter((m) => m.flags?.static);
|
|
4360
|
+
const instanceProperties = properties.filter((m) => !m.flags?.static);
|
|
4361
|
+
const staticMethods = methods.filter((m) => m.flags?.static);
|
|
4362
|
+
const instanceMethods = methods.filter((m) => !m.flags?.static);
|
|
4363
|
+
const constructorSig = constructors[0]?.signatures?.[0];
|
|
4364
|
+
const constructorParams = constructorSig?.parameters ?? [];
|
|
4365
|
+
const languages = getLanguagesFromExamples(exp.examples);
|
|
4366
|
+
const examples = specExamplesToCodeExamples(exp.examples);
|
|
4367
|
+
const importStatement = buildImportStatement(exp, spec);
|
|
4368
|
+
const displayExamples = examples.length > 0 ? examples : [{
|
|
4369
|
+
languageId: "typescript",
|
|
4370
|
+
code: `${importStatement}
|
|
4371
|
+
|
|
4372
|
+
const instance = new ${exp.name}(${constructorParams.map((p) => p.name).join(", ")});`,
|
|
4373
|
+
highlightLang: "ts"
|
|
4374
|
+
}];
|
|
4375
|
+
const displayLanguages = languages.length > 0 ? languages : [{ id: "typescript", label: "TypeScript" }];
|
|
4376
|
+
const inheritance = [
|
|
4377
|
+
exp.extends && `extends ${exp.extends}`,
|
|
4378
|
+
exp.implements?.length && `implements ${exp.implements.join(", ")}`
|
|
4379
|
+
].filter(Boolean).join(" ");
|
|
4380
|
+
return /* @__PURE__ */ jsx8("div", {
|
|
4381
|
+
className: "doccov-class-page not-prose",
|
|
4382
|
+
children: /* @__PURE__ */ jsxs7(APISection, {
|
|
4383
|
+
id: exp.id || exp.name,
|
|
4384
|
+
title: `class ${exp.name}`,
|
|
4385
|
+
description: /* @__PURE__ */ jsxs7("div", {
|
|
4386
|
+
className: "space-y-3",
|
|
4387
|
+
children: [
|
|
4388
|
+
inheritance && /* @__PURE__ */ jsx8("p", {
|
|
4389
|
+
className: "font-mono text-sm text-muted-foreground",
|
|
4390
|
+
children: inheritance
|
|
4391
|
+
}),
|
|
4392
|
+
exp.description && /* @__PURE__ */ jsx8("p", {
|
|
4393
|
+
children: exp.description
|
|
4394
|
+
}),
|
|
4395
|
+
/* @__PURE__ */ jsx8("code", {
|
|
4396
|
+
className: "text-sm font-mono bg-muted px-2 py-1 rounded inline-block",
|
|
4397
|
+
children: importStatement
|
|
4398
|
+
})
|
|
4399
|
+
]
|
|
4400
|
+
}),
|
|
4401
|
+
languages: displayLanguages,
|
|
4402
|
+
examples: displayExamples,
|
|
4403
|
+
codePanelTitle: `new ${exp.name}()`,
|
|
4404
|
+
children: [
|
|
4405
|
+
constructorParams.length > 0 && /* @__PURE__ */ jsx8(ParameterList, {
|
|
4406
|
+
title: "Constructor",
|
|
4407
|
+
children: constructorParams.map((param, index) => {
|
|
4408
|
+
const apiParam = specParamToAPIParam(param);
|
|
4409
|
+
return /* @__PURE__ */ jsx8(APIParameterItem, {
|
|
4410
|
+
name: apiParam.name,
|
|
4411
|
+
type: apiParam.type,
|
|
4412
|
+
required: apiParam.required,
|
|
4413
|
+
description: apiParam.description,
|
|
4414
|
+
children: apiParam.children
|
|
4415
|
+
}, param.name ?? index);
|
|
4416
|
+
})
|
|
4417
|
+
}),
|
|
4418
|
+
(staticProperties.length > 0 || staticMethods.length > 0) && /* @__PURE__ */ jsxs7(ParameterList, {
|
|
4419
|
+
title: "Static Members",
|
|
4420
|
+
className: "mt-6",
|
|
4421
|
+
children: [
|
|
4422
|
+
staticProperties.map((member) => {
|
|
4423
|
+
const badges = getMemberBadges(member);
|
|
4424
|
+
return /* @__PURE__ */ jsx8(APIParameterItem, {
|
|
4425
|
+
name: member.name,
|
|
4426
|
+
type: formatSchema(member.schema),
|
|
4427
|
+
description: badges.length > 0 ? `[${badges.join(", ")}] ${member.description || ""}` : member.description
|
|
4428
|
+
}, member.name);
|
|
4429
|
+
}),
|
|
4430
|
+
staticMethods.map((member) => {
|
|
4431
|
+
const badges = getMemberBadges(member);
|
|
4432
|
+
return /* @__PURE__ */ jsx8(APIParameterItem, {
|
|
4433
|
+
name: `${member.name}()`,
|
|
4434
|
+
type: formatMethodSignature(member),
|
|
4435
|
+
description: badges.length > 0 ? `[${badges.join(", ")}] ${member.description || ""}` : member.description
|
|
4436
|
+
}, member.name);
|
|
4437
|
+
})
|
|
4438
|
+
]
|
|
4439
|
+
}),
|
|
4440
|
+
instanceMethods.length > 0 && /* @__PURE__ */ jsx8(ParameterList, {
|
|
4441
|
+
title: "Methods",
|
|
4442
|
+
className: "mt-6",
|
|
4443
|
+
children: instanceMethods.map((member) => {
|
|
4444
|
+
const badges = getMemberBadges(member);
|
|
4445
|
+
return /* @__PURE__ */ jsx8(APIParameterItem, {
|
|
4446
|
+
name: `${member.name}()`,
|
|
4447
|
+
type: formatMethodSignature(member),
|
|
4448
|
+
description: badges.length > 0 ? `[${badges.join(", ")}] ${member.description || ""}` : member.description
|
|
4449
|
+
}, member.name);
|
|
4450
|
+
})
|
|
4451
|
+
}),
|
|
4452
|
+
instanceProperties.length > 0 && /* @__PURE__ */ jsx8(ParameterList, {
|
|
4453
|
+
title: "Properties",
|
|
4454
|
+
className: "mt-6",
|
|
4455
|
+
children: instanceProperties.map((member) => {
|
|
4456
|
+
const badges = getMemberBadges(member);
|
|
4457
|
+
return /* @__PURE__ */ jsx8(APIParameterItem, {
|
|
4458
|
+
name: member.name,
|
|
4459
|
+
type: formatSchema(member.schema),
|
|
4460
|
+
description: badges.length > 0 ? `[${badges.join(", ")}] ${member.description || ""}` : member.description
|
|
4461
|
+
}, member.name);
|
|
4462
|
+
})
|
|
4463
|
+
})
|
|
4464
|
+
]
|
|
4465
|
+
})
|
|
4466
|
+
});
|
|
4467
|
+
}
|
|
4468
|
+
|
|
4469
|
+
// src/components/styled/EnumPage.tsx
|
|
4470
|
+
import {
|
|
4471
|
+
APIParameterItem as APIParameterItem2,
|
|
4472
|
+
APISection as APISection2,
|
|
4473
|
+
ParameterList as ParameterList2
|
|
4474
|
+
} from "@doccov/ui/docskit";
|
|
4475
|
+
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
4476
|
+
|
|
4477
|
+
function EnumPage({ export: exp, spec }) {
|
|
4478
|
+
const members = exp.members ?? [];
|
|
4479
|
+
const languages = getLanguagesFromExamples(exp.examples);
|
|
4480
|
+
const examples = specExamplesToCodeExamples(exp.examples);
|
|
4481
|
+
const importStatement = buildImportStatement(exp, spec);
|
|
4482
|
+
const enumDefinition = members.length > 0 ? `enum ${exp.name} {
|
|
4483
|
+
${members.map((m) => {
|
|
4484
|
+
const value = m.schema !== undefined ? typeof m.schema === "object" && m.schema !== null ? m.schema.const ?? m.schema.default : m.schema : undefined;
|
|
4485
|
+
return ` ${m.name}${value !== undefined ? ` = ${JSON.stringify(value)}` : ""},`;
|
|
4486
|
+
}).join(`
|
|
4487
|
+
`)}
|
|
4488
|
+
}` : `enum ${exp.name} { }`;
|
|
4489
|
+
const displayExamples = examples.length > 0 ? examples : [{
|
|
4490
|
+
languageId: "typescript",
|
|
4491
|
+
code: `${importStatement}
|
|
4492
|
+
|
|
4493
|
+
${enumDefinition}`,
|
|
4494
|
+
highlightLang: "ts"
|
|
4495
|
+
}];
|
|
4496
|
+
const displayLanguages = languages.length > 0 ? languages : [{ id: "typescript", label: "TypeScript" }];
|
|
4497
|
+
return /* @__PURE__ */ jsx9("div", {
|
|
4498
|
+
className: "doccov-enum-page not-prose",
|
|
4499
|
+
children: /* @__PURE__ */ jsx9(APISection2, {
|
|
4500
|
+
id: exp.id || exp.name,
|
|
4501
|
+
title: `enum ${exp.name}`,
|
|
4502
|
+
description: /* @__PURE__ */ jsxs8("div", {
|
|
4503
|
+
className: "space-y-3",
|
|
4504
|
+
children: [
|
|
4505
|
+
exp.description && /* @__PURE__ */ jsx9("p", {
|
|
4506
|
+
children: exp.description
|
|
4507
|
+
}),
|
|
4508
|
+
exp.deprecated && /* @__PURE__ */ jsxs8("div", {
|
|
4509
|
+
className: "rounded-md bg-yellow-500/10 border border-yellow-500/20 px-3 py-2 text-sm text-yellow-600 dark:text-yellow-400",
|
|
4510
|
+
children: [
|
|
4511
|
+
/* @__PURE__ */ jsx9("strong", {
|
|
4512
|
+
children: "Deprecated:"
|
|
4513
|
+
}),
|
|
4514
|
+
" This export is deprecated."
|
|
4515
|
+
]
|
|
4516
|
+
}),
|
|
4517
|
+
/* @__PURE__ */ jsx9("code", {
|
|
4518
|
+
className: "text-sm font-mono bg-muted px-2 py-1 rounded inline-block",
|
|
4519
|
+
children: importStatement
|
|
4520
|
+
})
|
|
4521
|
+
]
|
|
4522
|
+
}),
|
|
4523
|
+
languages: displayLanguages,
|
|
4524
|
+
examples: displayExamples,
|
|
4525
|
+
codePanelTitle: exp.name,
|
|
4526
|
+
children: members.length > 0 && /* @__PURE__ */ jsx9(ParameterList2, {
|
|
4527
|
+
title: "Members",
|
|
4528
|
+
children: members.map((member, index) => {
|
|
4529
|
+
const value = member.schema !== undefined ? typeof member.schema === "object" && member.schema !== null ? member.schema.const ?? member.schema.default ?? undefined : member.schema : undefined;
|
|
4530
|
+
return /* @__PURE__ */ jsx9(APIParameterItem2, {
|
|
4531
|
+
name: member.name,
|
|
4532
|
+
type: value !== undefined ? String(value) : "auto",
|
|
4533
|
+
description: member.description
|
|
4534
|
+
}, member.name ?? index);
|
|
4535
|
+
})
|
|
4536
|
+
})
|
|
4537
|
+
})
|
|
4538
|
+
});
|
|
4539
|
+
}
|
|
4540
|
+
|
|
4541
|
+
// src/components/styled/ExportIndexPage.tsx
|
|
4204
4542
|
import { cn as cn2 } from "@doccov/ui/lib/utils";
|
|
4205
|
-
import { CodeTabs, ImportSection } from "@doccov/ui/api";
|
|
4206
4543
|
|
|
4207
4544
|
// ../../node_modules/lucide-react/dist/esm/createLucideIcon.js
|
|
4208
4545
|
import { forwardRef as forwardRef2, createElement as createElement2 } from "react";
|
|
@@ -22235,713 +22572,72 @@ var __iconNode1651 = [
|
|
|
22235
22572
|
["line", { x1: "8", x2: "14", y1: "11", y2: "11", key: "durymu" }]
|
|
22236
22573
|
];
|
|
22237
22574
|
var ZoomOut = createLucideIcon("zoom-out", __iconNode1651);
|
|
22238
|
-
// src/components/styled/
|
|
22239
|
-
import { useState as
|
|
22575
|
+
// src/components/styled/ExportIndexPage.tsx
|
|
22576
|
+
import { useState as useState4, useMemo } from "react";
|
|
22240
22577
|
|
|
22241
|
-
// src/components/styled/
|
|
22578
|
+
// src/components/styled/ExportCard.tsx
|
|
22579
|
+
var import_link3 = __toESM(require_link(), 1);
|
|
22242
22580
|
import { cn } from "@doccov/ui/lib/utils";
|
|
22243
|
-
import {
|
|
22244
|
-
import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
22581
|
+
import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
22245
22582
|
|
|
22246
|
-
|
|
22247
|
-
|
|
22248
|
-
|
|
22249
|
-
|
|
22250
|
-
|
|
22251
|
-
|
|
22252
|
-
|
|
22253
|
-
|
|
22254
|
-
|
|
22255
|
-
function
|
|
22256
|
-
|
|
22257
|
-
|
|
22258
|
-
|
|
22259
|
-
|
|
22260
|
-
|
|
22261
|
-
|
|
22262
|
-
|
|
22263
|
-
}
|
|
22264
|
-
function countProperties2(schema) {
|
|
22265
|
-
const props = getNestedProperties2(schema);
|
|
22266
|
-
return props ? Object.keys(props).length : 0;
|
|
22267
|
-
}
|
|
22268
|
-
function NestedPropertyItem({
|
|
22583
|
+
var KIND_COLORS = {
|
|
22584
|
+
function: "group-hover:text-blue-600 dark:group-hover:text-blue-400",
|
|
22585
|
+
class: "group-hover:text-purple-600 dark:group-hover:text-purple-400",
|
|
22586
|
+
interface: "group-hover:text-green-600 dark:group-hover:text-green-400",
|
|
22587
|
+
type: "group-hover:text-amber-600 dark:group-hover:text-amber-400",
|
|
22588
|
+
enum: "group-hover:text-rose-600 dark:group-hover:text-rose-400",
|
|
22589
|
+
variable: "group-hover:text-cyan-600 dark:group-hover:text-cyan-400"
|
|
22590
|
+
};
|
|
22591
|
+
var KIND_BADGE_COLORS = {
|
|
22592
|
+
function: "bg-blue-500/10 text-blue-600 dark:text-blue-400",
|
|
22593
|
+
class: "bg-purple-500/10 text-purple-600 dark:text-purple-400",
|
|
22594
|
+
interface: "bg-green-500/10 text-green-600 dark:text-green-400",
|
|
22595
|
+
type: "bg-amber-500/10 text-amber-600 dark:text-amber-400",
|
|
22596
|
+
enum: "bg-rose-500/10 text-rose-600 dark:text-rose-400",
|
|
22597
|
+
variable: "bg-cyan-500/10 text-cyan-600 dark:text-cyan-400"
|
|
22598
|
+
};
|
|
22599
|
+
function ExportCard({
|
|
22269
22600
|
name,
|
|
22270
|
-
|
|
22271
|
-
|
|
22272
|
-
|
|
22601
|
+
description,
|
|
22602
|
+
href,
|
|
22603
|
+
kind = "function",
|
|
22604
|
+
className
|
|
22273
22605
|
}) {
|
|
22274
|
-
const
|
|
22275
|
-
const
|
|
22276
|
-
const
|
|
22277
|
-
|
|
22278
|
-
|
|
22279
|
-
|
|
22280
|
-
const description = schemaObj?.description;
|
|
22281
|
-
return /* @__PURE__ */ jsxs7("div", {
|
|
22282
|
-
className: cn("border-t border-border first:border-t-0", depth > 0 && "ml-4"),
|
|
22606
|
+
const isFunction = kind === "function";
|
|
22607
|
+
const hoverColor = KIND_COLORS[kind];
|
|
22608
|
+
const badgeColor = KIND_BADGE_COLORS[kind];
|
|
22609
|
+
return /* @__PURE__ */ jsxs9(import_link3.default, {
|
|
22610
|
+
href,
|
|
22611
|
+
className: cn("group block rounded-lg border border-border bg-card/50 p-4", "transition-all duration-200 ease-out", "hover:border-primary/30 hover:bg-card hover:shadow-lg hover:shadow-primary/5", "hover:-translate-y-1", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", className),
|
|
22283
22612
|
children: [
|
|
22284
|
-
/* @__PURE__ */
|
|
22285
|
-
className: "
|
|
22286
|
-
children:
|
|
22287
|
-
|
|
22288
|
-
|
|
22289
|
-
|
|
22290
|
-
|
|
22291
|
-
|
|
22292
|
-
|
|
22293
|
-
|
|
22294
|
-
|
|
22295
|
-
|
|
22296
|
-
|
|
22297
|
-
|
|
22298
|
-
|
|
22299
|
-
|
|
22300
|
-
className: "w-5"
|
|
22301
|
-
}),
|
|
22302
|
-
/* @__PURE__ */ jsxs7("div", {
|
|
22303
|
-
className: "flex-1 min-w-0",
|
|
22304
|
-
children: [
|
|
22305
|
-
/* @__PURE__ */ jsxs7("div", {
|
|
22306
|
-
className: "flex items-baseline gap-2 flex-wrap",
|
|
22307
|
-
children: [
|
|
22308
|
-
/* @__PURE__ */ jsxs7("span", {
|
|
22309
|
-
className: "font-mono text-sm text-foreground",
|
|
22310
|
-
children: [
|
|
22311
|
-
name,
|
|
22312
|
-
!required && /* @__PURE__ */ jsx8("span", {
|
|
22313
|
-
className: "text-muted-foreground",
|
|
22314
|
-
children: "?"
|
|
22315
|
-
})
|
|
22316
|
-
]
|
|
22317
|
-
}),
|
|
22318
|
-
/* @__PURE__ */ jsx8("span", {
|
|
22319
|
-
className: "font-mono text-sm text-muted-foreground",
|
|
22320
|
-
children: hasNested ? "object" : type
|
|
22321
|
-
}),
|
|
22322
|
-
hasNested && /* @__PURE__ */ jsxs7("button", {
|
|
22323
|
-
type: "button",
|
|
22324
|
-
onClick: () => setExpanded(!expanded),
|
|
22325
|
-
className: "text-xs text-primary hover:underline cursor-pointer",
|
|
22326
|
-
children: [
|
|
22327
|
-
nestedCount,
|
|
22328
|
-
" ",
|
|
22329
|
-
nestedCount === 1 ? "property" : "properties"
|
|
22330
|
-
]
|
|
22331
|
-
})
|
|
22332
|
-
]
|
|
22333
|
-
}),
|
|
22334
|
-
description && /* @__PURE__ */ jsx8("p", {
|
|
22335
|
-
className: "text-sm text-muted-foreground mt-1",
|
|
22336
|
-
children: description
|
|
22337
|
-
})
|
|
22338
|
-
]
|
|
22339
|
-
})
|
|
22340
|
-
]
|
|
22341
|
-
})
|
|
22613
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
22614
|
+
className: "flex items-center gap-2 mb-2",
|
|
22615
|
+
children: [
|
|
22616
|
+
/* @__PURE__ */ jsx10("span", {
|
|
22617
|
+
className: cn("font-mono text-base font-medium text-foreground transition-colors duration-200", hoverColor),
|
|
22618
|
+
children: name
|
|
22619
|
+
}),
|
|
22620
|
+
isFunction && /* @__PURE__ */ jsx10("span", {
|
|
22621
|
+
className: "font-mono text-base text-muted-foreground",
|
|
22622
|
+
children: "()"
|
|
22623
|
+
}),
|
|
22624
|
+
/* @__PURE__ */ jsx10("span", {
|
|
22625
|
+
className: cn("ml-auto text-xs px-2 py-0.5 rounded-full font-medium", badgeColor),
|
|
22626
|
+
children: kind
|
|
22627
|
+
})
|
|
22628
|
+
]
|
|
22342
22629
|
}),
|
|
22343
|
-
|
|
22344
|
-
className: "
|
|
22345
|
-
children:
|
|
22346
|
-
name: propName,
|
|
22347
|
-
schema: propSchema,
|
|
22348
|
-
required: getRequiredFields2(schema).includes(propName),
|
|
22349
|
-
depth: depth + 1
|
|
22350
|
-
}, propName))
|
|
22351
|
-
})
|
|
22352
|
-
]
|
|
22353
|
-
});
|
|
22354
|
-
}
|
|
22355
|
-
function ParameterItem({
|
|
22356
|
-
param,
|
|
22357
|
-
depth = 0,
|
|
22358
|
-
className
|
|
22359
|
-
}) {
|
|
22360
|
-
const [expanded, setExpanded] = useState4(false);
|
|
22361
|
-
const type = formatSchema(param.schema);
|
|
22362
|
-
const isRequired = param.required !== false;
|
|
22363
|
-
const nestedProps = getNestedProperties2(param.schema);
|
|
22364
|
-
const nestedCount = countProperties2(param.schema);
|
|
22365
|
-
const hasNested = nestedCount > 0;
|
|
22366
|
-
return /* @__PURE__ */ jsxs7("div", {
|
|
22367
|
-
className: cn("border-b border-border last:border-b-0", className),
|
|
22368
|
-
children: [
|
|
22369
|
-
/* @__PURE__ */ jsx8("div", {
|
|
22370
|
-
className: "py-3",
|
|
22371
|
-
children: /* @__PURE__ */ jsxs7("div", {
|
|
22372
|
-
className: "flex items-start gap-2",
|
|
22373
|
-
children: [
|
|
22374
|
-
hasNested && /* @__PURE__ */ jsx8("button", {
|
|
22375
|
-
type: "button",
|
|
22376
|
-
onClick: () => setExpanded(!expanded),
|
|
22377
|
-
className: "mt-0.5 p-0.5 text-muted-foreground hover:text-foreground transition-colors cursor-pointer",
|
|
22378
|
-
"aria-label": expanded ? "Collapse" : "Expand",
|
|
22379
|
-
children: /* @__PURE__ */ jsx8(ChevronRight, {
|
|
22380
|
-
size: 14,
|
|
22381
|
-
className: cn("transition-transform duration-200", expanded && "rotate-90")
|
|
22382
|
-
})
|
|
22383
|
-
}),
|
|
22384
|
-
!hasNested && /* @__PURE__ */ jsx8("div", {
|
|
22385
|
-
className: "w-5"
|
|
22386
|
-
}),
|
|
22387
|
-
/* @__PURE__ */ jsxs7("div", {
|
|
22388
|
-
className: "flex-1 min-w-0",
|
|
22389
|
-
children: [
|
|
22390
|
-
/* @__PURE__ */ jsxs7("div", {
|
|
22391
|
-
className: "flex items-baseline gap-2 flex-wrap",
|
|
22392
|
-
children: [
|
|
22393
|
-
/* @__PURE__ */ jsx8("span", {
|
|
22394
|
-
className: "font-mono text-sm font-medium text-foreground",
|
|
22395
|
-
children: param.name
|
|
22396
|
-
}),
|
|
22397
|
-
isRequired && /* @__PURE__ */ jsx8("span", {
|
|
22398
|
-
className: "text-[10px] font-semibold px-1.5 py-0.5 rounded border border-border bg-muted text-muted-foreground uppercase tracking-wide",
|
|
22399
|
-
children: "Required"
|
|
22400
|
-
}),
|
|
22401
|
-
/* @__PURE__ */ jsx8("span", {
|
|
22402
|
-
className: "font-mono text-sm text-muted-foreground",
|
|
22403
|
-
children: hasNested ? "object" : type
|
|
22404
|
-
}),
|
|
22405
|
-
hasNested && /* @__PURE__ */ jsxs7("button", {
|
|
22406
|
-
type: "button",
|
|
22407
|
-
onClick: () => setExpanded(!expanded),
|
|
22408
|
-
className: "text-xs text-primary hover:underline cursor-pointer",
|
|
22409
|
-
children: [
|
|
22410
|
-
nestedCount,
|
|
22411
|
-
" ",
|
|
22412
|
-
nestedCount === 1 ? "property" : "properties"
|
|
22413
|
-
]
|
|
22414
|
-
})
|
|
22415
|
-
]
|
|
22416
|
-
}),
|
|
22417
|
-
param.description && /* @__PURE__ */ jsx8("p", {
|
|
22418
|
-
className: "text-sm text-muted-foreground mt-1",
|
|
22419
|
-
children: param.description
|
|
22420
|
-
})
|
|
22421
|
-
]
|
|
22422
|
-
})
|
|
22423
|
-
]
|
|
22424
|
-
})
|
|
22425
|
-
}),
|
|
22426
|
-
hasNested && expanded && nestedProps && /* @__PURE__ */ jsx8("div", {
|
|
22427
|
-
className: "border-l border-border ml-2 mb-3",
|
|
22428
|
-
children: Object.entries(nestedProps).map(([propName, propSchema]) => /* @__PURE__ */ jsx8(NestedPropertyItem, {
|
|
22429
|
-
name: propName,
|
|
22430
|
-
schema: propSchema,
|
|
22431
|
-
required: getRequiredFields2(param.schema).includes(propName),
|
|
22432
|
-
depth: depth + 1
|
|
22433
|
-
}, propName))
|
|
22434
|
-
})
|
|
22435
|
-
]
|
|
22436
|
-
});
|
|
22437
|
-
}
|
|
22438
|
-
|
|
22439
|
-
// src/components/styled/ClassPage.tsx
|
|
22440
|
-
import { jsx as jsx9, jsxs as jsxs8, Fragment } from "react/jsx-runtime";
|
|
22441
|
-
|
|
22442
|
-
function PropertyItem({ member }) {
|
|
22443
|
-
const visibility = member.visibility ?? "public";
|
|
22444
|
-
const flags = member.flags;
|
|
22445
|
-
const isStatic = flags?.static;
|
|
22446
|
-
const isReadonly = flags?.readonly;
|
|
22447
|
-
const type = formatSchema(member.schema);
|
|
22448
|
-
return /* @__PURE__ */ jsxs8("div", {
|
|
22449
|
-
className: "py-4 first:pt-4 last:pb-4",
|
|
22450
|
-
children: [
|
|
22451
|
-
/* @__PURE__ */ jsxs8("div", {
|
|
22452
|
-
className: "flex items-center gap-2 flex-wrap",
|
|
22453
|
-
children: [
|
|
22454
|
-
/* @__PURE__ */ jsx9("code", {
|
|
22455
|
-
className: "font-mono text-sm font-medium text-foreground",
|
|
22456
|
-
children: member.name
|
|
22457
|
-
}),
|
|
22458
|
-
/* @__PURE__ */ jsx9("code", {
|
|
22459
|
-
className: "font-mono text-sm text-primary",
|
|
22460
|
-
children: type
|
|
22461
|
-
}),
|
|
22462
|
-
visibility !== "public" && /* @__PURE__ */ jsx9("span", {
|
|
22463
|
-
className: "text-xs px-1.5 py-0.5 rounded-full bg-muted text-muted-foreground font-medium",
|
|
22464
|
-
children: visibility
|
|
22465
|
-
}),
|
|
22466
|
-
isStatic && /* @__PURE__ */ jsx9("span", {
|
|
22467
|
-
className: "text-xs px-1.5 py-0.5 rounded-full bg-blue-500/10 text-blue-600 dark:text-blue-400 font-medium",
|
|
22468
|
-
children: "static"
|
|
22469
|
-
}),
|
|
22470
|
-
isReadonly && /* @__PURE__ */ jsx9("span", {
|
|
22471
|
-
className: "text-xs px-1.5 py-0.5 rounded-full bg-purple-500/10 text-purple-600 dark:text-purple-400 font-medium",
|
|
22472
|
-
children: "readonly"
|
|
22473
|
-
})
|
|
22474
|
-
]
|
|
22475
|
-
}),
|
|
22476
|
-
member.description && /* @__PURE__ */ jsx9("p", {
|
|
22477
|
-
className: "text-sm text-muted-foreground mt-2 leading-relaxed",
|
|
22478
|
-
children: member.description
|
|
22479
|
-
})
|
|
22480
|
-
]
|
|
22481
|
-
});
|
|
22482
|
-
}
|
|
22483
|
-
function MethodItem({ member }) {
|
|
22484
|
-
const sig = member.signatures?.[0];
|
|
22485
|
-
const params = sig?.parameters ?? [];
|
|
22486
|
-
const returnType = formatSchema(sig?.returns?.schema);
|
|
22487
|
-
const visibility = member.visibility ?? "public";
|
|
22488
|
-
const flags = member.flags;
|
|
22489
|
-
const isStatic = flags?.static;
|
|
22490
|
-
const isAsync = flags?.async;
|
|
22491
|
-
return /* @__PURE__ */ jsxs8("div", {
|
|
22492
|
-
className: "p-4",
|
|
22493
|
-
children: [
|
|
22494
|
-
/* @__PURE__ */ jsxs8("div", {
|
|
22495
|
-
className: "flex items-center gap-2 flex-wrap mb-1",
|
|
22496
|
-
children: [
|
|
22497
|
-
visibility !== "public" && /* @__PURE__ */ jsx9("span", {
|
|
22498
|
-
className: "text-xs px-1.5 py-0.5 rounded-full bg-muted text-muted-foreground font-medium",
|
|
22499
|
-
children: visibility
|
|
22500
|
-
}),
|
|
22501
|
-
isStatic && /* @__PURE__ */ jsx9("span", {
|
|
22502
|
-
className: "text-xs px-1.5 py-0.5 rounded-full bg-blue-500/10 text-blue-600 dark:text-blue-400 font-medium",
|
|
22503
|
-
children: "static"
|
|
22504
|
-
}),
|
|
22505
|
-
isAsync && /* @__PURE__ */ jsx9("span", {
|
|
22506
|
-
className: "text-xs px-1.5 py-0.5 rounded-full bg-green-500/10 text-green-600 dark:text-green-400 font-medium",
|
|
22507
|
-
children: "async"
|
|
22508
|
-
})
|
|
22509
|
-
]
|
|
22510
|
-
}),
|
|
22511
|
-
/* @__PURE__ */ jsxs8("code", {
|
|
22512
|
-
className: "font-mono text-sm text-foreground",
|
|
22513
|
-
children: [
|
|
22514
|
-
/* @__PURE__ */ jsx9("span", {
|
|
22515
|
-
className: "font-medium",
|
|
22516
|
-
children: member.name
|
|
22517
|
-
}),
|
|
22518
|
-
/* @__PURE__ */ jsx9("span", {
|
|
22519
|
-
className: "text-muted-foreground",
|
|
22520
|
-
children: "("
|
|
22521
|
-
}),
|
|
22522
|
-
params.map((p, i) => /* @__PURE__ */ jsxs8("span", {
|
|
22523
|
-
children: [
|
|
22524
|
-
i > 0 && /* @__PURE__ */ jsx9("span", {
|
|
22525
|
-
className: "text-muted-foreground",
|
|
22526
|
-
children: ", "
|
|
22527
|
-
}),
|
|
22528
|
-
/* @__PURE__ */ jsx9("span", {
|
|
22529
|
-
className: "text-muted-foreground",
|
|
22530
|
-
children: p.name
|
|
22531
|
-
}),
|
|
22532
|
-
p.required === false && /* @__PURE__ */ jsx9("span", {
|
|
22533
|
-
className: "text-muted-foreground",
|
|
22534
|
-
children: "?"
|
|
22535
|
-
}),
|
|
22536
|
-
/* @__PURE__ */ jsx9("span", {
|
|
22537
|
-
className: "text-muted-foreground",
|
|
22538
|
-
children: ": "
|
|
22539
|
-
}),
|
|
22540
|
-
/* @__PURE__ */ jsx9("span", {
|
|
22541
|
-
className: "text-primary",
|
|
22542
|
-
children: formatSchema(p.schema)
|
|
22543
|
-
})
|
|
22544
|
-
]
|
|
22545
|
-
}, p.name)),
|
|
22546
|
-
/* @__PURE__ */ jsx9("span", {
|
|
22547
|
-
className: "text-muted-foreground",
|
|
22548
|
-
children: "): "
|
|
22549
|
-
}),
|
|
22550
|
-
/* @__PURE__ */ jsx9("span", {
|
|
22551
|
-
className: "text-primary",
|
|
22552
|
-
children: returnType
|
|
22553
|
-
})
|
|
22554
|
-
]
|
|
22555
|
-
}),
|
|
22556
|
-
member.description && /* @__PURE__ */ jsx9("p", {
|
|
22557
|
-
className: "text-sm text-muted-foreground mt-2 leading-relaxed",
|
|
22558
|
-
children: member.description
|
|
22559
|
-
})
|
|
22560
|
-
]
|
|
22561
|
-
});
|
|
22562
|
-
}
|
|
22563
|
-
function ClassPage({ export: exp, spec, renderExample }) {
|
|
22564
|
-
const [copied, setCopied] = useState5(false);
|
|
22565
|
-
const hasExamples = exp.examples && exp.examples.length > 0;
|
|
22566
|
-
const constructors = exp.members?.filter((m) => m.kind === "constructor") ?? [];
|
|
22567
|
-
const properties = exp.members?.filter((m) => m.kind === "property" || m.kind === "field") ?? [];
|
|
22568
|
-
const methods = exp.members?.filter((m) => m.kind === "method") ?? [];
|
|
22569
|
-
const staticProperties = properties.filter((m) => m.flags?.static);
|
|
22570
|
-
const instanceProperties = properties.filter((m) => !m.flags?.static);
|
|
22571
|
-
const staticMethods = methods.filter((m) => m.flags?.static);
|
|
22572
|
-
const instanceMethods = methods.filter((m) => !m.flags?.static);
|
|
22573
|
-
const constructorSig = constructors[0]?.signatures?.[0];
|
|
22574
|
-
const constructorParams = constructorSig?.parameters ?? [];
|
|
22575
|
-
const packageName = spec.meta.name || "package";
|
|
22576
|
-
const importStatement = `import { ${exp.name} } from '${packageName}'`;
|
|
22577
|
-
const handleCopyName = () => {
|
|
22578
|
-
navigator.clipboard.writeText(exp.name);
|
|
22579
|
-
setCopied(true);
|
|
22580
|
-
setTimeout(() => setCopied(false), 1200);
|
|
22581
|
-
};
|
|
22582
|
-
const codeTabs = hasExamples ? exp.examples.map((example, index) => {
|
|
22583
|
-
const code = typeof example === "string" ? example : example.code;
|
|
22584
|
-
const title = typeof example === "string" ? `Example ${index + 1}` : example.title || `Example ${index + 1}`;
|
|
22585
|
-
const filename = `${exp.name.toLowerCase().replace(/[^a-z0-9]/g, "-")}-${index + 1}.ts`;
|
|
22586
|
-
return {
|
|
22587
|
-
label: title,
|
|
22588
|
-
code,
|
|
22589
|
-
content: renderExample ? renderExample(code, filename) : /* @__PURE__ */ jsx9("pre", {
|
|
22590
|
-
className: "p-4 overflow-x-auto",
|
|
22591
|
-
children: /* @__PURE__ */ jsx9("code", {
|
|
22592
|
-
className: "font-mono text-sm text-foreground",
|
|
22593
|
-
children: code
|
|
22594
|
-
})
|
|
22595
|
-
})
|
|
22596
|
-
};
|
|
22597
|
-
}) : [];
|
|
22598
|
-
return /* @__PURE__ */ jsxs8("div", {
|
|
22599
|
-
className: "doccov-class-page not-prose",
|
|
22600
|
-
children: [
|
|
22601
|
-
/* @__PURE__ */ jsxs8("header", {
|
|
22602
|
-
className: "mb-6",
|
|
22603
|
-
children: [
|
|
22604
|
-
/* @__PURE__ */ jsxs8("div", {
|
|
22605
|
-
className: "flex items-center gap-3",
|
|
22606
|
-
children: [
|
|
22607
|
-
/* @__PURE__ */ jsx9("span", {
|
|
22608
|
-
className: "text-xs px-2 py-0.5 rounded-full font-medium bg-purple-500/10 text-purple-600 dark:text-purple-400",
|
|
22609
|
-
children: "class"
|
|
22610
|
-
}),
|
|
22611
|
-
/* @__PURE__ */ jsx9("h1", {
|
|
22612
|
-
className: "font-mono text-3xl font-bold text-foreground tracking-tight",
|
|
22613
|
-
children: exp.name
|
|
22614
|
-
}),
|
|
22615
|
-
/* @__PURE__ */ jsx9("button", {
|
|
22616
|
-
type: "button",
|
|
22617
|
-
onClick: handleCopyName,
|
|
22618
|
-
className: cn2("p-1.5 rounded-md", "text-muted-foreground hover:text-foreground hover:bg-muted/50", "transition-all cursor-pointer"),
|
|
22619
|
-
"aria-label": "Copy class name",
|
|
22620
|
-
children: copied ? /* @__PURE__ */ jsx9(Check, {
|
|
22621
|
-
size: 18
|
|
22622
|
-
}) : /* @__PURE__ */ jsx9(Copy, {
|
|
22623
|
-
size: 18
|
|
22624
|
-
})
|
|
22625
|
-
})
|
|
22626
|
-
]
|
|
22627
|
-
}),
|
|
22628
|
-
(exp.extends || exp.implements?.length) && /* @__PURE__ */ jsxs8("div", {
|
|
22629
|
-
className: "mt-2 flex items-center gap-2 flex-wrap text-sm",
|
|
22630
|
-
children: [
|
|
22631
|
-
exp.extends && /* @__PURE__ */ jsxs8(Fragment, {
|
|
22632
|
-
children: [
|
|
22633
|
-
/* @__PURE__ */ jsx9("span", {
|
|
22634
|
-
className: "text-muted-foreground",
|
|
22635
|
-
children: "extends"
|
|
22636
|
-
}),
|
|
22637
|
-
/* @__PURE__ */ jsx9("code", {
|
|
22638
|
-
className: "font-mono text-primary",
|
|
22639
|
-
children: exp.extends
|
|
22640
|
-
})
|
|
22641
|
-
]
|
|
22642
|
-
}),
|
|
22643
|
-
exp.implements?.length && /* @__PURE__ */ jsxs8(Fragment, {
|
|
22644
|
-
children: [
|
|
22645
|
-
/* @__PURE__ */ jsx9("span", {
|
|
22646
|
-
className: "text-muted-foreground",
|
|
22647
|
-
children: "implements"
|
|
22648
|
-
}),
|
|
22649
|
-
/* @__PURE__ */ jsx9("code", {
|
|
22650
|
-
className: "font-mono text-primary",
|
|
22651
|
-
children: exp.implements.join(", ")
|
|
22652
|
-
})
|
|
22653
|
-
]
|
|
22654
|
-
})
|
|
22655
|
-
]
|
|
22656
|
-
}),
|
|
22657
|
-
exp.description && /* @__PURE__ */ jsx9("p", {
|
|
22658
|
-
className: "mt-4 text-muted-foreground leading-relaxed text-base max-w-2xl",
|
|
22659
|
-
children: exp.description
|
|
22660
|
-
})
|
|
22661
|
-
]
|
|
22662
|
-
}),
|
|
22663
|
-
/* @__PURE__ */ jsxs8("div", {
|
|
22664
|
-
className: cn2("grid gap-8 xl:gap-12", hasExamples ? "lg:grid-cols-[1fr,minmax(0,420px)]" : "grid-cols-1"),
|
|
22665
|
-
children: [
|
|
22666
|
-
/* @__PURE__ */ jsxs8("div", {
|
|
22667
|
-
className: "min-w-0 space-y-8",
|
|
22668
|
-
children: [
|
|
22669
|
-
/* @__PURE__ */ jsx9(ImportSection, {
|
|
22670
|
-
importStatement
|
|
22671
|
-
}),
|
|
22672
|
-
constructorParams.length > 0 && /* @__PURE__ */ jsxs8("section", {
|
|
22673
|
-
children: [
|
|
22674
|
-
/* @__PURE__ */ jsx9("h2", {
|
|
22675
|
-
className: "text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4",
|
|
22676
|
-
children: "Constructor"
|
|
22677
|
-
}),
|
|
22678
|
-
/* @__PURE__ */ jsx9("div", {
|
|
22679
|
-
className: "rounded-lg border border-border bg-card/50 divide-y divide-border",
|
|
22680
|
-
children: constructorParams.map((param, index) => /* @__PURE__ */ jsx9(ParameterItem, {
|
|
22681
|
-
param,
|
|
22682
|
-
className: "px-4"
|
|
22683
|
-
}, param.name ?? index))
|
|
22684
|
-
})
|
|
22685
|
-
]
|
|
22686
|
-
}),
|
|
22687
|
-
(staticProperties.length > 0 || staticMethods.length > 0) && /* @__PURE__ */ jsxs8("section", {
|
|
22688
|
-
children: [
|
|
22689
|
-
/* @__PURE__ */ jsx9("h2", {
|
|
22690
|
-
className: "text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4",
|
|
22691
|
-
children: "Static Members"
|
|
22692
|
-
}),
|
|
22693
|
-
/* @__PURE__ */ jsxs8("div", {
|
|
22694
|
-
className: "rounded-lg border border-border bg-card/50 divide-y divide-border",
|
|
22695
|
-
children: [
|
|
22696
|
-
staticProperties.map((member, index) => /* @__PURE__ */ jsx9(PropertyItem, {
|
|
22697
|
-
member
|
|
22698
|
-
}, member.name ?? `prop-${index}`)),
|
|
22699
|
-
staticMethods.map((member, index) => /* @__PURE__ */ jsx9(MethodItem, {
|
|
22700
|
-
member
|
|
22701
|
-
}, member.name ?? `method-${index}`))
|
|
22702
|
-
]
|
|
22703
|
-
})
|
|
22704
|
-
]
|
|
22705
|
-
}),
|
|
22706
|
-
instanceMethods.length > 0 && /* @__PURE__ */ jsxs8("section", {
|
|
22707
|
-
children: [
|
|
22708
|
-
/* @__PURE__ */ jsx9("h2", {
|
|
22709
|
-
className: "text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4",
|
|
22710
|
-
children: "Methods"
|
|
22711
|
-
}),
|
|
22712
|
-
/* @__PURE__ */ jsx9("div", {
|
|
22713
|
-
className: "rounded-lg border border-border bg-card/50 divide-y divide-border",
|
|
22714
|
-
children: instanceMethods.map((member, index) => /* @__PURE__ */ jsx9(MethodItem, {
|
|
22715
|
-
member
|
|
22716
|
-
}, member.name ?? index))
|
|
22717
|
-
})
|
|
22718
|
-
]
|
|
22719
|
-
}),
|
|
22720
|
-
instanceProperties.length > 0 && /* @__PURE__ */ jsxs8("section", {
|
|
22721
|
-
children: [
|
|
22722
|
-
/* @__PURE__ */ jsx9("h2", {
|
|
22723
|
-
className: "text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4",
|
|
22724
|
-
children: "Properties"
|
|
22725
|
-
}),
|
|
22726
|
-
/* @__PURE__ */ jsx9("div", {
|
|
22727
|
-
className: "rounded-lg border border-border bg-card/50 divide-y divide-border px-4",
|
|
22728
|
-
children: instanceProperties.map((member, index) => /* @__PURE__ */ jsx9(PropertyItem, {
|
|
22729
|
-
member
|
|
22730
|
-
}, member.name ?? index))
|
|
22731
|
-
})
|
|
22732
|
-
]
|
|
22733
|
-
})
|
|
22734
|
-
]
|
|
22735
|
-
}),
|
|
22736
|
-
hasExamples && /* @__PURE__ */ jsx9("aside", {
|
|
22737
|
-
className: "lg:sticky lg:top-16 lg:self-start lg:max-h-[calc(100vh-6rem)] lg:overflow-y-auto",
|
|
22738
|
-
children: codeTabs.length === 1 ? /* @__PURE__ */ jsx9("div", {
|
|
22739
|
-
className: "rounded-lg border border-border overflow-hidden bg-background",
|
|
22740
|
-
children: codeTabs[0].content
|
|
22741
|
-
}) : /* @__PURE__ */ jsx9(CodeTabs, {
|
|
22742
|
-
tabs: codeTabs,
|
|
22743
|
-
sticky: true
|
|
22744
|
-
})
|
|
22745
|
-
})
|
|
22746
|
-
]
|
|
22747
|
-
})
|
|
22748
|
-
]
|
|
22749
|
-
});
|
|
22750
|
-
}
|
|
22751
|
-
|
|
22752
|
-
// src/components/styled/EnumPage.tsx
|
|
22753
|
-
import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
22754
|
-
|
|
22755
|
-
function EnumPage({ export: exp, spec, renderExample }) {
|
|
22756
|
-
const members = exp.members ?? [];
|
|
22757
|
-
const hasExamples = exp.examples && exp.examples.length > 0;
|
|
22758
|
-
const signature = buildSignatureString(exp);
|
|
22759
|
-
return /* @__PURE__ */ jsxs9("div", {
|
|
22760
|
-
className: "space-y-6",
|
|
22761
|
-
children: [
|
|
22762
|
-
exp.description && /* @__PURE__ */ jsx10("p", {
|
|
22763
|
-
className: "text-muted-foreground text-base leading-relaxed",
|
|
22764
|
-
children: exp.description
|
|
22765
|
-
}),
|
|
22766
|
-
/* @__PURE__ */ jsxs9("section", {
|
|
22767
|
-
children: [
|
|
22768
|
-
/* @__PURE__ */ jsx10("h2", {
|
|
22769
|
-
className: "text-xl font-semibold mb-2",
|
|
22770
|
-
children: "Declaration"
|
|
22771
|
-
}),
|
|
22772
|
-
/* @__PURE__ */ jsx10("div", {
|
|
22773
|
-
className: "rounded-lg border border-border bg-muted/30 p-4 overflow-x-auto",
|
|
22774
|
-
children: /* @__PURE__ */ jsx10("code", {
|
|
22775
|
-
className: "font-mono text-sm text-foreground",
|
|
22776
|
-
children: signature
|
|
22777
|
-
})
|
|
22778
|
-
}),
|
|
22779
|
-
exp.deprecated && /* @__PURE__ */ jsxs9("div", {
|
|
22780
|
-
className: "mt-2 rounded-md bg-yellow-500/10 border border-yellow-500/20 px-3 py-2 text-sm text-yellow-600 dark:text-yellow-400",
|
|
22781
|
-
children: [
|
|
22782
|
-
/* @__PURE__ */ jsx10("strong", {
|
|
22783
|
-
children: "Deprecated:"
|
|
22784
|
-
}),
|
|
22785
|
-
" This export is deprecated."
|
|
22786
|
-
]
|
|
22787
|
-
})
|
|
22788
|
-
]
|
|
22789
|
-
}),
|
|
22790
|
-
members.length > 0 && /* @__PURE__ */ jsxs9("section", {
|
|
22791
|
-
children: [
|
|
22792
|
-
/* @__PURE__ */ jsx10("h2", {
|
|
22793
|
-
className: "text-xl font-semibold mb-2",
|
|
22794
|
-
children: "Members"
|
|
22795
|
-
}),
|
|
22796
|
-
/* @__PURE__ */ jsx10("div", {
|
|
22797
|
-
className: "overflow-x-auto",
|
|
22798
|
-
children: /* @__PURE__ */ jsxs9("table", {
|
|
22799
|
-
className: "w-full text-sm border-collapse",
|
|
22800
|
-
children: [
|
|
22801
|
-
/* @__PURE__ */ jsx10("thead", {
|
|
22802
|
-
children: /* @__PURE__ */ jsxs9("tr", {
|
|
22803
|
-
className: "border-b border-border",
|
|
22804
|
-
children: [
|
|
22805
|
-
/* @__PURE__ */ jsx10("th", {
|
|
22806
|
-
className: "text-left py-2 px-3 font-medium text-muted-foreground",
|
|
22807
|
-
children: "Name"
|
|
22808
|
-
}),
|
|
22809
|
-
/* @__PURE__ */ jsx10("th", {
|
|
22810
|
-
className: "text-left py-2 px-3 font-medium text-muted-foreground",
|
|
22811
|
-
children: "Value"
|
|
22812
|
-
}),
|
|
22813
|
-
/* @__PURE__ */ jsx10("th", {
|
|
22814
|
-
className: "text-left py-2 px-3 font-medium text-muted-foreground",
|
|
22815
|
-
children: "Description"
|
|
22816
|
-
})
|
|
22817
|
-
]
|
|
22818
|
-
})
|
|
22819
|
-
}),
|
|
22820
|
-
/* @__PURE__ */ jsx10("tbody", {
|
|
22821
|
-
children: members.map((member, index) => {
|
|
22822
|
-
const value = member.schema !== undefined ? typeof member.schema === "object" && member.schema !== null ? member.schema.const ?? member.schema.default ?? "-" : member.schema : "-";
|
|
22823
|
-
return /* @__PURE__ */ jsxs9("tr", {
|
|
22824
|
-
className: "border-b border-border last:border-0",
|
|
22825
|
-
children: [
|
|
22826
|
-
/* @__PURE__ */ jsx10("td", {
|
|
22827
|
-
className: "py-2 px-3 align-top",
|
|
22828
|
-
children: /* @__PURE__ */ jsx10("code", {
|
|
22829
|
-
className: "text-primary font-mono text-xs bg-secondary px-1.5 py-0.5 rounded",
|
|
22830
|
-
children: member.name
|
|
22831
|
-
})
|
|
22832
|
-
}),
|
|
22833
|
-
/* @__PURE__ */ jsx10("td", {
|
|
22834
|
-
className: "py-2 px-3 align-top",
|
|
22835
|
-
children: /* @__PURE__ */ jsx10("code", {
|
|
22836
|
-
className: "font-mono text-xs text-muted-foreground",
|
|
22837
|
-
children: String(value)
|
|
22838
|
-
})
|
|
22839
|
-
}),
|
|
22840
|
-
/* @__PURE__ */ jsx10("td", {
|
|
22841
|
-
className: "py-2 px-3 align-top text-muted-foreground",
|
|
22842
|
-
children: member.description ?? ""
|
|
22843
|
-
})
|
|
22844
|
-
]
|
|
22845
|
-
}, member.name ?? index);
|
|
22846
|
-
})
|
|
22847
|
-
})
|
|
22848
|
-
]
|
|
22849
|
-
})
|
|
22850
|
-
})
|
|
22851
|
-
]
|
|
22852
|
-
}),
|
|
22853
|
-
hasExamples && /* @__PURE__ */ jsxs9("section", {
|
|
22854
|
-
children: [
|
|
22855
|
-
/* @__PURE__ */ jsx10("h2", {
|
|
22856
|
-
className: "text-xl font-semibold mb-2",
|
|
22857
|
-
children: "Examples"
|
|
22858
|
-
}),
|
|
22859
|
-
exp.examples.map((example, index) => {
|
|
22860
|
-
const code = typeof example === "string" ? example : example.code;
|
|
22861
|
-
return /* @__PURE__ */ jsx10("div", {
|
|
22862
|
-
className: "mb-4",
|
|
22863
|
-
children: renderExample ? renderExample(code, `${exp.name.toLowerCase()}-${index}.ts`) : /* @__PURE__ */ jsx10("pre", {
|
|
22864
|
-
className: "rounded-lg border border-border bg-secondary p-4 overflow-x-auto",
|
|
22865
|
-
children: /* @__PURE__ */ jsx10("code", {
|
|
22866
|
-
className: "font-mono text-sm text-foreground",
|
|
22867
|
-
children: code
|
|
22868
|
-
})
|
|
22869
|
-
})
|
|
22870
|
-
}, index);
|
|
22871
|
-
})
|
|
22872
|
-
]
|
|
22630
|
+
description && /* @__PURE__ */ jsx10("p", {
|
|
22631
|
+
className: "text-sm text-muted-foreground line-clamp-2 leading-relaxed group-hover:text-muted-foreground/80 transition-colors",
|
|
22632
|
+
children: description
|
|
22873
22633
|
})
|
|
22874
22634
|
]
|
|
22875
22635
|
});
|
|
22876
22636
|
}
|
|
22877
22637
|
|
|
22878
22638
|
// src/components/styled/ExportIndexPage.tsx
|
|
22879
|
-
import { cn as cn4 } from "@doccov/ui/lib/utils";
|
|
22880
|
-
import { useState as useState6, useMemo } from "react";
|
|
22881
|
-
|
|
22882
|
-
// src/components/styled/ExportCard.tsx
|
|
22883
|
-
var import_link3 = __toESM(require_link(), 1);
|
|
22884
|
-
import { cn as cn3 } from "@doccov/ui/lib/utils";
|
|
22885
22639
|
import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
22886
22640
|
|
|
22887
|
-
var KIND_COLORS = {
|
|
22888
|
-
function: "group-hover:text-blue-600 dark:group-hover:text-blue-400",
|
|
22889
|
-
class: "group-hover:text-purple-600 dark:group-hover:text-purple-400",
|
|
22890
|
-
interface: "group-hover:text-green-600 dark:group-hover:text-green-400",
|
|
22891
|
-
type: "group-hover:text-amber-600 dark:group-hover:text-amber-400",
|
|
22892
|
-
enum: "group-hover:text-rose-600 dark:group-hover:text-rose-400",
|
|
22893
|
-
variable: "group-hover:text-cyan-600 dark:group-hover:text-cyan-400"
|
|
22894
|
-
};
|
|
22895
|
-
var KIND_BADGE_COLORS = {
|
|
22896
|
-
function: "bg-blue-500/10 text-blue-600 dark:text-blue-400",
|
|
22897
|
-
class: "bg-purple-500/10 text-purple-600 dark:text-purple-400",
|
|
22898
|
-
interface: "bg-green-500/10 text-green-600 dark:text-green-400",
|
|
22899
|
-
type: "bg-amber-500/10 text-amber-600 dark:text-amber-400",
|
|
22900
|
-
enum: "bg-rose-500/10 text-rose-600 dark:text-rose-400",
|
|
22901
|
-
variable: "bg-cyan-500/10 text-cyan-600 dark:text-cyan-400"
|
|
22902
|
-
};
|
|
22903
|
-
function ExportCard({
|
|
22904
|
-
name,
|
|
22905
|
-
description,
|
|
22906
|
-
href,
|
|
22907
|
-
kind = "function",
|
|
22908
|
-
className
|
|
22909
|
-
}) {
|
|
22910
|
-
const isFunction = kind === "function";
|
|
22911
|
-
const hoverColor = KIND_COLORS[kind];
|
|
22912
|
-
const badgeColor = KIND_BADGE_COLORS[kind];
|
|
22913
|
-
return /* @__PURE__ */ jsxs10(import_link3.default, {
|
|
22914
|
-
href,
|
|
22915
|
-
className: cn3("group block rounded-lg border border-border bg-card/50 p-4", "transition-all duration-200 ease-out", "hover:border-primary/30 hover:bg-card hover:shadow-lg hover:shadow-primary/5", "hover:-translate-y-1", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", className),
|
|
22916
|
-
children: [
|
|
22917
|
-
/* @__PURE__ */ jsxs10("div", {
|
|
22918
|
-
className: "flex items-center gap-2 mb-2",
|
|
22919
|
-
children: [
|
|
22920
|
-
/* @__PURE__ */ jsx11("span", {
|
|
22921
|
-
className: cn3("font-mono text-base font-medium text-foreground transition-colors duration-200", hoverColor),
|
|
22922
|
-
children: name
|
|
22923
|
-
}),
|
|
22924
|
-
isFunction && /* @__PURE__ */ jsx11("span", {
|
|
22925
|
-
className: "font-mono text-base text-muted-foreground",
|
|
22926
|
-
children: "()"
|
|
22927
|
-
}),
|
|
22928
|
-
/* @__PURE__ */ jsx11("span", {
|
|
22929
|
-
className: cn3("ml-auto text-xs px-2 py-0.5 rounded-full font-medium", badgeColor),
|
|
22930
|
-
children: kind
|
|
22931
|
-
})
|
|
22932
|
-
]
|
|
22933
|
-
}),
|
|
22934
|
-
description && /* @__PURE__ */ jsx11("p", {
|
|
22935
|
-
className: "text-sm text-muted-foreground line-clamp-2 leading-relaxed group-hover:text-muted-foreground/80 transition-colors",
|
|
22936
|
-
children: description
|
|
22937
|
-
})
|
|
22938
|
-
]
|
|
22939
|
-
});
|
|
22940
|
-
}
|
|
22941
|
-
|
|
22942
|
-
// src/components/styled/ExportIndexPage.tsx
|
|
22943
|
-
import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
22944
|
-
|
|
22945
22641
|
var KIND_ORDER = ["function", "class", "interface", "type", "enum", "variable"];
|
|
22946
22642
|
var KIND_LABELS = {
|
|
22947
22643
|
function: "Functions",
|
|
@@ -22974,8 +22670,8 @@ function ExportIndexPage({
|
|
|
22974
22670
|
showSearch = true,
|
|
22975
22671
|
showFilters = true
|
|
22976
22672
|
}) {
|
|
22977
|
-
const [searchQuery, setSearchQuery] =
|
|
22978
|
-
const [activeFilter, setActiveFilter] =
|
|
22673
|
+
const [searchQuery, setSearchQuery] = useState4("");
|
|
22674
|
+
const [activeFilter, setActiveFilter] = useState4("all");
|
|
22979
22675
|
if (false) {}
|
|
22980
22676
|
const allGroups = useMemo(() => groupByKind(spec.exports), [spec.exports]);
|
|
22981
22677
|
const filteredGroups = useMemo(() => {
|
|
@@ -22991,60 +22687,60 @@ function ExportIndexPage({
|
|
|
22991
22687
|
}, [allGroups, searchQuery, activeFilter]);
|
|
22992
22688
|
const availableKinds = useMemo(() => allGroups.map((g) => g.kind), [allGroups]);
|
|
22993
22689
|
const totalExports = filteredGroups.reduce((sum, g) => sum + g.exports.length, 0);
|
|
22994
|
-
return /* @__PURE__ */
|
|
22995
|
-
className:
|
|
22690
|
+
return /* @__PURE__ */ jsxs10("div", {
|
|
22691
|
+
className: cn2("space-y-8 not-prose", className),
|
|
22996
22692
|
children: [
|
|
22997
|
-
/* @__PURE__ */
|
|
22693
|
+
/* @__PURE__ */ jsxs10("div", {
|
|
22998
22694
|
children: [
|
|
22999
|
-
/* @__PURE__ */
|
|
22695
|
+
/* @__PURE__ */ jsx11("h1", {
|
|
23000
22696
|
className: "text-3xl font-bold text-foreground mb-3",
|
|
23001
22697
|
children: spec.meta.name || "API Reference"
|
|
23002
22698
|
}),
|
|
23003
|
-
(description || spec.meta.description) && /* @__PURE__ */
|
|
22699
|
+
(description || spec.meta.description) && /* @__PURE__ */ jsx11("p", {
|
|
23004
22700
|
className: "text-muted-foreground text-lg leading-relaxed max-w-3xl",
|
|
23005
22701
|
children: description || spec.meta.description
|
|
23006
22702
|
})
|
|
23007
22703
|
]
|
|
23008
22704
|
}),
|
|
23009
|
-
(showSearch || showFilters) && /* @__PURE__ */
|
|
22705
|
+
(showSearch || showFilters) && /* @__PURE__ */ jsxs10("div", {
|
|
23010
22706
|
className: "space-y-4",
|
|
23011
22707
|
children: [
|
|
23012
|
-
showSearch && /* @__PURE__ */
|
|
22708
|
+
showSearch && /* @__PURE__ */ jsxs10("div", {
|
|
23013
22709
|
className: "relative max-w-md",
|
|
23014
22710
|
children: [
|
|
23015
|
-
/* @__PURE__ */
|
|
22711
|
+
/* @__PURE__ */ jsx11(Search, {
|
|
23016
22712
|
size: 18,
|
|
23017
22713
|
className: "absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground"
|
|
23018
22714
|
}),
|
|
23019
|
-
/* @__PURE__ */
|
|
22715
|
+
/* @__PURE__ */ jsx11("input", {
|
|
23020
22716
|
type: "text",
|
|
23021
22717
|
placeholder: "Search exports...",
|
|
23022
22718
|
value: searchQuery,
|
|
23023
22719
|
onChange: (e) => setSearchQuery(e.target.value),
|
|
23024
|
-
className:
|
|
22720
|
+
className: cn2("w-full pl-10 pr-4 py-2 rounded-lg", "border border-border bg-background", "text-sm text-foreground placeholder:text-muted-foreground", "focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent", "transition-shadow")
|
|
23025
22721
|
})
|
|
23026
22722
|
]
|
|
23027
22723
|
}),
|
|
23028
|
-
showFilters && availableKinds.length > 1 && /* @__PURE__ */
|
|
22724
|
+
showFilters && availableKinds.length > 1 && /* @__PURE__ */ jsxs10("div", {
|
|
23029
22725
|
className: "flex flex-wrap gap-2",
|
|
23030
22726
|
children: [
|
|
23031
|
-
/* @__PURE__ */
|
|
22727
|
+
/* @__PURE__ */ jsx11("button", {
|
|
23032
22728
|
type: "button",
|
|
23033
22729
|
onClick: () => setActiveFilter("all"),
|
|
23034
|
-
className:
|
|
22730
|
+
className: cn2("px-3 py-1.5 text-sm rounded-md transition-all cursor-pointer", activeFilter === "all" ? "bg-primary text-primary-foreground font-medium" : "bg-muted text-muted-foreground hover:bg-muted/80 hover:text-foreground"),
|
|
23035
22731
|
children: "All"
|
|
23036
22732
|
}),
|
|
23037
|
-
availableKinds.map((kind) => /* @__PURE__ */
|
|
22733
|
+
availableKinds.map((kind) => /* @__PURE__ */ jsx11("button", {
|
|
23038
22734
|
type: "button",
|
|
23039
22735
|
onClick: () => setActiveFilter(kind),
|
|
23040
|
-
className:
|
|
22736
|
+
className: cn2("px-3 py-1.5 text-sm rounded-md transition-all cursor-pointer", activeFilter === kind ? "bg-primary text-primary-foreground font-medium" : "bg-muted text-muted-foreground hover:bg-muted/80 hover:text-foreground"),
|
|
23041
22737
|
children: KIND_LABELS[kind]
|
|
23042
22738
|
}, kind))
|
|
23043
22739
|
]
|
|
23044
22740
|
})
|
|
23045
22741
|
]
|
|
23046
22742
|
}),
|
|
23047
|
-
(searchQuery || activeFilter !== "all") && /* @__PURE__ */
|
|
22743
|
+
(searchQuery || activeFilter !== "all") && /* @__PURE__ */ jsxs10("p", {
|
|
23048
22744
|
className: "text-sm text-muted-foreground",
|
|
23049
22745
|
children: [
|
|
23050
22746
|
totalExports,
|
|
@@ -23053,15 +22749,15 @@ function ExportIndexPage({
|
|
|
23053
22749
|
searchQuery && ` for "${searchQuery}"`
|
|
23054
22750
|
]
|
|
23055
22751
|
}),
|
|
23056
|
-
filteredGroups.map((group) => /* @__PURE__ */
|
|
22752
|
+
filteredGroups.map((group) => /* @__PURE__ */ jsxs10("section", {
|
|
23057
22753
|
children: [
|
|
23058
|
-
/* @__PURE__ */
|
|
22754
|
+
/* @__PURE__ */ jsx11("h2", {
|
|
23059
22755
|
className: "text-sm font-semibold uppercase tracking-wide text-muted-foreground mb-4",
|
|
23060
22756
|
children: group.label
|
|
23061
22757
|
}),
|
|
23062
|
-
/* @__PURE__ */
|
|
22758
|
+
/* @__PURE__ */ jsx11("div", {
|
|
23063
22759
|
className: "grid grid-cols-1 md:grid-cols-2 gap-4",
|
|
23064
|
-
children: group.exports.map((exp) => /* @__PURE__ */
|
|
22760
|
+
children: group.exports.map((exp) => /* @__PURE__ */ jsx11(ExportCard, {
|
|
23065
22761
|
name: exp.name,
|
|
23066
22762
|
description: exp.description,
|
|
23067
22763
|
href: `${baseHref}/${group.kind}s/${exp.id}`,
|
|
@@ -23070,14 +22766,14 @@ function ExportIndexPage({
|
|
|
23070
22766
|
})
|
|
23071
22767
|
]
|
|
23072
22768
|
}, group.kind)),
|
|
23073
|
-
filteredGroups.length === 0 && /* @__PURE__ */
|
|
22769
|
+
filteredGroups.length === 0 && /* @__PURE__ */ jsxs10("div", {
|
|
23074
22770
|
className: "rounded-lg border border-border bg-card/50 p-8 text-center",
|
|
23075
22771
|
children: [
|
|
23076
|
-
/* @__PURE__ */
|
|
22772
|
+
/* @__PURE__ */ jsx11("p", {
|
|
23077
22773
|
className: "text-muted-foreground",
|
|
23078
22774
|
children: searchQuery || activeFilter !== "all" ? "No exports match your search." : "No exports found in this package."
|
|
23079
22775
|
}),
|
|
23080
|
-
(searchQuery || activeFilter !== "all") && /* @__PURE__ */
|
|
22776
|
+
(searchQuery || activeFilter !== "all") && /* @__PURE__ */ jsx11("button", {
|
|
23081
22777
|
type: "button",
|
|
23082
22778
|
onClick: () => {
|
|
23083
22779
|
setSearchQuery("");
|
|
@@ -23093,459 +22789,276 @@ function ExportIndexPage({
|
|
|
23093
22789
|
}
|
|
23094
22790
|
|
|
23095
22791
|
// src/components/styled/FunctionPage.tsx
|
|
23096
|
-
import {
|
|
23097
|
-
|
|
23098
|
-
|
|
23099
|
-
|
|
23100
|
-
|
|
22792
|
+
import {
|
|
22793
|
+
APIParameterItem as APIParameterItem3,
|
|
22794
|
+
APISection as APISection3,
|
|
22795
|
+
ParameterList as ParameterList3,
|
|
22796
|
+
ResponseBlock
|
|
22797
|
+
} from "@doccov/ui/docskit";
|
|
22798
|
+
import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
23101
22799
|
|
|
23102
22800
|
function FunctionPage({
|
|
23103
22801
|
export: exp,
|
|
23104
|
-
spec
|
|
23105
|
-
renderExample
|
|
22802
|
+
spec
|
|
23106
22803
|
}) {
|
|
23107
|
-
const [copied, setCopied] = useState7(false);
|
|
23108
22804
|
const sig = exp.signatures?.[0];
|
|
23109
|
-
const hasExamples = exp.examples && exp.examples.length > 0;
|
|
23110
22805
|
const hasParams = sig?.parameters && sig.parameters.length > 0;
|
|
23111
|
-
const
|
|
23112
|
-
const
|
|
23113
|
-
const
|
|
23114
|
-
|
|
23115
|
-
|
|
23116
|
-
|
|
23117
|
-
|
|
23118
|
-
|
|
23119
|
-
|
|
23120
|
-
|
|
23121
|
-
|
|
23122
|
-
|
|
23123
|
-
|
|
23124
|
-
|
|
23125
|
-
code,
|
|
23126
|
-
content: renderExample ? renderExample(code, filename) : /* @__PURE__ */ jsx13(ClientDocsKitCode, {
|
|
23127
|
-
codeblock: {
|
|
23128
|
-
value: code,
|
|
23129
|
-
lang,
|
|
23130
|
-
meta: "-c"
|
|
23131
|
-
}
|
|
23132
|
-
})
|
|
23133
|
-
};
|
|
23134
|
-
}) : [];
|
|
23135
|
-
return /* @__PURE__ */ jsxs12("div", {
|
|
22806
|
+
const hasExamples = exp.examples && exp.examples.length > 0;
|
|
22807
|
+
const languages = getLanguagesFromExamples(exp.examples);
|
|
22808
|
+
const examples = specExamplesToCodeExamples(exp.examples);
|
|
22809
|
+
const importStatement = buildImportStatement(exp, spec);
|
|
22810
|
+
const displayExamples = examples.length > 0 ? examples : [{
|
|
22811
|
+
languageId: "typescript",
|
|
22812
|
+
code: `${importStatement}
|
|
22813
|
+
|
|
22814
|
+
// Usage
|
|
22815
|
+
${exp.name}(${sig?.parameters?.map((p) => p.name).join(", ") || ""})`,
|
|
22816
|
+
highlightLang: "ts"
|
|
22817
|
+
}];
|
|
22818
|
+
const displayLanguages = languages.length > 0 ? languages : [{ id: "typescript", label: "TypeScript" }];
|
|
22819
|
+
return /* @__PURE__ */ jsx12("div", {
|
|
23136
22820
|
className: "doccov-function-page not-prose",
|
|
23137
|
-
children:
|
|
23138
|
-
|
|
23139
|
-
|
|
22821
|
+
children: /* @__PURE__ */ jsxs11(APISection3, {
|
|
22822
|
+
id: exp.id || exp.name,
|
|
22823
|
+
title: `${exp.name}()`,
|
|
22824
|
+
description: /* @__PURE__ */ jsxs11("div", {
|
|
22825
|
+
className: "space-y-3",
|
|
23140
22826
|
children: [
|
|
23141
|
-
/* @__PURE__ */
|
|
23142
|
-
className: "flex items-center gap-3",
|
|
23143
|
-
children: [
|
|
23144
|
-
/* @__PURE__ */ jsxs12("h1", {
|
|
23145
|
-
className: "font-mono text-3xl font-bold text-foreground tracking-tight",
|
|
23146
|
-
children: [
|
|
23147
|
-
exp.name,
|
|
23148
|
-
/* @__PURE__ */ jsx13("span", {
|
|
23149
|
-
className: "text-muted-foreground font-normal",
|
|
23150
|
-
children: "()"
|
|
23151
|
-
})
|
|
23152
|
-
]
|
|
23153
|
-
}),
|
|
23154
|
-
/* @__PURE__ */ jsx13("button", {
|
|
23155
|
-
type: "button",
|
|
23156
|
-
onClick: handleCopyName,
|
|
23157
|
-
className: cn5("p-1.5 rounded-md", "text-muted-foreground hover:text-foreground hover:bg-muted/50", "transition-all cursor-pointer"),
|
|
23158
|
-
"aria-label": "Copy function name",
|
|
23159
|
-
children: copied ? /* @__PURE__ */ jsx13(Check, {
|
|
23160
|
-
size: 18
|
|
23161
|
-
}) : /* @__PURE__ */ jsx13(Copy, {
|
|
23162
|
-
size: 18
|
|
23163
|
-
})
|
|
23164
|
-
})
|
|
23165
|
-
]
|
|
23166
|
-
}),
|
|
23167
|
-
exp.description && /* @__PURE__ */ jsx13("p", {
|
|
23168
|
-
className: "mt-4 text-muted-foreground leading-relaxed text-base max-w-2xl",
|
|
22827
|
+
exp.description && /* @__PURE__ */ jsx12("p", {
|
|
23169
22828
|
children: exp.description
|
|
22829
|
+
}),
|
|
22830
|
+
/* @__PURE__ */ jsx12("code", {
|
|
22831
|
+
className: "text-sm font-mono bg-muted px-2 py-1 rounded inline-block",
|
|
22832
|
+
children: importStatement
|
|
23170
22833
|
})
|
|
23171
22834
|
]
|
|
23172
22835
|
}),
|
|
23173
|
-
|
|
23174
|
-
|
|
23175
|
-
|
|
23176
|
-
|
|
23177
|
-
|
|
22836
|
+
languages: displayLanguages,
|
|
22837
|
+
examples: displayExamples,
|
|
22838
|
+
codePanelTitle: `${exp.name}()`,
|
|
22839
|
+
children: [
|
|
22840
|
+
hasParams && /* @__PURE__ */ jsx12(ParameterList3, {
|
|
22841
|
+
title: "Parameters",
|
|
22842
|
+
children: sig.parameters.map((param, index) => {
|
|
22843
|
+
const apiParam = specParamToAPIParam(param);
|
|
22844
|
+
return /* @__PURE__ */ jsx12(APIParameterItem3, {
|
|
22845
|
+
name: apiParam.name,
|
|
22846
|
+
type: apiParam.type,
|
|
22847
|
+
required: apiParam.required,
|
|
22848
|
+
description: apiParam.description,
|
|
22849
|
+
children: apiParam.children
|
|
22850
|
+
}, param.name ?? index);
|
|
22851
|
+
})
|
|
22852
|
+
}),
|
|
22853
|
+
sig?.returns && /* @__PURE__ */ jsx12(ResponseBlock, {
|
|
22854
|
+
description: /* @__PURE__ */ jsxs11("span", {
|
|
23178
22855
|
children: [
|
|
23179
|
-
/* @__PURE__ */
|
|
23180
|
-
|
|
23181
|
-
|
|
23182
|
-
hasParams && /* @__PURE__ */ jsxs12("section", {
|
|
23183
|
-
children: [
|
|
23184
|
-
/* @__PURE__ */ jsx13("h2", {
|
|
23185
|
-
className: "text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4",
|
|
23186
|
-
children: "Parameters"
|
|
23187
|
-
}),
|
|
23188
|
-
/* @__PURE__ */ jsx13("div", {
|
|
23189
|
-
className: "rounded-lg border border-border bg-card/50 divide-y divide-border",
|
|
23190
|
-
children: sig.parameters.map((param, index) => /* @__PURE__ */ jsx13(ParameterItem, {
|
|
23191
|
-
param,
|
|
23192
|
-
className: "px-4"
|
|
23193
|
-
}, param.name ?? index))
|
|
23194
|
-
})
|
|
23195
|
-
]
|
|
22856
|
+
/* @__PURE__ */ jsx12("span", {
|
|
22857
|
+
className: "font-mono text-sm font-medium",
|
|
22858
|
+
children: formatSchema(sig.returns.schema)
|
|
23196
22859
|
}),
|
|
23197
|
-
sig
|
|
23198
|
-
|
|
23199
|
-
|
|
23200
|
-
className: "text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4",
|
|
23201
|
-
children: "Returns"
|
|
23202
|
-
}),
|
|
23203
|
-
/* @__PURE__ */ jsxs12("div", {
|
|
23204
|
-
className: "rounded-lg border border-border bg-card/50 p-4",
|
|
23205
|
-
children: [
|
|
23206
|
-
/* @__PURE__ */ jsx13("div", {
|
|
23207
|
-
className: "flex items-baseline gap-2 mb-2",
|
|
23208
|
-
children: /* @__PURE__ */ jsx13("span", {
|
|
23209
|
-
className: "font-mono text-sm font-medium text-foreground",
|
|
23210
|
-
children: formatSchema(sig.returns.schema)
|
|
23211
|
-
})
|
|
23212
|
-
}),
|
|
23213
|
-
sig.returns.description && /* @__PURE__ */ jsx13("p", {
|
|
23214
|
-
className: "text-sm text-muted-foreground leading-relaxed",
|
|
23215
|
-
children: sig.returns.description
|
|
23216
|
-
})
|
|
23217
|
-
]
|
|
23218
|
-
})
|
|
23219
|
-
]
|
|
22860
|
+
sig.returns.description && /* @__PURE__ */ jsx12("span", {
|
|
22861
|
+
className: "ml-2 text-muted-foreground",
|
|
22862
|
+
children: sig.returns.description
|
|
23220
22863
|
})
|
|
23221
22864
|
]
|
|
23222
22865
|
}),
|
|
23223
|
-
|
|
23224
|
-
|
|
23225
|
-
|
|
23226
|
-
|
|
23227
|
-
|
|
23228
|
-
|
|
23229
|
-
|
|
23230
|
-
|
|
23231
|
-
}
|
|
23232
|
-
})
|
|
23233
|
-
|
|
23234
|
-
|
|
23235
|
-
|
|
22866
|
+
className: "mt-6"
|
|
22867
|
+
}),
|
|
22868
|
+
exp.typeParameters && exp.typeParameters.length > 0 && /* @__PURE__ */ jsx12(ParameterList3, {
|
|
22869
|
+
title: "Type Parameters",
|
|
22870
|
+
className: "mt-6",
|
|
22871
|
+
children: exp.typeParameters.map((tp) => /* @__PURE__ */ jsx12(APIParameterItem3, {
|
|
22872
|
+
name: tp.name,
|
|
22873
|
+
type: tp.constraint || "unknown",
|
|
22874
|
+
description: tp.default ? `Default: ${tp.default}` : undefined
|
|
22875
|
+
}, tp.name))
|
|
22876
|
+
})
|
|
22877
|
+
]
|
|
22878
|
+
})
|
|
23236
22879
|
});
|
|
23237
22880
|
}
|
|
23238
22881
|
|
|
23239
22882
|
// src/components/styled/InterfacePage.tsx
|
|
23240
|
-
import {
|
|
23241
|
-
|
|
23242
|
-
|
|
23243
|
-
|
|
22883
|
+
import {
|
|
22884
|
+
APIParameterItem as APIParameterItem4,
|
|
22885
|
+
APISection as APISection4,
|
|
22886
|
+
ParameterList as ParameterList4
|
|
22887
|
+
} from "@doccov/ui/docskit";
|
|
22888
|
+
import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
23244
22889
|
|
|
22890
|
+
function formatMethodSignature2(member) {
|
|
22891
|
+
const sig = member.signatures?.[0];
|
|
22892
|
+
const params = sig?.parameters ?? [];
|
|
22893
|
+
const returnType = formatSchema(sig?.returns?.schema);
|
|
22894
|
+
const paramStr = params.map((p) => `${p.name}${p.required === false ? "?" : ""}: ${formatSchema(p.schema)}`).join(", ");
|
|
22895
|
+
return `(${paramStr}): ${returnType}`;
|
|
22896
|
+
}
|
|
23245
22897
|
function InterfacePage({
|
|
23246
22898
|
export: exp,
|
|
23247
|
-
spec
|
|
23248
|
-
renderExample
|
|
22899
|
+
spec
|
|
23249
22900
|
}) {
|
|
23250
|
-
const
|
|
23251
|
-
const
|
|
23252
|
-
const
|
|
23253
|
-
const
|
|
23254
|
-
const
|
|
23255
|
-
const
|
|
23256
|
-
|
|
23257
|
-
|
|
23258
|
-
|
|
23259
|
-
|
|
23260
|
-
|
|
23261
|
-
|
|
23262
|
-
|
|
23263
|
-
|
|
23264
|
-
|
|
23265
|
-
|
|
23266
|
-
|
|
23267
|
-
|
|
23268
|
-
|
|
23269
|
-
className: "p-4 overflow-x-auto",
|
|
23270
|
-
children: /* @__PURE__ */ jsx14("code", {
|
|
23271
|
-
className: "font-mono text-sm text-foreground",
|
|
23272
|
-
children: code
|
|
23273
|
-
})
|
|
23274
|
-
})
|
|
23275
|
-
};
|
|
23276
|
-
}) : [];
|
|
23277
|
-
return /* @__PURE__ */ jsxs13("div", {
|
|
22901
|
+
const properties = exp.members?.filter((m) => m.kind === "property" || m.kind === "field" || !m.kind) ?? [];
|
|
22902
|
+
const methods = exp.members?.filter((m) => m.kind === "method" || m.kind === "function") ?? [];
|
|
22903
|
+
const languages = getLanguagesFromExamples(exp.examples);
|
|
22904
|
+
const examples = specExamplesToCodeExamples(exp.examples);
|
|
22905
|
+
const importStatement = buildImportStatement(exp, spec);
|
|
22906
|
+
const typeDefinition = properties.length > 0 ? `${exp.kind === "type" ? "type" : "interface"} ${exp.name} {
|
|
22907
|
+
${properties.map((p) => ` ${p.name}${p.required === false ? "?" : ""}: ${formatSchema(p.schema)};`).join(`
|
|
22908
|
+
`)}
|
|
22909
|
+
}` : `${exp.kind === "type" ? "type" : "interface"} ${exp.name} { }`;
|
|
22910
|
+
const displayExamples = examples.length > 0 ? examples : [{
|
|
22911
|
+
languageId: "typescript",
|
|
22912
|
+
code: `${importStatement}
|
|
22913
|
+
|
|
22914
|
+
${typeDefinition}`,
|
|
22915
|
+
highlightLang: "ts"
|
|
22916
|
+
}];
|
|
22917
|
+
const displayLanguages = languages.length > 0 ? languages : [{ id: "typescript", label: "TypeScript" }];
|
|
22918
|
+
const kindLabel = exp.kind === "type" ? "type" : "interface";
|
|
22919
|
+
return /* @__PURE__ */ jsx13("div", {
|
|
23278
22920
|
className: "doccov-interface-page not-prose",
|
|
23279
|
-
children:
|
|
23280
|
-
|
|
23281
|
-
|
|
22921
|
+
children: /* @__PURE__ */ jsxs12(APISection4, {
|
|
22922
|
+
id: exp.id || exp.name,
|
|
22923
|
+
title: `${kindLabel} ${exp.name}`,
|
|
22924
|
+
description: /* @__PURE__ */ jsxs12("div", {
|
|
22925
|
+
className: "space-y-3",
|
|
23282
22926
|
children: [
|
|
23283
|
-
/* @__PURE__ */
|
|
23284
|
-
className: "
|
|
22927
|
+
exp.extends && /* @__PURE__ */ jsxs12("p", {
|
|
22928
|
+
className: "font-mono text-sm text-muted-foreground",
|
|
23285
22929
|
children: [
|
|
23286
|
-
|
|
23287
|
-
|
|
23288
|
-
children: exp.kind === "type" ? "type" : "interface"
|
|
23289
|
-
}),
|
|
23290
|
-
/* @__PURE__ */ jsx14("h1", {
|
|
23291
|
-
className: "font-mono text-3xl font-bold text-foreground tracking-tight",
|
|
23292
|
-
children: exp.name
|
|
23293
|
-
}),
|
|
23294
|
-
/* @__PURE__ */ jsx14("button", {
|
|
23295
|
-
type: "button",
|
|
23296
|
-
onClick: handleCopyName,
|
|
23297
|
-
className: cn6("p-1.5 rounded-md", "text-muted-foreground hover:text-foreground hover:bg-muted/50", "transition-all cursor-pointer"),
|
|
23298
|
-
"aria-label": "Copy type name",
|
|
23299
|
-
children: copied ? /* @__PURE__ */ jsx14(Check, {
|
|
23300
|
-
size: 18
|
|
23301
|
-
}) : /* @__PURE__ */ jsx14(Copy, {
|
|
23302
|
-
size: 18
|
|
23303
|
-
})
|
|
23304
|
-
})
|
|
22930
|
+
"extends ",
|
|
22931
|
+
exp.extends
|
|
23305
22932
|
]
|
|
23306
22933
|
}),
|
|
23307
|
-
exp.description && /* @__PURE__ */
|
|
23308
|
-
className: "mt-4 text-muted-foreground leading-relaxed text-base max-w-2xl",
|
|
22934
|
+
exp.description && /* @__PURE__ */ jsx13("p", {
|
|
23309
22935
|
children: exp.description
|
|
23310
22936
|
}),
|
|
23311
|
-
exp.deprecated && /* @__PURE__ */
|
|
23312
|
-
className: "
|
|
22937
|
+
exp.deprecated && /* @__PURE__ */ jsxs12("div", {
|
|
22938
|
+
className: "rounded-md bg-yellow-500/10 border border-yellow-500/20 px-3 py-2 text-sm text-yellow-600 dark:text-yellow-400",
|
|
23313
22939
|
children: [
|
|
23314
|
-
/* @__PURE__ */
|
|
22940
|
+
/* @__PURE__ */ jsx13("strong", {
|
|
23315
22941
|
children: "Deprecated:"
|
|
23316
22942
|
}),
|
|
23317
22943
|
" This export is deprecated."
|
|
23318
22944
|
]
|
|
22945
|
+
}),
|
|
22946
|
+
/* @__PURE__ */ jsx13("code", {
|
|
22947
|
+
className: "text-sm font-mono bg-muted px-2 py-1 rounded inline-block",
|
|
22948
|
+
children: importStatement
|
|
23319
22949
|
})
|
|
23320
22950
|
]
|
|
23321
22951
|
}),
|
|
23322
|
-
|
|
23323
|
-
|
|
23324
|
-
|
|
23325
|
-
|
|
23326
|
-
|
|
23327
|
-
|
|
23328
|
-
|
|
23329
|
-
|
|
23330
|
-
|
|
23331
|
-
|
|
23332
|
-
|
|
23333
|
-
|
|
23334
|
-
|
|
23335
|
-
|
|
23336
|
-
|
|
23337
|
-
|
|
23338
|
-
|
|
23339
|
-
children: /* @__PURE__ */ jsx14("code", {
|
|
23340
|
-
className: "font-mono text-sm text-primary",
|
|
23341
|
-
children: exp.extends
|
|
23342
|
-
})
|
|
23343
|
-
})
|
|
23344
|
-
]
|
|
23345
|
-
}),
|
|
23346
|
-
properties && properties.length > 0 && /* @__PURE__ */ jsxs13("section", {
|
|
23347
|
-
children: [
|
|
23348
|
-
/* @__PURE__ */ jsx14("h2", {
|
|
23349
|
-
className: "text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4",
|
|
23350
|
-
children: "Properties"
|
|
23351
|
-
}),
|
|
23352
|
-
/* @__PURE__ */ jsx14("div", {
|
|
23353
|
-
className: "rounded-lg border border-border bg-card/50 divide-y divide-border",
|
|
23354
|
-
children: properties.map((prop, index) => /* @__PURE__ */ jsx14(ParameterItem, {
|
|
23355
|
-
param: {
|
|
23356
|
-
name: prop.name,
|
|
23357
|
-
schema: prop.schema,
|
|
23358
|
-
description: prop.description,
|
|
23359
|
-
required: prop.required
|
|
23360
|
-
},
|
|
23361
|
-
className: "px-4"
|
|
23362
|
-
}, prop.name ?? index))
|
|
23363
|
-
})
|
|
23364
|
-
]
|
|
23365
|
-
}),
|
|
23366
|
-
methods && methods.length > 0 && /* @__PURE__ */ jsxs13("section", {
|
|
23367
|
-
children: [
|
|
23368
|
-
/* @__PURE__ */ jsx14("h2", {
|
|
23369
|
-
className: "text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4",
|
|
23370
|
-
children: "Methods"
|
|
23371
|
-
}),
|
|
23372
|
-
/* @__PURE__ */ jsx14("div", {
|
|
23373
|
-
className: "rounded-lg border border-border bg-card/50 divide-y divide-border",
|
|
23374
|
-
children: methods.map((method, index) => {
|
|
23375
|
-
const sig = method.signatures?.[0];
|
|
23376
|
-
const params = sig?.parameters ?? [];
|
|
23377
|
-
const returnType = formatSchema(sig?.returns?.schema);
|
|
23378
|
-
return /* @__PURE__ */ jsxs13("div", {
|
|
23379
|
-
className: "p-4",
|
|
23380
|
-
children: [
|
|
23381
|
-
/* @__PURE__ */ jsxs13("code", {
|
|
23382
|
-
className: "font-mono text-sm text-foreground",
|
|
23383
|
-
children: [
|
|
23384
|
-
/* @__PURE__ */ jsx14("span", {
|
|
23385
|
-
className: "font-medium",
|
|
23386
|
-
children: method.name
|
|
23387
|
-
}),
|
|
23388
|
-
/* @__PURE__ */ jsx14("span", {
|
|
23389
|
-
className: "text-muted-foreground",
|
|
23390
|
-
children: "("
|
|
23391
|
-
}),
|
|
23392
|
-
params.map((p, i) => /* @__PURE__ */ jsxs13("span", {
|
|
23393
|
-
children: [
|
|
23394
|
-
i > 0 && /* @__PURE__ */ jsx14("span", {
|
|
23395
|
-
className: "text-muted-foreground",
|
|
23396
|
-
children: ", "
|
|
23397
|
-
}),
|
|
23398
|
-
/* @__PURE__ */ jsx14("span", {
|
|
23399
|
-
className: "text-muted-foreground",
|
|
23400
|
-
children: p.name
|
|
23401
|
-
}),
|
|
23402
|
-
p.required === false && /* @__PURE__ */ jsx14("span", {
|
|
23403
|
-
className: "text-muted-foreground",
|
|
23404
|
-
children: "?"
|
|
23405
|
-
}),
|
|
23406
|
-
/* @__PURE__ */ jsx14("span", {
|
|
23407
|
-
className: "text-muted-foreground",
|
|
23408
|
-
children: ": "
|
|
23409
|
-
}),
|
|
23410
|
-
/* @__PURE__ */ jsx14("span", {
|
|
23411
|
-
className: "text-primary",
|
|
23412
|
-
children: formatSchema(p.schema)
|
|
23413
|
-
})
|
|
23414
|
-
]
|
|
23415
|
-
}, p.name)),
|
|
23416
|
-
/* @__PURE__ */ jsx14("span", {
|
|
23417
|
-
className: "text-muted-foreground",
|
|
23418
|
-
children: "): "
|
|
23419
|
-
}),
|
|
23420
|
-
/* @__PURE__ */ jsx14("span", {
|
|
23421
|
-
className: "text-primary",
|
|
23422
|
-
children: returnType
|
|
23423
|
-
})
|
|
23424
|
-
]
|
|
23425
|
-
}),
|
|
23426
|
-
method.description && /* @__PURE__ */ jsx14("p", {
|
|
23427
|
-
className: "text-sm text-muted-foreground mt-2 leading-relaxed",
|
|
23428
|
-
children: method.description
|
|
23429
|
-
})
|
|
23430
|
-
]
|
|
23431
|
-
}, method.name ?? index);
|
|
23432
|
-
})
|
|
23433
|
-
})
|
|
23434
|
-
]
|
|
23435
|
-
})
|
|
23436
|
-
]
|
|
23437
|
-
}),
|
|
23438
|
-
hasExamples && /* @__PURE__ */ jsx14("aside", {
|
|
23439
|
-
className: "lg:sticky lg:top-16 lg:self-start lg:max-h-[calc(100vh-6rem)] lg:overflow-y-auto",
|
|
23440
|
-
children: codeTabs.length === 1 ? /* @__PURE__ */ jsx14("div", {
|
|
23441
|
-
className: "rounded-lg border border-border overflow-hidden bg-background",
|
|
23442
|
-
children: codeTabs[0].content
|
|
23443
|
-
}) : /* @__PURE__ */ jsx14(CodeTabs3, {
|
|
23444
|
-
tabs: codeTabs,
|
|
23445
|
-
sticky: true
|
|
23446
|
-
})
|
|
22952
|
+
languages: displayLanguages,
|
|
22953
|
+
examples: displayExamples,
|
|
22954
|
+
codePanelTitle: exp.name,
|
|
22955
|
+
children: [
|
|
22956
|
+
properties.length > 0 && /* @__PURE__ */ jsx13(ParameterList4, {
|
|
22957
|
+
title: "Properties",
|
|
22958
|
+
children: properties.map((prop, index) => {
|
|
22959
|
+
const type = formatSchema(prop.schema);
|
|
22960
|
+
const children = specSchemaToAPISchema(prop.schema);
|
|
22961
|
+
const hasNestedProperties = children?.properties && Object.keys(children.properties).length > 0;
|
|
22962
|
+
return /* @__PURE__ */ jsx13(APIParameterItem4, {
|
|
22963
|
+
name: prop.name,
|
|
22964
|
+
type,
|
|
22965
|
+
required: prop.required !== false,
|
|
22966
|
+
description: prop.description,
|
|
22967
|
+
children: hasNestedProperties ? children : undefined
|
|
22968
|
+
}, prop.name ?? index);
|
|
23447
22969
|
})
|
|
23448
|
-
|
|
23449
|
-
|
|
23450
|
-
|
|
22970
|
+
}),
|
|
22971
|
+
methods.length > 0 && /* @__PURE__ */ jsx13(ParameterList4, {
|
|
22972
|
+
title: "Methods",
|
|
22973
|
+
className: "mt-6",
|
|
22974
|
+
children: methods.map((method, index) => /* @__PURE__ */ jsx13(APIParameterItem4, {
|
|
22975
|
+
name: `${method.name}()`,
|
|
22976
|
+
type: formatMethodSignature2(method),
|
|
22977
|
+
description: method.description
|
|
22978
|
+
}, method.name ?? index))
|
|
22979
|
+
})
|
|
22980
|
+
]
|
|
22981
|
+
})
|
|
23451
22982
|
});
|
|
23452
22983
|
}
|
|
23453
22984
|
|
|
23454
22985
|
// src/components/styled/VariablePage.tsx
|
|
23455
|
-
import {
|
|
22986
|
+
import {
|
|
22987
|
+
APIParameterItem as APIParameterItem5,
|
|
22988
|
+
APISection as APISection5,
|
|
22989
|
+
ParameterList as ParameterList5
|
|
22990
|
+
} from "@doccov/ui/docskit";
|
|
22991
|
+
import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
23456
22992
|
|
|
23457
22993
|
function VariablePage({
|
|
23458
22994
|
export: exp,
|
|
23459
|
-
spec
|
|
23460
|
-
renderExample
|
|
22995
|
+
spec
|
|
23461
22996
|
}) {
|
|
23462
22997
|
const typeValue = typeof exp.type === "string" ? exp.type : formatSchema(exp.schema);
|
|
23463
|
-
const
|
|
23464
|
-
const
|
|
23465
|
-
|
|
23466
|
-
|
|
23467
|
-
|
|
23468
|
-
|
|
23469
|
-
|
|
23470
|
-
|
|
23471
|
-
|
|
23472
|
-
|
|
23473
|
-
|
|
23474
|
-
|
|
23475
|
-
|
|
23476
|
-
|
|
23477
|
-
|
|
23478
|
-
|
|
23479
|
-
|
|
23480
|
-
|
|
23481
|
-
|
|
23482
|
-
})
|
|
23483
|
-
}),
|
|
23484
|
-
exp.deprecated && /* @__PURE__ */ jsxs14("div", {
|
|
23485
|
-
className: "rounded-md bg-yellow-500/10 border border-yellow-500/20 px-3 py-2 text-sm text-yellow-600 dark:text-yellow-400",
|
|
23486
|
-
children: [
|
|
23487
|
-
/* @__PURE__ */ jsx15("strong", {
|
|
23488
|
-
children: "Deprecated:"
|
|
23489
|
-
}),
|
|
23490
|
-
" This export is deprecated."
|
|
23491
|
-
]
|
|
23492
|
-
}),
|
|
23493
|
-
/* @__PURE__ */ jsxs14("div", {
|
|
23494
|
-
className: `grid gap-8 ${hasExamples ? "lg:grid-cols-2" : "grid-cols-1"}`,
|
|
22998
|
+
const languages = getLanguagesFromExamples(exp.examples);
|
|
22999
|
+
const examples = specExamplesToCodeExamples(exp.examples);
|
|
23000
|
+
const importStatement = buildImportStatement(exp, spec);
|
|
23001
|
+
const constValue = exp.schema && typeof exp.schema === "object" ? exp.schema.const : undefined;
|
|
23002
|
+
const displayExamples = examples.length > 0 ? examples : [{
|
|
23003
|
+
languageId: "typescript",
|
|
23004
|
+
code: `${importStatement}
|
|
23005
|
+
|
|
23006
|
+
console.log(${exp.name}); // ${constValue !== undefined ? JSON.stringify(constValue) : typeValue}`,
|
|
23007
|
+
highlightLang: "ts"
|
|
23008
|
+
}];
|
|
23009
|
+
const displayLanguages = languages.length > 0 ? languages : [{ id: "typescript", label: "TypeScript" }];
|
|
23010
|
+
return /* @__PURE__ */ jsx14("div", {
|
|
23011
|
+
className: "doccov-variable-page not-prose",
|
|
23012
|
+
children: /* @__PURE__ */ jsx14(APISection5, {
|
|
23013
|
+
id: exp.id || exp.name,
|
|
23014
|
+
title: `const ${exp.name}`,
|
|
23015
|
+
description: /* @__PURE__ */ jsxs13("div", {
|
|
23016
|
+
className: "space-y-3",
|
|
23495
23017
|
children: [
|
|
23496
|
-
/* @__PURE__ */
|
|
23497
|
-
|
|
23498
|
-
children: /* @__PURE__ */ jsxs14("div", {
|
|
23499
|
-
children: [
|
|
23500
|
-
/* @__PURE__ */ jsx15("h3", {
|
|
23501
|
-
className: "text-sm font-semibold uppercase tracking-wide text-muted-foreground mb-3",
|
|
23502
|
-
children: "Type"
|
|
23503
|
-
}),
|
|
23504
|
-
/* @__PURE__ */ jsx15("div", {
|
|
23505
|
-
className: "rounded-lg border border-border bg-card p-4",
|
|
23506
|
-
children: /* @__PURE__ */ jsx15("code", {
|
|
23507
|
-
className: "font-mono text-sm text-primary",
|
|
23508
|
-
children: typeValue
|
|
23509
|
-
})
|
|
23510
|
-
})
|
|
23511
|
-
]
|
|
23512
|
-
})
|
|
23018
|
+
exp.description && /* @__PURE__ */ jsx14("p", {
|
|
23019
|
+
children: exp.description
|
|
23513
23020
|
}),
|
|
23514
|
-
|
|
23021
|
+
exp.deprecated && /* @__PURE__ */ jsxs13("div", {
|
|
23022
|
+
className: "rounded-md bg-yellow-500/10 border border-yellow-500/20 px-3 py-2 text-sm text-yellow-600 dark:text-yellow-400",
|
|
23515
23023
|
children: [
|
|
23516
|
-
/* @__PURE__ */
|
|
23517
|
-
|
|
23518
|
-
children: [
|
|
23519
|
-
exp.name,
|
|
23520
|
-
" usage"
|
|
23521
|
-
]
|
|
23024
|
+
/* @__PURE__ */ jsx14("strong", {
|
|
23025
|
+
children: "Deprecated:"
|
|
23522
23026
|
}),
|
|
23523
|
-
|
|
23524
|
-
className: "rounded-lg border border-border bg-muted/30 p-4 overflow-x-auto",
|
|
23525
|
-
children: /* @__PURE__ */ jsx15("code", {
|
|
23526
|
-
className: "font-mono text-sm text-foreground",
|
|
23527
|
-
children: exampleCode
|
|
23528
|
-
})
|
|
23529
|
-
})
|
|
23027
|
+
" This export is deprecated."
|
|
23530
23028
|
]
|
|
23029
|
+
}),
|
|
23030
|
+
/* @__PURE__ */ jsx14("code", {
|
|
23031
|
+
className: "text-sm font-mono bg-muted px-2 py-1 rounded inline-block",
|
|
23032
|
+
children: importStatement
|
|
23531
23033
|
})
|
|
23532
23034
|
]
|
|
23035
|
+
}),
|
|
23036
|
+
languages: displayLanguages,
|
|
23037
|
+
examples: displayExamples,
|
|
23038
|
+
codePanelTitle: exp.name,
|
|
23039
|
+
children: /* @__PURE__ */ jsx14(ParameterList5, {
|
|
23040
|
+
title: "Type",
|
|
23041
|
+
children: /* @__PURE__ */ jsx14(APIParameterItem5, {
|
|
23042
|
+
name: exp.name,
|
|
23043
|
+
type: typeValue,
|
|
23044
|
+
description: constValue !== undefined ? `Value: ${JSON.stringify(constValue)}` : undefined
|
|
23045
|
+
})
|
|
23533
23046
|
})
|
|
23534
|
-
|
|
23047
|
+
})
|
|
23535
23048
|
});
|
|
23536
23049
|
}
|
|
23537
23050
|
|
|
23538
23051
|
// src/components/styled/APIPage.tsx
|
|
23539
|
-
import { jsx as
|
|
23052
|
+
import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
23540
23053
|
|
|
23541
23054
|
function NotFound({ id }) {
|
|
23542
|
-
return /* @__PURE__ */
|
|
23055
|
+
return /* @__PURE__ */ jsx15("div", {
|
|
23543
23056
|
className: "rounded-lg border border-border bg-card p-6 text-center",
|
|
23544
|
-
children: /* @__PURE__ */
|
|
23057
|
+
children: /* @__PURE__ */ jsxs14("p", {
|
|
23545
23058
|
className: "text-muted-foreground",
|
|
23546
23059
|
children: [
|
|
23547
23060
|
"Export ",
|
|
23548
|
-
/* @__PURE__ */
|
|
23061
|
+
/* @__PURE__ */ jsx15("code", {
|
|
23549
23062
|
className: "font-mono text-primary",
|
|
23550
23063
|
children: id
|
|
23551
23064
|
}),
|
|
@@ -23555,17 +23068,17 @@ function NotFound({ id }) {
|
|
|
23555
23068
|
});
|
|
23556
23069
|
}
|
|
23557
23070
|
function NoSpec() {
|
|
23558
|
-
return /* @__PURE__ */
|
|
23071
|
+
return /* @__PURE__ */ jsx15("div", {
|
|
23559
23072
|
className: "rounded-lg border border-red-500/20 bg-red-500/10 p-6 text-center",
|
|
23560
|
-
children: /* @__PURE__ */
|
|
23073
|
+
children: /* @__PURE__ */ jsxs14("p", {
|
|
23561
23074
|
className: "text-red-600 dark:text-red-400",
|
|
23562
23075
|
children: [
|
|
23563
23076
|
"No spec provided. Pass either ",
|
|
23564
|
-
/* @__PURE__ */
|
|
23077
|
+
/* @__PURE__ */ jsx15("code", {
|
|
23565
23078
|
children: "spec"
|
|
23566
23079
|
}),
|
|
23567
23080
|
" or ",
|
|
23568
|
-
/* @__PURE__ */
|
|
23081
|
+
/* @__PURE__ */ jsx15("code", {
|
|
23569
23082
|
children: "instance"
|
|
23570
23083
|
}),
|
|
23571
23084
|
" prop."
|
|
@@ -23583,10 +23096,10 @@ function APIPage({
|
|
|
23583
23096
|
}) {
|
|
23584
23097
|
const resolvedSpec = spec ?? instance?.spec;
|
|
23585
23098
|
if (!resolvedSpec) {
|
|
23586
|
-
return /* @__PURE__ */
|
|
23099
|
+
return /* @__PURE__ */ jsx15(NoSpec, {});
|
|
23587
23100
|
}
|
|
23588
23101
|
if (!id) {
|
|
23589
|
-
return /* @__PURE__ */
|
|
23102
|
+
return /* @__PURE__ */ jsx15(ExportIndexPage, {
|
|
23590
23103
|
spec: resolvedSpec,
|
|
23591
23104
|
baseHref,
|
|
23592
23105
|
description
|
|
@@ -23594,35 +23107,232 @@ function APIPage({
|
|
|
23594
23107
|
}
|
|
23595
23108
|
const exp = resolvedSpec.exports.find((e) => e.id === id);
|
|
23596
23109
|
if (!exp) {
|
|
23597
|
-
return /* @__PURE__ */
|
|
23110
|
+
return /* @__PURE__ */ jsx15(NotFound, {
|
|
23598
23111
|
id
|
|
23599
23112
|
});
|
|
23600
23113
|
}
|
|
23601
23114
|
const pageProps = { export: exp, spec: resolvedSpec, renderExample };
|
|
23602
23115
|
switch (exp.kind) {
|
|
23603
23116
|
case "function":
|
|
23604
|
-
return /* @__PURE__ */
|
|
23117
|
+
return /* @__PURE__ */ jsx15(FunctionPage, {
|
|
23605
23118
|
...pageProps
|
|
23606
23119
|
});
|
|
23607
23120
|
case "class":
|
|
23608
|
-
return /* @__PURE__ */
|
|
23121
|
+
return /* @__PURE__ */ jsx15(ClassPage, {
|
|
23609
23122
|
...pageProps
|
|
23610
23123
|
});
|
|
23611
23124
|
case "interface":
|
|
23612
23125
|
case "type":
|
|
23613
|
-
return /* @__PURE__ */
|
|
23126
|
+
return /* @__PURE__ */ jsx15(InterfacePage, {
|
|
23614
23127
|
...pageProps
|
|
23615
23128
|
});
|
|
23616
23129
|
case "enum":
|
|
23617
|
-
return /* @__PURE__ */
|
|
23130
|
+
return /* @__PURE__ */ jsx15(EnumPage, {
|
|
23618
23131
|
...pageProps
|
|
23619
23132
|
});
|
|
23620
23133
|
default:
|
|
23621
|
-
return /* @__PURE__ */
|
|
23134
|
+
return /* @__PURE__ */ jsx15(VariablePage, {
|
|
23622
23135
|
...pageProps
|
|
23623
23136
|
});
|
|
23624
23137
|
}
|
|
23625
23138
|
}
|
|
23139
|
+
// src/components/styled/ParameterItem.tsx
|
|
23140
|
+
import { cn as cn3 } from "@doccov/ui/lib/utils";
|
|
23141
|
+
import { useState as useState5 } from "react";
|
|
23142
|
+
import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
23143
|
+
|
|
23144
|
+
function getNestedProperties2(schema) {
|
|
23145
|
+
if (!schema || typeof schema !== "object")
|
|
23146
|
+
return null;
|
|
23147
|
+
const s = schema;
|
|
23148
|
+
if (s.type === "object" && s.properties && typeof s.properties === "object") {
|
|
23149
|
+
return s.properties;
|
|
23150
|
+
}
|
|
23151
|
+
return null;
|
|
23152
|
+
}
|
|
23153
|
+
function getRequiredFields2(schema) {
|
|
23154
|
+
if (!schema || typeof schema !== "object")
|
|
23155
|
+
return [];
|
|
23156
|
+
const s = schema;
|
|
23157
|
+
if (Array.isArray(s.required)) {
|
|
23158
|
+
return s.required;
|
|
23159
|
+
}
|
|
23160
|
+
return [];
|
|
23161
|
+
}
|
|
23162
|
+
function countProperties2(schema) {
|
|
23163
|
+
const props = getNestedProperties2(schema);
|
|
23164
|
+
return props ? Object.keys(props).length : 0;
|
|
23165
|
+
}
|
|
23166
|
+
function NestedPropertyItem({
|
|
23167
|
+
name,
|
|
23168
|
+
schema,
|
|
23169
|
+
required = false,
|
|
23170
|
+
depth = 0
|
|
23171
|
+
}) {
|
|
23172
|
+
const [expanded, setExpanded] = useState5(false);
|
|
23173
|
+
const type = formatSchema(schema);
|
|
23174
|
+
const nestedProps = getNestedProperties2(schema);
|
|
23175
|
+
const nestedCount = countProperties2(schema);
|
|
23176
|
+
const hasNested = nestedCount > 0;
|
|
23177
|
+
const schemaObj = schema;
|
|
23178
|
+
const description = schemaObj?.description;
|
|
23179
|
+
return /* @__PURE__ */ jsxs15("div", {
|
|
23180
|
+
className: cn3("border-t border-border first:border-t-0", depth > 0 && "ml-4"),
|
|
23181
|
+
children: [
|
|
23182
|
+
/* @__PURE__ */ jsx16("div", {
|
|
23183
|
+
className: "py-3",
|
|
23184
|
+
children: /* @__PURE__ */ jsxs15("div", {
|
|
23185
|
+
className: "flex items-start gap-2",
|
|
23186
|
+
children: [
|
|
23187
|
+
hasNested && /* @__PURE__ */ jsx16("button", {
|
|
23188
|
+
type: "button",
|
|
23189
|
+
onClick: () => setExpanded(!expanded),
|
|
23190
|
+
className: "mt-0.5 p-0.5 text-muted-foreground hover:text-foreground transition-colors cursor-pointer",
|
|
23191
|
+
"aria-label": expanded ? "Collapse" : "Expand",
|
|
23192
|
+
children: /* @__PURE__ */ jsx16(ChevronRight, {
|
|
23193
|
+
size: 14,
|
|
23194
|
+
className: cn3("transition-transform duration-200", expanded && "rotate-90")
|
|
23195
|
+
})
|
|
23196
|
+
}),
|
|
23197
|
+
!hasNested && /* @__PURE__ */ jsx16("div", {
|
|
23198
|
+
className: "w-5"
|
|
23199
|
+
}),
|
|
23200
|
+
/* @__PURE__ */ jsxs15("div", {
|
|
23201
|
+
className: "flex-1 min-w-0",
|
|
23202
|
+
children: [
|
|
23203
|
+
/* @__PURE__ */ jsxs15("div", {
|
|
23204
|
+
className: "flex items-baseline gap-2 flex-wrap",
|
|
23205
|
+
children: [
|
|
23206
|
+
/* @__PURE__ */ jsxs15("span", {
|
|
23207
|
+
className: "font-mono text-sm text-foreground",
|
|
23208
|
+
children: [
|
|
23209
|
+
name,
|
|
23210
|
+
!required && /* @__PURE__ */ jsx16("span", {
|
|
23211
|
+
className: "text-muted-foreground",
|
|
23212
|
+
children: "?"
|
|
23213
|
+
})
|
|
23214
|
+
]
|
|
23215
|
+
}),
|
|
23216
|
+
/* @__PURE__ */ jsx16("span", {
|
|
23217
|
+
className: "font-mono text-sm text-muted-foreground",
|
|
23218
|
+
children: hasNested ? "object" : type
|
|
23219
|
+
}),
|
|
23220
|
+
hasNested && /* @__PURE__ */ jsxs15("button", {
|
|
23221
|
+
type: "button",
|
|
23222
|
+
onClick: () => setExpanded(!expanded),
|
|
23223
|
+
className: "text-xs text-primary hover:underline cursor-pointer",
|
|
23224
|
+
children: [
|
|
23225
|
+
nestedCount,
|
|
23226
|
+
" ",
|
|
23227
|
+
nestedCount === 1 ? "property" : "properties"
|
|
23228
|
+
]
|
|
23229
|
+
})
|
|
23230
|
+
]
|
|
23231
|
+
}),
|
|
23232
|
+
description && /* @__PURE__ */ jsx16("p", {
|
|
23233
|
+
className: "text-sm text-muted-foreground mt-1",
|
|
23234
|
+
children: description
|
|
23235
|
+
})
|
|
23236
|
+
]
|
|
23237
|
+
})
|
|
23238
|
+
]
|
|
23239
|
+
})
|
|
23240
|
+
}),
|
|
23241
|
+
hasNested && expanded && nestedProps && /* @__PURE__ */ jsx16("div", {
|
|
23242
|
+
className: "border-l border-border ml-2",
|
|
23243
|
+
children: Object.entries(nestedProps).map(([propName, propSchema]) => /* @__PURE__ */ jsx16(NestedPropertyItem, {
|
|
23244
|
+
name: propName,
|
|
23245
|
+
schema: propSchema,
|
|
23246
|
+
required: getRequiredFields2(schema).includes(propName),
|
|
23247
|
+
depth: depth + 1
|
|
23248
|
+
}, propName))
|
|
23249
|
+
})
|
|
23250
|
+
]
|
|
23251
|
+
});
|
|
23252
|
+
}
|
|
23253
|
+
function ParameterItem({
|
|
23254
|
+
param,
|
|
23255
|
+
depth = 0,
|
|
23256
|
+
className
|
|
23257
|
+
}) {
|
|
23258
|
+
const [expanded, setExpanded] = useState5(false);
|
|
23259
|
+
const type = formatSchema(param.schema);
|
|
23260
|
+
const isRequired = param.required !== false;
|
|
23261
|
+
const nestedProps = getNestedProperties2(param.schema);
|
|
23262
|
+
const nestedCount = countProperties2(param.schema);
|
|
23263
|
+
const hasNested = nestedCount > 0;
|
|
23264
|
+
return /* @__PURE__ */ jsxs15("div", {
|
|
23265
|
+
className: cn3("border-b border-border last:border-b-0", className),
|
|
23266
|
+
children: [
|
|
23267
|
+
/* @__PURE__ */ jsx16("div", {
|
|
23268
|
+
className: "py-3",
|
|
23269
|
+
children: /* @__PURE__ */ jsxs15("div", {
|
|
23270
|
+
className: "flex items-start gap-2",
|
|
23271
|
+
children: [
|
|
23272
|
+
hasNested && /* @__PURE__ */ jsx16("button", {
|
|
23273
|
+
type: "button",
|
|
23274
|
+
onClick: () => setExpanded(!expanded),
|
|
23275
|
+
className: "mt-0.5 p-0.5 text-muted-foreground hover:text-foreground transition-colors cursor-pointer",
|
|
23276
|
+
"aria-label": expanded ? "Collapse" : "Expand",
|
|
23277
|
+
children: /* @__PURE__ */ jsx16(ChevronRight, {
|
|
23278
|
+
size: 14,
|
|
23279
|
+
className: cn3("transition-transform duration-200", expanded && "rotate-90")
|
|
23280
|
+
})
|
|
23281
|
+
}),
|
|
23282
|
+
!hasNested && /* @__PURE__ */ jsx16("div", {
|
|
23283
|
+
className: "w-5"
|
|
23284
|
+
}),
|
|
23285
|
+
/* @__PURE__ */ jsxs15("div", {
|
|
23286
|
+
className: "flex-1 min-w-0",
|
|
23287
|
+
children: [
|
|
23288
|
+
/* @__PURE__ */ jsxs15("div", {
|
|
23289
|
+
className: "flex items-baseline gap-2 flex-wrap",
|
|
23290
|
+
children: [
|
|
23291
|
+
/* @__PURE__ */ jsx16("span", {
|
|
23292
|
+
className: "font-mono text-sm font-medium text-foreground",
|
|
23293
|
+
children: param.name
|
|
23294
|
+
}),
|
|
23295
|
+
isRequired && /* @__PURE__ */ jsx16("span", {
|
|
23296
|
+
className: "text-[10px] font-semibold px-1.5 py-0.5 rounded border border-border bg-muted text-muted-foreground uppercase tracking-wide",
|
|
23297
|
+
children: "Required"
|
|
23298
|
+
}),
|
|
23299
|
+
/* @__PURE__ */ jsx16("span", {
|
|
23300
|
+
className: "font-mono text-sm text-muted-foreground",
|
|
23301
|
+
children: hasNested ? "object" : type
|
|
23302
|
+
}),
|
|
23303
|
+
hasNested && /* @__PURE__ */ jsxs15("button", {
|
|
23304
|
+
type: "button",
|
|
23305
|
+
onClick: () => setExpanded(!expanded),
|
|
23306
|
+
className: "text-xs text-primary hover:underline cursor-pointer",
|
|
23307
|
+
children: [
|
|
23308
|
+
nestedCount,
|
|
23309
|
+
" ",
|
|
23310
|
+
nestedCount === 1 ? "property" : "properties"
|
|
23311
|
+
]
|
|
23312
|
+
})
|
|
23313
|
+
]
|
|
23314
|
+
}),
|
|
23315
|
+
param.description && /* @__PURE__ */ jsx16("p", {
|
|
23316
|
+
className: "text-sm text-muted-foreground mt-1",
|
|
23317
|
+
children: param.description
|
|
23318
|
+
})
|
|
23319
|
+
]
|
|
23320
|
+
})
|
|
23321
|
+
]
|
|
23322
|
+
})
|
|
23323
|
+
}),
|
|
23324
|
+
hasNested && expanded && nestedProps && /* @__PURE__ */ jsx16("div", {
|
|
23325
|
+
className: "border-l border-border ml-2 mb-3",
|
|
23326
|
+
children: Object.entries(nestedProps).map(([propName, propSchema]) => /* @__PURE__ */ jsx16(NestedPropertyItem, {
|
|
23327
|
+
name: propName,
|
|
23328
|
+
schema: propSchema,
|
|
23329
|
+
required: getRequiredFields2(param.schema).includes(propName),
|
|
23330
|
+
depth: depth + 1
|
|
23331
|
+
}, propName))
|
|
23332
|
+
})
|
|
23333
|
+
]
|
|
23334
|
+
});
|
|
23335
|
+
}
|
|
23626
23336
|
export {
|
|
23627
23337
|
groupMembersByKind,
|
|
23628
23338
|
getExampleTitle,
|
|
@@ -23639,7 +23349,7 @@ export {
|
|
|
23639
23349
|
MembersTable,
|
|
23640
23350
|
MemberRow,
|
|
23641
23351
|
InterfacePage,
|
|
23642
|
-
|
|
23352
|
+
ImportSection,
|
|
23643
23353
|
FunctionPage,
|
|
23644
23354
|
ExportIndexPage,
|
|
23645
23355
|
ExportCard,
|
|
@@ -23647,7 +23357,7 @@ export {
|
|
|
23647
23357
|
ExampleBlock,
|
|
23648
23358
|
EnumPage,
|
|
23649
23359
|
CollapsibleMethod,
|
|
23650
|
-
|
|
23360
|
+
CodeTabs,
|
|
23651
23361
|
ClassPage,
|
|
23652
23362
|
APIPage
|
|
23653
23363
|
};
|