specra 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/LICENSE.MD +21 -0
  2. package/README.md +157 -0
  3. package/dist/app/api/mdx-watch/route.d.mts +12 -0
  4. package/dist/app/api/mdx-watch/route.d.ts +12 -0
  5. package/dist/app/api/mdx-watch/route.js +98 -0
  6. package/dist/app/api/mdx-watch/route.js.map +1 -0
  7. package/dist/app/api/mdx-watch/route.mjs +71 -0
  8. package/dist/app/api/mdx-watch/route.mjs.map +1 -0
  9. package/dist/app/docs-page.d.mts +32 -0
  10. package/dist/app/docs-page.d.ts +32 -0
  11. package/dist/app/docs-page.js +4072 -0
  12. package/dist/app/docs-page.js.map +1 -0
  13. package/dist/app/docs-page.mjs +14 -0
  14. package/dist/app/docs-page.mjs.map +1 -0
  15. package/dist/app/layout.css +297 -0
  16. package/dist/app/layout.css.map +1 -0
  17. package/dist/app/layout.d.mts +19 -0
  18. package/dist/app/layout.d.ts +19 -0
  19. package/dist/app/layout.js +112 -0
  20. package/dist/app/layout.js.map +1 -0
  21. package/dist/app/layout.mjs +13 -0
  22. package/dist/app/layout.mjs.map +1 -0
  23. package/dist/chunk-DR4EPLMT.mjs +1013 -0
  24. package/dist/chunk-DR4EPLMT.mjs.map +1 -0
  25. package/dist/chunk-INL2EC72.mjs +170 -0
  26. package/dist/chunk-INL2EC72.mjs.map +1 -0
  27. package/dist/chunk-IZFGEAD6.mjs +61 -0
  28. package/dist/chunk-IZFGEAD6.mjs.map +1 -0
  29. package/dist/chunk-KTRWWAGL.mjs +50 -0
  30. package/dist/chunk-KTRWWAGL.mjs.map +1 -0
  31. package/dist/chunk-MZJHJ6BV.mjs +21 -0
  32. package/dist/chunk-MZJHJ6BV.mjs.map +1 -0
  33. package/dist/chunk-NXRIAL7T.mjs +3119 -0
  34. package/dist/chunk-NXRIAL7T.mjs.map +1 -0
  35. package/dist/components/index.d.mts +822 -0
  36. package/dist/components/index.d.ts +822 -0
  37. package/dist/components/index.js +3738 -0
  38. package/dist/components/index.js.map +1 -0
  39. package/dist/components/index.mjs +3627 -0
  40. package/dist/components/index.mjs.map +1 -0
  41. package/dist/index.css +297 -0
  42. package/dist/index.css.map +1 -0
  43. package/dist/index.d.mts +545 -0
  44. package/dist/index.d.ts +545 -0
  45. package/dist/index.js +4648 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/index.mjs +347 -0
  48. package/dist/index.mjs.map +1 -0
  49. package/dist/lib/index.d.mts +798 -0
  50. package/dist/lib/index.d.ts +798 -0
  51. package/dist/lib/index.js +1301 -0
  52. package/dist/lib/index.js.map +1 -0
  53. package/dist/lib/index.mjs +89 -0
  54. package/dist/lib/index.mjs.map +1 -0
  55. package/package.json +119 -0
  56. package/src/app/api/mdx-watch/route.ts +86 -0
  57. package/src/app/docs-page.tsx +212 -0
  58. package/src/app/layout.tsx +74 -0
  59. package/src/components/docs/accordion.tsx +53 -0
  60. package/src/components/docs/api/api-endpoint.tsx +59 -0
  61. package/src/components/docs/api/api-params.tsx +43 -0
  62. package/src/components/docs/api/api-playground.tsx +233 -0
  63. package/src/components/docs/api/api-reference.tsx +291 -0
  64. package/src/components/docs/api/api-response.tsx +48 -0
  65. package/src/components/docs/api/index.ts +5 -0
  66. package/src/components/docs/badge.tsx +22 -0
  67. package/src/components/docs/breadcrumb.tsx +51 -0
  68. package/src/components/docs/callout.tsx +109 -0
  69. package/src/components/docs/card.tsx +84 -0
  70. package/src/components/docs/category-index.tsx +112 -0
  71. package/src/components/docs/code-block.tsx +129 -0
  72. package/src/components/docs/columns.tsx +45 -0
  73. package/src/components/docs/componentTextProps.ts +85 -0
  74. package/src/components/docs/dev-mode-badge.tsx +35 -0
  75. package/src/components/docs/doc-layout-wrapper.tsx +54 -0
  76. package/src/components/docs/doc-layout.tsx +111 -0
  77. package/src/components/docs/doc-loading.tsx +15 -0
  78. package/src/components/docs/doc-metadata.tsx +55 -0
  79. package/src/components/docs/doc-navigation.tsx +62 -0
  80. package/src/components/docs/doc-tags.tsx +25 -0
  81. package/src/components/docs/draft-badge.tsx +10 -0
  82. package/src/components/docs/footer.tsx +47 -0
  83. package/src/components/docs/frame.tsx +22 -0
  84. package/src/components/docs/header.tsx +122 -0
  85. package/src/components/docs/hot-reload-indicator.tsx +77 -0
  86. package/src/components/docs/icon.tsx +70 -0
  87. package/src/components/docs/image-card.tsx +95 -0
  88. package/src/components/docs/image.tsx +73 -0
  89. package/src/components/docs/index.ts +48 -0
  90. package/src/components/docs/math.tsx +46 -0
  91. package/src/components/docs/mdx-components.tsx +166 -0
  92. package/src/components/docs/mdx-hot-reload.tsx +37 -0
  93. package/src/components/docs/mermaid.tsx +77 -0
  94. package/src/components/docs/mobile-doc-layout.tsx +115 -0
  95. package/src/components/docs/not-found-content.tsx +55 -0
  96. package/src/components/docs/search-highlight.tsx +127 -0
  97. package/src/components/docs/search-modal.tsx +223 -0
  98. package/src/components/docs/sidebar-skeleton.tsx +39 -0
  99. package/src/components/docs/sidebar.tsx +323 -0
  100. package/src/components/docs/site-banner.tsx +92 -0
  101. package/src/components/docs/steps.tsx +29 -0
  102. package/src/components/docs/tab-context.tsx +28 -0
  103. package/src/components/docs/tab-groups.tsx +50 -0
  104. package/src/components/docs/table-of-contents.tsx +104 -0
  105. package/src/components/docs/tabs.tsx +63 -0
  106. package/src/components/docs/theme-toggle.tsx +39 -0
  107. package/src/components/docs/tooltip.tsx +37 -0
  108. package/src/components/docs/version-switcher.tsx +52 -0
  109. package/src/components/docs/video.tsx +80 -0
  110. package/src/components/global/index.ts +3 -0
  111. package/src/components/global/version-not-found.tsx +26 -0
  112. package/src/components/index.ts +8 -0
  113. package/src/components/theme-provider.tsx +11 -0
  114. package/src/components/ui/badge.tsx +46 -0
  115. package/src/components/ui/button.tsx +60 -0
  116. package/src/components/ui/dialog.tsx +143 -0
  117. package/src/components/ui/index.ts +6 -0
  118. package/src/components/ui/input.tsx +21 -0
  119. package/src/components/ui/textarea.tsx +18 -0
  120. package/src/index.ts +41 -0
  121. package/src/lib/api-parser.types.ts +78 -0
  122. package/src/lib/api.types.ts +202 -0
  123. package/src/lib/category.ts +71 -0
  124. package/src/lib/config.server.ts +170 -0
  125. package/src/lib/config.ts +20 -0
  126. package/src/lib/config.types.ts +295 -0
  127. package/src/lib/dev-utils.ts +75 -0
  128. package/src/lib/index.ts +27 -0
  129. package/src/lib/mdx-cache.ts +200 -0
  130. package/src/lib/mdx.ts +402 -0
  131. package/src/lib/parsers/base-parser.ts +16 -0
  132. package/src/lib/parsers/index.ts +69 -0
  133. package/src/lib/parsers/openapi-parser.ts +251 -0
  134. package/src/lib/parsers/postman-parser.ts +301 -0
  135. package/src/lib/parsers/specra-parser.ts +24 -0
  136. package/src/lib/redirects.ts +40 -0
  137. package/src/lib/remark-code-meta.ts +23 -0
  138. package/src/lib/sidebar-utils.ts +188 -0
  139. package/src/lib/toc.ts +24 -0
  140. package/src/lib/utils.ts +36 -0
  141. package/src/specra.config.json +124 -0
  142. package/src/styles/globals.css +427 -0
