specra 0.2.6 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/config/specra.config.schema.json +23 -0
  2. package/config/svelte-config.js +32 -1
  3. package/dist/category.d.ts +1 -1
  4. package/dist/category.js +4 -2
  5. package/dist/components/docs/Breadcrumb.svelte +11 -4
  6. package/dist/components/docs/Breadcrumb.svelte.d.ts +1 -0
  7. package/dist/components/docs/CategoryIndex.svelte +11 -2
  8. package/dist/components/docs/CategoryIndex.svelte.d.ts +1 -0
  9. package/dist/components/docs/DocLayout.svelte +9 -8
  10. package/dist/components/docs/DocLayout.svelte.d.ts +1 -0
  11. package/dist/components/docs/DocNavigation.svelte +10 -3
  12. package/dist/components/docs/DocNavigation.svelte.d.ts +1 -0
  13. package/dist/components/docs/Header.svelte +17 -1
  14. package/dist/components/docs/Header.svelte.d.ts +10 -0
  15. package/dist/components/docs/MdxContent.svelte +3 -1
  16. package/dist/components/docs/MobileDocLayout.svelte +5 -1
  17. package/dist/components/docs/MobileDocLayout.svelte.d.ts +1 -0
  18. package/dist/components/docs/MobileSidebar.svelte +3 -1
  19. package/dist/components/docs/MobileSidebar.svelte.d.ts +1 -0
  20. package/dist/components/docs/MobileSidebarWrapper.svelte +3 -1
  21. package/dist/components/docs/MobileSidebarWrapper.svelte.d.ts +1 -0
  22. package/dist/components/docs/ProductSwitcher.svelte +175 -0
  23. package/dist/components/docs/ProductSwitcher.svelte.d.ts +28 -0
  24. package/dist/components/docs/SearchModal.svelte +4 -3
  25. package/dist/components/docs/Sidebar.svelte +3 -1
  26. package/dist/components/docs/Sidebar.svelte.d.ts +1 -0
  27. package/dist/components/docs/SidebarMenuItems.svelte +39 -9
  28. package/dist/components/docs/SidebarMenuItems.svelte.d.ts +1 -0
  29. package/dist/components/docs/TabGroups.svelte +9 -2
  30. package/dist/components/docs/TabGroups.svelte.d.ts +1 -0
  31. package/dist/components/docs/VersionSwitcher.svelte +1 -1
  32. package/dist/components/docs/api/ApiParams.svelte +94 -36
  33. package/dist/components/docs/index.d.ts +1 -0
  34. package/dist/components/docs/index.js +1 -0
  35. package/dist/components/ui/Button.svelte +30 -11
  36. package/dist/components/ui/Button.svelte.d.ts +10 -4
  37. package/dist/config.d.ts +1 -1
  38. package/dist/config.schema.json +18 -0
  39. package/dist/config.server.d.ts +35 -7
  40. package/dist/config.server.js +185 -23
  41. package/dist/config.types.d.ts +46 -0
  42. package/dist/mdx-cache.d.ts +3 -6
  43. package/dist/mdx-cache.js +36 -8
  44. package/dist/mdx.d.ts +8 -3
  45. package/dist/mdx.js +117 -10
  46. package/dist/parsers/openapi-parser.js +6 -1
  47. package/dist/redirects.d.ts +2 -1
  48. package/dist/redirects.js +37 -11
  49. package/package.json +1 -1
@@ -3,7 +3,8 @@ export interface RedirectMapping {
3
3
  to: string;
4
4
  }
5
5
  /**
6
- * Build redirect mappings from all docs' redirect_from frontmatter
6
+ * Build redirect mappings from all docs' redirect_from frontmatter.
7
+ * In multi-product mode, generates product-aware redirect URLs.
7
8
  */
8
9
  export declare function buildRedirectMappings(): Promise<RedirectMapping[]>;
9
10
  /**
package/dist/redirects.js CHANGED
@@ -1,19 +1,45 @@
1
1
  import { getAllDocs, getVersions } from "./mdx";
2
+ import { getProducts } from "./config.server";
2
3
  /**
3
- * Build redirect mappings from all docs' redirect_from frontmatter
4
+ * Build redirect mappings from all docs' redirect_from frontmatter.
5
+ * In multi-product mode, generates product-aware redirect URLs.
4
6
  */
5
7
  export async function buildRedirectMappings() {
6
- const versions = getVersions();
7
8
  const redirects = [];
8
- for (const version of versions) {
9
- const docs = await getAllDocs(version);
10
- for (const doc of docs) {
11
- if (doc.meta.redirect_from && Array.isArray(doc.meta.redirect_from)) {
12
- for (const oldPath of doc.meta.redirect_from) {
13
- redirects.push({
14
- from: oldPath,
15
- to: `/docs/${version}/${doc.slug}`,
16
- });
9
+ const products = getProducts();
10
+ if (products.length === 0) {
11
+ // Single-product mode current behavior
12
+ const versions = getVersions();
13
+ for (const version of versions) {
14
+ const docs = await getAllDocs(version);
15
+ for (const doc of docs) {
16
+ if (doc.meta.redirect_from && Array.isArray(doc.meta.redirect_from)) {
17
+ for (const oldPath of doc.meta.redirect_from) {
18
+ redirects.push({
19
+ from: oldPath,
20
+ to: `/docs/${version}/${doc.slug}`,
21
+ });
22
+ }
23
+ }
24
+ }
25
+ }
26
+ }
27
+ else {
28
+ // Multi-product mode
29
+ for (const product of products) {
30
+ const versions = getVersions(product.isDefault ? undefined : product.slug);
31
+ const urlPrefix = product.isDefault ? "/docs" : `/docs/${product.slug}`;
32
+ for (const version of versions) {
33
+ const docs = await getAllDocs(version, undefined, product.isDefault ? undefined : product.slug);
34
+ for (const doc of docs) {
35
+ if (doc.meta.redirect_from && Array.isArray(doc.meta.redirect_from)) {
36
+ for (const oldPath of doc.meta.redirect_from) {
37
+ redirects.push({
38
+ from: oldPath,
39
+ to: `${urlPrefix}/${version}/${doc.slug}`,
40
+ });
41
+ }
42
+ }
17
43
  }
18
44
  }
19
45
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specra",
3
- "version": "0.2.6",
3
+ "version": "0.2.8",
4
4
  "description": "A modern documentation library for SvelteKit with built-in versioning, API reference generation, full-text search, and MDX support",
5
5
  "svelte": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",