specra 0.1.13 → 0.2.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.
Files changed (276) hide show
  1. package/LICENSE.MD +25 -4
  2. package/README.md +67 -58
  3. package/config/specra.config.schema.json +16 -0
  4. package/config/svelte-config.js +63 -0
  5. package/dist/api-parser.types.d.ts +59 -0
  6. package/dist/api-parser.types.js +5 -0
  7. package/dist/api.types.d.ts +137 -0
  8. package/dist/api.types.js +5 -0
  9. package/dist/category.d.ts +21 -0
  10. package/dist/category.js +48 -0
  11. package/dist/components/ConfigProvider.svelte +13 -0
  12. package/dist/components/ConfigProvider.svelte.d.ts +31 -0
  13. package/dist/components/docs/Accordion.svelte +18 -0
  14. package/dist/components/docs/Accordion.svelte.d.ts +10 -0
  15. package/dist/components/docs/AccordionItem.svelte +41 -0
  16. package/dist/components/docs/AccordionItem.svelte.d.ts +10 -0
  17. package/dist/components/docs/Badge.svelte +28 -0
  18. package/dist/components/docs/Badge.svelte.d.ts +9 -0
  19. package/dist/components/docs/Breadcrumb.svelte +80 -0
  20. package/dist/components/docs/Breadcrumb.svelte.d.ts +8 -0
  21. package/dist/components/docs/Callout.svelte +96 -0
  22. package/dist/components/docs/Callout.svelte.d.ts +10 -0
  23. package/dist/components/docs/Card.svelte +63 -0
  24. package/dist/components/docs/Card.svelte.d.ts +12 -0
  25. package/dist/components/docs/CardGrid.svelte +24 -0
  26. package/dist/components/docs/CardGrid.svelte.d.ts +8 -0
  27. package/dist/components/docs/CategoryIndex.svelte +110 -0
  28. package/dist/components/docs/CategoryIndex.svelte.d.ts +29 -0
  29. package/dist/components/docs/CodeBlock.svelte +172 -0
  30. package/dist/components/docs/CodeBlock.svelte.d.ts +8 -0
  31. package/dist/components/docs/Column.svelte +25 -0
  32. package/dist/components/docs/Column.svelte.d.ts +8 -0
  33. package/dist/components/docs/Columns.svelte +38 -0
  34. package/dist/components/docs/Columns.svelte.d.ts +13 -0
  35. package/dist/components/docs/DevModeBadge.svelte +15 -0
  36. package/dist/components/docs/DevModeBadge.svelte.d.ts +18 -0
  37. package/dist/components/docs/DocBadge.svelte +28 -0
  38. package/dist/components/docs/DocBadge.svelte.d.ts +9 -0
  39. package/dist/components/docs/DocLayout.svelte +107 -0
  40. package/dist/components/docs/DocLayout.svelte.d.ts +32 -0
  41. package/dist/components/docs/DocLoading.svelte +53 -0
  42. package/dist/components/docs/DocLoading.svelte.d.ts +18 -0
  43. package/dist/components/docs/DocMetadata.svelte +106 -0
  44. package/dist/components/docs/DocMetadata.svelte.d.ts +18 -0
  45. package/dist/components/docs/DocNavigation.svelte +56 -0
  46. package/dist/components/docs/DocNavigation.svelte.d.ts +12 -0
  47. package/dist/components/docs/DocTags.svelte +22 -0
  48. package/dist/components/docs/DocTags.svelte.d.ts +6 -0
  49. package/dist/components/docs/DraftBadge.svelte +10 -0
  50. package/dist/components/docs/DraftBadge.svelte.d.ts +18 -0
  51. package/dist/components/docs/Footer.svelte +72 -0
  52. package/dist/components/docs/Footer.svelte.d.ts +7 -0
  53. package/dist/components/docs/Frame.svelte +27 -0
  54. package/dist/components/docs/Frame.svelte.d.ts +9 -0
  55. package/dist/components/docs/Header.svelte +123 -0
  56. package/dist/components/docs/Header.svelte.d.ts +9 -0
  57. package/dist/components/docs/HeaderWithMenu.svelte +34 -0
  58. package/dist/components/docs/HeaderWithMenu.svelte.d.ts +17 -0
  59. package/dist/components/docs/HotReloadIndicator.svelte +44 -0
  60. package/dist/components/docs/HotReloadIndicator.svelte.d.ts +3 -0
  61. package/dist/components/docs/Icon.svelte +103 -0
  62. package/dist/components/docs/Icon.svelte.d.ts +11 -0
  63. package/dist/components/docs/Image.svelte +88 -0
  64. package/dist/components/docs/Image.svelte.d.ts +11 -0
  65. package/dist/components/docs/ImageCard.svelte +91 -0
  66. package/dist/components/docs/ImageCard.svelte.d.ts +12 -0
  67. package/dist/components/docs/ImageCardGrid.svelte +25 -0
  68. package/dist/components/docs/ImageCardGrid.svelte.d.ts +8 -0
  69. package/dist/components/docs/LayoutProviders.svelte +57 -0
  70. package/dist/components/docs/LayoutProviders.svelte.d.ts +9 -0
  71. package/dist/components/docs/Logo.svelte +25 -0
  72. package/dist/components/docs/Logo.svelte.d.ts +11 -0
  73. package/dist/components/docs/Math.svelte +54 -0
  74. package/dist/components/docs/Math.svelte.d.ts +7 -0
  75. package/dist/components/docs/MdxContent.svelte +41 -0
  76. package/dist/components/docs/MdxHotReload.svelte +78 -0
  77. package/dist/components/docs/MdxHotReload.svelte.d.ts +9 -0
  78. package/dist/components/docs/MdxLayout.svelte +16 -0
  79. package/dist/components/docs/MdxLayout.svelte.d.ts +6 -0
  80. package/dist/components/docs/Mermaid.svelte +88 -0
  81. package/dist/components/docs/Mermaid.svelte.d.ts +7 -0
  82. package/dist/components/docs/MobileDocLayout.svelte +211 -0
  83. package/dist/components/docs/MobileDocLayout.svelte.d.ts +35 -0
  84. package/dist/components/docs/MobileSidebar.svelte +122 -0
  85. package/dist/components/docs/MobileSidebar.svelte.d.ts +31 -0
  86. package/dist/components/docs/MobileSidebarWrapper.svelte +122 -0
  87. package/dist/components/docs/MobileSidebarWrapper.svelte.d.ts +32 -0
  88. package/dist/components/docs/NotFoundContent.svelte +40 -0
  89. package/dist/components/docs/NotFoundContent.svelte.d.ts +6 -0
  90. package/dist/components/docs/SearchHighlight.svelte +116 -0
  91. package/dist/components/docs/SearchHighlight.svelte.d.ts +3 -0
  92. package/dist/components/docs/SearchModal.svelte +239 -0
  93. package/dist/components/docs/SearchModal.svelte.d.ts +9 -0
  94. package/dist/components/docs/Sidebar.svelte +69 -0
  95. package/dist/components/docs/Sidebar.svelte.d.ts +31 -0
  96. package/dist/components/docs/SidebarMenuItems.svelte +344 -0
  97. package/dist/components/docs/SidebarMenuItems.svelte.d.ts +33 -0
  98. package/dist/components/docs/SidebarSkeleton.svelte +50 -0
  99. package/dist/components/docs/SidebarSkeleton.svelte.d.ts +18 -0
  100. package/dist/components/docs/SiteBanner.svelte +92 -0
  101. package/dist/components/docs/SiteBanner.svelte.d.ts +7 -0
  102. package/dist/components/docs/Step.svelte +44 -0
  103. package/dist/components/docs/Step.svelte.d.ts +8 -0
  104. package/dist/components/docs/Steps.svelte +15 -0
  105. package/dist/components/docs/Steps.svelte.d.ts +7 -0
  106. package/dist/components/docs/Tab.svelte +40 -0
  107. package/dist/components/docs/Tab.svelte.d.ts +8 -0
  108. package/dist/components/docs/TabGroups.svelte +183 -0
  109. package/dist/components/docs/TabGroups.svelte.d.ts +25 -0
  110. package/dist/components/docs/TableOfContents.svelte +100 -0
  111. package/dist/components/docs/TableOfContents.svelte.d.ts +9 -0
  112. package/dist/components/docs/Tabs.svelte +69 -0
  113. package/dist/components/docs/Tabs.svelte.d.ts +8 -0
  114. package/dist/components/docs/ThemeToggle.svelte +16 -0
  115. package/dist/components/docs/ThemeToggle.svelte.d.ts +18 -0
  116. package/dist/components/docs/Tooltip.svelte +44 -0
  117. package/dist/components/docs/Tooltip.svelte.d.ts +10 -0
  118. package/dist/components/docs/VersionSwitcher.svelte +95 -0
  119. package/dist/components/docs/VersionSwitcher.svelte.d.ts +7 -0
  120. package/dist/components/docs/Video.svelte +84 -0
  121. package/dist/components/docs/Video.svelte.d.ts +12 -0
  122. package/dist/components/docs/api/ApiEndpoint.svelte +61 -0
  123. package/dist/components/docs/api/ApiEndpoint.svelte.d.ts +11 -0
  124. package/dist/components/docs/api/ApiParams.svelte +80 -0
  125. package/dist/components/docs/api/ApiParams.svelte.d.ts +14 -0
  126. package/dist/components/docs/api/ApiPlayground.svelte +259 -0
  127. package/dist/components/docs/api/ApiPlayground.svelte.d.ts +16 -0
  128. package/dist/components/docs/api/ApiReference.svelte +278 -0
  129. package/dist/components/docs/api/ApiReference.svelte.d.ts +23 -0
  130. package/dist/components/docs/api/ApiResponse.svelte +66 -0
  131. package/dist/components/docs/api/ApiResponse.svelte.d.ts +9 -0
  132. package/dist/components/docs/api/index.d.ts +5 -0
  133. package/dist/components/docs/api/index.js +5 -0
  134. package/dist/components/docs/componentTextProps.d.ts +3 -0
  135. package/dist/components/docs/componentTextProps.js +61 -0
  136. package/dist/components/docs/index.d.ts +54 -0
  137. package/dist/components/docs/index.js +56 -0
  138. package/dist/components/global/VersionNotFound.svelte +48 -0
  139. package/dist/components/global/VersionNotFound.svelte.d.ts +7 -0
  140. package/dist/components/global/index.d.ts +1 -0
  141. package/dist/components/global/index.js +1 -0
  142. package/dist/components/index.d.ts +6 -822
  143. package/dist/components/index.js +11 -3854
  144. package/dist/components/ui/Badge.svelte +48 -0
  145. package/dist/components/ui/Badge.svelte.d.ts +15 -0
  146. package/dist/components/ui/Button.svelte +58 -0
  147. package/dist/components/ui/Button.svelte.d.ts +17 -0
  148. package/dist/components/ui/Dialog.svelte +16 -0
  149. package/dist/components/ui/Dialog.svelte.d.ts +9 -0
  150. package/dist/components/ui/DialogClose.svelte +16 -0
  151. package/dist/components/ui/DialogClose.svelte.d.ts +9 -0
  152. package/dist/components/ui/DialogContent.svelte +43 -0
  153. package/dist/components/ui/DialogContent.svelte.d.ts +10 -0
  154. package/dist/components/ui/DialogDescription.svelte +21 -0
  155. package/dist/components/ui/DialogDescription.svelte.d.ts +9 -0
  156. package/dist/components/ui/DialogFooter.svelte +20 -0
  157. package/dist/components/ui/DialogFooter.svelte.d.ts +9 -0
  158. package/dist/components/ui/DialogHeader.svelte +20 -0
  159. package/dist/components/ui/DialogHeader.svelte.d.ts +9 -0
  160. package/dist/components/ui/DialogTitle.svelte +21 -0
  161. package/dist/components/ui/DialogTitle.svelte.d.ts +9 -0
  162. package/dist/components/ui/Input.svelte +23 -0
  163. package/dist/components/ui/Input.svelte.d.ts +8 -0
  164. package/dist/components/ui/Textarea.svelte +19 -0
  165. package/dist/components/ui/Textarea.svelte.d.ts +7 -0
  166. package/dist/components/ui/index.d.ts +11 -0
  167. package/dist/components/ui/index.js +11 -0
  168. package/dist/config.d.ts +8 -0
  169. package/dist/config.js +9 -0
  170. package/dist/config.schema.json +471 -0
  171. package/dist/config.server.d.ts +46 -0
  172. package/dist/config.server.js +149 -0
  173. package/dist/{mdx-ColN3Cyg.d.mts → config.types.d.ts} +22 -75
  174. package/dist/config.types.js +39 -0
  175. package/dist/dev-utils.d.ts +29 -0
  176. package/dist/dev-utils.js +63 -0
  177. package/dist/index.d.ts +19 -4
  178. package/dist/index.js +25 -4861
  179. package/dist/mdx-cache.d.ts +41 -0
  180. package/dist/mdx-cache.js +160 -0
  181. package/dist/mdx-components.js +50 -1931
  182. package/dist/mdx-security.d.ts +76 -0
  183. package/dist/mdx-security.js +217 -0
  184. package/dist/mdx.d.ts +73 -0
  185. package/dist/mdx.js +1099 -0
  186. package/dist/middleware/index.d.ts +1 -0
  187. package/dist/middleware/index.js +2 -0
  188. package/dist/middleware/security.d.ts +22 -47
  189. package/dist/middleware/security.js +111 -137
  190. package/dist/parsers/base-parser.d.ts +14 -0
  191. package/dist/parsers/base-parser.js +1 -0
  192. package/dist/parsers/index.d.ts +16 -0
  193. package/dist/parsers/index.js +51 -0
  194. package/dist/parsers/openapi-parser.d.ts +18 -0
  195. package/dist/parsers/openapi-parser.js +209 -0
  196. package/dist/parsers/postman-parser.d.ts +20 -0
  197. package/dist/parsers/postman-parser.js +260 -0
  198. package/dist/parsers/specra-parser.d.ts +10 -0
  199. package/dist/parsers/specra-parser.js +18 -0
  200. package/dist/redirects.d.ts +12 -0
  201. package/dist/redirects.js +30 -0
  202. package/dist/remark-code-meta.d.ts +6 -0
  203. package/dist/remark-code-meta.js +21 -0
  204. package/dist/sidebar-utils.d.ts +59 -0
  205. package/dist/sidebar-utils.js +144 -0
  206. package/dist/stores/config.d.ts +20 -0
  207. package/dist/stores/config.js +45 -0
  208. package/dist/stores/index.d.ts +4 -0
  209. package/dist/stores/index.js +4 -0
  210. package/dist/stores/sidebar.d.ts +7 -0
  211. package/dist/stores/sidebar.js +12 -0
  212. package/dist/stores/tabs.d.ts +6 -0
  213. package/dist/stores/tabs.js +41 -0
  214. package/dist/stores/theme.d.ts +7 -0
  215. package/dist/stores/theme.js +75 -0
  216. package/dist/{styles.css → styles/globals.css} +136 -6
  217. package/dist/toc.d.ts +9 -0
  218. package/dist/toc.js +15 -0
  219. package/dist/utils.d.ts +13 -0
  220. package/dist/utils.js +30 -0
  221. package/package.json +47 -90
  222. package/dist/app/api/mdx-watch/route.d.mts +0 -10
  223. package/dist/app/api/mdx-watch/route.d.ts +0 -10
  224. package/dist/app/api/mdx-watch/route.js +0 -118
  225. package/dist/app/api/mdx-watch/route.js.map +0 -1
  226. package/dist/app/api/mdx-watch/route.mjs +0 -91
  227. package/dist/app/api/mdx-watch/route.mjs.map +0 -1
  228. package/dist/chunk-6S3EJVEO.mjs +0 -259
  229. package/dist/chunk-6S3EJVEO.mjs.map +0 -1
  230. package/dist/chunk-BE7EROIW.mjs +0 -212
  231. package/dist/chunk-BE7EROIW.mjs.map +0 -1
  232. package/dist/chunk-CWHRZHZO.mjs +0 -168
  233. package/dist/chunk-CWHRZHZO.mjs.map +0 -1
  234. package/dist/chunk-D5VDVYFY.mjs +0 -1325
  235. package/dist/chunk-D5VDVYFY.mjs.map +0 -1
  236. package/dist/chunk-WMCO2UX5.mjs +0 -585
  237. package/dist/chunk-WMCO2UX5.mjs.map +0 -1
  238. package/dist/chunk-XEMGCPZZ.mjs +0 -475
  239. package/dist/chunk-XEMGCPZZ.mjs.map +0 -1
  240. package/dist/components/index.d.mts +0 -822
  241. package/dist/components/index.js.map +0 -1
  242. package/dist/components/index.mjs +0 -3741
  243. package/dist/components/index.mjs.map +0 -1
  244. package/dist/index.d.mts +0 -4
  245. package/dist/index.js.map +0 -1
  246. package/dist/index.mjs +0 -1897
  247. package/dist/index.mjs.map +0 -1
  248. package/dist/layouts/index.d.mts +0 -34
  249. package/dist/layouts/index.d.ts +0 -34
  250. package/dist/layouts/index.js +0 -453
  251. package/dist/layouts/index.js.map +0 -1
  252. package/dist/layouts/index.mjs +0 -173
  253. package/dist/layouts/index.mjs.map +0 -1
  254. package/dist/lib/index.d.mts +0 -583
  255. package/dist/lib/index.d.ts +0 -583
  256. package/dist/lib/index.js +0 -1595
  257. package/dist/lib/index.js.map +0 -1
  258. package/dist/lib/index.mjs +0 -111
  259. package/dist/lib/index.mjs.map +0 -1
  260. package/dist/mdx-ColN3Cyg.d.ts +0 -352
  261. package/dist/mdx-components.d.mts +0 -86
  262. package/dist/mdx-components.d.ts +0 -86
  263. package/dist/mdx-components.js.map +0 -1
  264. package/dist/mdx-components.mjs +0 -206
  265. package/dist/mdx-components.mjs.map +0 -1
  266. package/dist/middleware/security.d.mts +0 -82
  267. package/dist/middleware/security.js.map +0 -1
  268. package/dist/middleware/security.mjs +0 -84
  269. package/dist/middleware/security.mjs.map +0 -1
  270. package/dist/styles.css.map +0 -1
  271. package/dist/styles.d.mts +0 -2
  272. package/dist/styles.d.ts +0 -2
  273. package/dist/styles.js +0 -2
  274. package/dist/styles.js.map +0 -1
  275. package/dist/styles.mjs +0 -1
  276. package/dist/styles.mjs.map +0 -1
