ApiDocsPage.css 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444
  1. .api-docs-page.is-dark {
  2. --sw-bg: #1f2026;
  3. --sw-bg-soft: #25272e;
  4. --sw-bg-input: #15161a;
  5. --sw-bg-code: #0d0e12;
  6. --sw-border: rgba(255, 255, 255, 0.08);
  7. --sw-border-strong: rgba(255, 255, 255, 0.15);
  8. --sw-text: rgba(255, 255, 255, 0.88);
  9. --sw-text-muted: rgba(255, 255, 255, 0.6);
  10. --sw-text-dim: rgba(255, 255, 255, 0.45);
  11. --sw-accent: #58a6ff;
  12. color-scheme: dark;
  13. }
  14. .api-docs-page.is-dark.is-ultra {
  15. --sw-bg: #0a0a0d;
  16. --sw-bg-soft: #131316;
  17. --sw-bg-input: #050507;
  18. --sw-bg-code: #000;
  19. --sw-border: rgba(255, 255, 255, 0.06);
  20. --sw-border-strong: rgba(255, 255, 255, 0.12);
  21. }
  22. .api-docs-page .content-shell {
  23. background: var(--bg-page);
  24. }
  25. .api-docs-page .content-area {
  26. padding: 16px;
  27. max-width: 100%;
  28. }
  29. @media (max-width: 768px) {
  30. .api-docs-page .content-area {
  31. padding: 8px;
  32. padding-top: 56px;
  33. }
  34. }
  35. .api-docs-page .docs-wrapper {
  36. background: var(--bg-card);
  37. border-radius: 8px;
  38. border: 1px solid var(--ant-color-border-secondary);
  39. overflow: hidden;
  40. }
  41. .api-docs-page .websocket-events {
  42. margin-bottom: 16px;
  43. padding: 20px;
  44. background: var(--bg-card);
  45. border: 1px solid var(--ant-color-border-secondary);
  46. border-radius: 8px;
  47. }
  48. .api-docs-page .websocket-events h2 {
  49. margin-top: 0;
  50. }
  51. .api-docs-page .websocket-events pre {
  52. margin: 0;
  53. padding: 12px;
  54. max-height: 360px;
  55. overflow: auto;
  56. color: var(--sw-text, inherit);
  57. background: var(--sw-bg-code, var(--ant-color-fill-quaternary));
  58. border-radius: 6px;
  59. font-size: 12px;
  60. }
  61. .api-docs-page .swagger-ui {
  62. font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  63. }
  64. /* ──────────────────────────────────────────────────────────────────
  65. Dark mode — Swagger UI does not ship a dark theme, so every visual
  66. surface needs an explicit override. Method-color chips (GET / POST /
  67. …) are left untouched because they carry meaning at a glance.
  68. ────────────────────────────────────────────────────────────────── */
  69. .api-docs-page.is-dark .swagger-ui,
  70. .api-docs-page.is-dark .swagger-ui .info .title,
  71. .api-docs-page.is-dark .swagger-ui .info .title small pre,
  72. .api-docs-page.is-dark .swagger-ui .info p,
  73. .api-docs-page.is-dark .swagger-ui .info li,
  74. .api-docs-page.is-dark .swagger-ui .info table,
  75. .api-docs-page.is-dark .swagger-ui .opblock-tag,
  76. .api-docs-page.is-dark .swagger-ui .opblock-tag small,
  77. .api-docs-page.is-dark .swagger-ui .opblock .opblock-summary-path,
  78. .api-docs-page.is-dark .swagger-ui .opblock .opblock-summary-path__deprecated,
  79. .api-docs-page.is-dark .swagger-ui .opblock .opblock-summary-description,
  80. .api-docs-page.is-dark .swagger-ui .opblock-description-wrapper p,
  81. .api-docs-page.is-dark .swagger-ui .opblock-external-docs-wrapper p,
  82. .api-docs-page.is-dark .swagger-ui .opblock-title_normal p,
  83. .api-docs-page.is-dark .swagger-ui table thead tr td,
  84. .api-docs-page.is-dark .swagger-ui table thead tr th,
  85. .api-docs-page.is-dark .swagger-ui table tbody tr td,
  86. .api-docs-page.is-dark .swagger-ui .parameter__name,
  87. .api-docs-page.is-dark .swagger-ui .parameter__type,
  88. .api-docs-page.is-dark .swagger-ui .parameter__in,
  89. .api-docs-page.is-dark .swagger-ui .parameter__extension,
  90. .api-docs-page.is-dark .swagger-ui .response-col_status,
  91. .api-docs-page.is-dark .swagger-ui .response-col_description,
  92. .api-docs-page.is-dark .swagger-ui .response-col_links,
  93. .api-docs-page.is-dark .swagger-ui .responses-inner h4,
  94. .api-docs-page.is-dark .swagger-ui .responses-inner h5,
  95. .api-docs-page.is-dark .swagger-ui label,
  96. .api-docs-page.is-dark .swagger-ui .tab li,
  97. .api-docs-page.is-dark .swagger-ui .tab li button,
  98. .api-docs-page.is-dark .swagger-ui .markdown,
  99. .api-docs-page.is-dark .swagger-ui .markdown p,
  100. .api-docs-page.is-dark .swagger-ui .markdown li,
  101. .api-docs-page.is-dark .swagger-ui .renderedmarkdown p,
  102. .api-docs-page.is-dark .swagger-ui .renderedmarkdown li,
  103. .api-docs-page.is-dark .swagger-ui .model-title,
  104. .api-docs-page.is-dark .swagger-ui .model,
  105. .api-docs-page.is-dark .swagger-ui .model-toggle:after,
  106. .api-docs-page.is-dark .swagger-ui section.models h4,
  107. .api-docs-page.is-dark .swagger-ui section.models h5,
  108. .api-docs-page.is-dark .swagger-ui .auth-container h4,
  109. .api-docs-page.is-dark .swagger-ui .auth-container h6,
  110. .api-docs-page.is-dark .swagger-ui .scopes h2,
  111. .api-docs-page.is-dark .swagger-ui .dialog-ux .modal-ux-header h3,
  112. .api-docs-page.is-dark .swagger-ui .dialog-ux .modal-ux-content h4,
  113. .api-docs-page.is-dark .swagger-ui .dialog-ux .modal-ux-content p,
  114. .api-docs-page.is-dark .swagger-ui .servers-title {
  115. color: var(--sw-text);
  116. }
  117. .api-docs-page.is-dark .swagger-ui .opblock-tag small,
  118. .api-docs-page.is-dark .swagger-ui .opblock-summary-description,
  119. .api-docs-page.is-dark .swagger-ui .parameter__in,
  120. .api-docs-page.is-dark .swagger-ui .parameter__type,
  121. .api-docs-page.is-dark .swagger-ui .parameter__extension,
  122. .api-docs-page.is-dark .swagger-ui .opblock-title_normal small,
  123. .api-docs-page.is-dark .swagger-ui .servers > label,
  124. .api-docs-page.is-dark .swagger-ui .servers > label span,
  125. .api-docs-page.is-dark .swagger-ui .response-control-media-type__accept-message {
  126. color: var(--sw-text-muted);
  127. }
  128. .api-docs-page.is-dark .swagger-ui .opblock-tag {
  129. border-bottom-color: var(--sw-border);
  130. }
  131. .api-docs-page.is-dark .swagger-ui .opblock {
  132. background: var(--sw-bg-soft);
  133. border-color: var(--sw-border);
  134. box-shadow: none;
  135. }
  136. .api-docs-page.is-dark .swagger-ui .opblock .opblock-section-header {
  137. background: rgba(255, 255, 255, 0.03);
  138. box-shadow: inset 0 -1px 0 var(--sw-border);
  139. }
  140. .api-docs-page.is-dark .swagger-ui .opblock .opblock-section-header h4,
  141. .api-docs-page.is-dark .swagger-ui .opblock .opblock-section-header label {
  142. color: var(--sw-text);
  143. }
  144. .api-docs-page.is-dark .swagger-ui .opblock .opblock-summary {
  145. border-bottom-color: var(--sw-border);
  146. }
  147. .api-docs-page.is-dark .swagger-ui .opblock-body pre.microlight,
  148. .api-docs-page.is-dark .swagger-ui .highlight-code,
  149. .api-docs-page.is-dark .swagger-ui .microlight,
  150. .api-docs-page.is-dark .swagger-ui pre.example,
  151. .api-docs-page.is-dark .swagger-ui code {
  152. background: var(--sw-bg-code);
  153. color: rgba(255, 255, 255, 0.92);
  154. }
  155. .api-docs-page.is-dark .swagger-ui .highlight-code .copy-to-clipboard {
  156. background: rgba(255, 255, 255, 0.06);
  157. }
  158. .api-docs-page.is-dark .swagger-ui input[type='text'],
  159. .api-docs-page.is-dark .swagger-ui input[type='password'],
  160. .api-docs-page.is-dark .swagger-ui input[type='search'],
  161. .api-docs-page.is-dark .swagger-ui input[type='email'],
  162. .api-docs-page.is-dark .swagger-ui input[type='file'],
  163. .api-docs-page.is-dark .swagger-ui textarea {
  164. background: var(--sw-bg-input);
  165. color: var(--sw-text);
  166. border-color: var(--sw-border-strong);
  167. }
  168. .api-docs-page.is-dark .swagger-ui select {
  169. background-color: var(--sw-bg-input);
  170. background-image: url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='%23b7bcbf' d='M13.418 7.859a.695.695 0 0 1 .978 0 .68.68 0 0 1 0 .969l-3.908 3.83a.697.697 0 0 1-.979 0l-3.908-3.83a.68.68 0 0 1 0-.969.695.695 0 0 1 .978 0L10 11z'/></svg>");
  171. background-position: right 10px center;
  172. background-repeat: no-repeat;
  173. background-size: 20px;
  174. color: var(--sw-text);
  175. border-color: var(--sw-border-strong);
  176. }
  177. .api-docs-page.is-dark .swagger-ui select option {
  178. background-color: var(--sw-bg-input);
  179. color: var(--sw-text);
  180. }
  181. .api-docs-page.is-dark .swagger-ui textarea {
  182. font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  183. }
  184. .api-docs-page.is-dark .swagger-ui input::placeholder,
  185. .api-docs-page.is-dark .swagger-ui textarea::placeholder {
  186. color: var(--sw-text-dim);
  187. }
  188. .api-docs-page.is-dark .swagger-ui .scheme-container {
  189. background: var(--sw-bg-soft);
  190. box-shadow: inset 0 -1px 0 var(--sw-border);
  191. }
  192. .api-docs-page.is-dark .swagger-ui .auth-wrapper .authorize {
  193. color: var(--sw-text);
  194. border-color: var(--sw-border-strong);
  195. }
  196. .api-docs-page.is-dark .swagger-ui .auth-wrapper .authorize svg {
  197. fill: var(--sw-text);
  198. }
  199. .api-docs-page.is-dark .swagger-ui .model-box,
  200. .api-docs-page.is-dark .swagger-ui section.models {
  201. background: var(--sw-bg-soft);
  202. border-color: var(--sw-border);
  203. }
  204. .api-docs-page.is-dark .swagger-ui section.models.is-open h4 {
  205. border-bottom-color: var(--sw-border);
  206. }
  207. .api-docs-page.is-dark .swagger-ui section.models .model-container {
  208. background: rgba(255, 255, 255, 0.02);
  209. border-color: var(--sw-border);
  210. }
  211. .api-docs-page.is-dark .swagger-ui section.models .model-container:hover {
  212. background: rgba(255, 255, 255, 0.04);
  213. }
  214. .api-docs-page.is-dark .swagger-ui .prop-type,
  215. .api-docs-page.is-dark .swagger-ui .prop-format {
  216. color: var(--sw-accent);
  217. }
  218. .api-docs-page.is-dark .swagger-ui .property.primitive {
  219. color: var(--sw-text-muted);
  220. }
  221. .api-docs-page.is-dark .swagger-ui .opblock-title_normal h4 {
  222. color: var(--sw-text);
  223. border-bottom-color: var(--sw-border);
  224. }
  225. .api-docs-page.is-dark .swagger-ui table.parameters,
  226. .api-docs-page.is-dark .swagger-ui table.responses-table,
  227. .api-docs-page.is-dark .swagger-ui table thead tr {
  228. border-color: var(--sw-border);
  229. }
  230. .api-docs-page.is-dark .swagger-ui table tbody tr td {
  231. border-bottom-color: var(--sw-border);
  232. }
  233. .api-docs-page.is-dark .swagger-ui table thead tr {
  234. border-bottom-color: var(--sw-border-strong);
  235. }
  236. .api-docs-page.is-dark .swagger-ui .response-col_status {
  237. font-weight: 600;
  238. }
  239. .api-docs-page.is-dark .swagger-ui .btn {
  240. background: rgba(255, 255, 255, 0.06);
  241. color: var(--sw-text);
  242. border-color: var(--sw-border-strong);
  243. box-shadow: none;
  244. }
  245. .api-docs-page.is-dark .swagger-ui .btn:hover {
  246. background: rgba(255, 255, 255, 0.1);
  247. }
  248. .api-docs-page.is-dark .swagger-ui .btn.execute {
  249. background: var(--sw-accent);
  250. color: #0d1117;
  251. border-color: var(--sw-accent);
  252. }
  253. .api-docs-page.is-dark .swagger-ui .btn.execute:hover {
  254. background: #79b9ff;
  255. }
  256. .api-docs-page.is-dark .swagger-ui .btn.authorize {
  257. color: #52c41a;
  258. border-color: rgba(82, 196, 26, 0.4);
  259. background: rgba(82, 196, 26, 0.08);
  260. }
  261. .api-docs-page.is-dark .swagger-ui .btn.authorize svg {
  262. fill: #52c41a;
  263. }
  264. .api-docs-page.is-dark .swagger-ui .authorization__btn svg,
  265. .api-docs-page.is-dark .swagger-ui .expand-operation svg,
  266. .api-docs-page.is-dark .swagger-ui .opblock-control-arrow svg {
  267. fill: var(--sw-text);
  268. opacity: 1;
  269. }
  270. .api-docs-page.is-dark .swagger-ui .authorization__btn .locked,
  271. .api-docs-page.is-dark .swagger-ui .authorization__btn .unlocked {
  272. opacity: 1;
  273. }
  274. .api-docs-page.is-dark .swagger-ui .btn.cancel {
  275. color: #ff7875;
  276. border-color: rgba(255, 120, 117, 0.4);
  277. background: rgba(255, 120, 117, 0.08);
  278. }
  279. .api-docs-page.is-dark .swagger-ui .btn.btn-clear,
  280. .api-docs-page.is-dark .swagger-ui .btn-clear,
  281. .api-docs-page.is-dark .swagger-ui .try-out__btn {
  282. color: var(--sw-text);
  283. background: rgba(255, 255, 255, 0.06);
  284. border-color: var(--sw-border-strong);
  285. }
  286. .api-docs-page.is-dark .swagger-ui .btn.btn-clear:hover,
  287. .api-docs-page.is-dark .swagger-ui .btn-clear:hover,
  288. .api-docs-page.is-dark .swagger-ui .try-out__btn:hover {
  289. background: rgba(255, 255, 255, 0.1);
  290. }
  291. .api-docs-page.is-dark .swagger-ui .filter .operation-filter-input {
  292. background: var(--sw-bg-input);
  293. border-color: var(--sw-border-strong);
  294. color: var(--sw-text);
  295. }
  296. .api-docs-page.is-dark .swagger-ui .dialog-ux .modal-ux {
  297. background: var(--sw-bg);
  298. border-color: var(--sw-border-strong);
  299. }
  300. .api-docs-page.is-dark .swagger-ui .dialog-ux .modal-ux-header {
  301. border-bottom-color: var(--sw-border);
  302. }
  303. .api-docs-page.is-dark .swagger-ui .dialog-ux .modal-ux-content {
  304. color: var(--sw-text);
  305. }
  306. .api-docs-page.is-dark .swagger-ui .arrow,
  307. .api-docs-page.is-dark .swagger-ui svg.arrow {
  308. fill: var(--sw-text-muted);
  309. }
  310. .api-docs-page.is-dark .swagger-ui .opblock-summary-control:focus {
  311. outline-color: var(--sw-accent);
  312. }
  313. .api-docs-page.is-dark .swagger-ui a,
  314. .api-docs-page.is-dark .swagger-ui .info a,
  315. .api-docs-page.is-dark .swagger-ui .info hgroup.main a,
  316. .api-docs-page.is-dark .swagger-ui .info .base-url,
  317. .api-docs-page.is-dark .swagger-ui .info__contact a,
  318. .api-docs-page.is-dark .swagger-ui .info__license a,
  319. .api-docs-page.is-dark .swagger-ui .info__tos a {
  320. color: var(--sw-accent);
  321. }
  322. .api-docs-page.is-dark .swagger-ui a:hover {
  323. color: #79b9ff;
  324. }
  325. .api-docs-page.is-dark .swagger-ui .info .title small {
  326. background: rgba(255, 255, 255, 0.08);
  327. color: var(--sw-text);
  328. }
  329. .api-docs-page.is-dark .swagger-ui .info .title small pre {
  330. color: var(--sw-text);
  331. }
  332. .api-docs-page.is-dark .swagger-ui .response-control-media-type--accept-controller select {
  333. border-color: rgba(82, 196, 26, 0.5);
  334. }
  335. .api-docs-page.is-dark .swagger-ui .loading-container .loading:before {
  336. border-color: var(--sw-accent) transparent transparent;
  337. }
  338. .api-docs-page.is-dark .swagger-ui .json-schema-form-item input,
  339. .api-docs-page.is-dark .swagger-ui .json-schema-form-item select {
  340. background: var(--sw-bg-input);
  341. color: var(--sw-text);
  342. border-color: var(--sw-border-strong);
  343. }
  344. .api-docs-page.is-dark .swagger-ui .topbar {
  345. background: var(--sw-bg);
  346. }
  347. .api-docs-page.is-dark .swagger-ui .information-container {
  348. background: transparent;
  349. }
  350. .api-docs-page.is-dark .swagger-ui .opblock-summary-method {
  351. text-shadow: none;
  352. }
  353. .api-docs-page.is-dark .swagger-ui .auth-btn-wrapper {
  354. border-top-color: var(--sw-border);
  355. }
  356. .api-docs-page.is-dark .swagger-ui .servers .computed-url,
  357. .api-docs-page.is-dark .swagger-ui .computed-url {
  358. background: var(--sw-bg-code);
  359. color: var(--sw-text);
  360. border: 1px solid var(--sw-border);
  361. }
  362. .api-docs-page.is-dark .swagger-ui .computed-url code,
  363. .api-docs-page.is-dark .swagger-ui .servers .computed-url code {
  364. background: transparent;
  365. color: var(--sw-text);
  366. }
  367. .api-docs-page.is-dark .swagger-ui .errors-wrapper {
  368. background: rgba(255, 77, 79, 0.08);
  369. border-color: rgba(255, 77, 79, 0.3);
  370. }
  371. .api-docs-page.is-dark .swagger-ui .errors-wrapper .errors h4,
  372. .api-docs-page.is-dark .swagger-ui .errors-wrapper .errors small {
  373. color: var(--sw-text);
  374. }