@brainfish-ai/devdoc 0.1.21

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 (268) hide show
  1. package/LICENSE +33 -0
  2. package/README.md +415 -0
  3. package/bin/devdoc.js +13 -0
  4. package/dist/cli/commands/build.d.ts +5 -0
  5. package/dist/cli/commands/build.js +87 -0
  6. package/dist/cli/commands/check.d.ts +1 -0
  7. package/dist/cli/commands/check.js +143 -0
  8. package/dist/cli/commands/create.d.ts +24 -0
  9. package/dist/cli/commands/create.js +387 -0
  10. package/dist/cli/commands/deploy.d.ts +9 -0
  11. package/dist/cli/commands/deploy.js +433 -0
  12. package/dist/cli/commands/dev.d.ts +6 -0
  13. package/dist/cli/commands/dev.js +139 -0
  14. package/dist/cli/commands/init.d.ts +11 -0
  15. package/dist/cli/commands/init.js +238 -0
  16. package/dist/cli/commands/keys.d.ts +12 -0
  17. package/dist/cli/commands/keys.js +165 -0
  18. package/dist/cli/commands/start.d.ts +5 -0
  19. package/dist/cli/commands/start.js +56 -0
  20. package/dist/cli/commands/upload.d.ts +13 -0
  21. package/dist/cli/commands/upload.js +238 -0
  22. package/dist/cli/commands/whoami.d.ts +8 -0
  23. package/dist/cli/commands/whoami.js +91 -0
  24. package/dist/cli/index.d.ts +1 -0
  25. package/dist/cli/index.js +106 -0
  26. package/dist/config/index.d.ts +80 -0
  27. package/dist/config/index.js +133 -0
  28. package/dist/constants.d.ts +9 -0
  29. package/dist/constants.js +13 -0
  30. package/dist/index.d.ts +7 -0
  31. package/dist/index.js +12 -0
  32. package/dist/utils/logger.d.ts +16 -0
  33. package/dist/utils/logger.js +61 -0
  34. package/dist/utils/paths.d.ts +16 -0
  35. package/dist/utils/paths.js +50 -0
  36. package/package.json +51 -0
  37. package/renderer/app/api/assets/[...path]/route.ts +123 -0
  38. package/renderer/app/api/assets/route.ts +124 -0
  39. package/renderer/app/api/assets/upload/route.ts +177 -0
  40. package/renderer/app/api/auth-schemes/route.ts +77 -0
  41. package/renderer/app/api/chat/route.ts +858 -0
  42. package/renderer/app/api/codegen/route.ts +72 -0
  43. package/renderer/app/api/collections/route.ts +1016 -0
  44. package/renderer/app/api/debug/route.ts +53 -0
  45. package/renderer/app/api/deploy/route.ts +234 -0
  46. package/renderer/app/api/device/route.ts +42 -0
  47. package/renderer/app/api/docs/route.ts +187 -0
  48. package/renderer/app/api/keys/regenerate/route.ts +80 -0
  49. package/renderer/app/api/openapi-spec/route.ts +151 -0
  50. package/renderer/app/api/projects/[slug]/route.ts +153 -0
  51. package/renderer/app/api/projects/[slug]/stats/route.ts +96 -0
  52. package/renderer/app/api/projects/register/route.ts +152 -0
  53. package/renderer/app/api/proxy/route.ts +149 -0
  54. package/renderer/app/api/proxy-stream/route.ts +168 -0
  55. package/renderer/app/api/redirects/route.ts +47 -0
  56. package/renderer/app/api/schema/route.ts +65 -0
  57. package/renderer/app/api/subdomains/check/route.ts +172 -0
  58. package/renderer/app/api/suggestions/route.ts +144 -0
  59. package/renderer/app/favicon.ico +0 -0
  60. package/renderer/app/globals.css +1103 -0
  61. package/renderer/app/layout.tsx +47 -0
  62. package/renderer/app/llms-full.txt/route.ts +346 -0
  63. package/renderer/app/llms.txt/route.ts +279 -0
  64. package/renderer/app/page.tsx +14 -0
  65. package/renderer/app/robots.txt/route.ts +84 -0
  66. package/renderer/app/sitemap.xml/route.ts +199 -0
  67. package/renderer/components/docs/index.ts +12 -0
  68. package/renderer/components/docs/mdx/accordion.tsx +169 -0
  69. package/renderer/components/docs/mdx/badge.tsx +132 -0
  70. package/renderer/components/docs/mdx/callouts.tsx +154 -0
  71. package/renderer/components/docs/mdx/cards.tsx +213 -0
  72. package/renderer/components/docs/mdx/changelog.tsx +120 -0
  73. package/renderer/components/docs/mdx/code-block.tsx +186 -0
  74. package/renderer/components/docs/mdx/code-group.tsx +421 -0
  75. package/renderer/components/docs/mdx/file-embeds.tsx +105 -0
  76. package/renderer/components/docs/mdx/frame.tsx +112 -0
  77. package/renderer/components/docs/mdx/highlight.tsx +151 -0
  78. package/renderer/components/docs/mdx/iframe.tsx +134 -0
  79. package/renderer/components/docs/mdx/image.tsx +235 -0
  80. package/renderer/components/docs/mdx/index.ts +204 -0
  81. package/renderer/components/docs/mdx/mermaid.tsx +240 -0
  82. package/renderer/components/docs/mdx/param-field.tsx +200 -0
  83. package/renderer/components/docs/mdx/steps.tsx +113 -0
  84. package/renderer/components/docs/mdx/tabs.tsx +86 -0
  85. package/renderer/components/docs/mdx-renderer.tsx +100 -0
  86. package/renderer/components/docs/navigation/breadcrumbs.tsx +76 -0
  87. package/renderer/components/docs/navigation/index.ts +8 -0
  88. package/renderer/components/docs/navigation/page-nav.tsx +64 -0
  89. package/renderer/components/docs/navigation/sidebar.tsx +515 -0
  90. package/renderer/components/docs/navigation/toc.tsx +113 -0
  91. package/renderer/components/docs/notice.tsx +105 -0
  92. package/renderer/components/docs-header.tsx +274 -0
  93. package/renderer/components/docs-viewer/agent/agent-chat.tsx +2076 -0
  94. package/renderer/components/docs-viewer/agent/cards/debug-context-card.tsx +90 -0
  95. package/renderer/components/docs-viewer/agent/cards/endpoint-context-card.tsx +49 -0
  96. package/renderer/components/docs-viewer/agent/cards/index.tsx +50 -0
  97. package/renderer/components/docs-viewer/agent/cards/response-options-card.tsx +212 -0
  98. package/renderer/components/docs-viewer/agent/cards/types.ts +84 -0
  99. package/renderer/components/docs-viewer/agent/chat-message.tsx +17 -0
  100. package/renderer/components/docs-viewer/agent/index.tsx +6 -0
  101. package/renderer/components/docs-viewer/agent/messages/assistant-message.tsx +119 -0
  102. package/renderer/components/docs-viewer/agent/messages/chat-message.tsx +46 -0
  103. package/renderer/components/docs-viewer/agent/messages/index.ts +17 -0
  104. package/renderer/components/docs-viewer/agent/messages/tool-call-display.tsx +721 -0
  105. package/renderer/components/docs-viewer/agent/messages/types.ts +61 -0
  106. package/renderer/components/docs-viewer/agent/messages/typing-indicator.tsx +24 -0
  107. package/renderer/components/docs-viewer/agent/messages/user-message.tsx +51 -0
  108. package/renderer/components/docs-viewer/code-editor/index.tsx +2 -0
  109. package/renderer/components/docs-viewer/code-editor/notes-mode.tsx +1283 -0
  110. package/renderer/components/docs-viewer/content/changelog-page.tsx +331 -0
  111. package/renderer/components/docs-viewer/content/doc-page.tsx +285 -0
  112. package/renderer/components/docs-viewer/content/documentation-viewer.tsx +17 -0
  113. package/renderer/components/docs-viewer/content/index.tsx +29 -0
  114. package/renderer/components/docs-viewer/content/introduction.tsx +21 -0
  115. package/renderer/components/docs-viewer/content/request-details.tsx +330 -0
  116. package/renderer/components/docs-viewer/content/sections/auth.tsx +69 -0
  117. package/renderer/components/docs-viewer/content/sections/body.tsx +66 -0
  118. package/renderer/components/docs-viewer/content/sections/headers.tsx +43 -0
  119. package/renderer/components/docs-viewer/content/sections/overview.tsx +40 -0
  120. package/renderer/components/docs-viewer/content/sections/parameters.tsx +43 -0
  121. package/renderer/components/docs-viewer/content/sections/responses.tsx +87 -0
  122. package/renderer/components/docs-viewer/global-auth-modal.tsx +352 -0
  123. package/renderer/components/docs-viewer/index.tsx +1466 -0
  124. package/renderer/components/docs-viewer/playground/auth-editor.tsx +280 -0
  125. package/renderer/components/docs-viewer/playground/body-editor.tsx +221 -0
  126. package/renderer/components/docs-viewer/playground/code-editor.tsx +224 -0
  127. package/renderer/components/docs-viewer/playground/code-snippet.tsx +387 -0
  128. package/renderer/components/docs-viewer/playground/graphql-playground.tsx +745 -0
  129. package/renderer/components/docs-viewer/playground/index.tsx +671 -0
  130. package/renderer/components/docs-viewer/playground/key-value-editor.tsx +261 -0
  131. package/renderer/components/docs-viewer/playground/method-selector.tsx +60 -0
  132. package/renderer/components/docs-viewer/playground/request-builder.tsx +179 -0
  133. package/renderer/components/docs-viewer/playground/request-tabs.tsx +237 -0
  134. package/renderer/components/docs-viewer/playground/response-cards/idle-card.tsx +21 -0
  135. package/renderer/components/docs-viewer/playground/response-cards/index.tsx +93 -0
  136. package/renderer/components/docs-viewer/playground/response-cards/loading-card.tsx +16 -0
  137. package/renderer/components/docs-viewer/playground/response-cards/network-error-card.tsx +23 -0
  138. package/renderer/components/docs-viewer/playground/response-cards/response-body-card.tsx +268 -0
  139. package/renderer/components/docs-viewer/playground/response-cards/types.ts +82 -0
  140. package/renderer/components/docs-viewer/playground/response-viewer.tsx +43 -0
  141. package/renderer/components/docs-viewer/search/index.ts +2 -0
  142. package/renderer/components/docs-viewer/search/search-dialog.tsx +331 -0
  143. package/renderer/components/docs-viewer/search/use-search.ts +117 -0
  144. package/renderer/components/docs-viewer/shared/markdown-renderer.tsx +431 -0
  145. package/renderer/components/docs-viewer/shared/method-badge.tsx +41 -0
  146. package/renderer/components/docs-viewer/shared/schema-viewer.tsx +349 -0
  147. package/renderer/components/docs-viewer/sidebar/collection-tree.tsx +239 -0
  148. package/renderer/components/docs-viewer/sidebar/endpoint-options.tsx +316 -0
  149. package/renderer/components/docs-viewer/sidebar/index.tsx +343 -0
  150. package/renderer/components/docs-viewer/sidebar/right-sidebar.tsx +202 -0
  151. package/renderer/components/docs-viewer/sidebar/sidebar-group.tsx +118 -0
  152. package/renderer/components/docs-viewer/sidebar/sidebar-item.tsx +226 -0
  153. package/renderer/components/docs-viewer/sidebar/sidebar-section.tsx +52 -0
  154. package/renderer/components/theme-provider.tsx +11 -0
  155. package/renderer/components/theme-toggle.tsx +76 -0
  156. package/renderer/components/ui/badge.tsx +46 -0
  157. package/renderer/components/ui/button.tsx +59 -0
  158. package/renderer/components/ui/dialog.tsx +118 -0
  159. package/renderer/components/ui/dropdown-menu.tsx +257 -0
  160. package/renderer/components/ui/input.tsx +21 -0
  161. package/renderer/components/ui/label.tsx +24 -0
  162. package/renderer/components/ui/navigation-menu.tsx +168 -0
  163. package/renderer/components/ui/select.tsx +190 -0
  164. package/renderer/components/ui/spinner.tsx +114 -0
  165. package/renderer/components/ui/tabs.tsx +66 -0
  166. package/renderer/components/ui/tooltip.tsx +61 -0
  167. package/renderer/hooks/use-code-copy.ts +88 -0
  168. package/renderer/hooks/use-openapi-title.ts +44 -0
  169. package/renderer/lib/api-docs/agent/index.ts +6 -0
  170. package/renderer/lib/api-docs/agent/indexer.ts +323 -0
  171. package/renderer/lib/api-docs/agent/spec-summary.ts +335 -0
  172. package/renderer/lib/api-docs/agent/types.ts +116 -0
  173. package/renderer/lib/api-docs/auth/auth-context.tsx +225 -0
  174. package/renderer/lib/api-docs/auth/auth-storage.ts +87 -0
  175. package/renderer/lib/api-docs/auth/crypto.ts +89 -0
  176. package/renderer/lib/api-docs/auth/index.ts +4 -0
  177. package/renderer/lib/api-docs/code-editor/db.ts +164 -0
  178. package/renderer/lib/api-docs/code-editor/hooks.ts +266 -0
  179. package/renderer/lib/api-docs/code-editor/index.ts +6 -0
  180. package/renderer/lib/api-docs/code-editor/mode-context.tsx +207 -0
  181. package/renderer/lib/api-docs/code-editor/types.ts +105 -0
  182. package/renderer/lib/api-docs/codegen/definitions.ts +297 -0
  183. package/renderer/lib/api-docs/codegen/har.ts +251 -0
  184. package/renderer/lib/api-docs/codegen/index.ts +159 -0
  185. package/renderer/lib/api-docs/factories.ts +151 -0
  186. package/renderer/lib/api-docs/index.ts +17 -0
  187. package/renderer/lib/api-docs/mobile-context.tsx +112 -0
  188. package/renderer/lib/api-docs/navigation-context.tsx +88 -0
  189. package/renderer/lib/api-docs/parsers/graphql/README.md +129 -0
  190. package/renderer/lib/api-docs/parsers/graphql/index.ts +91 -0
  191. package/renderer/lib/api-docs/parsers/graphql/parser.ts +491 -0
  192. package/renderer/lib/api-docs/parsers/graphql/transformer.ts +246 -0
  193. package/renderer/lib/api-docs/parsers/graphql/types.ts +283 -0
  194. package/renderer/lib/api-docs/parsers/openapi/README.md +32 -0
  195. package/renderer/lib/api-docs/parsers/openapi/dereferencer.ts +60 -0
  196. package/renderer/lib/api-docs/parsers/openapi/extractors/auth.ts +574 -0
  197. package/renderer/lib/api-docs/parsers/openapi/extractors/body.ts +403 -0
  198. package/renderer/lib/api-docs/parsers/openapi/extractors/index.ts +232 -0
  199. package/renderer/lib/api-docs/parsers/openapi/index.ts +171 -0
  200. package/renderer/lib/api-docs/parsers/openapi/transformer.ts +277 -0
  201. package/renderer/lib/api-docs/parsers/openapi/validator.ts +31 -0
  202. package/renderer/lib/api-docs/playground/context.tsx +107 -0
  203. package/renderer/lib/api-docs/playground/navigation-context.tsx +124 -0
  204. package/renderer/lib/api-docs/playground/request-builder.ts +223 -0
  205. package/renderer/lib/api-docs/playground/request-runner.ts +282 -0
  206. package/renderer/lib/api-docs/playground/types.ts +35 -0
  207. package/renderer/lib/api-docs/types.ts +269 -0
  208. package/renderer/lib/api-docs/utils.ts +311 -0
  209. package/renderer/lib/cache.ts +193 -0
  210. package/renderer/lib/docs/config/index.ts +29 -0
  211. package/renderer/lib/docs/config/loader.ts +142 -0
  212. package/renderer/lib/docs/config/schema.ts +298 -0
  213. package/renderer/lib/docs/index.ts +12 -0
  214. package/renderer/lib/docs/mdx/compiler.ts +176 -0
  215. package/renderer/lib/docs/mdx/frontmatter.ts +80 -0
  216. package/renderer/lib/docs/mdx/index.ts +26 -0
  217. package/renderer/lib/docs/navigation/generator.ts +348 -0
  218. package/renderer/lib/docs/navigation/index.ts +12 -0
  219. package/renderer/lib/docs/navigation/types.ts +123 -0
  220. package/renderer/lib/docs-navigation-context.tsx +80 -0
  221. package/renderer/lib/multi-tenant/context.ts +105 -0
  222. package/renderer/lib/storage/blob.ts +845 -0
  223. package/renderer/lib/utils.ts +6 -0
  224. package/renderer/next.config.ts +76 -0
  225. package/renderer/package.json +66 -0
  226. package/renderer/postcss.config.mjs +5 -0
  227. package/renderer/public/assets/images/screenshot.png +0 -0
  228. package/renderer/public/assets/logo/dark.svg +9 -0
  229. package/renderer/public/assets/logo/light.svg +9 -0
  230. package/renderer/public/assets/logo.svg +9 -0
  231. package/renderer/public/file.svg +1 -0
  232. package/renderer/public/globe.svg +1 -0
  233. package/renderer/public/icon.png +0 -0
  234. package/renderer/public/logo.svg +9 -0
  235. package/renderer/public/window.svg +1 -0
  236. package/renderer/tsconfig.json +28 -0
  237. package/templates/basic/README.md +139 -0
  238. package/templates/basic/assets/favicon.svg +4 -0
  239. package/templates/basic/assets/logo.svg +9 -0
  240. package/templates/basic/docs.json +47 -0
  241. package/templates/basic/guides/configuration.mdx +149 -0
  242. package/templates/basic/guides/overview.mdx +96 -0
  243. package/templates/basic/index.mdx +39 -0
  244. package/templates/basic/package.json +14 -0
  245. package/templates/basic/quickstart.mdx +92 -0
  246. package/templates/basic/vercel.json +6 -0
  247. package/templates/graphql/README.md +139 -0
  248. package/templates/graphql/api-reference/schema.graphql +305 -0
  249. package/templates/graphql/assets/favicon.svg +4 -0
  250. package/templates/graphql/assets/logo.svg +9 -0
  251. package/templates/graphql/docs.json +54 -0
  252. package/templates/graphql/guides/configuration.mdx +149 -0
  253. package/templates/graphql/guides/overview.mdx +96 -0
  254. package/templates/graphql/index.mdx +39 -0
  255. package/templates/graphql/package.json +14 -0
  256. package/templates/graphql/quickstart.mdx +92 -0
  257. package/templates/graphql/vercel.json +6 -0
  258. package/templates/openapi/README.md +139 -0
  259. package/templates/openapi/api-reference/openapi.json +419 -0
  260. package/templates/openapi/assets/favicon.svg +4 -0
  261. package/templates/openapi/assets/logo.svg +9 -0
  262. package/templates/openapi/docs.json +61 -0
  263. package/templates/openapi/guides/configuration.mdx +149 -0
  264. package/templates/openapi/guides/overview.mdx +96 -0
  265. package/templates/openapi/index.mdx +39 -0
  266. package/templates/openapi/package.json +14 -0
  267. package/templates/openapi/quickstart.mdx +92 -0
  268. package/templates/openapi/vercel.json +6 -0