@@ -0,0 +1,48 @@
1
+ <script lang="ts" module>
2
+ import { cva, type VariantProps } from 'class-variance-authority';
3
+
4
+ export const badgeVariants = cva(
5
+ "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
6
+ {
7
+ variants: {
8
+ variant: {
9
+ default:
10
+ 'border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90',
11
+ secondary:
12
+ 'border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90',
13
+ destructive:
14
+ 'border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',
15
+ outline:
16
+ 'text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground',
17
+ },
18
+ },
19
+ defaultVariants: {
20
+ variant: 'default',
21
+ },
22
+ },
23
+ );
24
+
25
+ export type BadgeVariants = VariantProps<typeof badgeVariants>;
26
+ </script>
27
+
28
+ <script lang="ts">
29
+ import { cn } from '../../utils.js';
30
+ import type { HTMLAttributes } from 'svelte/elements';
31
+ import type { Snippet } from 'svelte';
32
+
33
+ interface Props extends HTMLAttributes<HTMLSpanElement> {
34
+ variant?: BadgeVariants['variant'];
35
+ class?: string;
36
+ children?: Snippet;
37
+ }
38
+
39
+ let { variant = 'default', class: className, children, ...restProps }: Props = $props();
40
+ </script>
41
+
42
+ <span
43
+ data-slot="badge"
44
+ class={cn(badgeVariants({ variant }), className)}
45
+ {...restProps}
46
+ >
47
+ {@render children?.()}
48
+ </span>
@@ -0,0 +1,15 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ export declare const badgeVariants: (props?: ({
3
+ variant?: "default" | "destructive" | "outline" | "secondary" | null | undefined;
4
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
5
+ export type BadgeVariants = VariantProps<typeof badgeVariants>;
6
+ import type { HTMLAttributes } from 'svelte/elements';
7
+ import type { Snippet } from 'svelte';
8
+ interface Props extends HTMLAttributes<HTMLSpanElement> {
9
+ variant?: BadgeVariants['variant'];
10
+ class?: string;
11
+ children?: Snippet;
12
+ }
13
+ declare const Badge: import("svelte").Component<Props, {}, "">;
14
+ type Badge = ReturnType<typeof Badge>;
15
+ export default Badge;
@@ -0,0 +1,58 @@
1
+ <script lang="ts" module>
2
+ import { cva, type VariantProps } from 'class-variance-authority';
3
+
4
+ export const buttonVariants = cva(
5
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive [&>a]:inline-flex [&>a]:items-center [&>a]:gap-2 [&>a]:whitespace-nowrap",
6
+ {
7
+ variants: {
8
+ variant: {
9
+ default: 'bg-primary text-primary-foreground hover:bg-primary/90',
10
+ destructive:
11
+ 'bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',
12
+ outline:
13
+ 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50',
14
+ secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',
15
+ ghost: 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',
16
+ link: 'text-primary underline-offset-4 hover:underline',
17
+ },
18
+ size: {
19
+ default: 'h-9 px-4 py-2 has-[>svg]:px-3',
20
+ sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5',
21
+ lg: 'h-10 rounded-md px-6 has-[>svg]:px-4',
22
+ icon: 'size-9',
23
+ 'icon-sm': 'size-8',
24
+ 'icon-lg': 'size-10',
25
+ },
26
+ },
27
+ defaultVariants: {
28
+ variant: 'default',
29
+ size: 'default',
30
+ },
31
+ },
32
+ );
33
+
34
+ export type ButtonVariants = VariantProps<typeof buttonVariants>;
35
+ </script>
36
+
37
+ <script lang="ts">
38
+ import { cn } from '../../utils.js';
39
+ import type { HTMLButtonAttributes } from 'svelte/elements';
40
+ import type { Snippet } from 'svelte';
41
+
42
+ interface Props extends HTMLButtonAttributes {
43
+ variant?: ButtonVariants['variant'];
44
+ size?: ButtonVariants['size'];
45
+ class?: string;
46
+ children?: Snippet;
47
+ }
48
+
49
+ let { variant = 'default', size = 'default', class: className, children, ...restProps }: Props = $props();
50
+ </script>
51
+
52
+ <button
53
+ data-slot="button"
54
+ class={cn(buttonVariants({ variant, size, className }))}
55
+ {...restProps}
56
+ >
57
+ {@render children?.()}
58
+ </button>
@@ -0,0 +1,17 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ export declare const buttonVariants: (props?: ({
3
+ variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
4
+ size?: "default" | "icon" | "sm" | "lg" | "icon-sm" | "icon-lg" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export type ButtonVariants = VariantProps<typeof buttonVariants>;
7
+ import type { HTMLButtonAttributes } from 'svelte/elements';
8
+ import type { Snippet } from 'svelte';
9
+ interface Props extends HTMLButtonAttributes {
10
+ variant?: ButtonVariants['variant'];
11
+ size?: ButtonVariants['size'];
12
+ class?: string;
13
+ children?: Snippet;
14
+ }
15
+ declare const Button: import("svelte").Component<Props, {}, "">;
16
+ type Button = ReturnType<typeof Button>;
17
+ export default Button;
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import { Dialog as DialogPrimitive } from 'bits-ui';
3
+ import type { Snippet } from 'svelte';
4
+
5
+ interface Props {
6
+ open?: boolean;
7
+ onOpenChange?: (open: boolean) => void;
8
+ children?: Snippet;
9
+ }
10
+
11
+ let { open = $bindable(false), onOpenChange, children }: Props = $props();
12
+ </script>
13
+
14
+ <DialogPrimitive.Root bind:open {onOpenChange}>
15
+ {@render children?.()}
16
+ </DialogPrimitive.Root>
@@ -0,0 +1,9 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface Props {
3
+ open?: boolean;
4
+ onOpenChange?: (open: boolean) => void;
5
+ children?: Snippet;
6
+ }
7
+ declare const Dialog: import("svelte").Component<Props, {}, "open">;
8
+ type Dialog = ReturnType<typeof Dialog>;
9
+ export default Dialog;
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import { Dialog as DialogPrimitive } from 'bits-ui';
3
+ import type { Snippet } from 'svelte';
4
+
5
+ interface Props {
6
+ class?: string;
7
+ children?: Snippet;
8
+ [key: string]: unknown;
9
+ }
10
+
11
+ let { class: className, children, ...restProps }: Props = $props();
12
+ </script>
13
+
14
+ <DialogPrimitive.Close data-slot="dialog-close" class={className} {...restProps}>
15
+ {@render children?.()}
16
+ </DialogPrimitive.Close>
@@ -0,0 +1,9 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface Props {
3
+ class?: string;
4
+ children?: Snippet;
5
+ [key: string]: unknown;
6
+ }
7
+ declare const DialogClose: import("svelte").Component<Props, {}, "">;
8
+ type DialogClose = ReturnType<typeof DialogClose>;
9
+ export default DialogClose;
@@ -0,0 +1,43 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils.js';
3
+ import { Dialog as DialogPrimitive } from 'bits-ui';
4
+ import { X } from 'lucide-svelte';
5
+ import type { Snippet } from 'svelte';
6
+
7
+ interface Props {
8
+ class?: string;
9
+ showCloseButton?: boolean;
10
+ children?: Snippet;
11
+ [key: string]: unknown;
12
+ }
13
+
14
+ let { class: className, showCloseButton = true, children, ...restProps }: Props = $props();
15
+ </script>
16
+
17
+ <DialogPrimitive.Portal>
18
+ <DialogPrimitive.Overlay
19
+ data-slot="dialog-overlay"
20
+ class={cn(
21
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50 dark:bg-black/70 backdrop-blur-md"
22
+ )}
23
+ />
24
+ <DialogPrimitive.Content
25
+ data-slot="dialog-content"
26
+ class={cn(
27
+ "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg",
28
+ className
29
+ )}
30
+ {...restProps}
31
+ >
32
+ {@render children?.()}
33
+ {#if showCloseButton}
34
+ <DialogPrimitive.Close
35
+ data-slot="dialog-close"
36
+ class="ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"
37
+ >
38
+ <X />
39
+ <span class="sr-only">Close</span>
40
+ </DialogPrimitive.Close>
41
+ {/if}
42
+ </DialogPrimitive.Content>
43
+ </DialogPrimitive.Portal>
@@ -0,0 +1,10 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface Props {
3
+ class?: string;
4
+ showCloseButton?: boolean;
5
+ children?: Snippet;
6
+ [key: string]: unknown;
7
+ }
8
+ declare const DialogContent: import("svelte").Component<Props, {}, "">;
9
+ type DialogContent = ReturnType<typeof DialogContent>;
10
+ export default DialogContent;
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils.js';
3
+ import { Dialog as DialogPrimitive } from 'bits-ui';
4
+ import type { Snippet } from 'svelte';
5
+
6
+ interface Props {
7
+ class?: string;
8
+ children?: Snippet;
9
+ [key: string]: unknown;
10
+ }
11
+
12
+ let { class: className, children, ...restProps }: Props = $props();
13
+ </script>
14
+
15
+ <DialogPrimitive.Description
16
+ data-slot="dialog-description"
17
+ class={cn('text-muted-foreground text-sm', className)}
18
+ {...restProps}
19
+ >
20
+ {@render children?.()}
21
+ </DialogPrimitive.Description>
@@ -0,0 +1,9 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface Props {
3
+ class?: string;
4
+ children?: Snippet;
5
+ [key: string]: unknown;
6
+ }
7
+ declare const DialogDescription: import("svelte").Component<Props, {}, "">;
8
+ type DialogDescription = ReturnType<typeof DialogDescription>;
9
+ export default DialogDescription;
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils.js';
3
+ import type { HTMLAttributes } from 'svelte/elements';
4
+ import type { Snippet } from 'svelte';
5
+
6
+ interface Props extends HTMLAttributes<HTMLDivElement> {
7
+ class?: string;
8
+ children?: Snippet;
9
+ }
10
+
11
+ let { class: className, children, ...restProps }: Props = $props();
12
+ </script>
13
+
14
+ <div
15
+ data-slot="dialog-footer"
16
+ class={cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className)}
17
+ {...restProps}
18
+ >
19
+ {@render children?.()}
20
+ </div>
@@ -0,0 +1,9 @@
1
+ import type { HTMLAttributes } from 'svelte/elements';
2
+ import type { Snippet } from 'svelte';
3
+ interface Props extends HTMLAttributes<HTMLDivElement> {
4
+ class?: string;
5
+ children?: Snippet;
6
+ }
7
+ declare const DialogFooter: import("svelte").Component<Props, {}, "">;
8
+ type DialogFooter = ReturnType<typeof DialogFooter>;
9
+ export default DialogFooter;
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils.js';
3
+ import type { HTMLAttributes } from 'svelte/elements';
4
+ import type { Snippet } from 'svelte';
5
+
6
+ interface Props extends HTMLAttributes<HTMLDivElement> {
7
+ class?: string;
8
+ children?: Snippet;
9
+ }
10
+
11
+ let { class: className, children, ...restProps }: Props = $props();
12
+ </script>
13
+
14
+ <div
15
+ data-slot="dialog-header"
16
+ class={cn('flex flex-col gap-2 text-center sm:text-left', className)}
17
+ {...restProps}
18
+ >
19
+ {@render children?.()}
20
+ </div>
@@ -0,0 +1,9 @@
1
+ import type { HTMLAttributes } from 'svelte/elements';
2
+ import type { Snippet } from 'svelte';
3
+ interface Props extends HTMLAttributes<HTMLDivElement> {
4
+ class?: string;
5
+ children?: Snippet;
6
+ }
7
+ declare const DialogHeader: import("svelte").Component<Props, {}, "">;
8
+ type DialogHeader = ReturnType<typeof DialogHeader>;
9
+ export default DialogHeader;
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils.js';
3
+ import { Dialog as DialogPrimitive } from 'bits-ui';
4
+ import type { Snippet } from 'svelte';
5
+
6
+ interface Props {
7
+ class?: string;
8
+ children?: Snippet;
9
+ [key: string]: unknown;
10
+ }
11
+
12
+ let { class: className, children, ...restProps }: Props = $props();
13
+ </script>
14
+
15
+ <DialogPrimitive.Title
16
+ data-slot="dialog-title"
17
+ class={cn('text-lg leading-none font-semibold', className)}
18
+ {...restProps}
19
+ >
20
+ {@render children?.()}
21
+ </DialogPrimitive.Title>
@@ -0,0 +1,9 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface Props {
3
+ class?: string;
4
+ children?: Snippet;
5
+ [key: string]: unknown;
6
+ }
7
+ declare const DialogTitle: import("svelte").Component<Props, {}, "">;
8
+ type DialogTitle = ReturnType<typeof DialogTitle>;
9
+ export default DialogTitle;
@@ -0,0 +1,23 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils.js';
3
+ import type { HTMLInputAttributes } from 'svelte/elements';
4
+
5
+ interface Props extends HTMLInputAttributes {
6
+ class?: string;
7
+ type?: HTMLInputAttributes['type'];
8
+ }
9
+
10
+ let { type, class: className, ...restProps }: Props = $props();
11
+ </script>
12
+
13
+ <input
14
+ {type}
15
+ data-slot="input"
16
+ class={cn(
17
+ "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
18
+ "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
19
+ "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
20
+ className
21
+ )}
22
+ {...restProps}
23
+ />
@@ -0,0 +1,8 @@
1
+ import type { HTMLInputAttributes } from 'svelte/elements';
2
+ interface Props extends HTMLInputAttributes {
3
+ class?: string;
4
+ type?: HTMLInputAttributes['type'];
5
+ }
6
+ declare const Input: import("svelte").Component<Props, {}, "">;
7
+ type Input = ReturnType<typeof Input>;
8
+ export default Input;
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils.js';
3
+ import type { HTMLTextareaAttributes } from 'svelte/elements';
4
+
5
+ interface Props extends HTMLTextareaAttributes {
6
+ class?: string;
7
+ }
8
+
9
+ let { class: className, ...restProps }: Props = $props();
10
+ </script>
11
+
12
+ <textarea
13
+ data-slot="textarea"
14
+ class={cn(
15
+ "border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
16
+ className
17
+ )}
18
+ {...restProps}
19
+ ></textarea>
@@ -0,0 +1,7 @@
1
+ import type { HTMLTextareaAttributes } from 'svelte/elements';
2
+ interface Props extends HTMLTextareaAttributes {
3
+ class?: string;
4
+ }
5
+ declare const Textarea: import("svelte").Component<Props, {}, "">;
6
+ type Textarea = ReturnType<typeof Textarea>;
7
+ export default Textarea;
@@ -0,0 +1,11 @@
1
+ export { default as Button, buttonVariants, type ButtonVariants } from './Button.svelte';
2
+ export { default as Input } from './Input.svelte';
3
+ export { default as Textarea } from './Textarea.svelte';
4
+ export { default as Badge, badgeVariants, type BadgeVariants } from './Badge.svelte';
5
+ export { default as Dialog } from './Dialog.svelte';
6
+ export { default as DialogContent } from './DialogContent.svelte';
7
+ export { default as DialogHeader } from './DialogHeader.svelte';
8
+ export { default as DialogFooter } from './DialogFooter.svelte';
9
+ export { default as DialogTitle } from './DialogTitle.svelte';
10
+ export { default as DialogDescription } from './DialogDescription.svelte';
11
+ export { default as DialogClose } from './DialogClose.svelte';
@@ -0,0 +1,11 @@
1
+ export { default as Button, buttonVariants } from './Button.svelte';
2
+ export { default as Input } from './Input.svelte';
3
+ export { default as Textarea } from './Textarea.svelte';
4
+ export { default as Badge, badgeVariants } from './Badge.svelte';
5
+ export { default as Dialog } from './Dialog.svelte';
6
+ export { default as DialogContent } from './DialogContent.svelte';
7
+ export { default as DialogHeader } from './DialogHeader.svelte';
8
+ export { default as DialogFooter } from './DialogFooter.svelte';
9
+ export { default as DialogTitle } from './DialogTitle.svelte';
10
+ export { default as DialogDescription } from './DialogDescription.svelte';
11
+ export { default as DialogClose } from './DialogClose.svelte';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Client-safe config access
3
+ * This file re-exports server functions but is safe to import in client components
4
+ * The actual config loading happens on the server and is passed as props
5
+ */
6
+ export { defaultConfig } from "./config.types";
7
+ export type { SpecraConfig } from "./config.types";
8
+ export { getConfig, getConfigValue, loadConfig, processContentWithEnv, replaceEnvVariables, validateConfig, reloadConfig, } from "./config.server";
package/dist/config.js ADDED
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Client-safe config access
3
+ * This file re-exports server functions but is safe to import in client components
4
+ * The actual config loading happens on the server and is passed as props
5
+ */
6
+ export { defaultConfig } from "./config.types";
7
+ // For client components, config should be passed as props from server components
8
+ // These are re-exported for convenience but will only work on the server
9
+ export { getConfig, getConfigValue, loadConfig, processContentWithEnv, replaceEnvVariables, validateConfig, reloadConfig, } from "./config.server";