@softtechai/quickmcp 1.0.14 → 1.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 (417) hide show
  1. package/dist/auth/auth-utils.d.ts +130 -0
  2. package/dist/auth/auth-utils.d.ts.map +1 -0
  3. package/dist/auth/auth-utils.js +600 -0
  4. package/dist/auth/auth-utils.js.map +1 -0
  5. package/dist/auth/jwks-provider.d.ts +9 -0
  6. package/dist/auth/jwks-provider.d.ts.map +1 -0
  7. package/dist/auth/jwks-provider.js +56 -0
  8. package/dist/auth/jwks-provider.js.map +1 -0
  9. package/dist/auth/token-utils.d.ts +40 -0
  10. package/dist/auth/token-utils.d.ts.map +1 -0
  11. package/dist/auth/token-utils.js +162 -0
  12. package/dist/auth/token-utils.js.map +1 -0
  13. package/dist/client/MCPClient.js +5 -4
  14. package/dist/client/MCPClient.js.map +1 -1
  15. package/dist/config/auth-config.d.ts +16 -0
  16. package/dist/config/auth-config.d.ts.map +1 -0
  17. package/dist/config/auth-config.js +107 -0
  18. package/dist/config/auth-config.js.map +1 -0
  19. package/dist/constant/constant.d.ts +20 -0
  20. package/dist/constant/constant.d.ts.map +1 -0
  21. package/dist/constant/constant.js +24 -0
  22. package/dist/constant/constant.js.map +1 -0
  23. package/dist/database/async-datastore.d.ts +6 -0
  24. package/dist/database/async-datastore.d.ts.map +1 -0
  25. package/dist/database/async-datastore.js +15 -0
  26. package/dist/database/async-datastore.js.map +1 -0
  27. package/dist/database/database-utils.d.ts +6 -0
  28. package/dist/database/database-utils.d.ts.map +1 -0
  29. package/dist/database/database-utils.js +29 -0
  30. package/dist/database/database-utils.js.map +1 -0
  31. package/dist/database/datastore.d.ts +164 -0
  32. package/dist/database/datastore.d.ts.map +1 -0
  33. package/dist/{parsers/types/index.js → database/datastore.js} +1 -0
  34. package/dist/database/datastore.js.map +1 -0
  35. package/dist/database/factory.d.ts +4 -0
  36. package/dist/database/factory.d.ts.map +1 -0
  37. package/dist/database/factory.js +32 -0
  38. package/dist/database/factory.js.map +1 -0
  39. package/dist/database/jdbc-manager.d.ts +49 -0
  40. package/dist/database/jdbc-manager.d.ts.map +1 -0
  41. package/dist/database/jdbc-manager.js +50 -0
  42. package/dist/database/jdbc-manager.js.map +1 -0
  43. package/dist/database/sqlite-manager.d.ts +46 -44
  44. package/dist/database/sqlite-manager.d.ts.map +1 -1
  45. package/dist/database/sqlite-manager.js +492 -42
  46. package/dist/database/sqlite-manager.js.map +1 -1
  47. package/dist/database/supabase-manager.d.ts +58 -0
  48. package/dist/database/supabase-manager.d.ts.map +1 -0
  49. package/dist/database/supabase-manager.js +432 -0
  50. package/dist/database/supabase-manager.js.map +1 -0
  51. package/dist/generators/MCPServerGenerator.d.ts +103 -20
  52. package/dist/generators/MCPServerGenerator.d.ts.map +1 -1
  53. package/dist/generators/MCPServerGenerator.js +6930 -128
  54. package/dist/generators/MCPServerGenerator.js.map +1 -1
  55. package/dist/index.d.ts +0 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +8 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/integrated-mcp-server-new.d.ts +14 -2
  60. package/dist/integrated-mcp-server-new.d.ts.map +1 -1
  61. package/dist/integrated-mcp-server-new.js +270 -180
  62. package/dist/integrated-mcp-server-new.js.map +1 -1
  63. package/dist/mcp-core/McpCoreService.d.ts +63 -0
  64. package/dist/mcp-core/McpCoreService.d.ts.map +1 -0
  65. package/dist/mcp-core/McpCoreService.js +492 -0
  66. package/dist/mcp-core/McpCoreService.js.map +1 -0
  67. package/dist/parsers/CsvParser.d.ts +1 -1
  68. package/dist/parsers/CsvParser.d.ts.map +1 -1
  69. package/dist/parsers/CsvParser.js +3 -2
  70. package/dist/parsers/CsvParser.js.map +1 -1
  71. package/dist/parsers/DatabaseParser.d.ts.map +1 -1
  72. package/dist/parsers/DatabaseParser.js +9 -8
  73. package/dist/parsers/DatabaseParser.js.map +1 -1
  74. package/dist/parsers/ExcelParser.d.ts +15 -0
  75. package/dist/parsers/ExcelParser.d.ts.map +1 -1
  76. package/dist/parsers/ExcelParser.js +287 -21
  77. package/dist/parsers/ExcelParser.js.map +1 -1
  78. package/dist/parsers/WebPageParser.d.ts +5 -0
  79. package/dist/parsers/WebPageParser.d.ts.map +1 -0
  80. package/dist/parsers/WebPageParser.js +35 -0
  81. package/dist/parsers/WebPageParser.js.map +1 -0
  82. package/dist/parsers/index.d.ts +3 -2
  83. package/dist/parsers/index.d.ts.map +1 -1
  84. package/dist/parsers/index.js +19 -16
  85. package/dist/parsers/index.js.map +1 -1
  86. package/dist/server/api/askApi.d.ts +41 -0
  87. package/dist/server/api/askApi.d.ts.map +1 -0
  88. package/dist/server/api/askApi.js +479 -0
  89. package/dist/server/api/askApi.js.map +1 -0
  90. package/dist/server/api/authApi.d.ts +101 -0
  91. package/dist/server/api/authApi.d.ts.map +1 -0
  92. package/dist/server/api/authApi.js +1472 -0
  93. package/dist/server/api/authApi.js.map +1 -0
  94. package/dist/server/api/authProperty.d.ts +18 -0
  95. package/dist/server/api/authProperty.d.ts.map +1 -0
  96. package/dist/server/api/authProperty.js +41 -0
  97. package/dist/server/api/authProperty.js.map +1 -0
  98. package/dist/server/api/configApi.d.ts +15 -0
  99. package/dist/server/api/configApi.d.ts.map +1 -0
  100. package/dist/server/api/configApi.js +42 -0
  101. package/dist/server/api/configApi.js.map +1 -0
  102. package/dist/server/api/databaseApi.d.ts +14 -0
  103. package/dist/server/api/databaseApi.d.ts.map +1 -0
  104. package/dist/server/api/databaseApi.js +111 -0
  105. package/dist/server/api/databaseApi.js.map +1 -0
  106. package/dist/server/api/directoryApi.d.ts +9 -0
  107. package/dist/server/api/directoryApi.d.ts.map +1 -0
  108. package/dist/server/api/directoryApi.js +103 -0
  109. package/dist/server/api/directoryApi.js.map +1 -0
  110. package/dist/server/api/generateApi.d.ts +24 -0
  111. package/dist/server/api/generateApi.d.ts.map +1 -0
  112. package/dist/server/api/generateApi.js +457 -0
  113. package/dist/server/api/generateApi.js.map +1 -0
  114. package/dist/server/api/healthApi.d.ts +9 -0
  115. package/dist/server/api/healthApi.d.ts.map +1 -0
  116. package/dist/server/api/healthApi.js +15 -0
  117. package/dist/server/api/healthApi.js.map +1 -0
  118. package/dist/server/api/indexApi.d.ts +21 -0
  119. package/dist/server/api/indexApi.d.ts.map +1 -0
  120. package/dist/server/api/indexApi.js +61 -0
  121. package/dist/server/api/indexApi.js.map +1 -0
  122. package/dist/server/api/logsApi.d.ts +12 -0
  123. package/dist/server/api/logsApi.d.ts.map +1 -0
  124. package/dist/server/api/logsApi.js +37 -0
  125. package/dist/server/api/logsApi.js.map +1 -0
  126. package/dist/server/api/mcpApi.d.ts +20 -0
  127. package/dist/server/api/mcpApi.d.ts.map +1 -0
  128. package/dist/server/api/mcpApi.js +120 -0
  129. package/dist/server/api/mcpApi.js.map +1 -0
  130. package/dist/server/api/nameApi.d.ts +21 -0
  131. package/dist/server/api/nameApi.d.ts.map +1 -0
  132. package/dist/server/api/nameApi.js +42 -0
  133. package/dist/server/api/nameApi.js.map +1 -0
  134. package/dist/server/api/parseApi.d.ts +9 -0
  135. package/dist/server/api/parseApi.d.ts.map +1 -0
  136. package/dist/server/api/parseApi.js +3245 -0
  137. package/dist/server/api/parseApi.js.map +1 -0
  138. package/dist/server/api/serverApi.d.ts +44 -0
  139. package/dist/server/api/serverApi.d.ts.map +1 -0
  140. package/dist/server/api/serverApi.js +417 -0
  141. package/dist/server/api/serverApi.js.map +1 -0
  142. package/dist/{dynamic-mcp-executor.d.ts → server/dynamic-mcp-executor.d.ts} +4 -5
  143. package/dist/server/dynamic-mcp-executor.d.ts.map +1 -0
  144. package/dist/server/dynamic-mcp-executor.js +62 -0
  145. package/dist/server/dynamic-mcp-executor.js.map +1 -0
  146. package/dist/server/port-utils.d.ts +14 -0
  147. package/dist/server/port-utils.d.ts.map +1 -0
  148. package/dist/server/port-utils.js +31 -0
  149. package/dist/server/port-utils.js.map +1 -0
  150. package/dist/server/server-utils.d.ts +13 -0
  151. package/dist/server/server-utils.d.ts.map +1 -0
  152. package/dist/server/server-utils.js +72 -0
  153. package/dist/server/server-utils.js.map +1 -0
  154. package/dist/{web → server}/server.d.ts +1 -0
  155. package/dist/server/server.d.ts.map +1 -0
  156. package/dist/server/server.js +535 -0
  157. package/dist/server/server.js.map +1 -0
  158. package/dist/server/tool-executer.d.ts +101 -0
  159. package/dist/server/tool-executer.d.ts.map +1 -0
  160. package/dist/server/tool-executer.js +6198 -0
  161. package/dist/server/tool-executer.js.map +1 -0
  162. package/dist/types/index.d.ts +1197 -4
  163. package/dist/types/index.d.ts.map +1 -1
  164. package/dist/types/index.js +1028 -0
  165. package/dist/types/index.js.map +1 -1
  166. package/dist/upload/upload-utils.d.ts +4 -0
  167. package/dist/upload/upload-utils.d.ts.map +1 -0
  168. package/dist/upload/upload-utils.js +29 -0
  169. package/dist/upload/upload-utils.js.map +1 -0
  170. package/dist/utils/deployment-util.d.ts +14 -0
  171. package/dist/utils/deployment-util.d.ts.map +1 -0
  172. package/dist/utils/deployment-util.js +46 -0
  173. package/dist/utils/deployment-util.js.map +1 -0
  174. package/dist/utils/logger.d.ts +15 -0
  175. package/dist/utils/logger.d.ts.map +1 -0
  176. package/dist/utils/logger.js +56 -0
  177. package/dist/utils/logger.js.map +1 -0
  178. package/package.json +18 -6
  179. package/quickmcp-direct-stdio.js +245 -163
  180. package/src/web/public/app.js +15370 -1471
  181. package/src/web/public/authorization.html +868 -0
  182. package/src/web/public/database-tables.html +283 -547
  183. package/src/web/public/how-to-use.html +446 -462
  184. package/src/web/public/how-to-use.js +4 -4
  185. package/src/web/public/images/app/activepieces.png +0 -0
  186. package/src/web/public/images/app/airtable.png +0 -0
  187. package/src/web/public/images/app/androidstudio.png +0 -0
  188. package/src/web/public/images/app/antigravity.png +0 -0
  189. package/src/web/public/images/app/applenotes.png +0 -0
  190. package/src/web/public/images/app/applereminders.png +0 -0
  191. package/src/web/public/images/app/asana.png +0 -0
  192. package/src/web/public/images/app/azureai.png +0 -0
  193. package/src/web/public/images/app/bash.png +0 -0
  194. package/src/web/public/images/app/bearnotes.png +0 -0
  195. package/src/web/public/images/app/bitbucket.png +0 -0
  196. package/src/web/public/images/app/claude.png +0 -0
  197. package/src/web/public/images/app/cli.png +0 -0
  198. package/src/web/public/images/app/clickup.png +0 -0
  199. package/src/web/public/images/app/cohere.png +0 -0
  200. package/src/web/public/images/app/confluence.png +0 -0
  201. package/src/web/public/images/app/confluence2.png +0 -0
  202. package/src/web/public/images/app/curl.png +0 -0
  203. package/src/web/public/images/app/curl_mini.png +0 -0
  204. package/src/web/public/images/app/cursor.png +0 -0
  205. package/src/web/public/images/app/db2.png +0 -0
  206. package/src/web/public/images/app/deepseek.png +0 -0
  207. package/src/web/public/images/app/discord.png +0 -0
  208. package/src/web/public/images/app/docker.png +0 -0
  209. package/src/web/public/images/app/dockerhub.png +0 -0
  210. package/src/web/public/images/app/dropbox.png +0 -0
  211. package/src/web/public/images/app/elasticsearch.png +0 -0
  212. package/src/web/public/images/app/facebook.png +0 -0
  213. package/src/web/public/images/app/falai.png +0 -0
  214. package/src/web/public/images/app/fireworks.png +0 -0
  215. package/src/web/public/images/app/gdrive.png +0 -0
  216. package/src/web/public/images/app/gemini.png +0 -0
  217. package/src/web/public/images/app/github.png +0 -0
  218. package/src/web/public/images/app/githubcopilot.png +0 -0
  219. package/src/web/public/images/app/gitlab.png +0 -0
  220. package/src/web/public/images/app/gmail.png +0 -0
  221. package/src/web/public/images/app/googlecalender.png +0 -0
  222. package/src/web/public/images/app/googledocs.png +0 -0
  223. package/src/web/public/images/app/googlesheets.png +0 -0
  224. package/src/web/public/images/app/gradle.png +0 -0
  225. package/src/web/public/images/app/grafana.png +0 -0
  226. package/src/web/public/images/app/graphql.png +0 -0
  227. package/src/web/public/images/app/grok.png +0 -0
  228. package/src/web/public/images/app/groq.png +0 -0
  229. package/src/web/public/images/app/hazelcast.png +0 -0
  230. package/src/web/public/images/app/huggingface.png +0 -0
  231. package/src/web/public/images/app/imessage.png +0 -0
  232. package/src/web/public/images/app/instagram.png +0 -0
  233. package/src/web/public/images/app/intellij.png +0 -0
  234. package/src/web/public/images/app/jenkins.png +0 -0
  235. package/src/web/public/images/app/jira.png +0 -0
  236. package/src/web/public/images/app/kafka.png +0 -0
  237. package/src/web/public/images/app/kubernetes.png +0 -0
  238. package/src/web/public/images/app/linear.png +0 -0
  239. package/src/web/public/images/app/linkedin.png +0 -0
  240. package/src/web/public/images/app/llama.png +0 -0
  241. package/src/web/public/images/app/make.png +0 -0
  242. package/src/web/public/images/app/maven.png +0 -0
  243. package/src/web/public/images/app/mcp.png +0 -0
  244. package/src/web/public/images/app/microsoftteams.png +0 -0
  245. package/src/web/public/images/app/mistral.png +0 -0
  246. package/src/web/public/images/app/monday.png +0 -0
  247. package/src/web/public/images/app/mongodb.png +0 -0
  248. package/src/web/public/images/app/mssql.png +0 -0
  249. package/src/web/public/images/app/mysql.png +0 -0
  250. package/src/web/public/images/app/n8n.png +0 -0
  251. package/src/web/public/images/app/notion.png +0 -0
  252. package/src/web/public/images/app/npm.png +0 -0
  253. package/src/web/public/images/app/nuget.png +0 -0
  254. package/src/web/public/images/app/obsidian.png +0 -0
  255. package/src/web/public/images/app/openai.png +0 -0
  256. package/src/web/public/images/app/openrouter.png +0 -0
  257. package/src/web/public/images/app/opensearch.png +0 -0
  258. package/src/web/public/images/app/openshift.png +0 -0
  259. package/src/web/public/images/app/oracle.png +0 -0
  260. package/src/web/public/images/app/perplexity.png +0 -0
  261. package/src/web/public/images/app/pipedream.png +0 -0
  262. package/src/web/public/images/app/postgresql.png +0 -0
  263. package/src/web/public/images/app/powershell.png +0 -0
  264. package/src/web/public/images/app/prometheus.png +0 -0
  265. package/src/web/public/images/app/reddit.png +0 -0
  266. package/src/web/public/images/app/redis.png +0 -0
  267. package/src/web/public/images/app/rss.png +0 -0
  268. package/src/web/public/images/app/signal.png +0 -0
  269. package/src/web/public/images/app/slack.png +0 -0
  270. package/src/web/public/images/app/soap.png +0 -0
  271. package/src/web/public/images/app/sqlite.png +0 -0
  272. package/src/web/public/images/app/supabase.png +0 -0
  273. package/src/web/public/images/app/telegram.png +0 -0
  274. package/src/web/public/images/app/things3.png +0 -0
  275. package/src/web/public/images/app/threads.png +0 -0
  276. package/src/web/public/images/app/tiktok.png +0 -0
  277. package/src/web/public/images/app/together.png +0 -0
  278. package/src/web/public/images/app/trello.png +0 -0
  279. package/src/web/public/images/app/vscode.png +0 -0
  280. package/src/web/public/images/app/webhook.png +0 -0
  281. package/src/web/public/images/app/webpage.png +0 -0
  282. package/src/web/public/images/app/whatsappbusiness.png +0 -0
  283. package/src/web/public/images/app/windsorf.png +0 -0
  284. package/src/web/public/images/app/x.png +0 -0
  285. package/src/web/public/images/app/youtube.png +0 -0
  286. package/src/web/public/images/app/zapier.png +0 -0
  287. package/src/web/public/images/app/zededitor.png +0 -0
  288. package/src/web/public/images/app/zoom.png +0 -0
  289. package/src/web/public/images/avatar-anon.svg +4 -0
  290. package/src/web/public/images/favicon.png +0 -0
  291. package/src/web/public/images/install/chatgpt-web/step0.png +0 -0
  292. package/src/web/public/images/install/chatgpt-web/step1.png +0 -0
  293. package/src/web/public/images/install/chatgpt-web/step2.png +0 -0
  294. package/src/web/public/images/install/chatgpt-web/step3.png +0 -0
  295. package/src/web/public/images/install/chatgpt-web/step4.png +0 -0
  296. package/src/web/public/images/install/chatgpt-web/step5.png +0 -0
  297. package/src/web/public/images/readme/1-generate-servers.png +0 -0
  298. package/src/web/public/images/readme/2-database-connection.png +0 -0
  299. package/src/web/public/images/readme/2-file-upload.png +0 -0
  300. package/src/web/public/images/readme/3-data-preview.png +0 -0
  301. package/src/web/public/images/readme/4-data-preview2.png +0 -0
  302. package/src/web/public/images/readme/5-server-configuration.png +0 -0
  303. package/src/web/public/images/readme/6-server-generated-modal.png +0 -0
  304. package/src/web/public/images/readme/7-generated-servers.png +0 -0
  305. package/src/web/public/images/readme/8-generated-servers-view-details.png +0 -0
  306. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.23.51.png +0 -0
  307. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.24.59.png +0 -0
  308. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.05.png +0 -0
  309. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.14.png +0 -0
  310. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.21.png +0 -0
  311. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.36.png +0 -0
  312. package/src/web/public/index.html +4685 -488
  313. package/src/web/public/landing.html +1638 -0
  314. package/src/web/public/logger.js +31 -0
  315. package/src/web/public/login.html +372 -0
  316. package/src/web/public/manage-servers.html +121 -188
  317. package/src/web/public/pricing.html +537 -0
  318. package/src/web/public/quick-ask.html +133 -0
  319. package/src/web/public/quickmcp-styles.css +708 -0
  320. package/src/web/public/roles.html +177 -0
  321. package/src/web/public/shared.js +736 -3
  322. package/src/web/public/sidebar.js +414 -0
  323. package/src/web/public/test-servers.html +605 -221
  324. package/src/web/public/users.html +191 -0
  325. package/dist/client/MCPClientUnified.d.ts +0 -31
  326. package/dist/client/MCPClientUnified.d.ts.map +0 -1
  327. package/dist/client/MCPClientUnified.js +0 -275
  328. package/dist/client/MCPClientUnified.js.map +0 -1
  329. package/dist/client/MCPTestRunnerUnified.d.ts +0 -48
  330. package/dist/client/MCPTestRunnerUnified.d.ts.map +0 -1
  331. package/dist/client/MCPTestRunnerUnified.js +0 -183
  332. package/dist/client/MCPTestRunnerUnified.js.map +0 -1
  333. package/dist/database/json-manager.d.ts +0 -55
  334. package/dist/database/json-manager.d.ts.map +0 -1
  335. package/dist/database/json-manager.js +0 -128
  336. package/dist/database/json-manager.js.map +0 -1
  337. package/dist/dynamic-mcp-executor.d.ts.map +0 -1
  338. package/dist/dynamic-mcp-executor.js +0 -274
  339. package/dist/dynamic-mcp-executor.js.map +0 -1
  340. package/dist/generators/MCPServerGenerator-new.d.ts +0 -37
  341. package/dist/generators/MCPServerGenerator-new.d.ts.map +0 -1
  342. package/dist/generators/MCPServerGenerator-new.js +0 -287
  343. package/dist/generators/MCPServerGenerator-new.js.map +0 -1
  344. package/dist/generators/database/sqlite-manager.d.ts +0 -52
  345. package/dist/generators/database/sqlite-manager.js +0 -143
  346. package/dist/generators/generators/MCPServerGenerator.d.ts +0 -37
  347. package/dist/generators/generators/MCPServerGenerator.js +0 -396
  348. package/dist/integrated-mcp-server.d.ts +0 -25
  349. package/dist/integrated-mcp-server.d.ts.map +0 -1
  350. package/dist/integrated-mcp-server.js +0 -541
  351. package/dist/integrated-mcp-server.js.map +0 -1
  352. package/dist/mcp-inspector-server.d.ts +0 -3
  353. package/dist/mcp-inspector-server.d.ts.map +0 -1
  354. package/dist/mcp-inspector-server.js +0 -119
  355. package/dist/mcp-inspector-server.js.map +0 -1
  356. package/dist/mcp-sdk-server.d.ts +0 -3
  357. package/dist/mcp-sdk-server.d.ts.map +0 -1
  358. package/dist/mcp-sdk-server.js +0 -90
  359. package/dist/mcp-sdk-server.js.map +0 -1
  360. package/dist/mcp-server.d.ts +0 -3
  361. package/dist/mcp-server.d.ts.map +0 -1
  362. package/dist/mcp-server.js +0 -300
  363. package/dist/mcp-server.js.map +0 -1
  364. package/dist/parsers/parsers/ExcelParser.js +0 -118
  365. package/dist/quickmcp-unified-bridge.d.ts +0 -13
  366. package/dist/quickmcp-unified-bridge.d.ts.map +0 -1
  367. package/dist/quickmcp-unified-bridge.js +0 -176
  368. package/dist/quickmcp-unified-bridge.js.map +0 -1
  369. package/dist/sqlite-manager.js +0 -145
  370. package/dist/test-app.d.ts +0 -2
  371. package/dist/test-app.d.ts.map +0 -1
  372. package/dist/test-app.js +0 -119
  373. package/dist/test-app.js.map +0 -1
  374. package/dist/transport/base-transport.d.ts +0 -21
  375. package/dist/transport/base-transport.d.ts.map +0 -1
  376. package/dist/transport/base-transport.js +0 -16
  377. package/dist/transport/base-transport.js.map +0 -1
  378. package/dist/transport/index.d.ts +0 -10
  379. package/dist/transport/index.d.ts.map +0 -1
  380. package/dist/transport/index.js +0 -12
  381. package/dist/transport/index.js.map +0 -1
  382. package/dist/transport/sse-transport.d.ts +0 -13
  383. package/dist/transport/sse-transport.d.ts.map +0 -1
  384. package/dist/transport/sse-transport.js +0 -106
  385. package/dist/transport/sse-transport.js.map +0 -1
  386. package/dist/transport/stdio-transport.d.ts +0 -8
  387. package/dist/transport/stdio-transport.d.ts.map +0 -1
  388. package/dist/transport/stdio-transport.js +0 -53
  389. package/dist/transport/stdio-transport.js.map +0 -1
  390. package/dist/transport/streamable-http-transport.d.ts +0 -15
  391. package/dist/transport/streamable-http-transport.d.ts.map +0 -1
  392. package/dist/transport/streamable-http-transport.js +0 -151
  393. package/dist/transport/streamable-http-transport.js.map +0 -1
  394. package/dist/web/client/MCPClient.js +0 -348
  395. package/dist/web/client/MCPTestRunner.js +0 -317
  396. package/dist/web/database/json-manager.js +0 -124
  397. package/dist/web/database/sqlite-manager.js +0 -146
  398. package/dist/web/dynamic-mcp-executor.js +0 -443
  399. package/dist/web/generators/MCPServerGenerator-new.js +0 -284
  400. package/dist/web/generators/MCPServerGenerator.js +0 -566
  401. package/dist/web/integrated-mcp-server-new.js +0 -394
  402. package/dist/web/parsers/CsvParser.js +0 -144
  403. package/dist/web/parsers/DatabaseParser.js +0 -637
  404. package/dist/web/parsers/ExcelParser.js +0 -180
  405. package/dist/web/parsers/index.js +0 -152
  406. package/dist/web/server.d.ts.map +0 -1
  407. package/dist/web/server.js +0 -790
  408. package/dist/web/server.js.map +0 -1
  409. package/dist/web/types/index.js +0 -2
  410. package/dist/web/web/server.js +0 -860
  411. package/src/web/public/modern-styles.css +0 -946
  412. package/src/web/public/shared-styles.css +0 -2091
  413. /package/src/web/public/images/{1-claude-quickmcp-stdio.png → readme/1-claude-quickmcp-stdio.png} +0 -0
  414. /package/src/web/public/images/{2-claude-tools.png → readme/2-claude-tools.png} +0 -0
  415. /package/src/web/public/images/{3-claude-developer-settings.png → readme/3-claude-developer-settings.png} +0 -0
  416. /package/src/web/public/images/{4-claude-config.png → readme/4-claude-config.png} +0 -0
  417. /package/src/web/public/images/{5-claude-config-edit.png → readme/5-claude-config-edit.png} +0 -0