@@ -0,0 +1,427 @@
1
+ @import "tailwindcss";
2
+ @import "tw-animate-css";
3
+ @plugin "@tailwindcss/typography";
4
+ @import "katex/dist/katex.min.css";
5
+
6
+ /* Scan SDK source files for Tailwind utilities */
7
+ @source "../**/*.{js,ts,jsx,tsx}";
8
+
9
+ @custom-variant dark (&:is(.dark *));
10
+
11
+ :root {
12
+ --background: oklch(0.99 0 0);
13
+ --foreground: oklch(0.12 0 0);
14
+ --card: oklch(1 0 0);
15
+ --card-foreground: oklch(0.12 0 0);
16
+ --popover: oklch(1 0 0);
17
+ --popover-foreground: oklch(0.12 0 0);
18
+ /* --primary: oklch(0.50 0.24 264.376); */
19
+ --primary: oklch(27.025% 0.14091 290.376);
20
+ --primary-foreground: oklch(0.99 0 0);
21
+ --secondary: oklch(0.96 0 0);
22
+ --secondary-foreground: oklch(0.15 0 0);
23
+ --muted: oklch(0.96 0 0);
24
+ --muted-foreground: oklch(0.45 0 0);
25
+ --accent: oklch(0.96 0 0);
26
+ --accent-foreground: oklch(0.15 0 0);
27
+ --destructive: oklch(0.55 0.25 27.325);
28
+ --destructive-foreground: oklch(0.99 0 0);
29
+ --border: oklch(0.90 0 0);
30
+ --input: oklch(0.90 0 0);
31
+ --ring: oklch(0.50 0.24 264.376);
32
+ --chart-1: oklch(0.646 0.222 41.116);
33
+ --chart-2: oklch(0.6 0.118 184.704);
34
+ --chart-3: oklch(0.398 0.07 227.392);
35
+ --chart-4: oklch(0.828 0.189 84.429);
36
+ --chart-5: oklch(0.769 0.188 70.08);
37
+ --radius: 0.625rem;
38
+ --sidebar: oklch(0.99 0 0);
39
+ --sidebar-foreground: oklch(0.12 0 0);
40
+ --sidebar-primary: oklch(0.15 0 0);
41
+ --sidebar-primary-foreground: oklch(0.99 0 0);
42
+ --sidebar-accent: oklch(0.96 0 0);
43
+ --sidebar-accent-foreground: oklch(0.15 0 0);
44
+ --sidebar-border: oklch(0.90 0 0);
45
+ --sidebar-ring: oklch(0.50 0.24 264.376);
46
+ }
47
+
48
+ .dark {
49
+ /* Updated dark theme to match Vercel/Mintlify documentation aesthetic */
50
+ --background: oklch(0.09 0 0);
51
+ --foreground: oklch(0.98 0 0);
52
+ --card: oklch(0.12 0 0);
53
+ --card-foreground: oklch(0.98 0 0);
54
+ --popover: oklch(0.12 0 0);
55
+ --popover-foreground: oklch(0.98 0 0);
56
+ --primary: oklch(0.65 0.25 264.376);
57
+ --primary-foreground: oklch(0.98 0 0);
58
+ --secondary: oklch(0.18 0 0);
59
+ --secondary-foreground: oklch(0.98 0 0);
60
+ --muted: oklch(0.18 0 0);
61
+ --muted-foreground: oklch(0.65 0 0);
62
+ --accent: oklch(0.18 0 0);
63
+ --accent-foreground: oklch(0.98 0 0);
64
+ --destructive: oklch(0.55 0.22 27.325);
65
+ --destructive-foreground: oklch(0.98 0 0);
66
+ --border: oklch(0.22 0 0);
67
+ --input: oklch(0.22 0 0);
68
+ --ring: oklch(0.65 0.25 264.376);
69
+ --chart-1: oklch(0.488 0.243 264.376);
70
+ --chart-2: oklch(0.696 0.17 162.48);
71
+ --chart-3: oklch(0.769 0.188 70.08);
72
+ --chart-4: oklch(0.627 0.265 303.9);
73
+ --chart-5: oklch(0.645 0.246 16.439);
74
+ --sidebar: oklch(0.09 0 0);
75
+ --sidebar-foreground: oklch(0.98 0 0);
76
+ --sidebar-primary: oklch(0.65 0.25 264.376);
77
+ --sidebar-primary-foreground: oklch(0.98 0 0);
78
+ --sidebar-accent: oklch(0.18 0 0);
79
+ --sidebar-accent-foreground: oklch(0.98 0 0);
80
+ --sidebar-border: oklch(0.22 0 0);
81
+ --sidebar-ring: oklch(0.65 0.25 264.376);
82
+
83
+ /* Added custom tokens for code blocks */
84
+ --code: oklch(0.75 0.15 264.376);
85
+ --code-bg: oklch(0.12 0 0);
86
+ --code-fg: oklch(0.92 0 0);
87
+ }
88
+
89
+ @theme inline {
90
+ --font-sans: "Geist", "Geist Fallback";
91
+ --font-mono: "Geist Mono", "Geist Mono Fallback";
92
+ --color-background: var(--background);
93
+ --color-foreground: var(--foreground);
94
+ --color-card: var(--card);
95
+ --color-card-foreground: var(--card-foreground);
96
+ --color-popover: var(--popover);
97
+ --color-popover-foreground: var(--popover-foreground);
98
+ --color-primary: var(--primary);
99
+ --color-primary-foreground: var(--primary-foreground);
100
+ --color-secondary: var(--secondary);
101
+ --color-secondary-foreground: var(--secondary-foreground);
102
+ --color-muted: var(--muted);
103
+ --color-muted-foreground: var(--muted-foreground);
104
+ --color-accent: var(--accent);
105
+ --color-accent-foreground: var(--accent-foreground);
106
+ --color-destructive: var(--destructive);
107
+ --color-destructive-foreground: var(--destructive-foreground);
108
+ --color-border: var(--border);
109
+ --color-input: var(--input);
110
+ --color-ring: var(--ring);
111
+ --color-chart-1: var(--chart-1);
112
+ --color-chart-2: var(--chart-2);
113
+ --color-chart-3: var(--chart-3);
114
+ --color-chart-4: var(--chart-4);
115
+ --color-chart-5: var(--chart-5);
116
+ --radius-sm: calc(var(--radius) - 4px);
117
+ --radius-md: calc(var(--radius) - 2px);
118
+ --radius-lg: var(--radius);
119
+ --radius-xl: calc(var(--radius) + 4px);
120
+ --color-sidebar: var(--sidebar);
121
+ --color-sidebar-foreground: var(--sidebar-foreground);
122
+ --color-sidebar-primary: var(--sidebar-primary);
123
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
124
+ --color-sidebar-accent: var(--sidebar-accent);
125
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
126
+ --color-sidebar-border: var(--sidebar-border);
127
+ --color-sidebar-ring: var(--sidebar-ring);
128
+
129
+ /* Added code color tokens */
130
+ --color-code: var(--code);
131
+ --color-code-bg: var(--code-bg);
132
+ --color-code-fg: var(--code-fg);
133
+ }
134
+
135
+ @layer base {
136
+ * {
137
+ @apply border-border outline-ring/50;
138
+ }
139
+
140
+ html {
141
+ scroll-behavior: smooth;
142
+ /* Always reserve space for scrollbar to prevent layout shift */
143
+ scrollbar-gutter: stable;
144
+ }
145
+
146
+ body {
147
+ @apply bg-background text-foreground;
148
+ }
149
+
150
+ a {
151
+ text-decoration: none;
152
+ }
153
+
154
+ /* Link styling - primary color, no underline until hover */
155
+ main .prose a {
156
+ color: var(--color-primary);
157
+ text-decoration: none;
158
+ transition: color 0.2s ease, text-decoration 0.2s ease;
159
+ }
160
+
161
+ main .prose a:hover {
162
+ text-decoration: none !important;
163
+ color: var(--color-primary);
164
+ }
165
+
166
+ /* Prose links in documentation */
167
+ .prose a {
168
+ color: var(--color-primary);
169
+ text-decoration: none !important;
170
+ font-weight: 500;
171
+ }
172
+
173
+ .prose a:hover {
174
+ text-decoration: none !important;
175
+ color: var(--color-primary);
176
+ }
177
+
178
+ /* Sidebar links - no underline on hover */
179
+ aside a {
180
+ text-decoration: none;
181
+ }
182
+
183
+ aside a:hover {
184
+ text-decoration: none;
185
+ }
186
+
187
+ /* Card and ImageCard links - never underline */
188
+ .image-card-link,
189
+ .card-link {
190
+ text-decoration: none !important;
191
+ }
192
+
193
+ .image-card-link:hover,
194
+ .card-link:hover {
195
+ text-decoration: none !important;
196
+ }
197
+
198
+ .image-card-link *,
199
+ .card-link * {
200
+ text-decoration: none !important;
201
+ }
202
+
203
+ /* Custom scrollbar styling for body only */
204
+ body::-webkit-scrollbar {
205
+ width: 6px;
206
+ }
207
+
208
+ body::-webkit-scrollbar-track {
209
+ background: oklch(0.95 0 0);
210
+ }
211
+
212
+ body::-webkit-scrollbar-thumb {
213
+ background: oklch(0.75 0 0);
214
+ border-radius: 6px;
215
+ border: 2px solid oklch(0.95 0 0);
216
+ }
217
+
218
+ body::-webkit-scrollbar-thumb:hover {
219
+ background: oklch(0.65 0 0);
220
+ }
221
+
222
+ /* Dark mode body scrollbar */
223
+ .dark body::-webkit-scrollbar-track {
224
+ background: oklch(0.12 0 0);
225
+ }
226
+
227
+ .dark body::-webkit-scrollbar-thumb {
228
+ background: oklch(0.25 0 0);
229
+ border: 2px solid oklch(0.12 0 0);
230
+ }
231
+
232
+ .dark body::-webkit-scrollbar-thumb:hover {
233
+ background: oklch(0.35 0 0);
234
+ }
235
+
236
+ /* Firefox scrollbar for body only */
237
+ body {
238
+ scrollbar-width: thin;
239
+ scrollbar-color: oklch(0.75 0 0) oklch(0.95 0 0);
240
+ }
241
+
242
+ .dark body {
243
+ scrollbar-color: oklch(0.25 0 0) oklch(0.12 0 0);
244
+ }
245
+
246
+ /* Sidebar scrollbar styling - thin and subtle */
247
+ aside::-webkit-scrollbar,
248
+ aside *::-webkit-scrollbar {
249
+ width: 4px;
250
+ }
251
+
252
+ aside::-webkit-scrollbar-track,
253
+ aside *::-webkit-scrollbar-track {
254
+ background: transparent;
255
+ }
256
+
257
+ aside::-webkit-scrollbar-thumb,
258
+ aside *::-webkit-scrollbar-thumb {
259
+ background: oklch(0.7 0 0 / 0.3);
260
+ border-radius: 4px;
261
+ }
262
+
263
+ aside::-webkit-scrollbar-thumb:hover,
264
+ aside *::-webkit-scrollbar-thumb:hover {
265
+ background: oklch(0.6 0 0 / 0.5);
266
+ }
267
+
268
+ /* Dark mode sidebar scrollbar */
269
+ .dark aside::-webkit-scrollbar-thumb,
270
+ .dark aside *::-webkit-scrollbar-thumb {
271
+ background: oklch(0.5 0 0 / 0.3);
272
+ }
273
+
274
+ .dark aside::-webkit-scrollbar-thumb:hover,
275
+ .dark aside *::-webkit-scrollbar-thumb:hover {
276
+ background: oklch(0.6 0 0 / 0.5);
277
+ }
278
+
279
+ /* Firefox sidebar scrollbar */
280
+ aside,
281
+ aside * {
282
+ scrollbar-width: thin;
283
+ scrollbar-color: oklch(0.7 0 0 / 0.3) transparent;
284
+ }
285
+
286
+ .dark aside,
287
+ .dark aside * {
288
+ scrollbar-color: oklch(0.5 0 0 / 0.3) transparent;
289
+ }
290
+
291
+ /* Light mode syntax highlighting - VS Code Light+ theme */
292
+ .token-comment {
293
+ color: #008000;
294
+ font-style: italic;
295
+ }
296
+
297
+ .token-string {
298
+ color: #a31515;
299
+ }
300
+
301
+ .token-keyword {
302
+ color: #0000ff;
303
+ font-weight: 600;
304
+ }
305
+
306
+ .token-number {
307
+ color: #098658;
308
+ }
309
+
310
+ .token-function {
311
+ color: #795e26;
312
+ }
313
+
314
+ .token-operator {
315
+ color: #000000;
316
+ }
317
+
318
+ .token-property {
319
+ color: #001080;
320
+ }
321
+
322
+ .token-punctuation {
323
+ color: #000000;
324
+ }
325
+
326
+ .token-text {
327
+ color: #000000;
328
+ }
329
+
330
+ /* Dark mode syntax highlighting - VS Code Dark+ theme */
331
+ .dark .token-comment {
332
+ color: #6a9955;
333
+ }
334
+
335
+ .dark .token-string {
336
+ color: #ce9178;
337
+ }
338
+
339
+ .dark .token-keyword {
340
+ color: #569cd6;
341
+ }
342
+
343
+ .dark .token-number {
344
+ color: #b5cea8;
345
+ }
346
+
347
+ .dark .token-function {
348
+ color: #dcdcaa;
349
+ }
350
+
351
+ .dark .token-operator {
352
+ color: #d4d4d4;
353
+ }
354
+
355
+ .dark .token-property {
356
+ color: #9cdcfe;
357
+ }
358
+
359
+ .dark .token-punctuation {
360
+ color: #d4d4d4;
361
+ }
362
+
363
+ .dark .token-text {
364
+ color: #d4d4d4;
365
+ }
366
+ }
367
+
368
+
369
+ pre code {
370
+ background: none;
371
+ border: none;
372
+ }
373
+
374
+ /* Heading styles - lighter weight and reduced margins */
375
+ .prose h1 {
376
+ font-weight: 700;
377
+ margin-top: 1.5rem;
378
+ margin-bottom: 0.75rem;
379
+ }
380
+
381
+ .prose h2 {
382
+ font-weight: 600;
383
+ margin-top: 2rem;
384
+ margin-bottom: 0.75rem;
385
+ }
386
+
387
+ .prose h3 {
388
+ font-weight: 600;
389
+ margin-top: 1.5rem;
390
+ margin-bottom: 0.5rem;
391
+ }
392
+
393
+ .prose h4 {
394
+ font-weight: 600;
395
+ margin-top: 1.25rem;
396
+ margin-bottom: 0.5rem;
397
+ }
398
+
399
+ .prose h5 {
400
+ font-weight: 500;
401
+ margin-top: 1rem;
402
+ margin-bottom: 0.5rem;
403
+ }
404
+
405
+ .prose h6 {
406
+ font-weight: 500;
407
+ margin-top: 1rem;
408
+ margin-bottom: 0.5rem;
409
+ }
410
+
411
+ /* Paragraph styles - reduced margins */
412
+ .prose p {
413
+ margin-top: 0.5rem;
414
+ margin-bottom: 0.75rem;
415
+ }
416
+
417
+ /* Prevent layout shift when dialog opens */
418
+ /* html {
419
+ scrollbar-gutter: stable;
420
+ } */
421
+
422
+
423
+ html body[data-scroll-locked] {
424
+ overflow: visible !important;
425
+ margin-right: 0 !important;
426
+ padding-right: 0 !important;
427
+ }