page-shell.css 4.7 KB

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