DESIGN REFACTOR (#600)

### New features
- New face + dark mode
  - [Change font to vazirmatn](057f3190de)
  - [use customized andtv](f956009fd2)
  - [popConfirm for del and reset client](66c98e8392)
  - [Separate page for xray config](9e1cd6315f)
  - Separate face for mobile view
- [Show online users](bf892e9965) [#559](https://github.com/alireza0/x-ui/issues/559)
- [Auto renew](96408967ae)

### Bug fixes
- [[tgbot] Retry loop on start](211c05ec29)
- [fix docker-compose version](1dcec91ce4)
- [fix redirect after restart](81d25a032c)
This commit is contained in:
Alireza Ahmadi
2023-11-09 23:31:17 +01:00
committed by GitHub
parent d4a23f8a23
commit 7c74c534f0
64 changed files with 2986 additions and 2220 deletions

View File

@@ -7,6 +7,28 @@ body {
overflow: hidden;
}
body {
color: rgba(0,0,0,.65);
font-size: 14px;
font-variant: tabular-nums;
line-height: 1.5;
background-color: #fff;
font-feature-settings: "tnum";
}
html {
--antd-wave-shadow-color: #0e49b5;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
-ms-overflow-style: scrollbar;
-webkit-tap-highlight-color: rgba(0,0,0,0);
}
::selection {
color: #0e49b5;
background-color: #0e49b530;
}
#app {
height: 100%;
position: fixed;
@@ -19,6 +41,73 @@ body {
overflow: auto;
}
.ant-layout, .ant-layout * {
box-sizing: border-box;
}
.ant-spin-blur {
border-radius: 1.5rem;
}
style attribute {
text-align: center;
}
.ant-table-tbody>tr>td, .ant-table-thead>tr>th {
padding: 16px;
overflow-wrap: break-word;
}
.ant-table-thead>tr>th {
color: rgba(0,0,0,.85);
font-weight: 500;
text-align: left;
border-bottom: 1px solid #e8e8e8;
transition: background .3s ease;
}
.ant-table-row-cell-break-word {
word-wrap: break-word;
word-break: break-word;
}
.ant-table table {
width: 100%;
text-align: left;
border-radius: 1rem 1rem 0 0;
border-collapse: separate;
border-spacing: 0;
}
.ant-table {
box-sizing: border-box;
margin: 0;
padding: 0;
color: rgba(0,0,0,.65);
font-size: 14px;
font-variant: tabular-nums;
line-height: 1.5;
list-style: none;
font-feature-settings: "tnum";
position: relative;
clear: both;
}
.ant-card-hoverable {
cursor: auto;
cursor: pointer;
}
.ant-card {
box-sizing: border-box;
margin: 0;
padding: 0;
color: rgba(0,0,0,.65);
font-size: 14px;
font-variant: tabular-nums;
line-height: 1.5;
list-style: none;
font-feature-settings: "tnum";
position: relative;
background: #fff;
border-radius: 2px;
transition: all .3s;
}
.ant-space {
width: 100%;
}
@@ -31,10 +120,22 @@ body {
.ant-layout-sider {
display: none;
}
.ant-card {
margin: .5rem;
}
.ant-tabs {
margin: .5rem;
padding: .5rem;
}
}
.ant-card {
border-radius: 30px;
.ant-layout-content {
min-height: auto;
}
.ant-card,
.ant-tabs {
border-radius: 1.5rem;
}
.ant-card-hoverable {
@@ -64,13 +165,78 @@ body {
border-radius: 0 4px 4px 0;
}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
background-color: #04308f !important;
background-image: linear-gradient( 270deg, rgba(123, 199, 77, 0) 30%, #2f67c2, rgba(123, 199, 77, 0) 100% );
background-repeat: no-repeat;
animation: ma-bg-move linear 6.6s infinite;
color: #fff;
border-radius: 0.5rem
}
@-webkit-keyframes ma-bg-move {
0% {background-position: -500px 0;}
100% {background-position: 1000px 0;}
}
@keyframes ma-bg-move {
0% {background-position: -500px 0;}
50% {background-position: 1000px 0;}
100% {background-position: 1000px 0;}
}
.ant-menu-item-active,
.ant-menu-item:hover,
.ant-menu-submenu-active,
.ant-menu-submenu-title:hover,
.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open{
color:#0e49b5;
background-color: #dce9f5;
border-radius: 0.5rem;
}
.ant-menu-inline .ant-menu-item {
border-radius: 0.5rem;
}
.ant-menu-inline .ant-menu-item:after,
.ant-menu {
border-right-width: 0;
}
.ant-layout-sider-children,
.ant-pagination ul {
margin-top:-.1px;
padding:0.5rem
}
.ant-dropdown-menu,
.ant-select-dropdown-menu {
padding: .5rem;
}
.ant-dropdown-menu-item,
.ant-dropdown-menu-item:hover,
.ant-select-dropdown-menu-item,
.ant-select-dropdown-menu-item:hover,
.ant-select-dropdown-menu-item-selected,
.ant-select-selection--multiple .ant-select-selection__choice {
border-radius: .5rem;
margin-bottom: 2px;
}
@media (min-width: 769px) {
.drawer-handle {
display: none;
}
.ant-tabs {
padding: 2rem;
}
}
.fade-in-enter, .fade-in-leave-active, .fade-in-linear-enter, .fade-in-linear-leave, .fade-in-linear-leave-active, .fade-in-linear-enter, .fade-in-linear-leave, .fade-in-linear-leave-active {
.fade-in-enter,
.fade-in-leave-active,
.fade-in-linear-enter,
.fade-in-linear-leave,
.fade-in-linear-leave-active,
.fade-in-linear-enter,
.fade-in-linear-leave,
.fade-in-linear-leave-active {
opacity: 0
}
@@ -166,8 +332,7 @@ body {
}
.ant-list-item-meta-title {
font-weight: bold;
font-size: 16px;
font-size: 14px;
}
.ant-progress-inner {
@@ -181,7 +346,7 @@ body {
.ant-table-tbody>tr>td,
.ant-table-thead>tr>th{
padding:16px;
padding:16px 5px;
}
.ant-table-expand-icon-th,
@@ -190,148 +355,14 @@ body {
min-width: 30px;
}
.ant-menu-dark,
.ant-menu-dark .ant-menu-sub,
.ant-layout-header,
.ant-layout-sider-dark,
.ant-layout-sider-zero-width-trigger,
.ant-dropdown-menu-dark,.ant-dropdown-menu-dark .ant-dropdown-menu,
.ant-menu-dark.ant-menu-horizontal>.ant-menu-item,.ant-menu-dark.ant-menu-horizontal>.ant-menu-submenu {
background:#1a212a
}
.ant-tabs:not(.ant-card-dark) {
.ant-tabs {
background-color: white;
}
.ant-card-dark {
color: hsla(0,0%,100%,.65);
background-color: #1a212a;
border-color:rgba(0,0,0,.09);
}
.ant-card-dark:hover {
border-color: #e8e8e8;
box-shadow: 0 2px 8px rgba(255,255,255,.15);
}
.ant-setting-textarea {
margin-top: 1.5rem;
}
.ant-card-dark-box-nohover{
padding: 0 20px 20px !important;
box-shadow: 0 1px 10px -1px rgb(154 175 238 / 0%) !important;
}
.ant-card-dark-box-nohover:hover{
box-shadow: 0 1px 10px -1px rgb(154 175 238 / 0%) !important;
}
.ant-card-dark .ant-table-thead th {
color: hsla(0,0%,100%,.65);
background-color: #161b22;
}
.ant-card-dark .ant-table-tbody tr td,
.ant-card-dark .ant-modal-title {
color: hsla(0,0%,100%,.65);
}
.ant-card-dark .ant-collapse-content,
.ant-card-dark .ant-calendar,
.ant-card-dark .ant-table-placeholder,
.ant-card-dark .ant-select-selection__choice,
.ant-card-dark .ant-input-group-addon {
color: hsla(0,0%,100%,.65);
background-color: #262f3d;
border: 1px solid rgb(0 150 112 / 0%);
}
.ant-card-dark .ant-list-item-meta-title,
.ant-card-dark .ant-list-item-meta-description,
.ant-card-dark .ant-form-item-label>label,
.ant-card-dark .ant-form-item,
.ant-card-dark .ant-divider-inner-text,
.ant-card-dark .ant-modal-confirm-content,
.ant-card-dark .ant-modal-confirm-title,
.ant-card-dark .ant-progress-text,
.ant-card-dark .ant-modal-close,
.ant-card-dark i,
.ant-card-dark .ant-pagination-item a,
.ant-card-dark .ant-select-dropdown-menu-item,
.ant-card-dark .ant-calendar-day-select,
.ant-card-dark .ant-calendar-month-select,
.ant-card-dark .ant-calendar-year-select,
.ant-card-dark .ant-calendar-date,
.ant-card-dark .ant-collapse>.ant-collapse-item>.ant-collapse-header,
.ant-card-dark .ant-empty-normal,
.ant-card-dark .ant-checkbox+span {
color: hsla(0,0%,100%,.65);
}
.ant-card-dark .ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,
.ant-card-dark .ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled),
.ant-card-dark .ant-calendar-date:hover,
.ant-card-dark .ant-select-dropdown-menu-item-active,
.ant-card-dark li.ant-calendar-time-picker-select-option-selected {
background-color: #11314d;
}
.ant-card-dark tbody .ant-table-expanded-row,
.ant-card-dark .ant-calendar-time-picker-inner {
color: hsla(0,0%,100%,.65);
background-color: #1a212a;
}
.ant-input-number {
min-width: 100px;
}
.ant-card-dark .ant-input,
.ant-card-dark .ant-input-number,
.ant-card-dark .ant-input-number-handler-wrap,
.ant-card-dark .ant-calendar-input,
.ant-card-dark .ant-pagination-item,
.ant-card-dark .ant-select-dropdown-menu-item-selected,
.ant-card-dark .ant-select-selection,
.ant-card-dark .ant-calendar-picker-clear {
color: hsla(0,0%,100%,.65);
background-color: #193752;
border: 1px solid rgba(0, 65, 150, 0);
}
.ant-card-dark .ant-select-disabled .ant-select-selection {
border: 1px solid rgba(255, 255, 255, 0.2);
background-color: #242c3a;
}
.ant-card-dark .ant-collapse-item {
color: hsla(0,0%,100%,.65);
background-color: #161b22;
}
.ant-dropdown-menu-dark,
.ant-card-dark .ant-modal-content {
border: 1px solid rgba(255, 255, 255, 0.65);
box-shadow: 0 2px 8px rgba(255,255,255,.15);
}
.ant-card-dark .ant-modal-content,
.ant-card-dark .ant-select-dropdown,
.ant-card-dark .ant-modal-body,
.ant-card-dark .ant-modal-header {
color: hsla(0,0%,100%,.65);
background-color: #222a37;
}
.ant-card-dark .ant-calendar-selected-day .ant-calendar-date {
background-color: #1668dc;
}
.ant-card-dark .ant-calendar-time-picker-select li:hover {
background: #1668dc;
}
.client-table-header {
background-color: #f0f2f5;
}
@@ -340,118 +371,362 @@ body {
background-color: #fafafa;
}
.ant-card-dark .client-table-header {
background-color: #1a212a;
color: hsla(0,0%,100%,.65);
}
.ant-card-dark .client-table-odd-row {
color: hsla(0,0%,100%,.65);
background-color: #242c3a;
}
.ant-card-dark .ant-calendar-last-month-cell .ant-calendar-date,
.ant-card-dark .ant-calendar-next-month-btn-day .ant-calendar-date {
color: hsla(0,0%,100%,.30);
}
.ant-drawer-dark {
color: hsla(0,0%,100%,.65);
}
.ant-drawer-dark .ant-drawer-wrapper-body,
.ant-drawer-dark .drawer-handle {
background-color: #1a212a;
border: 1px solid hsla(0,0%,100%,.30);
}
.ant-card-dark .ant-tag {
color: hsla(0,0%,100%,.65);
background: rgba(255,255,255,.04);
border-color: #434343;
}
.ant-card-dark .ant-tag-blue {
color: #3c9ae8;
background: #111d2c;
border-color: #15395b;
}
.ant-card-dark .ant-tag-green {
color: #6abe39;
background: #162312;
border-color: #274916;
}
.ant-card-dark .ant-tag-cyan {
color: #33bcb7;
background: #112123;
border-color: #144848;
}
.ant-card-dark .ant-tag-red {
color: #e84749;
background: #2a1215;
border-color: #58181c;
}
.ant-card-dark .ant-tag-orange {
color: #e89a3c;
background: #2b1d11;
border-color: #593815;
}
.ant-card-dark .ant-table-row-expand-icon,
.ant-card-dark .ant-checkbox-inner {
background: none;
}
.ant-card-dark .ant-switch-checked {
background-color: #0c61b0;
}
.ant-card-dark .ant-btn,
.ant-card-dark .ant-radio-button-wrapper {
color: hsla(0,0%,100%,.65);
background: none;
border: 1px solid hsla(0,0%,100%,.65);
}
.ant-card-dark .ant-radio-button-wrapper:hover {
color: #177ddc;
}
.ant-card-dark .ant-btn-primary {
color: hsla(0,0%,100%,.65);
background-color: #073763;
border-color: #1890ff;
text-shadow: 0 -1px 0 rgba(255,255,255,.12);
box-shadow: 0 2px 0 rgba(255,255,255,.045);
}
.ant-card-dark .ant-btn-primary:hover {
background-color: #40a9ff;
border-color: #40a9ff;
}
.ant-dark .ant-popover-content {
border: 1px solid #e8e8e8;
border-radius: 4px;
box-shadow: 0 2px 8px rgba(255,255,255,.15);
}
.ant-dark .ant-popover-inner {
background: #222a37;
}
.ant-dark .ant-popover-title,
.ant-dark .ant-popover-inner-content {
color: hsla(0,0%,100%,.65);
}
.ant-dark .ant-popover-placement-top>.ant-popover-content>.ant-popover-arrow {
border-color: transparent #2e3b52 #2e3b52 transparent;
}
.ant-table-pagination.ant-pagination {
float: left;
}
/* change basic colors */
.ant-tag-blue {
background-color: #edf4fa;
border-color: #a9c5e7;
color: #0e49b5;
}
.ant-tag-green {
background-color: #f6ffed;
border-color: #b7eb8f;
color: #389e0d;
}
.ant-tag-purple {
background-color: #f2eaf1;
border-color: #d5bed2;
color: #7a316f;
}
.ant-tag-orange,
.ant-alert-warning {
background-color:#fff6E6;
border-color: #ffd98c;
color: #ffa031;
}
.ant-tag-red,
.ant-alert-error {
background-color:#fff0f0;
border-color: #fb9d9d;
color: #e04141;
}
.ant-input:hover,
.ant-input:focus {
background-color: #edf4fa;
}
.delete-icon:hover {
color: #E04141;
}
.normal-icon:hover {
color: #0E49B5;
}
/* DARK THEME */
.dark ::selection {
color: #fff;
background-color: #0e49b5;
}
.dark .normal-icon:hover {
color: #ffffff;
}
.dark .ant-layout-sider,
.dark .ant-drawer-content,
.ant-menu-dark,
.ant-menu-dark .ant-menu-sub,
.dark .ant-card,
.dark .ant-table,
.dark .ant-collapse-content,
.dark .ant-tabs {
background-color: #151F31;
color: #ffffffa6;
}
.dark .ant-card-hoverable:hover,
.dark .ant-space-item>.ant-tabs:hover {
box-shadow: 0 1px 10px -1px rgb(154 175 238 / 80%);
}
.dark>.ant-layout,
.dark .drawer-handle,
.dark .ant-table-thead>tr>th,
.dark .ant-table-expanded-row,
.dark .ant-table-expanded-row:hover,
.dark .ant-table-expanded-row .ant-table-tbody,
.dark .ant-calendar {
background-color: #101828;
color: rgb(255 255 255 /65%);
}
.dark .ant-table-expanded-row .ant-table-thead>tr:first-child>th {
border-radius: 0;
}
.dark .ant-calendar,
.dark .ant-card-bordered {
border-color: #151f31;
}
.dark .ant-table-tbody>tr>td,
.dark .ant-table-thead>tr>th,
.dark .ant-card-head,
.dark .ant-modal-header,
.dark .ant-collapse>.ant-collapse-item,
.dark .ant-tabs-bar,
.dark .ant-list-split .ant-list-item,
.dark .ant-popover-title,
.dark .ant-calendar-header,
.dark .ant-calendar-input-wrap {
border-bottom-color: #2C3950;
}
.dark .ant-modal-footer,
.dark .ant-collapse-content,
.dark .ant-calendar-footer,
.dark .ant-divider-horizontal.ant-divider-with-text-center:before,
.dark .ant-divider-horizontal.ant-divider-with-text-center:after {
border-top-color: #2c3950;
}
.dark .ant-progress-text,
.dark .ant-card-head,
.dark .ant-form,
.dark .ant-collapse>.ant-collapse-item>.ant-collapse-header,
.dark .ant-form-item i,
.dark .ant-modal-close-x,
.dark .ant-pagination-item a,
.dark li:not(.ant-pagination-disabled) i,
.dark .ant-form .anticon,
.dark .ant-tabs-tab-arrow-show:not(.ant-tabs-tab-btn-disabled),
.dark .anticon-close,
.dark .ant-list-item-meta-title,
.dark .ant-list-item-meta-description,
.dark .ant-select-selection i,
.dark .ant-modal-confirm-title,
.dark .ant-modal-confirm-content,
.dark .ant-popover-message,
.dark .ant-modal,
.dark .ant-divider-inner-text,
.dark .ant-popover-title,
.dark .ant-popover-inner-content,
.dark h2 {
color: rgb(255 255 255 / 65%);
}
.dark .ant-pagination-disabled i,
.dark .ant-tabs-tab-btn-disabled {
color: rgb(255 255 255 / 25%);
}
.dark .ant-input,
.dark .ant-input-group-addon,
.dark .ant-collapse,
.dark .ant-select-selection,
.dark .ant-input-number,
.dark .ant-input-number-handler-wrap,
.dark .ant-pagination-item-active,
.dark .ant-table-placeholder,
.dark .ant-empty-normal,
.dark.ant-select-dropdown,
.dark .ant-select-dropdown,
.dark .ant-select-dropdown-menu-item,
.dark .ant-divider:not(.ant-divider-with-text-center),
.dark .ant-calendar-input,
.dark .ant-calendar-time-picker-inner {
background-color: #222D42;
border-color: #2c3950;
color: rgb(255 255 255 / 65%);
}
.dark .ant-select-selection:hover,
.dark .ant-calendar-picker-clear,
.dark .ant-input-number:hover,
.dark .ant-input-number:focus,
.dark .ant-input:hover,
.dark .ant-input:focus {
background-color: rgb(14 73 181 / 30%);
border-color: #0E49B5;
}
.dark .ant-btn:not(.ant-btn-primary):not(.ant-btn-danger) {
color: rgb(255 255 255 / 65%);
background-color: rgb(14 73 181 / 30%);
border: 1px solid #0e49b5;
}
.dark .ant-radio-button-wrapper,
.dark .ant-radio-button-wrapper:before {
color: rgb(255 255 255 / 65%);
background-color: rgb(14 73 181 / 30%);
border: 1px solid #0e49b5;
border-left: inherit;
}
.dark .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger) ,
.dark .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
color: #ffffff;
background-color: rgb(14 73 181 / 50%);
border-color: #0e49b5;
}
.dark .ant-btn-primary[disabled],
.dark .ant-calendar-ok-btn-disabled {
color: rgb(255 255 255 / 35%);
background-color: #2c3950;
border-color: #42516c;
}
.dark .ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td {
background-color: #122444;
}
.dark .ant-table-row-expand-icon {
color: #fff;
background-color: #fff0;
border-color: #9ea2a8;
}
.dark .ant-table-row-expand-icon:hover {
color: #0e49b5;
background-color: #fff0;
border-color: #0e49b5;
}
.dark .ant-switch:not(.ant-switch-checked) {
background-color: #2C3950;
}
.dark .ant-progress-line .ant-progress-inner {
background-color: #2c3950;
}
.dark .ant-progress-circle-trail {
stroke: #2c3950 !important;
}
.ant-dropdown-menu-dark,
.dark .ant-popover-inner {
background-color: #222D42;
}
.dark>.ant-popover-content>.ant-popover-arrow {
border-color: #222D42;
}
.ant-dropdown-menu-dark .ant-dropdown-menu-item:hover,
.dark .ant-select-dropdown-menu-item-selected,
.dark .ant-select-dropdown-menu-item:hover,
.dark .ant-calendar-time-picker-select-option-selected {
background-color: #313f5a;
}
.ant-menu-dark .ant-menu-item:hover {
background-color: #2c3950;
}
.dark .ant-alert-message {
color: rgb(255 255 255 /85%);
}
.dark .ant-tag {
color: rgb(255 255 255 / 65%);
background-color: #ffffff0a;
border-color: #344461;
}
.dark .ant-tag-blue {
background-color: #111a2c;
border-color: #0f367e;
color: #3c89e8;
}
.dark .ant-tag-red,
.dark .ant-alert-error {
background-color: #291515;
border-color: #5C2626;
color: #e04141;
}
.dark .ant-tag-orange,
.dark .ant-alert-warning {
background-color: #312313;
border-color: #593914;
color: #ffa031;
}
.dark .ant-tag-green {
background-color: #142429;
border-color: #23432c;
color: #61bf39;
}
.dark .ant-tag-purple {
background-color: #2c1e32;
border-color: #49394e;
color: #f2eaf1;
}
.dark .ant-modal-content,
.dark .ant-modal-header {
background-color: #181f2c;
}
.dark .ant-modal-title,
.dark .ant-form-item-label>label,
.dark .ant-checkbox-wrapper,
.dark .ant-form-item,
.dark .ant-calendar-footer .ant-calendar-today-btn,
.dark .ant-calendar-footer .ant-calendar-time-picker-btn,
.dark .ant-calendar-day-select,
.dark .ant-calendar-month-select,
.dark .ant-calendar-year-select,
.dark .ant-calendar-date {
color: rgb(255 255 255 / 65%);
}
.dark .ant-calendar-next-month-btn-day .ant-calendar-date,
.dark .ant-calendar-last-month-cell .ant-calendar-date {
color: #2c3950;
}
.dark .ant-calendar-selected-day .ant-calendar-date {
background-color: #0e49b5 !important;
color: #fff;
}
.dark .ant-calendar-date:hover,
.dark .ant-calendar-time-picker-select li:hover {
background-color: #313f5a;
color: #fff;
}
.dark .ant-calendar-header a:hover,
.dark .ant-calendar-header a:hover::before,
.dark .ant-calendar-header a:hover::after {
border-color: #fff;
}
.dark .ant-calendar-time-picker-select li:focus {
color: #ffffff;
font-weight: 600;
outline: none;
background-color: #0e49b5;
}
.dark .ant-calendar-time-picker-select {
border-right-color: #2C3950;
}
.dark .anticon-close-circle {
color: #E04141;
}
.dark .ant-spin-nested-loading>div>.ant-spin .ant-spin-text {
text-shadow: 0 1px 2px #00000077;
}
.dark .ant-spin {
color: #ffffff;
}
.dark .ant-spin-dot-item {
background-color: #ffffffff;
}