page-shell.css 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. .index-page,
  2. .clients-page,
  3. .inbounds-page,
  4. .xray-page,
  5. .settings-page,
  6. .nodes-page,
  7. .groups-page,
  8. .api-docs-page {
  9. --bg-page: #e6e8ec;
  10. --bg-card: #ffffff;
  11. min-height: 100vh;
  12. background: var(--bg-page);
  13. }
  14. .index-page.is-dark,
  15. .clients-page.is-dark,
  16. .inbounds-page.is-dark,
  17. .xray-page.is-dark,
  18. .settings-page.is-dark,
  19. .nodes-page.is-dark,
  20. .groups-page.is-dark,
  21. .api-docs-page.is-dark {
  22. --bg-page: #1a1b1f;
  23. --bg-card: #23252b;
  24. }
  25. .index-page.is-dark.is-ultra,
  26. .clients-page.is-dark.is-ultra,
  27. .inbounds-page.is-dark.is-ultra,
  28. .xray-page.is-dark.is-ultra,
  29. .settings-page.is-dark.is-ultra,
  30. .nodes-page.is-dark.is-ultra,
  31. .groups-page.is-dark.is-ultra,
  32. .api-docs-page.is-dark.is-ultra {
  33. --bg-page: #000;
  34. --bg-card: #101013;
  35. }
  36. .index-page .ant-layout,
  37. .index-page .ant-layout-content,
  38. .clients-page .ant-layout,
  39. .clients-page .ant-layout-content,
  40. .inbounds-page .ant-layout,
  41. .inbounds-page .ant-layout-content,
  42. .xray-page .ant-layout,
  43. .xray-page .ant-layout-content,
  44. .settings-page .ant-layout,
  45. .settings-page .ant-layout-content,
  46. .nodes-page .ant-layout,
  47. .nodes-page .ant-layout-content,
  48. .groups-page .ant-layout,
  49. .groups-page .ant-layout-content,
  50. .api-docs-page .ant-layout,
  51. .api-docs-page .ant-layout-content {
  52. background: transparent;
  53. }
  54. .index-page .content-shell,
  55. .clients-page .content-shell,
  56. .inbounds-page .content-shell,
  57. .xray-page .content-shell,
  58. .settings-page .content-shell,
  59. .nodes-page .content-shell,
  60. .groups-page .content-shell,
  61. .api-docs-page .content-shell {
  62. background: transparent;
  63. }
  64. .index-page .content-area,
  65. .clients-page .content-area,
  66. .inbounds-page .content-area,
  67. .xray-page .content-area,
  68. .settings-page .content-area,
  69. .nodes-page .content-area,
  70. .groups-page .content-area {
  71. padding: 24px;
  72. }
  73. @media (max-width: 768px) {
  74. .clients-page .content-area,
  75. .inbounds-page .content-area,
  76. .nodes-page .content-area,
  77. .groups-page .content-area {
  78. padding: 8px;
  79. }
  80. }
  81. .loading-spacer {
  82. min-height: calc(100vh - 120px);
  83. }
  84. /* Tall action menus (e.g. the inbound/client context menus) must stay inside
  85. the viewport even when antd flips them upward near the screen edge. */
  86. .ant-dropdown .ant-dropdown-menu {
  87. max-height: calc(100vh - 32px);
  88. overflow-y: auto;
  89. }
  90. .ant-dropdown-menu-item:not(.ant-dropdown-menu-item-disabled):not(.ant-dropdown-menu-item-danger):hover,
  91. .ant-dropdown-menu-item:not(.ant-dropdown-menu-item-disabled):not(.ant-dropdown-menu-item-danger):hover .ant-dropdown-menu-title-content,
  92. .ant-dropdown-menu-item:not(.ant-dropdown-menu-item-disabled):not(.ant-dropdown-menu-item-danger):hover > .anticon {
  93. color: var(--ant-color-primary) !important;
  94. }
  95. .ant-dropdown-menu-item:not(.ant-dropdown-menu-item-disabled):not(.ant-dropdown-menu-item-danger):hover {
  96. background-color: color-mix(in srgb, var(--ant-color-primary) 14%, transparent) !important;
  97. }
  98. .ant-dropdown-menu-item-divider {
  99. background-color: var(--ant-color-border) !important;
  100. }
  101. body.dark .ant-dropdown-menu-item-divider {
  102. background-color: rgba(255, 255, 255, 0.12) !important;
  103. }
  104. .settings-page .header-row,
  105. .xray-page .header-row {
  106. display: flex;
  107. flex-wrap: wrap;
  108. align-items: center;
  109. }
  110. .settings-page .header-actions,
  111. .xray-page .header-actions {
  112. padding: 4px;
  113. }
  114. .settings-page .header-info,
  115. .xray-page .header-info {
  116. display: flex;
  117. justify-content: flex-end;
  118. }
  119. .icons-only .ant-tabs-nav {
  120. margin-bottom: 8px;
  121. }
  122. .icons-only .ant-tabs-nav-wrap {
  123. width: 100%;
  124. }
  125. .icons-only .ant-tabs-nav-list {
  126. display: flex;
  127. width: 100%;
  128. }
  129. .icons-only .ant-tabs-tab {
  130. flex: 1 1 0;
  131. justify-content: center;
  132. margin: 0;
  133. padding: 10px 0;
  134. }
  135. .icons-only .ant-tabs-tab .anticon {
  136. margin: 0;
  137. font-size: 18px;
  138. }
  139. .icons-only .ant-tabs-nav-operations {
  140. display: none;
  141. }
  142. .clients-page .summary-card,
  143. .inbounds-page .summary-card,
  144. .nodes-page .summary-card,
  145. .groups-page .summary-card {
  146. padding: 16px;
  147. }
  148. @media (max-width: 768px) {
  149. .clients-page .summary-card,
  150. .inbounds-page .summary-card,
  151. .nodes-page .summary-card,
  152. .groups-page .summary-card {
  153. padding: 8px;
  154. }
  155. }
  156. /* Hosts page shares the standard panel page shell (background, transparent
  157. layout, content padding, summary-card padding). */
  158. .hosts-page {
  159. --bg-page: #e6e8ec;
  160. --bg-card: #ffffff;
  161. min-height: 100vh;
  162. background: var(--bg-page);
  163. }
  164. .hosts-page.is-dark {
  165. --bg-page: #1a1b1f;
  166. --bg-card: #23252b;
  167. }
  168. .hosts-page.is-dark.is-ultra {
  169. --bg-page: #000;
  170. --bg-card: #101013;
  171. }
  172. .hosts-page .ant-layout,
  173. .hosts-page .ant-layout-content,
  174. .hosts-page .content-shell {
  175. background: transparent;
  176. }
  177. .hosts-page .content-area {
  178. padding: 24px;
  179. }
  180. .hosts-page .summary-card {
  181. padding: 16px;
  182. }
  183. @media (max-width: 768px) {
  184. .hosts-page .content-area,
  185. .hosts-page .summary-card {
  186. padding: 8px;
  187. }
  188. }