@@ -1,2091 +0,0 @@
1
- * {
2
- margin: 0;
3
- padding: 0;
4
- box-sizing: border-box;
5
- }
6
-
7
- body {
8
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
9
- background: #f8fafc;
10
- min-height: 100vh;
11
- color: #1a202c;
12
- margin: 0;
13
- overflow-x: hidden;
14
- }
15
-
16
- /* Sidebar Styles */
17
- .sidebar {
18
- position: fixed;
19
- left: 0;
20
- top: 0;
21
- width: 280px;
22
- height: 100vh;
23
- background: #1a202c;
24
- transform: translateX(-100%);
25
- transition: transform 0.3s ease;
26
- z-index: 1000;
27
- box-shadow: 4px 0 20px rgba(0, 0, 0, 0.1);
28
- }
29
-
30
- .sidebar.open {
31
- transform: translateX(0);
32
- }
33
-
34
- .sidebar-header {
35
- padding: 24px;
36
- border-bottom: 1px solid #2d3748;
37
- display: flex;
38
- align-items: center;
39
- gap: 12px;
40
- }
41
-
42
- .sidebar-logo {
43
- width: 40px;
44
- height: 40px;
45
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
46
- border-radius: 8px;
47
- display: flex;
48
- align-items: center;
49
- justify-content: center;
50
- color: white;
51
- font-weight: bold;
52
- font-size: 18px;
53
- }
54
-
55
- .sidebar-title {
56
- color: white;
57
- font-size: 20px;
58
- font-weight: 600;
59
- }
60
-
61
- .sidebar-nav {
62
- padding: 16px 0;
63
- }
64
-
65
- .sidebar-nav-item {
66
- display: flex;
67
- align-items: center;
68
- gap: 12px;
69
- padding: 12px 24px;
70
- color: #a0aec0;
71
- text-decoration: none;
72
- transition: all 0.2s;
73
- cursor: pointer;
74
- border: none;
75
- background: none;
76
- width: 100%;
77
- text-align: left;
78
- }
79
-
80
- .sidebar-nav-item:hover {
81
- background: #2d3748;
82
- color: white;
83
- }
84
-
85
- .sidebar-nav-item.active {
86
- background: #667eea;
87
- color: white;
88
- }
89
-
90
- .sidebar-nav-item .icon {
91
- width: 20px;
92
- height: 20px;
93
- display: flex;
94
- align-items: center;
95
- justify-content: center;
96
- }
97
-
98
- /* Main Content Styles */
99
- .main-layout {
100
- display: flex;
101
- min-height: 100vh;
102
- }
103
-
104
- .main-content {
105
- flex: 1;
106
- transition: margin-left 0.3s ease;
107
- min-height: 100vh;
108
- }
109
-
110
- .topbar {
111
- background: white;
112
- padding: 16px 24px;
113
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
114
- display: flex;
115
- align-items: center;
116
- gap: 16px;
117
- position: sticky;
118
- top: 0;
119
- z-index: 100;
120
- }
121
-
122
- .hamburger {
123
- display: flex;
124
- flex-direction: column;
125
- gap: 3px;
126
- padding: 8px;
127
- cursor: pointer;
128
- border: none;
129
- background: none;
130
- border-radius: 4px;
131
- transition: background 0.2s;
132
- }
133
-
134
- .hamburger:hover {
135
- background: #f7fafc;
136
- }
137
-
138
- .hamburger span {
139
- width: 20px;
140
- height: 2px;
141
- background: #4a5568;
142
- transition: all 0.2s;
143
- }
144
-
145
- .hamburger.active span:nth-child(1) {
146
- transform: rotate(45deg) translate(5px, 5px);
147
- }
148
-
149
- .hamburger.active span:nth-child(2) {
150
- opacity: 0;
151
- }
152
-
153
- .hamburger.active span:nth-child(3) {
154
- transform: rotate(-45deg) translate(7px, -6px);
155
- }
156
-
157
- .topbar-title {
158
- font-size: 24px;
159
- font-weight: 600;
160
- color: #1a202c;
161
- }
162
-
163
- .topbar-subtitle {
164
- color: #718096;
165
- margin-left: 8px;
166
- }
167
-
168
- .container {
169
- max-width: 1200px;
170
- margin: 0 auto;
171
- padding: 24px;
172
- }
173
-
174
- .sidebar-overlay {
175
- position: fixed;
176
- top: 0;
177
- left: 0;
178
- width: 100%;
179
- height: 100%;
180
- background: rgba(0, 0, 0, 0.5);
181
- z-index: 999;
182
- opacity: 0;
183
- visibility: hidden;
184
- transition: all 0.3s ease;
185
- }
186
-
187
- .sidebar-overlay.show {
188
- opacity: 1;
189
- visibility: visible;
190
- }
191
-
192
- .card {
193
- background: white;
194
- border-radius: 16px;
195
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
196
- border: 1px solid #e2e8f0;
197
- overflow: hidden;
198
- }
199
-
200
- .card-header {
201
- padding: 32px 32px 0 32px;
202
- }
203
-
204
- .card-content {
205
- padding: 32px;
206
- }
207
-
208
- .section-title {
209
- font-size: 28px;
210
- font-weight: 700;
211
- color: #1a202c;
212
- margin-bottom: 8px;
213
- }
214
-
215
- .section-subtitle {
216
- color: #718096;
217
- font-size: 16px;
218
- margin-bottom: 32px;
219
- }
220
-
221
- .tabs {
222
- display: flex;
223
- background: #f5f5f5;
224
- border-radius: 8px;
225
- padding: 4px;
226
- margin-bottom: 20px;
227
- }
228
-
229
- .tab {
230
- flex: 1;
231
- padding: 12px 20px;
232
- text-align: center;
233
- border-radius: 6px;
234
- cursor: pointer;
235
- transition: all 0.2s;
236
- font-weight: 500;
237
- }
238
-
239
- .tab.active {
240
- background: white;
241
- color: #667eea;
242
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
243
- }
244
-
245
- .tab-content {
246
- display: none;
247
- }
248
-
249
- .tab-content.active {
250
- display: block;
251
- }
252
-
253
- .form-group {
254
- margin-bottom: 20px;
255
- }
256
-
257
- .form-group label {
258
- display: block;
259
- font-weight: 500;
260
- margin-bottom: 8px;
261
- color: #555;
262
- }
263
-
264
- .form-group input,
265
- .form-group select,
266
- .form-group textarea {
267
- width: 100%;
268
- padding: 12px;
269
- border: 2px solid #e1e1e1;
270
- border-radius: 6px;
271
- font-size: 14px;
272
- transition: border-color 0.2s;
273
- }
274
-
275
- .form-group input:focus,
276
- .form-group select:focus,
277
- .form-group textarea:focus {
278
- outline: none;
279
- border-color: #667eea;
280
- }
281
-
282
- .btn {
283
- padding: 12px 24px;
284
- border: none;
285
- border-radius: 6px;
286
- cursor: pointer;
287
- font-weight: 500;
288
- transition: all 0.2s;
289
- text-decoration: none;
290
- display: inline-block;
291
- text-align: center;
292
- }
293
-
294
- .btn-primary {
295
- background: #667eea;
296
- color: white;
297
- }
298
-
299
- .btn-primary:hover {
300
- background: #5a67d8;
301
- transform: translateY(-1px);
302
- }
303
-
304
- .btn-secondary {
305
- background: #e2e8f0;
306
- color: #4a5568;
307
- }
308
-
309
- .btn-secondary:hover {
310
- background: #cbd5e0;
311
- }
312
-
313
- .btn-danger {
314
- background: #e53e3e;
315
- color: white;
316
- }
317
-
318
- .btn-danger:hover {
319
- background: #c53030;
320
- }
321
-
322
- .btn-compact {
323
- padding: 8px 16px;
324
- font-size: 14px;
325
- border-radius: 8px;
326
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
327
- color: white;
328
- border: none;
329
- cursor: pointer;
330
- font-weight: 600;
331
- transition: all 0.3s ease;
332
- text-decoration: none;
333
- display: inline-flex;
334
- align-items: center;
335
- gap: 6px;
336
- box-shadow: 0 2px 8px rgba(102, 126, 234, 0.3);
337
- }
338
-
339
- .btn-compact:hover {
340
- transform: translateY(-2px);
341
- box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
342
- background: linear-gradient(135deg, #5a67d8 0%, #6b46c1 100%);
343
- }
344
-
345
- .btn-compact span {
346
- font-size: 16px;
347
- }
348
-
349
- /* Modern Responsive Improvements */
350
-
351
- /* Enhanced Container System */
352
- .container {
353
- max-width: 1200px;
354
- margin: 0 auto;
355
- padding: 0 20px;
356
- }
357
-
358
- /* Improved Grid System */
359
- .grid {
360
- display: grid;
361
- gap: 24px;
362
- }
363
-
364
- .grid-2 {
365
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
366
- }
367
-
368
- .grid-3 {
369
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
370
- }
371
-
372
- .grid-4 {
373
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
374
- }
375
-
376
- /* Modern Card Enhancements */
377
- .card {
378
- background: #ffffff;
379
- border-radius: 16px;
380
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
381
- transition: transform 0.2s ease, box-shadow 0.2s ease;
382
- border: 1px solid rgba(226, 232, 240, 0.8);
383
- overflow: hidden;
384
- }
385
-
386
- .card:hover {
387
- transform: translateY(-2px);
388
- box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
389
- }
390
-
391
- /* Enhanced Server Cards */
392
- .server-card {
393
- background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
394
- border: 1px solid #e2e8f0;
395
- border-radius: 12px;
396
- padding: 24px;
397
- transition: all 0.3s ease;
398
- position: relative;
399
- overflow: hidden;
400
- }
401
-
402
- .server-card::before {
403
- content: '';
404
- position: absolute;
405
- top: 0;
406
- left: 0;
407
- right: 0;
408
- height: 4px;
409
- background: linear-gradient(90deg, #667eea 0%, #764ba2 100%);
410
- transform: scaleX(0);
411
- transition: transform 0.3s ease;
412
- }
413
-
414
- .server-card:hover::before {
415
- transform: scaleX(1);
416
- }
417
-
418
- .server-card:hover {
419
- transform: translateY(-4px);
420
- box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
421
- border-color: #cbd5e0;
422
- }
423
-
424
- /* Server Stats Enhancement */
425
- .server-stats {
426
- display: flex;
427
- flex-wrap: wrap;
428
- gap: 12px;
429
- margin: 16px 0;
430
- }
431
-
432
- .server-stats span {
433
- background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
434
- color: #4a5568;
435
- padding: 6px 12px;
436
- border-radius: 20px;
437
- font-size: 12px;
438
- font-weight: 600;
439
- border: 1px solid #e2e8f0;
440
- transition: all 0.2s ease;
441
- }
442
-
443
- .server-stats span:hover {
444
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
445
- color: white;
446
- transform: scale(1.05);
447
- }
448
-
449
- /* Enhanced Form Elements */
450
- .form-group {
451
- margin-bottom: 24px;
452
- }
453
-
454
- .form-label {
455
- display: block;
456
- margin-bottom: 8px;
457
- font-weight: 600;
458
- color: #374151;
459
- font-size: 14px;
460
- }
461
-
462
- .form-input, .form-select, .form-textarea {
463
- width: 100%;
464
- padding: 12px 16px;
465
- border: 2px solid #e5e7eb;
466
- border-radius: 8px;
467
- font-size: 14px;
468
- transition: all 0.2s ease;
469
- background: #ffffff;
470
- }
471
-
472
- .form-input:focus, .form-select:focus, .form-textarea:focus {
473
- outline: none;
474
- border-color: #667eea;
475
- box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
476
- transform: translateY(-1px);
477
- }
478
-
479
- /* Modern Tab System */
480
- .tab-nav {
481
- display: flex;
482
- background: #f8fafc;
483
- border-radius: 12px;
484
- padding: 4px;
485
- margin-bottom: 24px;
486
- overflow-x: auto;
487
- }
488
-
489
- .tab-button {
490
- flex: 1;
491
- min-width: max-content;
492
- padding: 12px 24px;
493
- border: none;
494
- background: transparent;
495
- color: #6b7280;
496
- font-weight: 500;
497
- border-radius: 8px;
498
- cursor: pointer;
499
- transition: all 0.2s ease;
500
- white-space: nowrap;
501
- }
502
-
503
- .tab-button.active {
504
- background: #ffffff;
505
- color: #1f2937;
506
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
507
- font-weight: 600;
508
- }
509
-
510
- .tab-button:hover:not(.active) {
511
- background: rgba(255, 255, 255, 0.6);
512
- color: #374151;
513
- }
514
-
515
- /* Enhanced Loading States */
516
- .loading-container {
517
- display: flex;
518
- align-items: center;
519
- justify-content: center;
520
- padding: 48px;
521
- flex-direction: column;
522
- gap: 16px;
523
- }
524
-
525
- .loading-spinner {
526
- width: 40px;
527
- height: 40px;
528
- border: 3px solid #e5e7eb;
529
- border-top: 3px solid #667eea;
530
- border-radius: 50%;
531
- animation: spin 1s linear infinite;
532
- }
533
-
534
- @keyframes spin {
535
- 0% { transform: rotate(0deg); }
536
- 100% { transform: rotate(360deg); }
537
- }
538
-
539
- /* Status Indicators */
540
- .status-badge {
541
- display: inline-flex;
542
- align-items: center;
543
- gap: 6px;
544
- padding: 4px 12px;
545
- border-radius: 20px;
546
- font-size: 12px;
547
- font-weight: 600;
548
- text-transform: uppercase;
549
- letter-spacing: 0.5px;
550
- }
551
-
552
- .status-badge.success {
553
- background: #d1fae5;
554
- color: #065f46;
555
- border: 1px solid #a7f3d0;
556
- }
557
-
558
- .status-badge.error {
559
- background: #fee2e2;
560
- color: #991b1b;
561
- border: 1px solid #fca5a5;
562
- }
563
-
564
- .status-badge.warning {
565
- background: #fef3c7;
566
- color: #92400e;
567
- border: 1px solid #fcd34d;
568
- }
569
-
570
- .status-badge.info {
571
- background: #dbeafe;
572
- color: #1e40af;
573
- border: 1px solid #93c5fd;
574
- }
575
-
576
- .file-upload {
577
- border: 2px dashed #e1e1e1;
578
- border-radius: 6px;
579
- padding: 40px 20px;
580
- text-align: center;
581
- cursor: pointer;
582
- transition: all 0.2s;
583
- }
584
-
585
- .file-upload:hover {
586
- border-color: #667eea;
587
- background: #f7fafc;
588
- }
589
-
590
- .file-upload.dragover {
591
- border-color: #667eea;
592
- background: #ebf4ff;
593
- }
594
-
595
- .data-preview {
596
- background: #f7fafc;
597
- border-radius: 6px;
598
- padding: 15px;
599
- margin: 15px 0;
600
- max-height: 300px;
601
- overflow: auto;
602
- }
603
-
604
- .data-preview table {
605
- width: 100%;
606
- border-collapse: collapse;
607
- }
608
-
609
- .data-preview th,
610
- .data-preview td {
611
- padding: 8px;
612
- border: 1px solid #e1e1e1;
613
- text-align: left;
614
- }
615
-
616
- .data-preview th {
617
- background: #e2e8f0;
618
- font-weight: 500;
619
- }
620
-
621
- .server-list {
622
- display: block;
623
- gap: 20px;
624
- }
625
-
626
- .server-list.has-servers {
627
- display: grid;
628
- }
629
-
630
- .server-card {
631
- background: #f7fafc;
632
- border-radius: 8px;
633
- padding: 20px;
634
- border: 1px solid #e1e1e1;
635
- }
636
-
637
- .server-card h3 {
638
- margin-bottom: 10px;
639
- color: #2d3748;
640
- }
641
-
642
- .server-stats {
643
- display: flex;
644
- gap: 20px;
645
- margin: 10px 0;
646
- font-size: 14px;
647
- color: #718096;
648
- }
649
-
650
- .server-actions {
651
- display: flex;
652
- gap: 10px;
653
- margin-top: 15px;
654
- }
655
-
656
- .test-results {
657
- background: #f7fafc;
658
- border-radius: 6px;
659
- padding: 15px;
660
- margin: 15px 0;
661
- max-height: 400px;
662
- overflow: auto;
663
- font-family: 'Monaco', 'Consolas', monospace;
664
- font-size: 12px;
665
- white-space: pre-wrap;
666
- }
667
-
668
- .loading {
669
- display: none;
670
- text-align: center;
671
- padding: 20px;
672
- }
673
-
674
- .loading.show {
675
- display: block;
676
- }
677
-
678
- .error {
679
- background: #fed7d7;
680
- color: #c53030;
681
- padding: 12px;
682
- border-radius: 6px;
683
- margin: 10px 0;
684
- display: none;
685
- }
686
-
687
- .error.show {
688
- display: block;
689
- }
690
-
691
- .success {
692
- background: #c6f6d5;
693
- color: #2f855a;
694
- padding: 12px;
695
- border-radius: 6px;
696
- margin: 10px 0;
697
- display: none;
698
- }
699
-
700
- .success.show {
701
- display: block;
702
- }
703
-
704
- .hidden {
705
- display: none !important;
706
- }
707
-
708
- /* Modal Styles */
709
- .modal {
710
- position: fixed;
711
- top: 0;
712
- left: 0;
713
- width: 100%;
714
- height: 100%;
715
- z-index: 2000;
716
- display: flex;
717
- align-items: center;
718
- justify-content: center;
719
- padding: 20px;
720
- box-sizing: border-box;
721
- }
722
-
723
- .modal-overlay {
724
- position: absolute;
725
- top: 0;
726
- left: 0;
727
- width: 100%;
728
- height: 100%;
729
- background: rgba(0, 0, 0, 0.5);
730
- z-index: 2001;
731
- }
732
-
733
- .modal-content {
734
- background: white;
735
- border-radius: 12px;
736
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
737
- z-index: 2002;
738
- position: relative;
739
- max-width: 90vw;
740
- max-height: 90vh;
741
- overflow: hidden;
742
- display: flex;
743
- flex-direction: column;
744
- min-width: 600px;
745
- margin: auto;
746
- width: fit-content;
747
- }
748
-
749
- .modal-header {
750
- padding: 20px 24px;
751
- border-bottom: 1px solid #e2e8f0;
752
- display: flex;
753
- align-items: center;
754
- justify-content: space-between;
755
- background: #f8fafc;
756
- }
757
-
758
- .modal-header h2 {
759
- margin: 0;
760
- font-size: 20px;
761
- font-weight: 600;
762
- color: #1a202c;
763
- }
764
-
765
- .modal-close {
766
- background: none;
767
- border: none;
768
- font-size: 24px;
769
- cursor: pointer;
770
- color: #718096;
771
- padding: 0;
772
- width: 32px;
773
- height: 32px;
774
- display: flex;
775
- align-items: center;
776
- justify-content: center;
777
- border-radius: 4px;
778
- transition: all 0.2s;
779
- }
780
-
781
- .modal-close:hover {
782
- background: #e2e8f0;
783
- color: #4a5568;
784
- }
785
-
786
- .modal-body {
787
- padding: 24px;
788
- overflow-y: auto;
789
- flex: 1;
790
- }
791
-
792
- .server-info .info-section {
793
- margin-bottom: 32px;
794
- }
795
-
796
- .server-info .info-section h3 {
797
- font-size: 18px;
798
- font-weight: 600;
799
- color: #1a202c;
800
- margin-bottom: 16px;
801
- padding-bottom: 8px;
802
- border-bottom: 2px solid #667eea;
803
- }
804
-
805
- .server-info .info-grid {
806
- display: grid;
807
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
808
- gap: 12px;
809
- margin-bottom: 16px;
810
- }
811
-
812
- .server-info .info-grid > div {
813
- padding: 12px;
814
- background: #f7fafc;
815
- border-radius: 6px;
816
- border-left: 4px solid #667eea;
817
- }
818
-
819
- .data-table {
820
- margin-bottom: 24px;
821
- }
822
-
823
- .data-table h4 {
824
- font-size: 16px;
825
- font-weight: 600;
826
- color: #2d3748;
827
- margin-bottom: 12px;
828
- }
829
-
830
- .how-to-use .section {
831
- margin-bottom: 32px;
832
- }
833
-
834
- .how-to-use .section h3 {
835
- font-size: 18px;
836
- font-weight: 600;
837
- color: #1a202c;
838
- margin-bottom: 16px;
839
- }
840
-
841
- .code-block {
842
- background: #2d3748;
843
- border-radius: 8px;
844
- overflow: hidden;
845
- margin: 16px 0;
846
- }
847
-
848
- .code-block pre {
849
- margin: 0;
850
- padding: 16px;
851
- color: #e2e8f0;
852
- font-family: 'Monaco', 'Consolas', 'Liberation Mono', monospace;
853
- font-size: 14px;
854
- line-height: 1.5;
855
- overflow-x: auto;
856
- }
857
-
858
- .how-to-use ul {
859
- margin: 16px 0;
860
- padding-left: 20px;
861
- }
862
-
863
- .how-to-use li {
864
- margin-bottom: 8px;
865
- }
866
-
867
- /* Capabilities Styles */
868
- .capabilities-list {
869
- margin-top: 16px;
870
- }
871
-
872
- .capability-item {
873
- background: #f8fafc;
874
- border: 1px solid #e2e8f0;
875
- border-radius: 8px;
876
- padding: 16px;
877
- margin-bottom: 16px;
878
- }
879
-
880
- .capability-header {
881
- display: flex;
882
- align-items: center;
883
- justify-content: space-between;
884
- margin-bottom: 8px;
885
- }
886
-
887
- .capability-type {
888
- background: #667eea;
889
- color: white;
890
- padding: 2px 8px;
891
- border-radius: 12px;
892
- font-size: 12px;
893
- font-weight: 500;
894
- }
895
-
896
- .capability-description {
897
- color: #4a5568;
898
- margin-bottom: 12px;
899
- line-height: 1.5;
900
- }
901
-
902
- .capability-details {
903
- background: white;
904
- border-radius: 4px;
905
- padding: 12px;
906
- border-left: 3px solid #667eea;
907
- }
908
-
909
- .json-schema, .prompt-template {
910
- background: #2d3748;
911
- color: #e2e8f0;
912
- padding: 12px;
913
- border-radius: 4px;
914
- font-size: 12px;
915
- line-height: 1.4;
916
- overflow-x: auto;
917
- margin: 8px 0 0 0;
918
- }
919
-
920
- .arguments-list {
921
- margin: 8px 0 0 0;
922
- padding-left: 20px;
923
- }
924
-
925
- .arguments-list li {
926
- margin-bottom: 4px;
927
- }
928
-
929
- /* Collapsible Panels */
930
- .collapsible-panel {
931
- border: 1px solid #e2e8f0;
932
- border-radius: 8px;
933
- margin-bottom: 12px;
934
- overflow: hidden;
935
- }
936
-
937
- .collapsible-header {
938
- background: #f8fafc;
939
- padding: 12px 16px;
940
- cursor: pointer;
941
- display: flex;
942
- align-items: center;
943
- justify-content: space-between;
944
- transition: background-color 0.2s;
945
- user-select: none;
946
- }
947
-
948
- .collapsible-header:hover {
949
- background: #edf2f7;
950
- }
951
-
952
- .collapsible-header.active {
953
- background: #e6fffa;
954
- border-bottom: 1px solid #e2e8f0;
955
- }
956
-
957
- .collapsible-title {
958
- display: flex;
959
- flex-direction: column;
960
- gap: 4px;
961
- }
962
-
963
- .table-info {
964
- font-size: 12px;
965
- color: #718096;
966
- font-weight: normal;
967
- }
968
-
969
- .collapsible-toggle {
970
- font-size: 14px;
971
- color: #4a5568;
972
- transition: transform 0.2s;
973
- }
974
-
975
- .collapsible-header.active .collapsible-toggle {
976
- transform: rotate(180deg);
977
- }
978
-
979
- .collapsible-content {
980
- display: none;
981
- padding: 16px;
982
- background: white;
983
- }
984
-
985
- .column-type {
986
- font-size: 11px;
987
- color: #718096;
988
- font-weight: normal;
989
- }
990
-
991
- .more-rows {
992
- background: #f7fafc;
993
- font-style: italic;
994
- color: #718096;
995
- }
996
-
997
- .more-rows td {
998
- text-align: center;
999
- padding: 12px;
1000
- }
1001
-
1002
- /* Delete Modal Styles */
1003
- .delete-modal {
1004
- max-width: 500px;
1005
- width: 500px;
1006
- }
1007
-
1008
- .delete-warning {
1009
- display: flex;
1010
- gap: 16px;
1011
- padding: 20px;
1012
- background: #fef2f2;
1013
- border-radius: 8px;
1014
- border: 1px solid #fecaca;
1015
- margin-bottom: 24px;
1016
- }
1017
-
1018
- .warning-icon {
1019
- font-size: 24px;
1020
- flex-shrink: 0;
1021
- }
1022
-
1023
- .warning-content h3 {
1024
- margin: 0 0 8px 0;
1025
- color: #dc2626;
1026
- font-size: 18px;
1027
- font-weight: 600;
1028
- }
1029
-
1030
- .server-name-to-delete {
1031
- font-weight: 600;
1032
- color: #1f2937;
1033
- background: #f3f4f6;
1034
- padding: 4px 8px;
1035
- border-radius: 4px;
1036
- margin: 8px 0;
1037
- font-family: 'Monaco', 'Consolas', monospace;
1038
- }
1039
-
1040
- .warning-text {
1041
- color: #6b7280;
1042
- margin: 0;
1043
- font-size: 14px;
1044
- line-height: 1.5;
1045
- }
1046
-
1047
- .delete-actions {
1048
- display: flex;
1049
- justify-content: flex-end;
1050
- gap: 12px;
1051
- }
1052
-
1053
- .delete-actions .btn {
1054
- min-width: 120px;
1055
- }
1056
-
1057
- .btn:disabled {
1058
- opacity: 0.6;
1059
- cursor: not-allowed;
1060
- }
1061
-
1062
- .btn-loading {
1063
- display: inline-flex;
1064
- align-items: center;
1065
- gap: 8px;
1066
- }
1067
-
1068
- .btn-loading:before {
1069
- content: '';
1070
- width: 16px;
1071
- height: 16px;
1072
- border: 2px solid transparent;
1073
- border-top: 2px solid currentColor;
1074
- border-radius: 50%;
1075
- animation: spin 1s linear infinite;
1076
- }
1077
-
1078
- @keyframes spin {
1079
- to { transform: rotate(360deg); }
1080
- }
1081
-
1082
- /* Success Modal Styles */
1083
- .success-modal {
1084
- max-width: 400px;
1085
- width: 400px;
1086
- }
1087
-
1088
- .success-content {
1089
- display: flex;
1090
- flex-direction: column;
1091
- align-items: center;
1092
- text-align: center;
1093
- padding: 20px;
1094
- }
1095
-
1096
- .success-icon {
1097
- font-size: 48px;
1098
- margin-bottom: 16px;
1099
- }
1100
-
1101
- .success-message {
1102
- margin-bottom: 24px;
1103
- }
1104
-
1105
- .success-message p {
1106
- margin: 0;
1107
- color: #374151;
1108
- font-size: 16px;
1109
- line-height: 1.5;
1110
- }
1111
-
1112
- .success-actions {
1113
- display: flex;
1114
- justify-content: center;
1115
- }
1116
-
1117
- .success-actions .btn {
1118
- min-width: 100px;
1119
- }
1120
-
1121
- /* Error Modal Styles (reuses success modal structure) */
1122
- .error-modal .modal-header {
1123
- background: #fef2f2;
1124
- border-bottom: 1px solid #fecaca;
1125
- }
1126
-
1127
- .error-modal .modal-header h2 {
1128
- color: #dc2626;
1129
- }
1130
-
1131
- .error-modal .success-message p {
1132
- color: #dc2626;
1133
- }
1134
-
1135
- /* Server Details Modal Styles */
1136
- .server-details {
1137
- display: flex;
1138
- flex-direction: column;
1139
- gap: 24px;
1140
- }
1141
-
1142
- .detail-section {
1143
- background: #f8fafc;
1144
- border-radius: 8px;
1145
- padding: 20px;
1146
- border: 1px solid #e2e8f0;
1147
- }
1148
-
1149
- .detail-section h3 {
1150
- margin: 0 0 16px 0;
1151
- font-size: 18px;
1152
- font-weight: 600;
1153
- color: #1a202c;
1154
- border-bottom: 2px solid #667eea;
1155
- padding-bottom: 8px;
1156
- }
1157
-
1158
- .detail-item {
1159
- background: white;
1160
- border-radius: 6px;
1161
- padding: 16px;
1162
- margin-bottom: 12px;
1163
- border: 1px solid #e2e8f0;
1164
- }
1165
-
1166
- .detail-item strong {
1167
- display: block;
1168
- font-size: 16px;
1169
- font-weight: 600;
1170
- color: #2d3748;
1171
- margin-bottom: 8px;
1172
- }
1173
-
1174
- .detail-item p {
1175
- margin: 0 0 8px 0;
1176
- color: #4a5568;
1177
- line-height: 1.5;
1178
- }
1179
-
1180
- .detail-item small {
1181
- color: #718096;
1182
- font-size: 12px;
1183
- font-family: 'Monaco', 'Consolas', monospace;
1184
- background: #edf2f7;
1185
- padding: 2px 6px;
1186
- border-radius: 4px;
1187
- }
1188
-
1189
- .data-preview-table {
1190
- width: 100%;
1191
- border-collapse: collapse;
1192
- margin-top: 12px;
1193
- font-size: 14px;
1194
- }
1195
-
1196
- .data-preview-table th {
1197
- background: #667eea;
1198
- color: white;
1199
- padding: 12px 8px;
1200
- text-align: left;
1201
- font-weight: 500;
1202
- }
1203
-
1204
- .data-preview-table td {
1205
- padding: 8px;
1206
- border-bottom: 1px solid #e2e8f0;
1207
- }
1208
-
1209
- .data-preview-table tr:nth-child(even) {
1210
- background: #f7fafc;
1211
- }
1212
-
1213
- .table-container {
1214
- overflow-x: auto;
1215
- margin-top: 12px;
1216
- border: 1px solid #e2e8f0;
1217
- border-radius: 6px;
1218
- }
1219
-
1220
- .data-table h4 {
1221
- margin: 0 0 8px 0;
1222
- font-size: 16px;
1223
- font-weight: 600;
1224
- color: #2d3748;
1225
- }
1226
-
1227
- .data-table p {
1228
- margin: 0 0 12px 0;
1229
- color: #718096;
1230
- font-size: 14px;
1231
- }
1232
-
1233
- /* How to Use Page Styles */
1234
- .method-selector {
1235
- display: grid;
1236
- grid-template-columns: 1fr 1fr;
1237
- gap: 20px;
1238
- margin: 20px 0;
1239
- }
1240
-
1241
- .method-btn {
1242
- background: #f8fafc;
1243
- border: 2px solid #e2e8f0;
1244
- border-radius: 12px;
1245
- padding: 24px;
1246
- cursor: pointer;
1247
- transition: all 0.3s;
1248
- display: flex;
1249
- align-items: center;
1250
- gap: 16px;
1251
- text-align: left;
1252
- }
1253
-
1254
- .method-btn:hover {
1255
- border-color: #667eea;
1256
- background: #f7fafc;
1257
- transform: translateY(-2px);
1258
- box-shadow: 0 4px 12px rgba(102, 126, 234, 0.1);
1259
- }
1260
-
1261
- .method-btn.active {
1262
- border-color: #667eea;
1263
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
1264
- color: white;
1265
- transform: translateY(-2px);
1266
- box-shadow: 0 8px 25px rgba(102, 126, 234, 0.3);
1267
- }
1268
-
1269
- .method-icon {
1270
- font-size: 32px;
1271
- flex-shrink: 0;
1272
- }
1273
-
1274
- .method-info h3 {
1275
- margin: 0 0 8px 0;
1276
- font-size: 18px;
1277
- font-weight: 600;
1278
- }
1279
-
1280
- .method-info p {
1281
- margin: 0;
1282
- opacity: 0.8;
1283
- font-size: 14px;
1284
- }
1285
-
1286
- .method-content {
1287
- animation: fadeIn 0.3s ease;
1288
- }
1289
-
1290
- @keyframes fadeIn {
1291
- from { opacity: 0; transform: translateY(10px); }
1292
- to { opacity: 1; transform: translateY(0); }
1293
- }
1294
-
1295
- .how-to-section {
1296
- margin: 32px 0;
1297
- }
1298
-
1299
- .how-to-section h3 {
1300
- margin: 0 0 16px 0;
1301
- font-size: 20px;
1302
- font-weight: 600;
1303
- color: #1a202c;
1304
- }
1305
-
1306
- .advantage-list {
1307
- list-style: none;
1308
- padding: 0;
1309
- margin: 16px 0;
1310
- }
1311
-
1312
- .advantage-list li {
1313
- background: #f0fff4;
1314
- border-left: 4px solid #10b981;
1315
- padding: 12px 16px;
1316
- margin-bottom: 8px;
1317
- border-radius: 0 6px 6px 0;
1318
- }
1319
-
1320
- .advantage-list li:before {
1321
- content: '✅ ';
1322
- margin-right: 8px;
1323
- }
1324
-
1325
- .setup-steps {
1326
- margin: 24px 0;
1327
- }
1328
-
1329
- .step {
1330
- display: flex;
1331
- gap: 20px;
1332
- margin-bottom: 32px;
1333
- align-items: flex-start;
1334
- }
1335
-
1336
- .step-number {
1337
- width: 40px;
1338
- height: 40px;
1339
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
1340
- color: white;
1341
- border-radius: 50%;
1342
- display: flex;
1343
- align-items: center;
1344
- justify-content: center;
1345
- font-weight: 600;
1346
- font-size: 18px;
1347
- flex-shrink: 0;
1348
- }
1349
-
1350
- .step-content {
1351
- flex: 1;
1352
- }
1353
-
1354
- .step-content h4 {
1355
- margin: 0 0 12px 0;
1356
- font-size: 18px;
1357
- font-weight: 600;
1358
- color: #1a202c;
1359
- }
1360
-
1361
- .step-content p {
1362
- margin: 0 0 16px 0;
1363
- color: #4a5568;
1364
- line-height: 1.6;
1365
- }
1366
-
1367
- .status-indicator {
1368
- display: flex;
1369
- align-items: center;
1370
- gap: 8px;
1371
- margin: 12px 0;
1372
- padding: 12px;
1373
- background: #f8fafc;
1374
- border-radius: 6px;
1375
- border: 1px solid #e2e8f0;
1376
- }
1377
-
1378
- .status-dot {
1379
- width: 12px;
1380
- height: 12px;
1381
- border-radius: 50%;
1382
- background: #94a3b8;
1383
- }
1384
-
1385
- .status-dot.online {
1386
- background: #10b981;
1387
- box-shadow: 0 0 8px rgba(16, 185, 129, 0.3);
1388
- }
1389
-
1390
- .status-dot.offline {
1391
- background: #ef4444;
1392
- box-shadow: 0 0 8px rgba(239, 68, 68, 0.3);
1393
- }
1394
-
1395
- .config-block {
1396
- position: relative;
1397
- background: #1a202c;
1398
- border-radius: 8px;
1399
- overflow: hidden;
1400
- margin: 16px 0;
1401
- }
1402
-
1403
- .config-block pre {
1404
- margin: 0;
1405
- padding: 20px;
1406
- color: #e2e8f0;
1407
- font-family: 'Monaco', 'Consolas', 'Liberation Mono', monospace;
1408
- font-size: 14px;
1409
- line-height: 1.5;
1410
- overflow-x: auto;
1411
- }
1412
-
1413
- .copy-btn {
1414
- position: absolute;
1415
- top: 12px;
1416
- right: 12px;
1417
- background: #4a5568;
1418
- color: white;
1419
- border: none;
1420
- padding: 8px 12px;
1421
- border-radius: 4px;
1422
- cursor: pointer;
1423
- font-size: 12px;
1424
- transition: background 0.2s;
1425
- }
1426
-
1427
- .copy-btn:hover {
1428
- background: #2d3748;
1429
- }
1430
-
1431
- .tool-naming {
1432
- background: #f8fafc;
1433
- border-radius: 8px;
1434
- padding: 20px;
1435
- border: 1px solid #e2e8f0;
1436
- margin: 16px 0;
1437
- }
1438
-
1439
- .naming-example {
1440
- background: #1a202c;
1441
- color: #e2e8f0;
1442
- padding: 16px;
1443
- border-radius: 6px;
1444
- font-family: 'Monaco', 'Consolas', monospace;
1445
- font-size: 16px;
1446
- font-weight: 600;
1447
- text-align: center;
1448
- margin-bottom: 12px;
1449
- }
1450
-
1451
- .naming-description {
1452
- color: #4a5568;
1453
- font-size: 14px;
1454
- line-height: 1.6;
1455
- margin: 0;
1456
- }
1457
-
1458
- .troubleshooting-item {
1459
- background: #fffbf0;
1460
- border-left: 4px solid #f59e0b;
1461
- padding: 20px;
1462
- margin-bottom: 20px;
1463
- border-radius: 0 8px 8px 0;
1464
- }
1465
-
1466
- .troubleshooting-item h4 {
1467
- margin: 0 0 12px 0;
1468
- color: #92400e;
1469
- font-size: 16px;
1470
- font-weight: 600;
1471
- }
1472
-
1473
- .troubleshooting-item ul {
1474
- margin: 0;
1475
- padding-left: 20px;
1476
- color: #78350f;
1477
- }
1478
-
1479
- .troubleshooting-item li {
1480
- margin-bottom: 8px;
1481
- line-height: 1.5;
1482
- }
1483
-
1484
- /* Platform Tabs Styles */
1485
- .platform-tabs {
1486
- display: flex;
1487
- gap: 8px;
1488
- margin: 20px 0;
1489
- border-bottom: 2px solid #e2e8f0;
1490
- padding-bottom: 4px;
1491
- }
1492
-
1493
- .platform-tab {
1494
- display: flex;
1495
- align-items: center;
1496
- gap: 8px;
1497
- padding: 12px 20px;
1498
- border: none;
1499
- background: transparent;
1500
- cursor: pointer;
1501
- border-radius: 8px 8px 0 0;
1502
- transition: all 0.2s;
1503
- color: #718096;
1504
- font-size: 14px;
1505
- font-weight: 500;
1506
- position: relative;
1507
- }
1508
-
1509
- .platform-tab img {
1510
- width: 20px;
1511
- height: 20px;
1512
- opacity: 0.6;
1513
- transition: opacity 0.2s;
1514
- }
1515
-
1516
- .platform-tab:hover {
1517
- background: #f7fafc;
1518
- color: #4a5568;
1519
- }
1520
-
1521
- .platform-tab:hover img {
1522
- opacity: 0.8;
1523
- }
1524
-
1525
- .platform-tab.active {
1526
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
1527
- color: white;
1528
- transform: translateY(-2px);
1529
- }
1530
-
1531
- .platform-tab.active img {
1532
- opacity: 1;
1533
- filter: brightness(0) invert(1);
1534
- }
1535
-
1536
- .platform-tab.active::after {
1537
- content: '';
1538
- position: absolute;
1539
- bottom: -6px;
1540
- left: 50%;
1541
- transform: translateX(-50%);
1542
- width: 60%;
1543
- height: 4px;
1544
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
1545
- border-radius: 2px;
1546
- }
1547
-
1548
- .platform-content {
1549
- animation: fadeIn 0.3s ease;
1550
- }
1551
-
1552
- /* Config Location Styles */
1553
- .config-location {
1554
- background: #f0f9ff;
1555
- border: 1px solid #bae6fd;
1556
- border-radius: 8px;
1557
- padding: 16px;
1558
- margin: 16px 0;
1559
- border-left: 4px solid #0ea5e9;
1560
- }
1561
-
1562
- .config-location h5 {
1563
- margin: 0 0 12px 0;
1564
- font-size: 14px;
1565
- font-weight: 600;
1566
- color: #0369a1;
1567
- display: flex;
1568
- align-items: center;
1569
- gap: 8px;
1570
- }
1571
-
1572
- .location-list {
1573
- margin: 0;
1574
- padding-left: 0;
1575
- list-style: none;
1576
- }
1577
-
1578
- .location-list li {
1579
- margin-bottom: 8px;
1580
- padding: 8px 12px;
1581
- background: white;
1582
- border-radius: 6px;
1583
- border: 1px solid #e0f2fe;
1584
- font-size: 14px;
1585
- line-height: 1.4;
1586
- }
1587
-
1588
- .location-list li strong {
1589
- color: #0369a1;
1590
- margin-right: 8px;
1591
- }
1592
-
1593
- .location-list li code {
1594
- background: #f1f5f9;
1595
- padding: 2px 6px;
1596
- border-radius: 4px;
1597
- font-family: 'Monaco', 'Consolas', monospace;
1598
- font-size: 12px;
1599
- color: #1e293b;
1600
- word-break: break-all;
1601
- }
1602
-
1603
- /* Responsive Design */
1604
- @media (max-width: 768px) {
1605
- .container {
1606
- padding: 16px;
1607
- }
1608
-
1609
- .method-selector {
1610
- grid-template-columns: 1fr;
1611
- gap: 16px;
1612
- }
1613
-
1614
- .method-btn {
1615
- padding: 20px;
1616
- }
1617
-
1618
- .step {
1619
- gap: 16px;
1620
- }
1621
-
1622
- .step-number {
1623
- width: 32px;
1624
- height: 32px;
1625
- font-size: 16px;
1626
- }
1627
-
1628
- .config-block pre {
1629
- font-size: 12px;
1630
- padding: 16px;
1631
- }
1632
-
1633
- .copy-btn {
1634
- position: static;
1635
- margin: 8px 0 0 0;
1636
- width: 100%;
1637
- }
1638
-
1639
- .platform-tabs {
1640
- flex-direction: column;
1641
- gap: 4px;
1642
- }
1643
-
1644
- .platform-tab {
1645
- padding: 12px 16px;
1646
- border-radius: 6px;
1647
- }
1648
-
1649
- .platform-tab.active::after {
1650
- display: none;
1651
- }
1652
-
1653
- .location-list li code {
1654
- font-size: 11px;
1655
- word-break: break-all;
1656
- display: block;
1657
- margin-top: 4px;
1658
- }
1659
-
1660
- .config-location {
1661
- padding: 12px;
1662
- }
1663
- }
1664
-
1665
- .card-header {
1666
- padding: 24px 24px 0 24px;
1667
- }
1668
-
1669
- .card-content {
1670
- padding: 24px;
1671
- }
1672
-
1673
- .section-title {
1674
- font-size: 24px;
1675
- }
1676
-
1677
- .topbar-subtitle {
1678
- display: none;
1679
- }
1680
-
1681
- .form-group {
1682
- margin-bottom: 16px;
1683
- }
1684
-
1685
- .modal-content {
1686
- min-width: 90vw;
1687
- max-width: 95vw;
1688
- }
1689
-
1690
- .modal-body {
1691
- padding: 16px;
1692
- }
1693
-
1694
- .server-info .info-grid {
1695
- grid-template-columns: 1fr;
1696
- }
1697
-
1698
- .delete-modal, .success-modal {
1699
- max-width: 95vw;
1700
- width: 95vw;
1701
- }
1702
-
1703
- .modal-content {
1704
- min-width: 90vw;
1705
- }
1706
-
1707
- .delete-warning {
1708
- flex-direction: column;
1709
- text-align: center;
1710
- }
1711
-
1712
- .delete-actions {
1713
- flex-direction: column-reverse;
1714
- gap: 8px;
1715
- }
1716
-
1717
- .delete-actions .btn {
1718
- width: 100%;
1719
- }
1720
- }
1721
-
1722
- @media (max-width: 480px) {
1723
- .sidebar {
1724
- width: 100%;
1725
- }
1726
-
1727
- .topbar-title {
1728
- font-size: 20px;
1729
- }
1730
-
1731
- .section-title {
1732
- font-size: 20px;
1733
- }
1734
-
1735
- .card-header {
1736
- padding: 20px 20px 0 20px;
1737
- }
1738
-
1739
- .card-content {
1740
- padding: 20px;
1741
- }
1742
- }
1743
-
1744
- /* Advanced Responsive Design */
1745
-
1746
- /* Large Desktop - 1440px+ */
1747
- @media (min-width: 1440px) {
1748
- .container {
1749
- max-width: 1400px;
1750
- padding: 0 40px;
1751
- }
1752
-
1753
- .grid {
1754
- gap: 32px;
1755
- }
1756
-
1757
- .grid-2 {
1758
- grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
1759
- }
1760
-
1761
- .grid-3 {
1762
- grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
1763
- }
1764
-
1765
- .grid-4 {
1766
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
1767
- }
1768
- }
1769
-
1770
- /* Desktop - 1024px to 1439px */
1771
- @media (min-width: 1024px) and (max-width: 1439px) {
1772
- .container {
1773
- max-width: 1200px;
1774
- padding: 0 32px;
1775
- }
1776
-
1777
- .grid-2 {
1778
- grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
1779
- }
1780
-
1781
- .grid-3 {
1782
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
1783
- }
1784
-
1785
- .grid-4 {
1786
- grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
1787
- }
1788
- }
1789
-
1790
- /* Tablet Landscape - 768px to 1023px */
1791
- @media (min-width: 768px) and (max-width: 1023px) {
1792
- .container {
1793
- padding: 0 24px;
1794
- }
1795
-
1796
- .grid {
1797
- gap: 20px;
1798
- }
1799
-
1800
- .grid-2 {
1801
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
1802
- }
1803
-
1804
- .grid-3 {
1805
- grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
1806
- }
1807
-
1808
- .grid-4 {
1809
- grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
1810
- }
1811
-
1812
- .card-header {
1813
- padding: 20px 24px 16px 24px;
1814
- }
1815
-
1816
- .card-content {
1817
- padding: 0 24px 24px 24px;
1818
- }
1819
-
1820
- .server-card {
1821
- padding: 20px;
1822
- }
1823
-
1824
- .btn-compact {
1825
- padding: 6px 14px;
1826
- font-size: 13px;
1827
- }
1828
- }
1829
-
1830
- /* Tablet Portrait & Large Mobile - 600px to 767px */
1831
- @media (min-width: 600px) and (max-width: 767px) {
1832
- .container {
1833
- padding: 0 20px;
1834
- }
1835
-
1836
- .grid {
1837
- gap: 16px;
1838
- }
1839
-
1840
- .grid-2, .grid-3, .grid-4 {
1841
- grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
1842
- }
1843
-
1844
- .card {
1845
- border-radius: 12px;
1846
- }
1847
-
1848
- .card-header {
1849
- padding: 16px 20px 12px 20px;
1850
- }
1851
-
1852
- .card-content {
1853
- padding: 0 20px 20px 20px;
1854
- }
1855
-
1856
- .server-card {
1857
- padding: 16px;
1858
- }
1859
-
1860
- .server-stats {
1861
- gap: 8px;
1862
- }
1863
-
1864
- .server-stats span {
1865
- padding: 4px 8px;
1866
- font-size: 11px;
1867
- }
1868
-
1869
- .tab-nav {
1870
- padding: 3px;
1871
- margin-bottom: 16px;
1872
- }
1873
-
1874
- .tab-button {
1875
- padding: 10px 16px;
1876
- font-size: 13px;
1877
- }
1878
-
1879
- .btn-compact {
1880
- padding: 8px 12px;
1881
- font-size: 12px;
1882
- }
1883
-
1884
- .btn-compact span {
1885
- font-size: 14px;
1886
- }
1887
- }
1888
-
1889
- /* Mobile Landscape - 480px to 599px */
1890
- @media (min-width: 480px) and (max-width: 599px) {
1891
- .container {
1892
- padding: 0 16px;
1893
- }
1894
-
1895
- .grid {
1896
- gap: 12px;
1897
- }
1898
-
1899
- .grid-2, .grid-3, .grid-4 {
1900
- grid-template-columns: 1fr;
1901
- }
1902
-
1903
- .card {
1904
- border-radius: 10px;
1905
- }
1906
-
1907
- .card-header {
1908
- padding: 12px 16px 8px 16px;
1909
- }
1910
-
1911
- .card-content {
1912
- padding: 0 16px 16px 16px;
1913
- }
1914
-
1915
- .server-card {
1916
- padding: 12px;
1917
- }
1918
-
1919
- .server-stats {
1920
- flex-direction: column;
1921
- gap: 6px;
1922
- }
1923
-
1924
- .server-stats span {
1925
- text-align: center;
1926
- padding: 6px 12px;
1927
- }
1928
-
1929
- .section-title {
1930
- font-size: 18px;
1931
- }
1932
-
1933
- .tab-nav {
1934
- flex-direction: column;
1935
- gap: 2px;
1936
- }
1937
-
1938
- .tab-button {
1939
- padding: 12px;
1940
- text-align: center;
1941
- }
1942
-
1943
- .btn-compact {
1944
- width: 100%;
1945
- justify-content: center;
1946
- padding: 10px 16px;
1947
- }
1948
-
1949
- .form-input, .form-select, .form-textarea {
1950
- padding: 10px 12px;
1951
- }
1952
- }
1953
-
1954
- /* Mobile Portrait - up to 479px */
1955
- @media (max-width: 479px) {
1956
- .container {
1957
- padding: 0 12px;
1958
- }
1959
-
1960
- .grid {
1961
- gap: 8px;
1962
- }
1963
-
1964
- .card {
1965
- border-radius: 8px;
1966
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
1967
- }
1968
-
1969
- .card-header {
1970
- padding: 8px 12px 4px 12px;
1971
- }
1972
-
1973
- .card-content {
1974
- padding: 0 12px 12px 12px;
1975
- }
1976
-
1977
- .server-card {
1978
- padding: 8px;
1979
- }
1980
-
1981
- .server-stats span {
1982
- font-size: 10px;
1983
- padding: 3px 6px;
1984
- }
1985
-
1986
- .section-title {
1987
- font-size: 16px;
1988
- }
1989
-
1990
- .btn-compact {
1991
- padding: 8px 12px;
1992
- font-size: 11px;
1993
- }
1994
-
1995
- .btn-compact span {
1996
- font-size: 12px;
1997
- }
1998
-
1999
- .form-input, .form-select, .form-textarea {
2000
- padding: 8px 10px;
2001
- font-size: 13px;
2002
- }
2003
-
2004
- .loading-container {
2005
- padding: 24px;
2006
- }
2007
-
2008
- .loading-spinner {
2009
- width: 30px;
2010
- height: 30px;
2011
- }
2012
- }
2013
-
2014
- /* Dark Mode Support */
2015
- @media (prefers-color-scheme: dark) {
2016
- body {
2017
- background: #0f172a;
2018
- color: #f1f5f9;
2019
- }
2020
-
2021
- .card {
2022
- background: #1e293b;
2023
- border-color: #334155;
2024
- }
2025
-
2026
- .server-card {
2027
- background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
2028
- border-color: #334155;
2029
- }
2030
-
2031
- .server-stats span {
2032
- background: linear-gradient(135deg, #334155 0%, #475569 100%);
2033
- color: #cbd5e1;
2034
- border-color: #475569;
2035
- }
2036
-
2037
- .form-input, .form-select, .form-textarea {
2038
- background: #1e293b;
2039
- border-color: #334155;
2040
- color: #f1f5f9;
2041
- }
2042
-
2043
- .tab-nav {
2044
- background: #1e293b;
2045
- }
2046
-
2047
- .tab-button {
2048
- color: #94a3b8;
2049
- }
2050
-
2051
- .tab-button.active {
2052
- background: #334155;
2053
- color: #f1f5f9;
2054
- }
2055
- }
2056
-
2057
- /* High Contrast Mode */
2058
- @media (prefers-contrast: high) {
2059
- .card {
2060
- border: 2px solid #000;
2061
- }
2062
-
2063
- .btn-compact {
2064
- border: 2px solid #000;
2065
- }
2066
-
2067
- .form-input, .form-select, .form-textarea {
2068
- border: 2px solid #000;
2069
- }
2070
- }
2071
-
2072
- /* Reduced Motion */
2073
- @media (prefers-reduced-motion: reduce) {
2074
- * {
2075
- animation-duration: 0.01ms !important;
2076
- animation-iteration-count: 1 !important;
2077
- transition-duration: 0.01ms !important;
2078
- }
2079
-
2080
- .loading-spinner {
2081
- animation: none;
2082
- }
2083
-
2084
- .card:hover,
2085
- .server-card:hover,
2086
- .btn-compact:hover {
2087
- transform: none;
2088
- }
2089
- }
2090
- </style>
2091
- </head>