@@ -0,0 +1,1103 @@
1
+ @import "tailwindcss";
2
+ @import "tw-animate-css";
3
+
4
+ @custom-variant dark (&:is(.dark *));
5
+
6
+ /* Custom xs breakpoint for extra small screens */
7
+ @custom-media --xs (min-width: 480px);
8
+ @media (min-width: 480px) {
9
+ .xs\:inline { display: inline; }
10
+ .xs\:flex { display: flex; }
11
+ .xs\:hidden { display: none; }
12
+ .xs\:block { display: block; }
13
+ }
14
+
15
+ @theme inline {
16
+ --color-background: var(--background);
17
+ --color-foreground: var(--foreground);
18
+ --font-sans: var(--font-geist-sans);
19
+ --font-mono: var(--font-geist-mono);
20
+ --color-sidebar-ring: var(--sidebar-ring);
21
+ --color-sidebar-border: var(--sidebar-border);
22
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
23
+ --color-sidebar-accent: var(--sidebar-accent);
24
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
25
+ --color-sidebar-primary: var(--sidebar-primary);
26
+ --color-sidebar-foreground: var(--sidebar-foreground);
27
+ --color-sidebar: var(--sidebar);
28
+ --color-chart-5: var(--chart-5);
29
+ --color-chart-4: var(--chart-4);
30
+ --color-chart-3: var(--chart-3);
31
+ --color-chart-2: var(--chart-2);
32
+ --color-chart-1: var(--chart-1);
33
+ --color-ring: var(--ring);
34
+ --color-input: var(--input);
35
+ --color-border: var(--border);
36
+ --color-destructive: var(--destructive);
37
+ --color-accent-foreground: var(--accent-foreground);
38
+ --color-accent: var(--accent);
39
+ --color-muted-foreground: var(--muted-foreground);
40
+ --color-muted: var(--muted);
41
+ --color-secondary-foreground: var(--secondary-foreground);
42
+ --color-secondary: var(--secondary);
43
+ --color-primary-foreground: var(--primary-foreground);
44
+ --color-primary: var(--primary);
45
+ --color-popover-foreground: var(--popover-foreground);
46
+ --color-popover: var(--popover);
47
+ --color-card-foreground: var(--card-foreground);
48
+ --color-card: var(--card);
49
+ --radius-sm: calc(var(--radius) - 4px);
50
+ --radius-md: calc(var(--radius) - 2px);
51
+ --radius-lg: var(--radius);
52
+ --radius-xl: calc(var(--radius) + 4px);
53
+ --animate-shine: shine var(--duration) infinite linear;
54
+ @keyframes shine {
55
+ 0% {
56
+ background-position: 0% 0%;
57
+ }
58
+ 50% {
59
+ background-position: 100% 100%;
60
+ }
61
+ to {
62
+ background-position: 0% 0%;
63
+ }
64
+ }
65
+ }
66
+
67
+ :root {
68
+ --radius: 0.625rem;
69
+ /* Shadcn Default Neutral Light Theme with Brainfish Primary */
70
+ --background: oklch(1 0 0); /* Pure white */
71
+ --foreground: oklch(0.145 0 0); /* Near black */
72
+ --card: oklch(1 0 0);
73
+ --card-foreground: oklch(0.145 0 0);
74
+ --popover: oklch(1 0 0);
75
+ --popover-foreground: oklch(0.145 0 0);
76
+ --primary: oklch(0.65 0.18 140); /* Brainfish vibrant green - single primary */
77
+ --primary-foreground: oklch(0.985 0 0); /* White text on primary */
78
+ --secondary: oklch(0.965 0 0); /* Neutral gray */
79
+ --secondary-foreground: oklch(0.145 0 0);
80
+ --muted: oklch(0.965 0 0);
81
+ --muted-foreground: oklch(0.45 0 0);
82
+ --accent: oklch(0.965 0 0);
83
+ --accent-foreground: oklch(0.145 0 0);
84
+ --destructive: oklch(0.577 0.245 27.325);
85
+ --border: oklch(0.922 0 0);
86
+ --input: oklch(0.922 0 0);
87
+ --ring: oklch(0.65 0.18 140); /* Focus ring matches primary */
88
+ --chart-1: oklch(0.646 0.222 41.116);
89
+ --chart-2: oklch(0.6 0.118 184.704);
90
+ --chart-3: oklch(0.398 0.07 227.392);
91
+ --chart-4: oklch(0.828 0.189 84.429);
92
+ --chart-5: oklch(0.769 0.188 70.08);
93
+ --sidebar: oklch(0.985 0 0);
94
+ --sidebar-foreground: oklch(0.145 0 0);
95
+ --sidebar-primary: oklch(0.65 0.18 140); /* Same primary green */
96
+ --sidebar-primary-foreground: oklch(0.985 0 0);
97
+ --sidebar-accent: oklch(0.965 0 0);
98
+ --sidebar-accent-foreground: oklch(0.145 0 0);
99
+ --sidebar-border: oklch(0.922 0 0);
100
+ --sidebar-ring: oklch(0.65 0.18 140);
101
+
102
+ /* Custom header background color */
103
+ --header-bg-custom: #a3e635;
104
+
105
+ /* Inkeep-style colors for chat button */
106
+ --inkeep-primary-text-bold: #171717;
107
+ --gray-dark-600: #171717;
108
+ }
109
+
110
+ .dark {
111
+ /* Shadcn Default Neutral Dark Theme with Brainfish Primary */
112
+ --background: oklch(0.145 0 0); /* Near black */
113
+ --foreground: oklch(0.985 0 0); /* Near white */
114
+ --card: oklch(0.145 0 0);
115
+ --card-foreground: oklch(0.985 0 0);
116
+ --popover: oklch(0.145 0 0);
117
+ --popover-foreground: oklch(0.985 0 0);
118
+ --primary: oklch(0.65 0.18 140); /* Same Brainfish green - single primary */
119
+ --primary-foreground: oklch(0.145 0 0); /* Dark text on primary for contrast */
120
+ --secondary: oklch(0.269 0 0);
121
+ --secondary-foreground: oklch(0.985 0 0);
122
+ --muted: oklch(0.269 0 0);
123
+ --muted-foreground: oklch(0.708 0 0);
124
+ --accent: oklch(0.269 0 0);
125
+ --accent-foreground: oklch(0.985 0 0);
126
+ --destructive: oklch(0.704 0.191 22.216);
127
+ --border: oklch(0.269 0 0);
128
+ --input: oklch(0.269 0 0);
129
+ --ring: oklch(0.65 0.18 140); /* Focus ring matches primary */
130
+ --chart-1: oklch(0.488 0.243 264.376);
131
+ --chart-2: oklch(0.696 0.17 162.48);
132
+ --chart-3: oklch(0.769 0.188 70.08);
133
+ --chart-4: oklch(0.627 0.265 303.9);
134
+ --chart-5: oklch(0.645 0.246 16.439);
135
+ --sidebar: oklch(0.145 0 0);
136
+ --sidebar-foreground: oklch(0.985 0 0);
137
+ --sidebar-primary: oklch(0.65 0.18 140); /* Same primary green */
138
+ --sidebar-primary-foreground: oklch(0.145 0 0);
139
+ --sidebar-accent: oklch(0.269 0 0);
140
+ --sidebar-accent-foreground: oklch(0.985 0 0);
141
+ --sidebar-border: oklch(0.269 0 0);
142
+ --sidebar-ring: oklch(0.65 0.18 140);
143
+ }
144
+
145
+ @layer base {
146
+ * {
147
+ @apply border-border outline-ring/50;
148
+ }
149
+ body {
150
+ @apply bg-background text-foreground;
151
+ }
152
+
153
+ /* Custom scrollbar - light and thin */
154
+ * {
155
+ scrollbar-width: thin;
156
+ scrollbar-color: rgba(0, 0, 0, 0.15) transparent;
157
+ }
158
+
159
+ .dark * {
160
+ scrollbar-color: rgba(255, 255, 255, 0.15) transparent;
161
+ }
162
+
163
+ /* Webkit scrollbar (Chrome, Safari, Edge) */
164
+ ::-webkit-scrollbar {
165
+ width: 6px;
166
+ height: 6px;
167
+ }
168
+
169
+ ::-webkit-scrollbar-track {
170
+ background: transparent;
171
+ }
172
+
173
+ ::-webkit-scrollbar-thumb {
174
+ background: rgba(0, 0, 0, 0.15);
175
+ border-radius: 3px;
176
+ }
177
+
178
+ ::-webkit-scrollbar-thumb:hover {
179
+ background: rgba(0, 0, 0, 0.25);
180
+ }
181
+
182
+ .dark ::-webkit-scrollbar-thumb {
183
+ background: rgba(255, 255, 255, 0.15);
184
+ }
185
+
186
+ .dark ::-webkit-scrollbar-thumb:hover {
187
+ background: rgba(255, 255, 255, 0.25);
188
+ }
189
+ }
190
+
191
+ @layer utilities {
192
+ .bg-inkeep-primary-text-bold {
193
+ background-color: var(--inkeep-primary-text-bold);
194
+ }
195
+ .dark\:bg-gray-dark-600 {
196
+ @apply dark:bg-[var(--gray-dark-600)];
197
+ }
198
+ }
199
+
200
+ /* Custom spinner animations */
201
+ @keyframes spinner-wave {
202
+ 0%, 40%, 100% {
203
+ transform: scaleY(0.4);
204
+ }
205
+ 20% {
206
+ transform: scaleY(1.0);
207
+ }
208
+ }
209
+
210
+ @keyframes spinner-bounce-smooth {
211
+ 0%, 80%, 100% {
212
+ transform: scale(0);
213
+ opacity: 0.5;
214
+ }
215
+ 40% {
216
+ transform: scale(1);
217
+ opacity: 1;
218
+ }
219
+ }
220
+
221
+ @keyframes spinner-orbit {
222
+ 0% {
223
+ transform: rotate(0deg);
224
+ }
225
+ 100% {
226
+ transform: rotate(360deg);
227
+ }
228
+ }
229
+
230
+ @keyframes spinner-glow {
231
+ 0%, 100% {
232
+ opacity: 0.3;
233
+ transform: scale(1);
234
+ }
235
+ 50% {
236
+ opacity: 0.8;
237
+ transform: scale(1.1);
238
+ }
239
+ }
240
+
241
+ .animate-wave {
242
+ animation: spinner-wave 1.2s ease-in-out infinite;
243
+ }
244
+
245
+ .animate-bounce-smooth {
246
+ animation: spinner-bounce-smooth 1.4s ease-in-out infinite;
247
+ }
248
+
249
+ .animate-orbit {
250
+ animation: spinner-orbit 1s linear infinite;
251
+ }
252
+
253
+ .animate-orbit-reverse {
254
+ animation: spinner-orbit 1.5s linear infinite reverse;
255
+ }
256
+
257
+ .animate-glow {
258
+ animation: spinner-glow 2s ease-in-out infinite;
259
+ }
260
+
261
+ /* ============================================
262
+ Mermaid Diagram Dark Mode Overrides
263
+ ============================================ */
264
+
265
+ /* Force all node shapes to have dark blue background */
266
+ .mermaid .node rect,
267
+ .mermaid .node circle,
268
+ .mermaid .node ellipse,
269
+ .mermaid .node polygon,
270
+ .mermaid .node path {
271
+ fill: #3b82f6 !important;
272
+ stroke: #60a5fa !important;
273
+ }
274
+
275
+ /* Force all node text to be white */
276
+ .mermaid .node .label,
277
+ .mermaid .nodeLabel,
278
+ .mermaid .node text,
279
+ .mermaid .label text,
280
+ .mermaid text.nodeLabel,
281
+ .mermaid .flowchart-label text {
282
+ fill: #ffffff !important;
283
+ color: #ffffff !important;
284
+ }
285
+
286
+ /* Cluster/subgraph styling */
287
+ .mermaid .cluster rect {
288
+ fill: #1f2937 !important;
289
+ stroke: #4b5563 !important;
290
+ }
291
+
292
+ .mermaid .cluster text,
293
+ .mermaid .cluster .nodeLabel {
294
+ fill: #e5e7eb !important;
295
+ }
296
+
297
+ /* Edge/arrow styling */
298
+ .mermaid .edgePath path,
299
+ .mermaid .flowchart-link {
300
+ stroke: #94a3b8 !important;
301
+ }
302
+
303
+ .mermaid marker path {
304
+ fill: #94a3b8 !important;
305
+ }
306
+
307
+ /* Edge labels */
308
+ .mermaid .edgeLabel text,
309
+ .mermaid .edgeLabel {
310
+ fill: #e5e7eb !important;
311
+ color: #e5e7eb !important;
312
+ }
313
+
314
+ .mermaid .edgeLabel rect {
315
+ fill: #1e1e1e !important;
316
+ opacity: 0.8 !important;
317
+ }
318
+
319
+ /* Sequence diagram specific */
320
+ .mermaid .actor {
321
+ fill: #3b82f6 !important;
322
+ stroke: #60a5fa !important;
323
+ }
324
+
325
+ .mermaid .actor text {
326
+ fill: #ffffff !important;
327
+ }
328
+
329
+ .mermaid .messageText {
330
+ fill: #e5e7eb !important;
331
+ }
332
+
333
+ .mermaid line.messageLine0,
334
+ .mermaid line.messageLine1 {
335
+ stroke: #94a3b8 !important;
336
+ }
337
+
338
+ /* Notes in sequence diagrams */
339
+ .mermaid .note {
340
+ fill: #374151 !important;
341
+ stroke: #4b5563 !important;
342
+ }
343
+
344
+ .mermaid .noteText {
345
+ fill: #e5e7eb !important;
346
+ }
347
+
348
+ /* Loop boxes */
349
+ .mermaid .loopText text {
350
+ fill: #e5e7eb !important;
351
+ }
352
+
353
+ .mermaid .loopLine {
354
+ stroke: #4b5563 !important;
355
+ }
356
+
357
+ /* Activation boxes */
358
+ .mermaid .activation0,
359
+ .mermaid .activation1,
360
+ .mermaid .activation2 {
361
+ fill: #3b82f6 !important;
362
+ stroke: #60a5fa !important;
363
+ }
364
+
365
+ /* ============================================
366
+ Prose Typography - Headers
367
+ ============================================ */
368
+
369
+ /* Header configuration variables */
370
+ :root {
371
+ --docs-h1-size: 2.25rem;
372
+ --docs-h1-weight: 700;
373
+ --docs-h1-line-height: 1.2;
374
+ --docs-h1-margin-top: 0;
375
+ --docs-h1-margin-bottom: 1.5rem;
376
+
377
+ --docs-h2-size: 1.875rem;
378
+ --docs-h2-weight: 600;
379
+ --docs-h2-line-height: 1.3;
380
+ --docs-h2-margin-top: 2.5rem;
381
+ --docs-h2-margin-bottom: 1rem;
382
+ --docs-h2-border: 1px solid var(--border);
383
+
384
+ --docs-h3-size: 1.5rem;
385
+ --docs-h3-weight: 600;
386
+ --docs-h3-line-height: 1.4;
387
+ --docs-h3-margin-top: 2rem;
388
+ --docs-h3-margin-bottom: 0.75rem;
389
+
390
+ --docs-h4-size: 1.25rem;
391
+ --docs-h4-weight: 600;
392
+ --docs-h4-line-height: 1.4;
393
+ --docs-h4-margin-top: 1.5rem;
394
+ --docs-h4-margin-bottom: 0.5rem;
395
+
396
+ --docs-h5-size: 1.125rem;
397
+ --docs-h5-weight: 600;
398
+ --docs-h5-line-height: 1.5;
399
+ --docs-h5-margin-top: 1.25rem;
400
+ --docs-h5-margin-bottom: 0.5rem;
401
+
402
+ --docs-h6-size: 1rem;
403
+ --docs-h6-weight: 600;
404
+ --docs-h6-line-height: 1.5;
405
+ --docs-h6-margin-top: 1rem;
406
+ --docs-h6-margin-bottom: 0.5rem;
407
+ }
408
+
409
+ .docs-prose h1,
410
+ .docs-prose.prose h1,
411
+ .docs-prose.prose-sm h1 {
412
+ font-size: var(--docs-h1-size) !important;
413
+ font-weight: var(--docs-h1-weight) !important;
414
+ line-height: var(--docs-h1-line-height) !important;
415
+ margin-top: var(--docs-h1-margin-top) !important;
416
+ margin-bottom: var(--docs-h1-margin-bottom) !important;
417
+ color: var(--foreground) !important;
418
+ letter-spacing: -0.025em;
419
+ }
420
+
421
+ .docs-prose h2,
422
+ .docs-prose.prose h2,
423
+ .docs-prose.prose-sm h2 {
424
+ font-size: var(--docs-h2-size) !important;
425
+ font-weight: var(--docs-h2-weight) !important;
426
+ line-height: var(--docs-h2-line-height) !important;
427
+ margin-top: var(--docs-h2-margin-top) !important;
428
+ margin-bottom: var(--docs-h2-margin-bottom) !important;
429
+ padding-bottom: 0.5rem;
430
+ border-bottom: var(--docs-h2-border);
431
+ color: var(--foreground) !important;
432
+ letter-spacing: -0.02em;
433
+ }
434
+
435
+ .docs-prose h3,
436
+ .docs-prose.prose h3,
437
+ .docs-prose.prose-sm h3 {
438
+ font-size: var(--docs-h3-size) !important;
439
+ font-weight: var(--docs-h3-weight) !important;
440
+ line-height: var(--docs-h3-line-height) !important;
441
+ margin-top: var(--docs-h3-margin-top) !important;
442
+ margin-bottom: var(--docs-h3-margin-bottom) !important;
443
+ color: var(--foreground) !important;
444
+ letter-spacing: -0.015em;
445
+ }
446
+
447
+ /* Reset margins for card titles */
448
+ .docs-card h3,
449
+ .docs-card .docs-card-title,
450
+ .docs-prose .docs-card h3,
451
+ .docs-prose .docs-card .docs-card-title {
452
+ font-size: 1rem !important;
453
+ margin-top: 0 !important;
454
+ margin-bottom: 0 !important;
455
+ line-height: 1.5 !important;
456
+ }
457
+
458
+ .docs-prose h4,
459
+ .docs-prose.prose h4,
460
+ .docs-prose.prose-sm h4 {
461
+ font-size: var(--docs-h4-size) !important;
462
+ font-weight: var(--docs-h4-weight) !important;
463
+ line-height: var(--docs-h4-line-height) !important;
464
+ margin-top: var(--docs-h4-margin-top) !important;
465
+ margin-bottom: var(--docs-h4-margin-bottom) !important;
466
+ color: var(--foreground) !important;
467
+ }
468
+
469
+ .docs-prose h5,
470
+ .docs-prose.prose h5,
471
+ .docs-prose.prose-sm h5 {
472
+ font-size: var(--docs-h5-size) !important;
473
+ font-weight: var(--docs-h5-weight) !important;
474
+ line-height: var(--docs-h5-line-height) !important;
475
+ margin-top: var(--docs-h5-margin-top) !important;
476
+ margin-bottom: var(--docs-h5-margin-bottom) !important;
477
+ color: var(--foreground) !important;
478
+ }
479
+
480
+ .docs-prose h6,
481
+ .docs-prose.prose h6,
482
+ .docs-prose.prose-sm h6 {
483
+ font-size: var(--docs-h6-size) !important;
484
+ font-weight: var(--docs-h6-weight) !important;
485
+ line-height: var(--docs-h6-line-height) !important;
486
+ margin-top: var(--docs-h6-margin-top) !important;
487
+ margin-bottom: var(--docs-h6-margin-bottom) !important;
488
+ color: var(--muted-foreground) !important;
489
+ text-transform: uppercase;
490
+ letter-spacing: 0.05em;
491
+ }
492
+
493
+ /* First heading in content should have no top margin */
494
+ .docs-prose > h1:first-child,
495
+ .docs-prose > h2:first-child,
496
+ .docs-prose > h3:first-child,
497
+ .docs-prose > h4:first-child,
498
+ .docs-prose > h5:first-child,
499
+ .docs-prose > h6:first-child {
500
+ margin-top: 0;
501
+ }
502
+
503
+ /* Anchor links on headers */
504
+ .docs-prose h1 a,
505
+ .docs-prose h2 a,
506
+ .docs-prose h3 a,
507
+ .docs-prose h4 a,
508
+ .docs-prose h5 a,
509
+ .docs-prose h6 a {
510
+ color: inherit;
511
+ text-decoration: none;
512
+ }
513
+
514
+ .docs-prose h1 a:hover,
515
+ .docs-prose h2 a:hover,
516
+ .docs-prose h3 a:hover,
517
+ .docs-prose h4 a:hover,
518
+ .docs-prose h5 a:hover,
519
+ .docs-prose h6 a:hover {
520
+ text-decoration: underline;
521
+ }
522
+
523
+ /* ============================================
524
+ Prose Typography - Lists
525
+ ============================================ */
526
+
527
+ /* List configuration variables */
528
+ :root {
529
+ --docs-list-margin: 1.25rem 0;
530
+ --docs-list-padding-left: 1.5rem;
531
+ --docs-list-item-margin: 0.5rem 0;
532
+ --docs-list-item-padding-left: 0.375rem;
533
+ --docs-list-nested-margin-top: 0.5rem;
534
+ --docs-list-bullet-color: var(--muted-foreground);
535
+ --docs-list-number-color: var(--muted-foreground);
536
+ }
537
+
538
+ /* Unordered lists */
539
+ .docs-prose ul,
540
+ .docs-prose.prose ul,
541
+ .docs-prose.prose-sm ul {
542
+ list-style-type: disc !important;
543
+ margin: var(--docs-list-margin) !important;
544
+ padding-left: var(--docs-list-padding-left) !important;
545
+ }
546
+
547
+ .docs-prose ul li,
548
+ .docs-prose.prose ul li,
549
+ .docs-prose.prose-sm ul li {
550
+ margin: var(--docs-list-item-margin) !important;
551
+ padding-left: var(--docs-list-item-padding-left) !important;
552
+ color: var(--foreground) !important;
553
+ }
554
+
555
+ .docs-prose ul li::marker,
556
+ .docs-prose.prose ul li::marker,
557
+ .docs-prose.prose-sm ul li::marker {
558
+ color: var(--docs-list-bullet-color) !important;
559
+ }
560
+
561
+ /* Nested unordered lists */
562
+ .docs-prose ul ul,
563
+ .docs-prose.prose ul ul,
564
+ .docs-prose.prose-sm ul ul {
565
+ list-style-type: circle !important;
566
+ margin-top: var(--docs-list-nested-margin-top) !important;
567
+ margin-bottom: 0 !important;
568
+ }
569
+
570
+ .docs-prose ul ul ul,
571
+ .docs-prose.prose ul ul ul,
572
+ .docs-prose.prose-sm ul ul ul {
573
+ list-style-type: square !important;
574
+ }
575
+
576
+ /* Ordered lists */
577
+ .docs-prose ol,
578
+ .docs-prose.prose ol,
579
+ .docs-prose.prose-sm ol {
580
+ list-style-type: decimal !important;
581
+ margin: var(--docs-list-margin) !important;
582
+ padding-left: var(--docs-list-padding-left) !important;
583
+ }
584
+
585
+ .docs-prose ol li,
586
+ .docs-prose.prose ol li,
587
+ .docs-prose.prose-sm ol li {
588
+ margin: var(--docs-list-item-margin) !important;
589
+ padding-left: var(--docs-list-item-padding-left) !important;
590
+ color: var(--foreground) !important;
591
+ }
592
+
593
+ .docs-prose ol li::marker,
594
+ .docs-prose.prose ol li::marker,
595
+ .docs-prose.prose-sm ol li::marker {
596
+ color: var(--docs-list-number-color) !important;
597
+ font-weight: 500 !important;
598
+ }
599
+
600
+ /* Nested ordered lists */
601
+ .docs-prose ol ol,
602
+ .docs-prose.prose ol ol,
603
+ .docs-prose.prose-sm ol ol {
604
+ list-style-type: lower-alpha !important;
605
+ margin-top: var(--docs-list-nested-margin-top) !important;
606
+ margin-bottom: 0 !important;
607
+ }
608
+
609
+ .docs-prose ol ol ol,
610
+ .docs-prose.prose ol ol ol,
611
+ .docs-prose.prose-sm ol ol ol {
612
+ list-style-type: lower-roman !important;
613
+ }
614
+
615
+ /* Mixed nested lists */
616
+ .docs-prose ul ol,
617
+ .docs-prose ol ul {
618
+ margin-top: var(--docs-list-nested-margin-top);
619
+ margin-bottom: 0;
620
+ }
621
+
622
+ /* Task/Checkbox lists */
623
+ .docs-prose ul.contains-task-list {
624
+ list-style-type: none;
625
+ padding-left: 0;
626
+ }
627
+
628
+ .docs-prose ul.contains-task-list li {
629
+ padding-left: 0;
630
+ display: flex;
631
+ align-items: flex-start;
632
+ gap: 0.5rem;
633
+ }
634
+
635
+ .docs-prose ul.contains-task-list input[type="checkbox"] {
636
+ margin-top: 0.25rem;
637
+ width: 1rem;
638
+ height: 1rem;
639
+ accent-color: var(--primary);
640
+ }
641
+
642
+ /* Definition lists */
643
+ .docs-prose dl {
644
+ margin: var(--docs-list-margin);
645
+ }
646
+
647
+ .docs-prose dt {
648
+ font-weight: 600;
649
+ color: var(--foreground);
650
+ margin-top: 1rem;
651
+ }
652
+
653
+ .docs-prose dt:first-child {
654
+ margin-top: 0;
655
+ }
656
+
657
+ .docs-prose dd {
658
+ margin-left: var(--docs-list-padding-left);
659
+ margin-top: 0.25rem;
660
+ color: var(--muted-foreground);
661
+ }
662
+
663
+ /* ============================================
664
+ Prose Typography - Paragraphs & Links
665
+ ============================================ */
666
+
667
+ :root {
668
+ --docs-paragraph-margin: 1rem 0;
669
+ --docs-paragraph-line-height: 1.75;
670
+ --docs-link-color: var(--primary);
671
+ --docs-link-hover-color: var(--primary);
672
+ }
673
+
674
+ .docs-prose p,
675
+ .docs-prose.prose p,
676
+ .docs-prose.prose-sm p {
677
+ margin: var(--docs-paragraph-margin) !important;
678
+ line-height: var(--docs-paragraph-line-height) !important;
679
+ color: var(--foreground) !important;
680
+ }
681
+
682
+ .docs-prose p:first-child,
683
+ .docs-prose.prose p:first-child,
684
+ .docs-prose.prose-sm p:first-child {
685
+ margin-top: 0 !important;
686
+ }
687
+
688
+ .docs-prose p:last-child,
689
+ .docs-prose.prose p:last-child,
690
+ .docs-prose.prose-sm p:last-child {
691
+ margin-bottom: 0 !important;
692
+ }
693
+
694
+ .docs-prose a,
695
+ .docs-prose.prose a,
696
+ .docs-prose.prose-sm a {
697
+ color: var(--docs-link-color) !important;
698
+ text-decoration: underline !important;
699
+ text-underline-offset: 2px !important;
700
+ transition: color 0.15s ease;
701
+ }
702
+
703
+ .docs-prose a:hover,
704
+ .docs-prose.prose a:hover,
705
+ .docs-prose.prose-sm a:hover {
706
+ color: var(--docs-link-hover-color) !important;
707
+ text-decoration-thickness: 2px !important;
708
+ }
709
+
710
+ /* Remove underline from card links */
711
+ .docs-card-link {
712
+ text-decoration: none !important;
713
+ display: block;
714
+ }
715
+
716
+ .docs-card-link:hover {
717
+ text-decoration: none !important;
718
+ }
719
+
720
+ /* Ensure card links in prose don't get link styling */
721
+ .docs-prose .docs-card-link,
722
+ .docs-prose.prose .docs-card-link,
723
+ .docs-prose.prose-sm .docs-card-link {
724
+ text-decoration: none !important;
725
+ color: inherit !important;
726
+ }
727
+
728
+ .docs-prose .docs-card-link:hover,
729
+ .docs-prose.prose .docs-card-link:hover,
730
+ .docs-prose.prose-sm .docs-card-link:hover {
731
+ text-decoration: none !important;
732
+ color: inherit !important;
733
+ }
734
+
735
+ /* Strong and emphasis */
736
+ .docs-prose strong,
737
+ .docs-prose.prose strong,
738
+ .docs-prose.prose-sm strong {
739
+ font-weight: 600 !important;
740
+ color: var(--foreground) !important;
741
+ }
742
+
743
+ .docs-prose em,
744
+ .docs-prose.prose em,
745
+ .docs-prose.prose-sm em {
746
+ font-style: italic !important;
747
+ }
748
+
749
+ /* Blockquotes */
750
+ .docs-prose blockquote,
751
+ .docs-prose.prose blockquote,
752
+ .docs-prose.prose-sm blockquote {
753
+ margin: 1.5rem 0 !important;
754
+ padding: 0.5rem 0 0.5rem 1rem !important;
755
+ border-left: 4px solid var(--primary) !important;
756
+ background-color: var(--muted) !important;
757
+ border-radius: 0 0.5rem 0.5rem 0 !important;
758
+ }
759
+
760
+ .docs-prose blockquote p,
761
+ .docs-prose.prose blockquote p,
762
+ .docs-prose.prose-sm blockquote p {
763
+ color: var(--muted-foreground) !important;
764
+ font-style: italic !important;
765
+ }
766
+
767
+ /* Horizontal rule */
768
+ .docs-prose hr,
769
+ .docs-prose.prose hr,
770
+ .docs-prose.prose-sm hr {
771
+ margin: 2rem 0 !important;
772
+ border: none !important;
773
+ border-top: 1px solid var(--border) !important;
774
+ }
775
+
776
+ /* ============================================
777
+ Prose Table Styles
778
+ ============================================ */
779
+
780
+ /* Table configuration variables */
781
+ :root {
782
+ --docs-table-border: 1px solid var(--border);
783
+ --docs-table-border-radius: 0.5rem;
784
+ --docs-table-header-bg: var(--muted);
785
+ --docs-table-row-hover: var(--muted);
786
+ --docs-table-cell-padding: 0.75rem 1rem;
787
+ }
788
+
789
+ .docs-prose table {
790
+ width: 100%;
791
+ border-collapse: separate;
792
+ border-spacing: 0;
793
+ margin: 1.5rem 0;
794
+ font-size: 0.875rem;
795
+ border: var(--docs-table-border);
796
+ border-radius: var(--docs-table-border-radius);
797
+ overflow: hidden;
798
+ }
799
+
800
+ .docs-prose thead {
801
+ background-color: var(--docs-table-header-bg);
802
+ }
803
+
804
+ .docs-prose th {
805
+ padding: var(--docs-table-cell-padding);
806
+ text-align: left;
807
+ font-weight: 600;
808
+ color: var(--foreground);
809
+ border-bottom: var(--docs-table-border);
810
+ border-right: var(--docs-table-border);
811
+ }
812
+
813
+ .docs-prose th:last-child {
814
+ border-right: none;
815
+ }
816
+
817
+ .docs-prose td {
818
+ padding: var(--docs-table-cell-padding);
819
+ border-bottom: var(--docs-table-border);
820
+ border-right: var(--docs-table-border);
821
+ color: var(--muted-foreground);
822
+ }
823
+
824
+ .docs-prose td:last-child {
825
+ border-right: none;
826
+ }
827
+
828
+ .docs-prose tbody tr:last-child td {
829
+ border-bottom: none;
830
+ }
831
+
832
+ .docs-prose tbody tr:hover {
833
+ background-color: var(--docs-table-row-hover);
834
+ }
835
+
836
+ /* Responsive table wrapper */
837
+ .docs-prose .table-wrapper {
838
+ overflow-x: auto;
839
+ margin: 1.5rem 0;
840
+ }
841
+
842
+ /* Borderless table variant - add class "borderless" to table */
843
+ .docs-prose table.borderless,
844
+ .docs-prose table[data-borderless] {
845
+ border: none;
846
+ border-radius: 0;
847
+ }
848
+
849
+ .docs-prose table.borderless th,
850
+ .docs-prose table.borderless td,
851
+ .docs-prose table[data-borderless] th,
852
+ .docs-prose table[data-borderless] td {
853
+ border-right: none;
854
+ }
855
+
856
+ /* ============================================
857
+ Code Block Syntax Highlighting (rehype-pretty-code)
858
+ ============================================ */
859
+
860
+ /* Code block container */
861
+ [data-rehype-pretty-code-figure] {
862
+ margin: 1rem 0;
863
+ }
864
+
865
+ /* Pre element styles */
866
+ [data-rehype-pretty-code-figure] pre {
867
+ padding: 1rem 0;
868
+ border-radius: 0.5rem;
869
+ overflow-x: auto;
870
+ font-size: 0.875rem;
871
+ line-height: 1.7;
872
+ border: 1px solid var(--border);
873
+ }
874
+
875
+ /* Code element inside pre */
876
+ [data-rehype-pretty-code-figure] pre > code {
877
+ display: grid;
878
+ background: transparent !important;
879
+ padding: 0 !important;
880
+ border: none !important;
881
+ font-family: var(--font-geist-mono), ui-monospace, monospace;
882
+ }
883
+
884
+ /* Inline code (not in pre) */
885
+ :not(pre) > code {
886
+ padding: 0.2em 0.4em;
887
+ border-radius: 0.25rem;
888
+ background-color: var(--muted);
889
+ font-size: 0.875em;
890
+ font-family: var(--font-geist-mono), ui-monospace, monospace;
891
+ }
892
+
893
+ /* Inline code figures from rehype-pretty-code - keep them inline */
894
+ [data-rehype-pretty-code-figure]:not(:has(pre)) {
895
+ display: inline !important;
896
+ margin: 0 !important;
897
+ border: none !important;
898
+ background: transparent !important;
899
+ border-radius: 0 !important;
900
+ overflow: visible !important;
901
+ }
902
+
903
+ [data-rehype-pretty-code-figure]:not(:has(pre)) code {
904
+ display: inline !important;
905
+ padding: 0.2em 0.4em !important;
906
+ border-radius: 0.25rem !important;
907
+ background-color: var(--muted) !important;
908
+ font-size: 0.875em !important;
909
+ font-family: var(--font-geist-mono), ui-monospace, monospace !important;
910
+ color: inherit !important;
911
+ }
912
+
913
+ /* Remove line highlighting styles from inline code */
914
+ [data-rehype-pretty-code-figure]:not(:has(pre)) [data-line] {
915
+ display: inline !important;
916
+ padding: 0 !important;
917
+ margin: 0 !important;
918
+ background: transparent !important;
919
+ border: none !important;
920
+ box-shadow: none !important;
921
+ }
922
+
923
+ [data-rehype-pretty-code-figure]:not(:has(pre)) [data-highlighted-line] {
924
+ background: transparent !important;
925
+ box-shadow: none !important;
926
+ }
927
+
928
+ /* Code block with title - wrapper styling like CodeGroup */
929
+ [data-rehype-pretty-code-figure]:has([data-rehype-pretty-code-title]) {
930
+ border-radius: 0.75rem;
931
+ border: 1px solid rgb(39, 39, 42);
932
+ overflow: hidden;
933
+ background-color: #1a1a1a;
934
+ margin: 1rem 0;
935
+ position: relative;
936
+ }
937
+
938
+ [data-rehype-pretty-code-figure]:has([data-rehype-pretty-code-title]) pre {
939
+ border: none !important;
940
+ border-radius: 0 !important;
941
+ margin: 0;
942
+ background-color: #1a1a1a !important;
943
+ }
944
+
945
+ /* Title text as tab - matches CodeGroup tab */
946
+ [data-rehype-pretty-code-title] {
947
+ display: inline-block;
948
+ font-family: var(--font-geist-mono), ui-monospace, monospace;
949
+ font-size: 0.875rem;
950
+ font-weight: 500;
951
+ color: white;
952
+ padding: 0.625rem 1rem;
953
+ margin: 0;
954
+ position: relative;
955
+ white-space: nowrap;
956
+ background-color: transparent;
957
+ border: none;
958
+ border-radius: 0;
959
+ }
960
+
961
+ /* Green underline - matches CodeGroup tab indicator */
962
+ [data-rehype-pretty-code-title]::after {
963
+ content: '';
964
+ position: absolute;
965
+ bottom: 0;
966
+ left: 0.5rem;
967
+ right: 0.5rem;
968
+ height: 2px;
969
+ background-color: rgb(16, 185, 129);
970
+ border-radius: 9999px;
971
+ }
972
+
973
+ /* Code copy button header wrapper */
974
+ .code-header-wrapper {
975
+ display: flex;
976
+ align-items: center;
977
+ justify-content: space-between;
978
+ width: 100%;
979
+ background-color: #262626;
980
+ padding-right: 0.5rem;
981
+ }
982
+
983
+ /* Copy button styling - matches CodeGroup */
984
+ .code-copy-button {
985
+ display: flex;
986
+ align-items: center;
987
+ justify-content: center;
988
+ padding: 0.375rem;
989
+ border-radius: 0.25rem;
990
+ color: rgb(113, 113, 122);
991
+ background: transparent;
992
+ border: none;
993
+ cursor: pointer;
994
+ transition: color 0.15s, background-color 0.15s;
995
+ flex-shrink: 0;
996
+ }
997
+
998
+ .code-copy-button:hover {
999
+ color: rgb(212, 212, 216);
1000
+ background-color: rgba(113, 113, 122, 0.2);
1001
+ }
1002
+
1003
+ .code-copy-button:focus {
1004
+ outline: none;
1005
+ }
1006
+
1007
+ .code-copy-button:focus-visible {
1008
+ ring: 2px;
1009
+ ring-color: rgba(var(--primary), 0.5);
1010
+ }
1011
+
1012
+ /* Floating copy button for code blocks without title */
1013
+ .code-copy-button-floating {
1014
+ position: absolute;
1015
+ top: 0.5rem;
1016
+ right: 0.5rem;
1017
+ opacity: 0;
1018
+ transition: opacity 0.15s;
1019
+ }
1020
+
1021
+ [data-rehype-pretty-code-figure]:hover .code-copy-button-floating,
1022
+ pre:hover .code-copy-button-floating {
1023
+ opacity: 1;
1024
+ }
1025
+
1026
+ /* Pre after title - connects to header */
1027
+ [data-rehype-pretty-code-title] + pre {
1028
+ border-top-left-radius: 0;
1029
+ border-top-right-radius: 0;
1030
+ border-top: none;
1031
+ margin-top: 0;
1032
+ }
1033
+
1034
+ /* Line numbers */
1035
+ code[data-line-numbers] {
1036
+ counter-reset: line;
1037
+ }
1038
+
1039
+ code[data-line-numbers] > [data-line]::before {
1040
+ counter-increment: line;
1041
+ content: counter(line);
1042
+ display: inline-block;
1043
+ width: 1.5rem;
1044
+ margin-right: 1.5rem;
1045
+ text-align: right;
1046
+ color: var(--muted-foreground);
1047
+ opacity: 0.5;
1048
+ }
1049
+
1050
+ /* Line styling */
1051
+ [data-line] {
1052
+ display: block;
1053
+ padding-left: 1rem;
1054
+ padding-right: 1rem;
1055
+ }
1056
+
1057
+ /* Line highlighting */
1058
+ [data-highlighted-line] {
1059
+ background-color: rgba(16, 185, 129, 0.1);
1060
+ box-shadow: inset 2px 0 0 rgb(16, 185, 129);
1061
+ }
1062
+
1063
+ /* Word highlighting */
1064
+ [data-highlighted-chars] {
1065
+ background-color: rgba(255, 255, 0, 0.2);
1066
+ border-radius: 0.25rem;
1067
+ padding: 0.125rem 0.25rem;
1068
+ }
1069
+
1070
+ /* Diff highlighting */
1071
+ [data-diff-add] {
1072
+ background-color: rgba(34, 197, 94, 0.15);
1073
+ }
1074
+
1075
+ [data-diff-remove] {
1076
+ background-color: rgba(239, 68, 68, 0.15);
1077
+ }
1078
+
1079
+ /* Code block background - dark theme to match CodeGroup */
1080
+ [data-rehype-pretty-code-figure] pre {
1081
+ background-color: #1a1a1a;
1082
+ border-color: #3f3f46;
1083
+ }
1084
+
1085
+ /* Code blocks with titles get different border radius */
1086
+ [data-rehype-pretty-code-title] + pre {
1087
+ border-top-left-radius: 0;
1088
+ border-top-right-radius: 0;
1089
+ border-bottom-left-radius: 0.75rem;
1090
+ border-bottom-right-radius: 0.75rem;
1091
+ }
1092
+
1093
+ /* Standalone code blocks (no title) */
1094
+ [data-rehype-pretty-code-figure]:not(:has([data-rehype-pretty-code-title])) pre {
1095
+ border-radius: 0.75rem;
1096
+ background-color: #1a1a1a !important;
1097
+ border: 1px solid rgb(39, 39, 42) !important;
1098
+ }
1099
+
1100
+ /* Scroll margin for agent navigation */
1101
+ [id] {
1102
+ scroll-margin-top: 80px;
1103
+ }