specra 0.1.14 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.MD +25 -4
- package/README.md +67 -58
- package/config/specra.config.schema.json +16 -0
- package/config/svelte-config.js +63 -0
- package/dist/api-parser.types.d.ts +59 -0
- package/dist/api-parser.types.js +5 -0
- package/dist/api.types.d.ts +137 -0
- package/dist/api.types.js +5 -0
- package/dist/category.d.ts +21 -0
- package/dist/category.js +48 -0
- package/dist/components/ConfigProvider.svelte +13 -0
- package/dist/components/ConfigProvider.svelte.d.ts +31 -0
- package/dist/components/docs/Accordion.svelte +18 -0
- package/dist/components/docs/Accordion.svelte.d.ts +10 -0
- package/dist/components/docs/AccordionItem.svelte +41 -0
- package/dist/components/docs/AccordionItem.svelte.d.ts +10 -0
- package/dist/components/docs/Badge.svelte +28 -0
- package/dist/components/docs/Badge.svelte.d.ts +9 -0
- package/dist/components/docs/Breadcrumb.svelte +80 -0
- package/dist/components/docs/Breadcrumb.svelte.d.ts +8 -0
- package/dist/components/docs/Callout.svelte +96 -0
- package/dist/components/docs/Callout.svelte.d.ts +10 -0
- package/dist/components/docs/Card.svelte +63 -0
- package/dist/components/docs/Card.svelte.d.ts +12 -0
- package/dist/components/docs/CardGrid.svelte +24 -0
- package/dist/components/docs/CardGrid.svelte.d.ts +8 -0
- package/dist/components/docs/CategoryIndex.svelte +110 -0
- package/dist/components/docs/CategoryIndex.svelte.d.ts +29 -0
- package/dist/components/docs/CodeBlock.svelte +172 -0
- package/dist/components/docs/CodeBlock.svelte.d.ts +8 -0
- package/dist/components/docs/Column.svelte +25 -0
- package/dist/components/docs/Column.svelte.d.ts +8 -0
- package/dist/components/docs/Columns.svelte +38 -0
- package/dist/components/docs/Columns.svelte.d.ts +13 -0
- package/dist/components/docs/DevModeBadge.svelte +15 -0
- package/dist/components/docs/DevModeBadge.svelte.d.ts +18 -0
- package/dist/components/docs/DocBadge.svelte +28 -0
- package/dist/components/docs/DocBadge.svelte.d.ts +9 -0
- package/dist/components/docs/DocLayout.svelte +107 -0
- package/dist/components/docs/DocLayout.svelte.d.ts +32 -0
- package/dist/components/docs/DocLoading.svelte +53 -0
- package/dist/components/docs/DocLoading.svelte.d.ts +18 -0
- package/dist/components/docs/DocMetadata.svelte +106 -0
- package/dist/components/docs/DocMetadata.svelte.d.ts +18 -0
- package/dist/components/docs/DocNavigation.svelte +56 -0
- package/dist/components/docs/DocNavigation.svelte.d.ts +12 -0
- package/dist/components/docs/DocTags.svelte +22 -0
- package/dist/components/docs/DocTags.svelte.d.ts +6 -0
- package/dist/components/docs/DraftBadge.svelte +10 -0
- package/dist/components/docs/DraftBadge.svelte.d.ts +18 -0
- package/dist/components/docs/Footer.svelte +72 -0
- package/dist/components/docs/Footer.svelte.d.ts +7 -0
- package/dist/components/docs/Frame.svelte +27 -0
- package/dist/components/docs/Frame.svelte.d.ts +9 -0
- package/dist/components/docs/Header.svelte +123 -0
- package/dist/components/docs/Header.svelte.d.ts +9 -0
- package/dist/components/docs/HeaderWithMenu.svelte +34 -0
- package/dist/components/docs/HeaderWithMenu.svelte.d.ts +17 -0
- package/dist/components/docs/HotReloadIndicator.svelte +44 -0
- package/dist/components/docs/HotReloadIndicator.svelte.d.ts +3 -0
- package/dist/components/docs/Icon.svelte +103 -0
- package/dist/components/docs/Icon.svelte.d.ts +11 -0
- package/dist/components/docs/Image.svelte +88 -0
- package/dist/components/docs/Image.svelte.d.ts +11 -0
- package/dist/components/docs/ImageCard.svelte +91 -0
- package/dist/components/docs/ImageCard.svelte.d.ts +12 -0
- package/dist/components/docs/ImageCardGrid.svelte +25 -0
- package/dist/components/docs/ImageCardGrid.svelte.d.ts +8 -0
- package/dist/components/docs/LayoutProviders.svelte +57 -0
- package/dist/components/docs/LayoutProviders.svelte.d.ts +9 -0
- package/dist/components/docs/Logo.svelte +25 -0
- package/dist/components/docs/Logo.svelte.d.ts +11 -0
- package/dist/components/docs/Math.svelte +54 -0
- package/dist/components/docs/Math.svelte.d.ts +7 -0
- package/dist/components/docs/MdxContent.svelte +41 -0
- package/dist/components/docs/MdxHotReload.svelte +78 -0
- package/dist/components/docs/MdxHotReload.svelte.d.ts +9 -0
- package/dist/components/docs/MdxLayout.svelte +16 -0
- package/dist/components/docs/MdxLayout.svelte.d.ts +6 -0
- package/dist/components/docs/Mermaid.svelte +88 -0
- package/dist/components/docs/Mermaid.svelte.d.ts +7 -0
- package/dist/components/docs/MobileDocLayout.svelte +211 -0
- package/dist/components/docs/MobileDocLayout.svelte.d.ts +35 -0
- package/dist/components/docs/MobileSidebar.svelte +122 -0
- package/dist/components/docs/MobileSidebar.svelte.d.ts +31 -0
- package/dist/components/docs/MobileSidebarWrapper.svelte +122 -0
- package/dist/components/docs/MobileSidebarWrapper.svelte.d.ts +32 -0
- package/dist/components/docs/NotFoundContent.svelte +40 -0
- package/dist/components/docs/NotFoundContent.svelte.d.ts +6 -0
- package/dist/components/docs/SearchHighlight.svelte +116 -0
- package/dist/components/docs/SearchHighlight.svelte.d.ts +3 -0
- package/dist/components/docs/SearchModal.svelte +239 -0
- package/dist/components/docs/SearchModal.svelte.d.ts +9 -0
- package/dist/components/docs/Sidebar.svelte +69 -0
- package/dist/components/docs/Sidebar.svelte.d.ts +31 -0
- package/dist/components/docs/SidebarMenuItems.svelte +344 -0
- package/dist/components/docs/SidebarMenuItems.svelte.d.ts +33 -0
- package/dist/components/docs/SidebarSkeleton.svelte +50 -0
- package/dist/components/docs/SidebarSkeleton.svelte.d.ts +18 -0
- package/dist/components/docs/SiteBanner.svelte +92 -0
- package/dist/components/docs/SiteBanner.svelte.d.ts +7 -0
- package/dist/components/docs/Step.svelte +44 -0
- package/dist/components/docs/Step.svelte.d.ts +8 -0
- package/dist/components/docs/Steps.svelte +15 -0
- package/dist/components/docs/Steps.svelte.d.ts +7 -0
- package/dist/components/docs/Tab.svelte +40 -0
- package/dist/components/docs/Tab.svelte.d.ts +8 -0
- package/dist/components/docs/TabGroups.svelte +183 -0
- package/dist/components/docs/TabGroups.svelte.d.ts +25 -0
- package/dist/components/docs/TableOfContents.svelte +100 -0
- package/dist/components/docs/TableOfContents.svelte.d.ts +9 -0
- package/dist/components/docs/Tabs.svelte +69 -0
- package/dist/components/docs/Tabs.svelte.d.ts +8 -0
- package/dist/components/docs/ThemeToggle.svelte +16 -0
- package/dist/components/docs/ThemeToggle.svelte.d.ts +18 -0
- package/dist/components/docs/Tooltip.svelte +44 -0
- package/dist/components/docs/Tooltip.svelte.d.ts +10 -0
- package/dist/components/docs/VersionSwitcher.svelte +95 -0
- package/dist/components/docs/VersionSwitcher.svelte.d.ts +7 -0
- package/dist/components/docs/Video.svelte +84 -0
- package/dist/components/docs/Video.svelte.d.ts +12 -0
- package/dist/components/docs/api/ApiEndpoint.svelte +61 -0
- package/dist/components/docs/api/ApiEndpoint.svelte.d.ts +11 -0
- package/dist/components/docs/api/ApiParams.svelte +80 -0
- package/dist/components/docs/api/ApiParams.svelte.d.ts +14 -0
- package/dist/components/docs/api/ApiPlayground.svelte +259 -0
- package/dist/components/docs/api/ApiPlayground.svelte.d.ts +16 -0
- package/dist/components/docs/api/ApiReference.svelte +278 -0
- package/dist/components/docs/api/ApiReference.svelte.d.ts +23 -0
- package/dist/components/docs/api/ApiResponse.svelte +66 -0
- package/dist/components/docs/api/ApiResponse.svelte.d.ts +9 -0
- package/dist/components/docs/api/index.d.ts +5 -0
- package/dist/components/docs/api/index.js +5 -0
- package/dist/components/docs/componentTextProps.d.ts +3 -0
- package/dist/components/docs/componentTextProps.js +61 -0
- package/dist/components/docs/index.d.ts +54 -0
- package/dist/components/docs/index.js +56 -0
- package/dist/components/global/VersionNotFound.svelte +48 -0
- package/dist/components/global/VersionNotFound.svelte.d.ts +7 -0
- package/dist/components/global/index.d.ts +1 -0
- package/dist/components/global/index.js +1 -0
- package/dist/components/index.d.ts +6 -822
- package/dist/components/index.js +11 -3857
- package/dist/components/ui/Badge.svelte +48 -0
- package/dist/components/ui/Badge.svelte.d.ts +15 -0
- package/dist/components/ui/Button.svelte +58 -0
- package/dist/components/ui/Button.svelte.d.ts +17 -0
- package/dist/components/ui/Dialog.svelte +16 -0
- package/dist/components/ui/Dialog.svelte.d.ts +9 -0
- package/dist/components/ui/DialogClose.svelte +16 -0
- package/dist/components/ui/DialogClose.svelte.d.ts +9 -0
- package/dist/components/ui/DialogContent.svelte +43 -0
- package/dist/components/ui/DialogContent.svelte.d.ts +10 -0
- package/dist/components/ui/DialogDescription.svelte +21 -0
- package/dist/components/ui/DialogDescription.svelte.d.ts +9 -0
- package/dist/components/ui/DialogFooter.svelte +20 -0
- package/dist/components/ui/DialogFooter.svelte.d.ts +9 -0
- package/dist/components/ui/DialogHeader.svelte +20 -0
- package/dist/components/ui/DialogHeader.svelte.d.ts +9 -0
- package/dist/components/ui/DialogTitle.svelte +21 -0
- package/dist/components/ui/DialogTitle.svelte.d.ts +9 -0
- package/dist/components/ui/Input.svelte +23 -0
- package/dist/components/ui/Input.svelte.d.ts +8 -0
- package/dist/components/ui/Textarea.svelte +19 -0
- package/dist/components/ui/Textarea.svelte.d.ts +7 -0
- package/dist/components/ui/index.d.ts +11 -0
- package/dist/components/ui/index.js +11 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.js +9 -0
- package/dist/config.schema.json +471 -0
- package/dist/config.server.d.ts +46 -0
- package/dist/config.server.js +149 -0
- package/dist/{mdx-ColN3Cyg.d.mts → config.types.d.ts} +22 -75
- package/dist/config.types.js +39 -0
- package/dist/dev-utils.d.ts +29 -0
- package/dist/dev-utils.js +63 -0
- package/dist/index.d.ts +19 -4
- package/dist/index.js +25 -4864
- package/dist/mdx-cache.d.ts +41 -0
- package/dist/mdx-cache.js +160 -0
- package/dist/mdx-components.js +50 -1931
- package/dist/mdx-security.d.ts +76 -0
- package/dist/mdx-security.js +217 -0
- package/dist/mdx.d.ts +73 -0
- package/dist/mdx.js +1099 -0
- package/dist/middleware/index.d.ts +1 -0
- package/dist/middleware/index.js +2 -0
- package/dist/middleware/security.d.ts +22 -47
- package/dist/middleware/security.js +111 -137
- package/dist/parsers/base-parser.d.ts +14 -0
- package/dist/parsers/base-parser.js +1 -0
- package/dist/parsers/index.d.ts +16 -0
- package/dist/parsers/index.js +51 -0
- package/dist/parsers/openapi-parser.d.ts +18 -0
- package/dist/parsers/openapi-parser.js +209 -0
- package/dist/parsers/postman-parser.d.ts +20 -0
- package/dist/parsers/postman-parser.js +260 -0
- package/dist/parsers/specra-parser.d.ts +10 -0
- package/dist/parsers/specra-parser.js +18 -0
- package/dist/redirects.d.ts +12 -0
- package/dist/redirects.js +30 -0
- package/dist/remark-code-meta.d.ts +6 -0
- package/dist/remark-code-meta.js +21 -0
- package/dist/sidebar-utils.d.ts +59 -0
- package/dist/sidebar-utils.js +144 -0
- package/dist/stores/config.d.ts +20 -0
- package/dist/stores/config.js +45 -0
- package/dist/stores/index.d.ts +4 -0
- package/dist/stores/index.js +4 -0
- package/dist/stores/sidebar.d.ts +7 -0
- package/dist/stores/sidebar.js +12 -0
- package/dist/stores/tabs.d.ts +6 -0
- package/dist/stores/tabs.js +41 -0
- package/dist/stores/theme.d.ts +7 -0
- package/dist/stores/theme.js +75 -0
- package/dist/{styles.css → styles/globals.css} +136 -6
- package/dist/toc.d.ts +9 -0
- package/dist/toc.js +15 -0
- package/dist/utils.d.ts +13 -0
- package/dist/utils.js +30 -0
- package/package.json +49 -91
- package/dist/app/api/mdx-watch/route.d.mts +0 -10
- package/dist/app/api/mdx-watch/route.d.ts +0 -10
- package/dist/app/api/mdx-watch/route.js +0 -118
- package/dist/app/api/mdx-watch/route.js.map +0 -1
- package/dist/app/api/mdx-watch/route.mjs +0 -91
- package/dist/app/api/mdx-watch/route.mjs.map +0 -1
- package/dist/chunk-6S3EJVEO.mjs +0 -259
- package/dist/chunk-6S3EJVEO.mjs.map +0 -1
- package/dist/chunk-BE7EROIW.mjs +0 -212
- package/dist/chunk-BE7EROIW.mjs.map +0 -1
- package/dist/chunk-CWHRZHZO.mjs +0 -168
- package/dist/chunk-CWHRZHZO.mjs.map +0 -1
- package/dist/chunk-D5VDVYFY.mjs +0 -1325
- package/dist/chunk-D5VDVYFY.mjs.map +0 -1
- package/dist/chunk-WMCO2UX5.mjs +0 -585
- package/dist/chunk-WMCO2UX5.mjs.map +0 -1
- package/dist/chunk-XEMGCPZZ.mjs +0 -475
- package/dist/chunk-XEMGCPZZ.mjs.map +0 -1
- package/dist/components/index.d.mts +0 -822
- package/dist/components/index.js.map +0 -1
- package/dist/components/index.mjs +0 -3744
- package/dist/components/index.mjs.map +0 -1
- package/dist/index.d.mts +0 -4
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -1900
- package/dist/index.mjs.map +0 -1
- package/dist/layouts/index.d.mts +0 -34
- package/dist/layouts/index.d.ts +0 -34
- package/dist/layouts/index.js +0 -453
- package/dist/layouts/index.js.map +0 -1
- package/dist/layouts/index.mjs +0 -173
- package/dist/layouts/index.mjs.map +0 -1
- package/dist/lib/index.d.mts +0 -583
- package/dist/lib/index.d.ts +0 -583
- package/dist/lib/index.js +0 -1595
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/index.mjs +0 -111
- package/dist/lib/index.mjs.map +0 -1
- package/dist/mdx-ColN3Cyg.d.ts +0 -352
- package/dist/mdx-components.d.mts +0 -86
- package/dist/mdx-components.d.ts +0 -86
- package/dist/mdx-components.js.map +0 -1
- package/dist/mdx-components.mjs +0 -206
- package/dist/mdx-components.mjs.map +0 -1
- package/dist/middleware/security.d.mts +0 -82
- package/dist/middleware/security.js.map +0 -1
- package/dist/middleware/security.mjs +0 -84
- package/dist/middleware/security.mjs.map +0 -1
- package/dist/styles.css.map +0 -1
- package/dist/styles.d.mts +0 -2
- package/dist/styles.d.ts +0 -2
- package/dist/styles.js +0 -2
- package/dist/styles.js.map +0 -1
- package/dist/styles.mjs +0 -1
- package/dist/styles.mjs.map +0 -1
package/LICENSE.MD
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
MIT License
|
|
1
|
+
MIT License with Branding Requirement
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2025 dalmasonto, arthur-kamau
|
|
3
|
+
Copyright (c) 2025-2026 dalmasonto, arthur-kamau
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -9,8 +9,29 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
9
9
|
copies of the Software, and to permit persons to whom the Software is
|
|
10
10
|
furnished to do so, subject to the following conditions:
|
|
11
11
|
|
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
|
13
|
-
copies or substantial portions of the Software.
|
|
12
|
+
1. The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
2. BRANDING / WATERMARK REQUIREMENT: All documentation sites generated using
|
|
16
|
+
this Software MUST display the "Powered by Specra" watermark in a visible
|
|
17
|
+
location (footer or equivalent) on every public-facing page. This watermark
|
|
18
|
+
must include the text "Powered by Specra" and link to https://specra-docs.com.
|
|
19
|
+
|
|
20
|
+
The watermark MUST NOT be removed, hidden, obscured, or made invisible by
|
|
21
|
+
any means (including but not limited to CSS, JavaScript, DOM manipulation,
|
|
22
|
+
or build-time stripping) unless the user holds an active paid subscription
|
|
23
|
+
(Starter tier or above) on the Specra platform (https://specra-docs.com)
|
|
24
|
+
that explicitly grants the right to remove Specra branding.
|
|
25
|
+
|
|
26
|
+
Removal, hiding, or circumvention of the watermark without a valid paid
|
|
27
|
+
subscription constitutes a COPYRIGHT VIOLATION and a breach of this license,
|
|
28
|
+
and may result in legal action.
|
|
29
|
+
|
|
30
|
+
3. Users with an active paid subscription (Starter, Pro, or Enterprise) on the
|
|
31
|
+
Specra platform may remove the watermark by setting the appropriate
|
|
32
|
+
configuration option. This right is non-transferable and applies only while
|
|
33
|
+
the subscription remains active. If a subscription lapses or is cancelled,
|
|
34
|
+
the watermark must be restored.
|
|
14
35
|
|
|
15
36
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
37
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
package/README.md
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
# Specra
|
|
2
2
|
|
|
3
|
-
A modern documentation library
|
|
4
|
-
To view the docs, visit [Specra Docs](https://specra.
|
|
3
|
+
A modern documentation library built on SvelteKit that makes it easy to create beautiful, feature-rich documentation sites.
|
|
4
|
+
To view the docs, visit [Specra Docs](https://specra-docs.com).
|
|
5
5
|
|
|
6
6
|
## Features
|
|
7
7
|
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
8
|
+
- **MDX Support** - Write documentation in Markdown with Svelte components
|
|
9
|
+
- **Multi-Version Docs** - Support multiple documentation versions seamlessly
|
|
10
|
+
- **API Reference Generation** - Auto-generate API docs from OpenAPI, Postman, or Specra formats
|
|
11
|
+
- **Full-Text Search** - Integrated MeiliSearch support for fast search
|
|
12
|
+
- **Tab Groups** - Organize content into multiple navigation tabs
|
|
13
|
+
- **Dark Mode** - Built-in theme switching with system preference detection
|
|
14
|
+
- **Customizable** - Highly configurable with Tailwind CSS
|
|
15
|
+
- **Fast** - Built on SvelteKit with optimized performance
|
|
16
|
+
- **Responsive** - Mobile-friendly design out of the box
|
|
17
|
+
- **Hot Reload** - Instant updates during development
|
|
18
18
|
|
|
19
19
|
## Installation
|
|
20
20
|
|
|
@@ -28,58 +28,47 @@ pnpm add specra
|
|
|
28
28
|
|
|
29
29
|
## Quick Start
|
|
30
30
|
|
|
31
|
-
### 1. Create a new
|
|
31
|
+
### 1. Create a new SvelteKit app (if you don't have one)
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
|
-
npx create-
|
|
34
|
+
npx create-specra my-docs
|
|
35
35
|
cd my-docs
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
Or manually with SvelteKit:
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
|
+
npx sv create my-docs
|
|
42
|
+
cd my-docs
|
|
41
43
|
npm install specra
|
|
42
44
|
```
|
|
43
45
|
|
|
44
|
-
###
|
|
46
|
+
### 2. Set up your project structure
|
|
45
47
|
|
|
46
48
|
```
|
|
47
49
|
my-docs/
|
|
48
|
-
├──
|
|
49
|
-
│ ├──
|
|
50
|
-
│ ├──
|
|
51
|
-
│
|
|
52
|
-
│
|
|
53
|
-
│
|
|
54
|
-
│
|
|
55
|
-
|
|
50
|
+
├── src/
|
|
51
|
+
│ ├── routes/
|
|
52
|
+
│ │ ├── +layout.svelte # Root layout with Specra components
|
|
53
|
+
│ │ ├── +layout.ts # Load config
|
|
54
|
+
│ │ ├── +page.svelte # Your landing page
|
|
55
|
+
│ │ └── docs/
|
|
56
|
+
│ │ └── [version]/
|
|
57
|
+
│ │ └── [...slug]/
|
|
58
|
+
│ │ ├── +page.svelte # Doc page
|
|
59
|
+
│ │ └── +page.ts # Load doc data
|
|
60
|
+
│ └── app.html
|
|
61
|
+
├── docs/ # Your MDX content
|
|
56
62
|
│ └── v1.0.0/
|
|
57
63
|
│ └── getting-started.mdx
|
|
58
|
-
├──
|
|
64
|
+
├── static/
|
|
59
65
|
│ └── logo.png
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
### 4. Configure app/layout.tsx
|
|
64
|
-
|
|
65
|
-
```typescript
|
|
66
|
-
// app/layout.tsx
|
|
67
|
-
export { default } from 'specra/app/layout'
|
|
68
|
-
export { generateMetadata } from 'specra/app/layout'
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### 5. Configure app/docs/[version]/[...slug]/page.tsx
|
|
72
|
-
|
|
73
|
-
```typescript
|
|
74
|
-
// app/docs/[version]/[...slug]/page.tsx
|
|
75
|
-
export { default } from 'specra/app/docs-page'
|
|
76
|
-
export {
|
|
77
|
-
generateStaticParams,
|
|
78
|
-
generateMetadata
|
|
79
|
-
} from 'specra/app/docs-page'
|
|
66
|
+
├── specra.config.json # Specra configuration
|
|
67
|
+
├── svelte.config.js
|
|
68
|
+
└── vite.config.ts
|
|
80
69
|
```
|
|
81
70
|
|
|
82
|
-
###
|
|
71
|
+
### 3. Configure specra.config.json
|
|
83
72
|
|
|
84
73
|
```json
|
|
85
74
|
{
|
|
@@ -87,20 +76,28 @@ export {
|
|
|
87
76
|
"title": "My Documentation",
|
|
88
77
|
"description": "Awesome docs built with Specra",
|
|
89
78
|
"url": "https://docs.example.com",
|
|
90
|
-
"
|
|
79
|
+
"activeVersion": "v1.0.0"
|
|
91
80
|
},
|
|
92
81
|
"theme": {
|
|
93
82
|
"defaultMode": "system",
|
|
94
|
-
"
|
|
83
|
+
"respectPrefersColorScheme": true
|
|
95
84
|
},
|
|
96
85
|
"navigation": {
|
|
97
|
-
"
|
|
98
|
-
"
|
|
86
|
+
"showSidebar": true,
|
|
87
|
+
"collapsibleSidebar": true,
|
|
88
|
+
"showBreadcrumbs": true,
|
|
89
|
+
"showTableOfContents": true,
|
|
90
|
+
"sidebarStyle": "card"
|
|
91
|
+
},
|
|
92
|
+
"features": {
|
|
93
|
+
"versioning": true,
|
|
94
|
+
"showVersionBadge": false,
|
|
95
|
+
"showReadingTime": true
|
|
99
96
|
}
|
|
100
97
|
}
|
|
101
98
|
```
|
|
102
99
|
|
|
103
|
-
###
|
|
100
|
+
### 4. Create your first doc
|
|
104
101
|
|
|
105
102
|
```mdx
|
|
106
103
|
---
|
|
@@ -113,9 +110,9 @@ description: Learn how to get started with our platform
|
|
|
113
110
|
Welcome to the documentation!
|
|
114
111
|
```
|
|
115
112
|
|
|
116
|
-
###
|
|
113
|
+
### 5. Import globals.css
|
|
117
114
|
|
|
118
|
-
Add to your
|
|
115
|
+
Add to your root stylesheet:
|
|
119
116
|
|
|
120
117
|
```css
|
|
121
118
|
@import 'specra/styles';
|
|
@@ -123,17 +120,17 @@ Add to your `app/globals.css`:
|
|
|
123
120
|
/* Your custom styles */
|
|
124
121
|
```
|
|
125
122
|
|
|
126
|
-
###
|
|
123
|
+
### 6. Run development server
|
|
127
124
|
|
|
128
125
|
```bash
|
|
129
126
|
npm run dev
|
|
130
127
|
```
|
|
131
128
|
|
|
132
|
-
Visit `http://localhost:
|
|
129
|
+
Visit `http://localhost:5173/docs/v1.0.0/getting-started` to see your docs!
|
|
133
130
|
|
|
134
131
|
## Configuration
|
|
135
132
|
|
|
136
|
-
See [Configuration Guide](https://docs.
|
|
133
|
+
See [Configuration Guide](https://specra-docs.com/docs) for full documentation.
|
|
137
134
|
|
|
138
135
|
## Upgrading
|
|
139
136
|
|
|
@@ -145,14 +142,26 @@ npm update specra
|
|
|
145
142
|
|
|
146
143
|
Your content and configuration stay the same - only the SDK updates!
|
|
147
144
|
|
|
145
|
+
## Specra SaaS
|
|
146
|
+
|
|
147
|
+
The official documentation site ([specra-docs](https://specra-docs.com)) also serves as a SaaS platform with paid tiers (Starter, Pro, Enterprise). It includes:
|
|
148
|
+
- Authentication (Auth.js with GitHub OAuth + email/password)
|
|
149
|
+
- Subscription billing via Stripe (USD) and M-Pesa Daraja (KES)
|
|
150
|
+
- User dashboard with plan management and billing history
|
|
151
|
+
- PostgreSQL database via Prisma v7
|
|
152
|
+
|
|
153
|
+
The SaaS layer is implemented entirely within specra-docs and does not affect the SDK itself. Users of the SDK can build free, self-hosted documentation sites without any billing features.
|
|
154
|
+
|
|
148
155
|
## Why Specra?
|
|
149
156
|
|
|
150
157
|
Specra is designed to be the easiest way to create documentation for your projects. It handles all the complex parts (versioning, search, API references) while letting you focus on writing great content.
|
|
151
158
|
|
|
152
159
|
## License
|
|
153
160
|
|
|
154
|
-
MIT
|
|
161
|
+
MIT with Branding Requirement — see [LICENSE.MD](LICENSE.MD).
|
|
162
|
+
|
|
163
|
+
All documentation sites built with Specra must display the "Powered by Specra" watermark. Removing the watermark requires an active paid subscription (Starter tier or above) at [specra-docs.com](https://specra-docs.com). Unauthorized removal of the watermark is a copyright violation.
|
|
155
164
|
|
|
156
165
|
## Authors
|
|
157
166
|
|
|
158
|
-
dalmasonto, arthur-kamau
|
|
167
|
+
dalmasonto, arthur-kamau
|
|
@@ -164,6 +164,10 @@
|
|
|
164
164
|
"description": "Show tags",
|
|
165
165
|
"type": "boolean"
|
|
166
166
|
},
|
|
167
|
+
"showVersionBadge": {
|
|
168
|
+
"description": "Show version badge in the sidebar",
|
|
169
|
+
"type": "boolean"
|
|
170
|
+
},
|
|
167
171
|
"versioning": {
|
|
168
172
|
"description": "Enable version dropdown",
|
|
169
173
|
"type": "boolean"
|
|
@@ -322,6 +326,14 @@
|
|
|
322
326
|
"description": "Whether to show table of contents",
|
|
323
327
|
"type": "boolean"
|
|
324
328
|
},
|
|
329
|
+
"sidebarStyle": {
|
|
330
|
+
"description": "Sidebar visual style: \"card\" (rounded container) or \"flush\" (attached to screen edge)",
|
|
331
|
+
"enum": [
|
|
332
|
+
"card",
|
|
333
|
+
"flush"
|
|
334
|
+
],
|
|
335
|
+
"type": "string"
|
|
336
|
+
},
|
|
325
337
|
"tabGroups": {
|
|
326
338
|
"description": "Tab groups for organizing documentation sections",
|
|
327
339
|
"items": {
|
|
@@ -451,6 +463,10 @@
|
|
|
451
463
|
"description": "Organization or author name",
|
|
452
464
|
"type": "string"
|
|
453
465
|
},
|
|
466
|
+
"projectId": {
|
|
467
|
+
"description": "Project ID to tie this doc site to a Specra project for visitor tracking",
|
|
468
|
+
"type": "string"
|
|
469
|
+
},
|
|
454
470
|
"projectName": {
|
|
455
471
|
"description": "Project name",
|
|
456
472
|
"type": "string"
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Specra SvelteKit Configuration
|
|
3
|
+
*
|
|
4
|
+
* Provides a function that returns SvelteKit-compatible configuration
|
|
5
|
+
* with mdsvex preprocessor and all required remark/rehype plugins.
|
|
6
|
+
*
|
|
7
|
+
* Usage in svelte.config.js:
|
|
8
|
+
* ```js
|
|
9
|
+
* import { specraConfig } from 'specra/svelte-config'
|
|
10
|
+
* const config = specraConfig()
|
|
11
|
+
* export default config
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
import { mdsvex } from 'mdsvex'
|
|
15
|
+
import remarkGfm from 'remark-gfm'
|
|
16
|
+
import remarkMath from 'remark-math'
|
|
17
|
+
import rehypeSlug from 'rehype-slug'
|
|
18
|
+
import rehypeKatex from 'rehype-katex'
|
|
19
|
+
import rehypeRaw from 'rehype-raw'
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Get mdsvex preprocessor config with all Specra remark/rehype plugins
|
|
23
|
+
*/
|
|
24
|
+
export function specraMdsvexConfig(options = {}) {
|
|
25
|
+
return {
|
|
26
|
+
extensions: ['.md', '.svx', '.mdx'],
|
|
27
|
+
remarkPlugins: [
|
|
28
|
+
remarkGfm,
|
|
29
|
+
remarkMath,
|
|
30
|
+
...(options.remarkPlugins || [])
|
|
31
|
+
],
|
|
32
|
+
rehypePlugins: [
|
|
33
|
+
rehypeSlug,
|
|
34
|
+
rehypeKatex,
|
|
35
|
+
rehypeRaw,
|
|
36
|
+
...(options.rehypePlugins || [])
|
|
37
|
+
],
|
|
38
|
+
smartypants: {
|
|
39
|
+
dashes: 'oldschool'
|
|
40
|
+
},
|
|
41
|
+
...options
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Create a full SvelteKit config with Specra defaults
|
|
47
|
+
*/
|
|
48
|
+
export function specraConfig(options = {}) {
|
|
49
|
+
const { vitePreprocess } = options.vitePreprocess || {}
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
extensions: ['.svelte', '.md', '.svx', '.mdx'],
|
|
53
|
+
preprocess: [
|
|
54
|
+
...(vitePreprocess ? [vitePreprocess()] : []),
|
|
55
|
+
mdsvex(specraMdsvexConfig(options.mdsvex || {}))
|
|
56
|
+
],
|
|
57
|
+
kit: {
|
|
58
|
+
...(options.kit || {})
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export default specraConfig
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple API Documentation Format for Specra
|
|
3
|
+
* Easy to write, easy to parse
|
|
4
|
+
*/
|
|
5
|
+
export interface ApiParam {
|
|
6
|
+
name: string;
|
|
7
|
+
type: string;
|
|
8
|
+
required?: boolean;
|
|
9
|
+
description?: string;
|
|
10
|
+
default?: any;
|
|
11
|
+
example?: any;
|
|
12
|
+
}
|
|
13
|
+
export interface ApiHeader {
|
|
14
|
+
name: string;
|
|
15
|
+
value: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ApiResponse {
|
|
19
|
+
status: number;
|
|
20
|
+
description?: string;
|
|
21
|
+
example?: any;
|
|
22
|
+
schema?: any;
|
|
23
|
+
}
|
|
24
|
+
export interface ApiEndpointSpec {
|
|
25
|
+
title: string;
|
|
26
|
+
method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
27
|
+
path: string;
|
|
28
|
+
description?: string;
|
|
29
|
+
pathParams?: ApiParam[];
|
|
30
|
+
queryParams?: ApiParam[];
|
|
31
|
+
headers?: ApiHeader[];
|
|
32
|
+
body?: {
|
|
33
|
+
description?: string;
|
|
34
|
+
example?: any;
|
|
35
|
+
schema?: any;
|
|
36
|
+
};
|
|
37
|
+
successResponse?: ApiResponse;
|
|
38
|
+
errorResponses?: ApiResponse[];
|
|
39
|
+
examples?: {
|
|
40
|
+
title: string;
|
|
41
|
+
language: string;
|
|
42
|
+
code: string;
|
|
43
|
+
}[];
|
|
44
|
+
}
|
|
45
|
+
export interface SpecraApiSpec {
|
|
46
|
+
version?: string;
|
|
47
|
+
title?: string;
|
|
48
|
+
description?: string;
|
|
49
|
+
baseUrl: string;
|
|
50
|
+
env?: Record<string, string>;
|
|
51
|
+
globalHeaders?: ApiHeader[];
|
|
52
|
+
auth?: {
|
|
53
|
+
type: "bearer" | "apiKey" | "basic";
|
|
54
|
+
description?: string;
|
|
55
|
+
headerName?: string;
|
|
56
|
+
tokenPrefix?: string;
|
|
57
|
+
};
|
|
58
|
+
endpoints: ApiEndpointSpec[];
|
|
59
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Specra API Documentation Schema
|
|
3
|
+
* Supports REST, GraphQL, and WebSocket APIs
|
|
4
|
+
*/
|
|
5
|
+
export type HttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD" | "OPTIONS";
|
|
6
|
+
export interface ApiParameter {
|
|
7
|
+
name: string;
|
|
8
|
+
type: string;
|
|
9
|
+
required?: boolean;
|
|
10
|
+
description?: string;
|
|
11
|
+
default?: any;
|
|
12
|
+
example?: any;
|
|
13
|
+
enum?: string[];
|
|
14
|
+
}
|
|
15
|
+
export interface ApiResponse {
|
|
16
|
+
status: number;
|
|
17
|
+
description: string;
|
|
18
|
+
schema?: any;
|
|
19
|
+
example?: any;
|
|
20
|
+
headers?: Record<string, string>;
|
|
21
|
+
}
|
|
22
|
+
export interface ApiExample {
|
|
23
|
+
title: string;
|
|
24
|
+
language: string;
|
|
25
|
+
code: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ApiAuthentication {
|
|
28
|
+
type: "apiKey" | "bearer" | "basic" | "oauth2" | "none";
|
|
29
|
+
description?: string;
|
|
30
|
+
location?: "header" | "query" | "cookie";
|
|
31
|
+
name?: string;
|
|
32
|
+
scheme?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface RestEndpoint {
|
|
35
|
+
type: "rest";
|
|
36
|
+
method: HttpMethod;
|
|
37
|
+
path: string;
|
|
38
|
+
summary: string;
|
|
39
|
+
description?: string;
|
|
40
|
+
operationId?: string;
|
|
41
|
+
tags?: string[];
|
|
42
|
+
deprecated?: boolean;
|
|
43
|
+
authentication?: ApiAuthentication;
|
|
44
|
+
pathParams?: ApiParameter[];
|
|
45
|
+
queryParams?: ApiParameter[];
|
|
46
|
+
headers?: ApiParameter[];
|
|
47
|
+
body?: {
|
|
48
|
+
contentType: string;
|
|
49
|
+
schema?: any;
|
|
50
|
+
example?: any;
|
|
51
|
+
description?: string;
|
|
52
|
+
};
|
|
53
|
+
responses: ApiResponse[];
|
|
54
|
+
examples?: ApiExample[];
|
|
55
|
+
}
|
|
56
|
+
export interface GraphQLField {
|
|
57
|
+
name: string;
|
|
58
|
+
type: string;
|
|
59
|
+
description?: string;
|
|
60
|
+
args?: ApiParameter[];
|
|
61
|
+
deprecated?: boolean;
|
|
62
|
+
deprecationReason?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface GraphQLType {
|
|
65
|
+
name: string;
|
|
66
|
+
kind: "OBJECT" | "INPUT_OBJECT" | "ENUM" | "SCALAR" | "INTERFACE" | "UNION";
|
|
67
|
+
description?: string;
|
|
68
|
+
fields?: GraphQLField[];
|
|
69
|
+
enumValues?: {
|
|
70
|
+
name: string;
|
|
71
|
+
description?: string;
|
|
72
|
+
}[];
|
|
73
|
+
}
|
|
74
|
+
export interface GraphQLQuery {
|
|
75
|
+
type: "graphql";
|
|
76
|
+
operationType: "query" | "mutation" | "subscription";
|
|
77
|
+
name: string;
|
|
78
|
+
description?: string;
|
|
79
|
+
args?: ApiParameter[];
|
|
80
|
+
returnType: string;
|
|
81
|
+
example?: string;
|
|
82
|
+
response?: any;
|
|
83
|
+
}
|
|
84
|
+
export interface GraphQLSchema {
|
|
85
|
+
queries?: GraphQLQuery[];
|
|
86
|
+
mutations?: GraphQLQuery[];
|
|
87
|
+
subscriptions?: GraphQLQuery[];
|
|
88
|
+
types?: GraphQLType[];
|
|
89
|
+
}
|
|
90
|
+
export interface WebSocketEvent {
|
|
91
|
+
type: "websocket";
|
|
92
|
+
event: string;
|
|
93
|
+
direction: "client-to-server" | "server-to-client" | "bidirectional";
|
|
94
|
+
description?: string;
|
|
95
|
+
payload?: {
|
|
96
|
+
schema?: any;
|
|
97
|
+
example?: any;
|
|
98
|
+
};
|
|
99
|
+
response?: {
|
|
100
|
+
schema?: any;
|
|
101
|
+
example?: any;
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export interface WebSocketConnection {
|
|
105
|
+
url: string;
|
|
106
|
+
authentication?: ApiAuthentication;
|
|
107
|
+
description?: string;
|
|
108
|
+
events: WebSocketEvent[];
|
|
109
|
+
}
|
|
110
|
+
export interface ApiDocumentation {
|
|
111
|
+
version: string;
|
|
112
|
+
title: string;
|
|
113
|
+
description?: string;
|
|
114
|
+
baseUrl?: string;
|
|
115
|
+
servers?: Array<{
|
|
116
|
+
url: string;
|
|
117
|
+
description?: string;
|
|
118
|
+
}>;
|
|
119
|
+
rest?: {
|
|
120
|
+
endpoints: RestEndpoint[];
|
|
121
|
+
};
|
|
122
|
+
graphql?: GraphQLSchema;
|
|
123
|
+
websocket?: WebSocketConnection[];
|
|
124
|
+
authentication?: ApiAuthentication[];
|
|
125
|
+
headers?: Record<string, string>;
|
|
126
|
+
}
|
|
127
|
+
export interface ApiSpecConfig {
|
|
128
|
+
source: "openapi" | "postman" | "insomnia" | "specra" | "manual";
|
|
129
|
+
path?: string;
|
|
130
|
+
spec?: ApiDocumentation;
|
|
131
|
+
autoGenerate?: boolean;
|
|
132
|
+
outputDir?: string;
|
|
133
|
+
}
|
|
134
|
+
export interface ParsedApiSpec {
|
|
135
|
+
source: ApiSpecConfig["source"];
|
|
136
|
+
documentation: ApiDocumentation;
|
|
137
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface CategoryConfig {
|
|
2
|
+
label?: string;
|
|
3
|
+
position?: number;
|
|
4
|
+
sidebar_position?: number;
|
|
5
|
+
link?: {
|
|
6
|
+
type: "generated-index" | "doc";
|
|
7
|
+
slug?: string;
|
|
8
|
+
};
|
|
9
|
+
collapsed?: boolean;
|
|
10
|
+
collapsible?: boolean;
|
|
11
|
+
icon?: string;
|
|
12
|
+
tab_group?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Read category.json from a folder
|
|
16
|
+
*/
|
|
17
|
+
export declare function getCategoryConfig(folderPath: string): CategoryConfig | null;
|
|
18
|
+
/**
|
|
19
|
+
* Get all category configs for a version
|
|
20
|
+
*/
|
|
21
|
+
export declare function getAllCategoryConfigs(version: string): Map<string, CategoryConfig>;
|
package/dist/category.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Note: This file uses server-only APIs (fs, path) and should only be imported in Server Components
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
const DOCS_DIR = path.join(process.cwd(), "docs");
|
|
5
|
+
/**
|
|
6
|
+
* Read category.json from a folder
|
|
7
|
+
*/
|
|
8
|
+
export function getCategoryConfig(folderPath) {
|
|
9
|
+
try {
|
|
10
|
+
const categoryPath = path.join(folderPath, "_category_.json");
|
|
11
|
+
if (!fs.existsSync(categoryPath)) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
const content = fs.readFileSync(categoryPath, "utf8");
|
|
15
|
+
return JSON.parse(content);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
console.error(`Error reading category config from ${folderPath}:`, error);
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get all category configs for a version
|
|
24
|
+
*/
|
|
25
|
+
export function getAllCategoryConfigs(version) {
|
|
26
|
+
const configs = new Map();
|
|
27
|
+
const versionDir = path.join(DOCS_DIR, version);
|
|
28
|
+
if (!fs.existsSync(versionDir)) {
|
|
29
|
+
return configs;
|
|
30
|
+
}
|
|
31
|
+
function scanDirectory(dir, relativePath = "") {
|
|
32
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
33
|
+
for (const entry of entries) {
|
|
34
|
+
if (entry.isDirectory()) {
|
|
35
|
+
const fullPath = path.join(dir, entry.name);
|
|
36
|
+
const relPath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
|
|
37
|
+
const config = getCategoryConfig(fullPath);
|
|
38
|
+
if (config) {
|
|
39
|
+
configs.set(relPath, config);
|
|
40
|
+
}
|
|
41
|
+
// Recursively scan subdirectories
|
|
42
|
+
scanDirectory(fullPath, relPath);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
scanDirectory(versionDir);
|
|
47
|
+
return configs;
|
|
48
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { setConfigContext } from '../stores/config.js';
|
|
3
|
+
import type { SpecraConfig } from '../config.types.js';
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
config: SpecraConfig;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
let { config }: Props = $props();
|
|
10
|
+
setConfigContext(config);
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<slot />
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { SpecraConfig } from '../config.types.js';
|
|
2
|
+
interface Props {
|
|
3
|
+
config: SpecraConfig;
|
|
4
|
+
}
|
|
5
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
6
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
7
|
+
$$bindings?: Bindings;
|
|
8
|
+
} & Exports;
|
|
9
|
+
(internal: unknown, props: Props & {
|
|
10
|
+
$$events?: Events;
|
|
11
|
+
$$slots?: Slots;
|
|
12
|
+
}): Exports & {
|
|
13
|
+
$set?: any;
|
|
14
|
+
$on?: any;
|
|
15
|
+
};
|
|
16
|
+
z_$$bindings?: Bindings;
|
|
17
|
+
}
|
|
18
|
+
type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
|
|
19
|
+
default: any;
|
|
20
|
+
} ? Props extends Record<string, never> ? any : {
|
|
21
|
+
children?: any;
|
|
22
|
+
} : {});
|
|
23
|
+
declare const ConfigProvider: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<Props, {
|
|
24
|
+
default: {};
|
|
25
|
+
}>, {
|
|
26
|
+
[evt: string]: CustomEvent<any>;
|
|
27
|
+
}, {
|
|
28
|
+
default: {};
|
|
29
|
+
}, {}, "">;
|
|
30
|
+
type ConfigProvider = InstanceType<typeof ConfigProvider>;
|
|
31
|
+
export default ConfigProvider;
|