Browse Source

css correction #1300

Alireza Ahmadi 1 year ago
parent
commit
68ee4e003c
3 changed files with 641 additions and 249 deletions
  1. 418 145
      web/assets/css/custom.css
  2. 222 103
      web/html/login.html
  3. 1 1
      web/html/xui/inbound_client_table.html

+ 418 - 145
web/assets/css/custom.css

@@ -8,7 +8,7 @@ body {
 }
 
 body {
-    color: rgba(0,0,0,.65);
+    color: rgba(0, 0, 0, 0.65);
     font-size: 14px;
     font-variant: tabular-nums;
     line-height: 1.5;
@@ -21,7 +21,7 @@ html {
     -webkit-text-size-adjust: 100%;
     -ms-text-size-adjust: 100%;
     -ms-overflow-style: scrollbar;
-    -webkit-tap-highlight-color: rgba(0,0,0,0);
+    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
 }
 
 ::selection {
@@ -41,7 +41,8 @@ html {
     overflow: auto;
 }
 
-.ant-layout, .ant-layout * {
+.ant-layout,
+.ant-layout * {
     box-sizing: border-box;
 }
 
@@ -52,16 +53,17 @@ html {
 style attribute {
     text-align: center;
 }
-.ant-table-tbody>tr>td, .ant-table-thead>tr>th {
+.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);
+.ant-table-thead > tr > th {
+    color: rgba(0, 0, 0, 0.85);
     font-weight: 500;
     text-align: left;
     border-bottom: 1px solid #e8e8e8;
-    transition: background .3s ease;
+    transition: background 0.3s ease;
 }
 .ant-table-row-cell-break-word {
     word-wrap: break-word;
@@ -79,7 +81,7 @@ style attribute {
     box-sizing: border-box;
     margin: 0;
     padding: 0;
-    color: rgba(0,0,0,.65);
+    color: rgba(0, 0, 0, 0.65);
     font-size: 14px;
     font-variant: tabular-nums;
     line-height: 1.5;
@@ -88,6 +90,9 @@ style attribute {
     position: relative;
     clear: both;
 }
+.ant-table-body {
+    overflow-x: auto !important;
+}
 .ant-card-hoverable {
     cursor: auto;
     cursor: pointer;
@@ -96,16 +101,16 @@ style attribute {
     box-sizing: border-box;
     margin: 0;
     padding: 0;
-    color: rgba(0,0,0,.65);
+    color: rgba(0, 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;
+    background-color: #fff;
     border-radius: 2px;
-    transition: all .3s;
+    transition: all 0.3s;
 }
 
 .ant-space {
@@ -121,11 +126,11 @@ style attribute {
         display: none;
     }
     .ant-card {
-        margin: .5rem;
+        margin: 0.5rem;
     }
     .ant-tabs {
-        margin: .5rem;
-        padding: .5rem;
+        margin: 0.5rem;
+        padding: 0.5rem;
     }
 }
 
@@ -142,7 +147,7 @@ style attribute {
     cursor: auto;
 }
 
-.ant-card+.ant-card {
+.ant-card + .ant-card {
     margin-top: 20px;
 }
 
@@ -159,7 +164,7 @@ style attribute {
     display: flex;
     justify-content: center;
     align-items: center;
-    background: #fff;
+    background-color: #fff;
     right: -40px;
     box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15);
     border-radius: 0 4px 4px 0;
@@ -167,27 +172,45 @@ style attribute {
 
 .ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
     background-color: #0a7557 !important;
-    background-image: linear-gradient( 270deg, rgba(123, 199, 77, 0) 30%, #00ab80, rgba(123, 199, 77, 0) 100% );
+    background-image: linear-gradient(
+        270deg,
+        rgba(123, 199, 77, 0) 30%,
+        #00ab80,
+        rgba(123, 199, 77, 0) 100%
+    );
     background-repeat: no-repeat;
     animation: ma-bg-move linear 6.6s infinite;
     color: #fff;
-    border-radius: 0.5rem
+    border-radius: 0.5rem;
 }
+
 @-webkit-keyframes ma-bg-move {
-    0% {background-position: -500px 0;}
-    100% {background-position: 1000px 0;}
+    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;}
+    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:#0a7557;
+.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open {
+    color: #0a7557;
     background-color: #dce9f5;
     border-radius: 0.5rem;
 }
@@ -202,13 +225,13 @@ style attribute {
 }
 .ant-layout-sider-children,
 .ant-pagination ul {
-    margin-top:-.1px;
-    padding:0.5rem
+    margin-top: -0.1px;
+    padding: 0.5rem;
 }
 
 .ant-dropdown-menu,
 .ant-select-dropdown-menu {
-    padding: .5rem;
+    padding: 0.5rem;
 }
 .ant-dropdown-menu-item,
 .ant-dropdown-menu-item:hover,
@@ -216,7 +239,7 @@ style attribute {
 .ant-select-dropdown-menu-item:hover,
 .ant-select-dropdown-menu-item-selected,
 .ant-select-selection--multiple .ant-select-selection__choice {
-    border-radius: .5rem;
+    border-radius: 0.5rem;
     margin-bottom: 2px;
 }
 
@@ -237,98 +260,126 @@ style attribute {
 .fade-in-linear-enter,
 .fade-in-linear-leave,
 .fade-in-linear-leave-active {
-    opacity: 0
+    opacity: 0;
 }
 
-.fade-in-linear-enter-active, .fade-in-linear-leave-active {
-    -webkit-transition: opacity .2s linear;
-    transition: opacity .2s linear
+.fade-in-linear-enter-active,
+.fade-in-linear-leave-active {
+    -webkit-transition: opacity 0.2s linear;
+    transition: opacity 0.2s linear;
 }
 
-.fade-in-linear-enter-active, .fade-in-linear-leave-active {
-    -webkit-transition: opacity .2s linear;
-    transition: opacity .2s linear
+.fade-in-linear-enter-active,
+.fade-in-linear-leave-active {
+    -webkit-transition: opacity 0.2s linear;
+    transition: opacity 0.2s linear;
 }
 
-.fade-in-enter-active, .fade-in-leave-active {
-    -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1);
-    transition: all .3s cubic-bezier(.55, 0, .1, 1)
+.fade-in-enter-active,
+.fade-in-leave-active {
+    -webkit-transition: all 0.3s cubic-bezier(0.55, 0, 0.1, 1);
+    transition: all 0.3s cubic-bezier(0.55, 0, 0.1, 1);
 }
 
-.zoom-in-center-enter-active, .zoom-in-center-leave-active {
-    -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1);
-    transition: all .3s cubic-bezier(.55, 0, .1, 1)
+.zoom-in-center-enter-active,
+.zoom-in-center-leave-active {
+    -webkit-transition: all 0.3s cubic-bezier(0.55, 0, 0.1, 1);
+    transition: all 0.3s cubic-bezier(0.55, 0, 0.1, 1);
 }
 
-.zoom-in-center-enter, .zoom-in-center-leave-active {
+.zoom-in-center-enter,
+.zoom-in-center-leave-active {
     opacity: 0;
     -webkit-transform: scaleX(0);
-    transform: scaleX(0)
+    transform: scaleX(0);
 }
 
-.zoom-in-top-enter-active, .zoom-in-top-leave-active {
+.zoom-in-top-enter-active,
+.zoom-in-top-leave-active {
     opacity: 1;
     -webkit-transform: scaleY(1);
     transform: scaleY(1);
-    -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
-    transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
-    transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1);
-    transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
+    -webkit-transition: opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1),
+        -webkit-transform 0.3s cubic-bezier(0.23, 1, 0.32, 1);
+    transition: opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1),
+        -webkit-transform 0.3s cubic-bezier(0.23, 1, 0.32, 1);
+    transition: transform 0.3s cubic-bezier(0.23, 1, 0.32, 1),
+        opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1);
+    transition: transform 0.3s cubic-bezier(0.23, 1, 0.32, 1),
+        opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1),
+        -webkit-transform 0.3s cubic-bezier(0.23, 1, 0.32, 1);
     -webkit-transform-origin: center top;
-    transform-origin: center top
+    transform-origin: center top;
 }
 
-.zoom-in-top-enter, .zoom-in-top-leave-active {
+.zoom-in-top-enter,
+.zoom-in-top-leave-active {
     opacity: 0;
     -webkit-transform: scaleY(0);
-    transform: scaleY(0)
+    transform: scaleY(0);
 }
 
-.zoom-in-bottom-enter-active, .zoom-in-bottom-leave-active {
+.zoom-in-bottom-enter-active,
+.zoom-in-bottom-leave-active {
     opacity: 1;
     -webkit-transform: scaleY(1);
     transform: scaleY(1);
-    -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
-    transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
-    transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1);
-    transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
+    -webkit-transition: opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1),
+        -webkit-transform 0.3s cubic-bezier(0.23, 1, 0.32, 1);
+    transition: opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1),
+        -webkit-transform 0.3s cubic-bezier(0.23, 1, 0.32, 1);
+    transition: transform 0.3s cubic-bezier(0.23, 1, 0.32, 1),
+        opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1);
+    transition: transform 0.3s cubic-bezier(0.23, 1, 0.32, 1),
+        opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1),
+        -webkit-transform 0.3s cubic-bezier(0.23, 1, 0.32, 1);
     -webkit-transform-origin: center bottom;
-    transform-origin: center bottom
+    transform-origin: center bottom;
 }
 
-.zoom-in-bottom-enter, .zoom-in-bottom-leave-active {
+.zoom-in-bottom-enter,
+.zoom-in-bottom-leave-active {
     opacity: 0;
     -webkit-transform: scaleY(0);
-    transform: scaleY(0)
+    transform: scaleY(0);
 }
 
-.zoom-in-left-enter-active, .zoom-in-left-leave-active {
+.zoom-in-left-enter-active,
+.zoom-in-left-leave-active {
     opacity: 1;
     -webkit-transform: scale(1, 1);
     transform: scale(1, 1);
-    -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
-    transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
-    transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1);
-    transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
+    -webkit-transition: opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1),
+        -webkit-transform 0.3s cubic-bezier(0.23, 1, 0.32, 1);
+    transition: opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1),
+        -webkit-transform 0.3s cubic-bezier(0.23, 1, 0.32, 1);
+    transition: transform 0.3s cubic-bezier(0.23, 1, 0.32, 1),
+        opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1);
+    transition: transform 0.3s cubic-bezier(0.23, 1, 0.32, 1),
+        opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1),
+        -webkit-transform 0.3s cubic-bezier(0.23, 1, 0.32, 1);
     -webkit-transform-origin: top left;
-    transform-origin: top left
+    transform-origin: top left;
 }
 
-.zoom-in-left-enter, .zoom-in-left-leave-active {
+.zoom-in-left-enter,
+.zoom-in-left-leave-active {
     opacity: 0;
-    -webkit-transform: scale(.45, .45);
-    transform: scale(.45, .45)
+    -webkit-transform: scale(0.45, 0.45);
+    transform: scale(0.45, 0.45);
 }
 
-.list-enter-active, .list-leave-active {
-    -webkit-transition: all .3s;
-    transition: all .3s
+.list-enter-active,
+.list-leave-active {
+    -webkit-transition: all 0.3s;
+    transition: all 0.3s;
 }
 
-.list-enter, .list-leave-active {
+.list-enter,
+.list-leave-active {
     opacity: 0;
     -webkit-transform: translateY(-30px);
-    transform: translateY(-30px)
+    transform: translateY(-30px);
 }
 
 .ant-tooltip-inner {
@@ -340,17 +391,17 @@ style attribute {
 }
 
 .ant-progress-inner {
-    background-color: #EBEEF5;
+    background-color: #ebeef5;
 }
 
-.deactive-client .ant-collapse-header{
-    color:rgb(255, 255, 255) !important;
+.deactive-client .ant-collapse-header {
+    color: rgb(255, 255, 255) !important;
     background-color: rgb(255, 127, 127);
 }
 
-.ant-table-tbody>tr>td,
-.ant-table-thead>tr>th{
-    padding:16px 5px;
+.ant-table-tbody > tr > td,
+.ant-table-thead > tr > th {
+    padding: 16px 5px;
 }
 
 .ant-table-expand-icon-th,
@@ -397,28 +448,28 @@ style attribute {
 }
 .ant-tag-orange,
 .ant-alert-warning {
-    background-color:#fff6E6;
+    background-color: #fff6e6;
     border-color: #ffd98c;
     color: #ffa031;
 }
 .ant-tag-red,
 .ant-alert-error {
-    background-color:#fff0f0;
+    background-color: #fff0f0;
     border-color: #fb9d9d;
     color: #e04141;
 }
 
-.ant-input::placeholder{
+.ant-input::placeholder {
     opacity: 0.5;
 }
 
 .ant-input:hover,
 .ant-input:focus {
-    background-color: #edfaf9;
+    background-color: #edf4fa;
 }
 
 .delete-icon:hover {
-    color: #E04141;
+    color: #e04141;
 }
 
 .normal-icon:hover {
@@ -444,18 +495,18 @@ style attribute {
 .dark .ant-table,
 .dark .ant-collapse-content,
 .dark .ant-tabs {
-    background-color: #151F31;
+    background-color: #151f31;
     color: #ffffffa6;
 }
 
 .dark .ant-card-hoverable:hover,
-.dark .ant-space-item>.ant-tabs:hover {
+.dark .ant-space-item > .ant-tabs:hover {
     box-shadow: 0 1px 10px -1px rgb(154 175 238 / 80%);
 }
 
-.dark>.ant-layout,
+.dark > .ant-layout,
 .dark .drawer-handle,
-.dark .ant-table-thead>tr>th,
+.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,
@@ -464,7 +515,7 @@ style attribute {
     color: rgb(255 255 255 /65%);
 }
 
-.dark .ant-table-expanded-row .ant-table-thead>tr:first-child>th {
+.dark .ant-table-expanded-row .ant-table-thead > tr:first-child > th {
     border-radius: 0;
 }
 
@@ -475,27 +526,27 @@ style attribute {
 
 .dark .ant-table-bordered,
 .dark .ant-table-bordered.ant-table-empty .ant-table-placeholder,
-.dark .ant-table-bordered .ant-table-body>table,
+.dark .ant-table-bordered .ant-table-body > table,
 .dark .ant-table-bordered .ant-table-fixed-left table,
 .dark .ant-table-bordered .ant-table-fixed-right table,
-.dark .ant-table-bordered .ant-table-header>table,
-.dark .ant-table-bordered .ant-table-thead>tr:not(:last-child)>th,
-.dark .ant-table-bordered .ant-table-tbody>tr>td,
-.dark .ant-table-bordered .ant-table-thead>tr>th {
-    border-color: #2C3950;
+.dark .ant-table-bordered .ant-table-header > table,
+.dark .ant-table-bordered .ant-table-thead > tr:not(:last-child) > th,
+.dark .ant-table-bordered .ant-table-tbody > tr > td,
+.dark .ant-table-bordered .ant-table-thead > tr > th {
+    border-color: #2c3950;
 }
 
-.dark .ant-table-tbody>tr>td,
-.dark .ant-table-thead>tr>th,
+.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-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;
+    border-bottom-color: #2c3950;
 }
 
 .dark .ant-modal-footer,
@@ -509,7 +560,7 @@ style attribute {
 .dark .ant-progress-text,
 .dark .ant-card-head,
 .dark .ant-form,
-.dark .ant-collapse>.ant-collapse-item>.ant-collapse-header,
+.dark .ant-collapse > .ant-collapse-item > .ant-collapse-header,
 .dark .ant-modal-close-x,
 .dark .ant-pagination-item a,
 .dark li:not(.ant-pagination-disabled) i,
@@ -525,17 +576,30 @@ style attribute {
 .dark .ant-divider-inner-text,
 .dark .ant-popover-title,
 .dark .ant-popover-inner-content,
-.dark h2 {
-    color: rgb(255 255 255 / 65%);
+.dark h2,
+.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,
+.dark .ant-calendar-year-panel-year,
+.dark .ant-calendar-month-panel-month,
+.dark .ant-calendar-decade-panel-decade {
+    color: rgba(255, 255, 255, 0.65);
 }
 
 .dark .ant-list-item-meta-description {
-    color: rgb(255 255 255 / 45%);
+    color: rgba(255, 255, 255, 0.45);
 }
 
 .dark .ant-pagination-disabled i,
 .dark .ant-tabs-tab-btn-disabled {
-    color: rgb(255 255 255 / 25%);
+    color: rgba(255, 255, 255, 0.25);
 }
 
 .dark .ant-input,
@@ -556,9 +620,9 @@ style attribute {
 .dark .client-table-header,
 .dark .ant-select-selection--multiple .ant-select-selection__choice,
 .dark .ant-calendar-time-picker-inner {
-    background-color: #222D42;
+    background-color: #222d42;
     border-color: #2c3950;
-    color: rgb(255 255 255 / 65%);
+    color: rgba(255, 255, 255, 0.65);
 }
 
 .dark .ant-select-selection:hover,
@@ -572,7 +636,7 @@ style attribute {
 }
 
 .dark .ant-btn:not(.ant-btn-primary):not(.ant-btn-danger) {
-    color: rgb(255 255 255 / 65%);
+    color: rgba(255, 255, 255, 0.65);
     background-color: rgb(10 117 87 / 30%);
     border: 1px solid #0a7557;
 }
@@ -580,13 +644,13 @@ style attribute {
 .dark .ant-radio-button-wrapper,
 .dark .ant-radio-button-wrapper:before {
     color: rgb(255 255 255 / 65%);
-    background-color: rgb(10 117 87 / 30%);
+    background-color: rgb(14 73 181 / 30%);
     border-color: #0a7557;
 }
 
-.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;
+.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: #fff;
     background-color: rgb(10 117 87 / 50%);
     border-color: #0a7557;
 }
@@ -599,7 +663,10 @@ style attribute {
     border-color: #42516c;
 }
 
-.dark .ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,
+.dark
+    .ant-table-tbody
+    > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
+    > td,
 .dark .client-table-odd-row {
     background-color: #0A755722;
 }
@@ -616,10 +683,7 @@ style attribute {
     border-color: #0a7557;
 }
 
-.dark .ant-switch:not(.ant-switch-checked) {
-    background-color: #2C3950;
-}
-
+.dark .ant-switch:not(.ant-switch-checked),
 .dark .ant-progress-line .ant-progress-inner {
     background-color: #2c3950;
 }
@@ -630,11 +694,11 @@ style attribute {
 
 .ant-dropdown-menu-dark,
 .dark .ant-popover-inner {
-    background-color: #222D42;
+    background-color: #222d42;
 }
 
-.dark>.ant-popover-content>.ant-popover-arrow {
-    border-color: #222D42;
+.dark > .ant-popover-content > .ant-popover-arrow {
+    border-color: #222d42;
 }
 
 .ant-dropdown-menu-dark .ant-dropdown-menu-item:hover,
@@ -649,11 +713,11 @@ style attribute {
 }
 
 .dark .ant-alert-message {
-    color: rgb(255 255 255 /85%);
+    color: rgba(255, 255, 255, 0.85);
 }
 
 .dark .ant-tag {
-    color: rgb(255 255 255 / 65%);
+    color: rgba(255, 255, 255, 0.65);
     background-color: #ffffff0a;
     border-color: #344461;
 }
@@ -667,7 +731,7 @@ style attribute {
 .dark .ant-tag-red,
 .dark .ant-alert-error {
     background-color: #291515;
-    border-color: #5C2626;
+    border-color: #5c2626;
     color: #e04141;
 }
 
@@ -687,7 +751,7 @@ style attribute {
 .dark .ant-tag-purple {
     background-color: #2c1e32;
     border-color: #49394e;
-    color: #f7aeed;
+    color: #f2eaf1;
 }
 
 .dark .ant-modal-content,
@@ -695,19 +759,6 @@ style attribute {
     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;
@@ -731,19 +782,38 @@ style attribute {
 }
 
 .dark .ant-calendar-time-picker-select li:focus {
-    color: #ffffff;
+    color: #fff;
     font-weight: 600;
     outline: none;
     background-color: #0a7557;
 }
 
 .dark .ant-calendar-time-picker-select {
-    border-right-color: #2C3950;
+    border-right-color: #2c3950;
+}
+
+.has-warning .ant-input,
+.has-warning .ant-input:hover {
+    background-color: #fff6e6;
+    border-color: #ffd98c;
+}
+
+.has-warning .ant-input::placeholder {
+    color: #faad14;
+}
+
+.has-warning .ant-input:not([disabled]):hover {
+    border-color: #ffd98c;
 }
 
 .dark .has-warning .ant-input,
 .dark .has-warning .ant-input:hover {
-    border-color: #faad14;
+    border-color: #784e1d;
+    background: rgb(49, 35, 19);
+}
+
+.dark .has-warning .ant-input::placeholder {
+    color: rgb(255 160 49 / 70%);
 }
 
 .dark .has-warning .anticon {
@@ -752,21 +822,224 @@ style attribute {
 
 .dark .has-success .anticon {
     color: #61bf39;
-    animation-name: diffZoomIn1!important;
+    animation-name: diffZoomIn1 !important;
 }
 
 .dark .anticon-close-circle {
-    color: #E04141;
+    color: #e04141;
 }
 
-.dark .ant-spin-nested-loading>div>.ant-spin .ant-spin-text {
+.dark .ant-spin-nested-loading > div > .ant-spin .ant-spin-text {
     text-shadow: 0 1px 2px #00000077;
 }
 
 .dark .ant-spin {
-    color: #ffffff;
+    color: #fff;
 }
 
 .dark .ant-spin-dot-item {
-    background-color: #ffffffff;
+    background-color: #fff;
+}
+
+.ant-menu,
+.ant-radio-button-wrapper {
+    user-select: none;
+}
+
+.ant-calendar-date:hover {
+    background-color: #dae9f5;
+}
+
+.ant-calendar-date:active {
+    background-color: #dae9f5;
+    color: rgba(0, 0, 0, 0.65);
+}
+
+.ant-calendar-today .ant-calendar-date {
+    color: #0a7557;
+    font-weight: 700;
+    border-color: #0a7557;
+}
+
+.dark .ant-calendar-today .ant-calendar-date {
+    color: #fff;
+    font-weight: 700;
+    border-color: #0a7557;
+}
+
+.ant-calendar-selected-day .ant-calendar-date {
+    background: #0a7557;
+    color: #ffffff;
+}
+
+li.ant-select-dropdown-menu-item:empty:after {
+    content: "None";
+    font-weight: normal;
+    color: rgba(0, 0, 0, 0.25);
+}
+
+.dark li.ant-select-dropdown-menu-item:empty:after {
+    content: "None";
+    font-weight: normal;
+    color: rgba(255, 255, 255, 0.3);
+}
+
+.ant-select-dropdown.ant-select-dropdown--multiple
+    .ant-select-dropdown-menu-item:hover
+    .ant-select-selected-icon {
+    color: rgba(0, 0, 0, 0.87);
+}
+
+.dark.ant-select-dropdown.ant-select-dropdown--multiple
+    .ant-select-dropdown-menu-item:hover
+    .ant-select-selected-icon {
+    color: rgb(255, 255, 255);
+}
+
+.ant-select-dropdown.ant-select-dropdown--multiple
+    .ant-select-dropdown-menu-item-selected
+    .ant-select-selected-icon,
+.ant-select-dropdown.ant-select-dropdown--multiple
+    .ant-select-dropdown-menu-item-selected:hover
+    .ant-select-selected-icon {
+    color: #3c89e8;
+}
+.ant-select-selection:hover,
+.ant-input-number-focused,
+.ant-input-number:hover {
+    background-color: #edf4fa;
+}
+
+.dark .ant-input-number-handler:active {
+    background-color: #0a7557;
+}
+
+.dark .ant-input-number-handler:hover .ant-input-number-handler-down-inner,
+.dark .ant-input-number-handler:hover .ant-input-number-handler-up-inner {
+    color: #fff;
+}
+
+.dark .ant-input-number-handler-down {
+    border-top: 1px solid rgba(217, 217, 217, 0.3);
+}
+
+.dark .ant-calendar-year-panel-header .ant-calendar-year-panel-century-select,
+.dark .ant-calendar-year-panel-header .ant-calendar-year-panel-decade-select,
+.dark .ant-calendar-year-panel-header .ant-calendar-year-panel-month-select,
+.dark
+    .ant-calendar-year-panel-header
+    .ant-calendar-year-panel-year-select
+    .dark
+    .ant-calendar-month-panel-header
+    .ant-calendar-month-panel-century-select,
+.dark .ant-calendar-month-panel-header .ant-calendar-month-panel-decade-select,
+.dark .ant-calendar-month-panel-header .ant-calendar-month-panel-month-select,
+.dark .ant-calendar-month-panel-header .ant-calendar-month-panel-year-select {
+    color: rgba(255, 255, 255, 0.85);
+}
+
+.dark .ant-calendar-year-panel-header {
+    border-bottom: 1px solid #222d42;
+}
+
+.dark .ant-calendar-year-panel-last-decade-cell .ant-calendar-year-panel-year,
+.dark .ant-calendar-year-panel-next-decade-cell .ant-calendar-year-panel-year {
+    color: rgba(255, 255, 255, 0.35);
+}
+
+.dark .ant-calendar-year-panel-year:hover,
+.dark .ant-calendar-month-panel-month:hover,
+.dark .ant-calendar-decade-panel-decade:hover {
+    background-color: #222d42;
+}
+
+.dark .ant-calendar-header a:hover {
+    color: #fff;
+}
+
+.dark .ant-calendar-month-panel-header {
+    background-color: #101828;
+    border-bottom: 1px solid #222d42;
+}
+
+.dark .ant-calendar-year-panel,
+.dark .ant-calendar table {
+    background-color: #101828;
+}
+
+.dark .ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year,
+.dark
+    .ant-calendar-year-panel-selected-cell
+    .ant-calendar-year-panel-year:hover,
+.dark .ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month,
+.dark
+    .ant-calendar-month-panel-selected-cell
+    .ant-calendar-month-panel-month:hover,
+.dark
+    .ant-calendar-decade-panel-selected-cell
+    .ant-calendar-decade-panel-decade,
+.dark
+    .ant-calendar-decade-panel-selected-cell
+    .ant-calendar-decade-panel-decade:hover {
+    color: #fff;
+    background-color: #0a7557;
+}
+
+.dark .ant-calendar-last-month-cell .ant-calendar-date,
+.dark .ant-calendar-last-month-cell .ant-calendar-date:hover,
+.dark .ant-calendar-next-month-btn-day .ant-calendar-date,
+.dark .ant-calendar-next-month-btn-day .ant-calendar-date:hover {
+    color: rgb(255 255 255 / 25%);
+    background: transparent;
+    border-color: transparent;
+}
+
+.dark .ant-calendar-today .ant-calendar-date:hover {
+    color: #fff;
+    border-color: #0a7557;
+    background-color: #0a7557;
+}
+
+.dark
+    .ant-calendar-decade-panel-last-century-cell
+    .ant-calendar-decade-panel-decade,
+.dark
+    .ant-calendar-decade-panel-next-century-cell
+    .ant-calendar-decade-panel-decade {
+    color: rgb(255 255 255 / 25%);
+}
+
+.dark .ant-calendar-decade-panel-header {
+    border-bottom: 1px solid #222d42;
+    background-color: #101828;
+}
+
+.dark .ant-checkbox-inner {
+    background-color: rgba(14, 73, 181, 0.3);
+    border-color: rgba(14, 73, 181, 0.3);
+}
+
+.dark .ant-checkbox-checked .ant-checkbox-inner {
+    background-color: #0a7557;
+    border-color: #0a7557;
+}
+
+.dark .ant-calendar-input {
+    background-color: #101828;
+}
+
+.dark .ant-calendar-input::placeholder {
+    color: rgba(255, 255, 255, 0.25);
+}
+
+.ant-input-number-handler-wrap {
+    border-radius: 0;
+}
+
+.ant-input-number-handler {
+    border-radius: 0;
+}
+
+.ant-input-number {
+    overflow: clip;
 }

+ 222 - 103
web/html/login.html

@@ -2,114 +2,231 @@
 <html lang="en">
 {{template "head" .}}
 <style>
-
-    h1 {
-        text-align: center;
-        margin: 20px 0 50px 0;
-    }
-
-    .ant-btn, .ant-input {
-        height: 50px;
-        border-radius: 30px;
-    }
-
-    .ant-input-group-addon {
-        border-radius: 0 30px 30px 0;
-        width: 50px;
-        font-size: 18px;
-    }
-
-    .ant-input-affix-wrapper .ant-input-prefix {
-        left: 23px;
-    }
-
-    .ant-input-affix-wrapper .ant-input:not(:first-child) {
-        padding-left: 50px;
-    }
-
-    .centered {
-        display: flex;
-        text-align: center;
-        align-items: center;
-        justify-content: center;
-    }
-
-    .title {
-        font-size: 32px;
-        font-weight: bold;
-    }
-
-    #app {
-        overflow: hidden;
-    }
-    #login {
-        animation: charge .5s both;
-        background-color: #fff;
-        border-radius: 2rem;
-        padding: 3rem;
-    }
-    #login:hover {
-        box-shadow: 0 2px 8px rgba(0,0,0,.09);
-    }
-    @keyframes charge {
-        from {transform: translateY(5rem);opacity: 0}
-        to {transform: translateY(0);opacity: 1}
+  h1 {
+    text-align: center;
+    margin: 20px 0 50px 0;
+  }
+  .ant-btn,
+  .ant-input {
+    height: 50px;
+    border-radius: 30px;
+  }
+  .ant-input-group-addon {
+    border-radius: 0 30px 30px 0;
+    width: 50px;
+    font-size: 18px;
+  }
+  .ant-input-affix-wrapper .ant-input-prefix {
+    left: 23px;
+  }
+  .ant-input-affix-wrapper .ant-input:not(:first-child) {
+    padding-left: 50px;
+  }
+  .centered {
+    display: flex;
+    text-align: center;
+    align-items: center;
+    justify-content: center;
+  }
+  .title {
+    font-size: 32px;
+    font-weight: bold;
+  }
+  #app {
+    overflow: hidden;
+  }
+  #login {
+    animation: charge 0.5s both;
+    background-color: #fff;
+    border-radius: 2rem;
+    padding: 3rem;
+    transition: all 0.3s;
+  }
+  #login:hover {
+    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.09);
+  }
+  @keyframes charge {
+    from {
+      transform: translateY(5rem);
+      opacity: 0;
     }
-    @keyframes wave {
-        from {transform: rotate(0deg);}
-        to {transform: rotate(360deg);}
+    to {
+      transform: translateY(0);
+      opacity: 1;
     }
-    .wave {
-        opacity: .6;
-        position: absolute;
-        bottom: 40%;
-        left: 50%;
-        width: 6000px;
-        height: 6000px;
-        background: #000;
-        margin-left: -3000px;
-        transform-origin: 50% 48%;
-        border-radius: 46%;
-        animation: wave 72s infinite linear;
-        pointer-events: none;
+  }
+  @keyframes wave {
+    from {
+      transform: rotate(0deg);
     }
-    .wave2 {
-        animation: wave 88s infinite linear;
-        opacity: .3;
+    to {
+      transform: rotate(360deg);
     }
-    .wave3 {
-        animation: wave 80s infinite linear;
-        opacity: .1;
+  }
+  .wave {
+    opacity: 0.6;
+    position: absolute;
+    bottom: 40%;
+    left: 50%;
+    width: 6000px;
+    height: 6000px;
+    background: #000;
+    margin-left: -3000px;
+    transform-origin: 50% 48%;
+    border-radius: 46%;
+    animation: wave 72s infinite linear;
+    pointer-events: none;
+  }
+  .wave2 {
+    animation: wave 88s infinite linear;
+    opacity: 0.3;
+  }
+  .wave3 {
+    animation: wave 80s infinite linear;
+    opacity: 0.1;
+    background: #0a755715;
+  }
+  .under {
+    background-color: #dbf5ed;
+  }
+  .dark .wave {
+    background: rgb(10 117 87 / 20%);
+  }
+  .dark .under {
+    background-color: #051510;
+  }
+  .dark #login {
+    background-color: rgb(8, 22, 20);
+  }
+  .dark h1 {
+    color: rgba(255, 255, 255, 0.85);
+  }
+  .ant-btn-primary-login {
+    color: #0a7557;
+    background-color: #edf4fa;
+    border-color: #a9c5e7;
+    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);
+    box-shadow: none;
+    width: 100%;
+  }
+  .ant-btn-primary-login:focus,
+  .ant-btn-primary-login:hover {
+    color: #fff;
+    background-color: #0c3f9d;
+    border-color: #0a7557;
+    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 ease-in-out 5s infinite;
+    background-position-x: -500px;
+    width: 95%;
+    animation-delay: -0.5s;
+    box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);
+  }
+  .ant-btn-primary-login.active,
+  .ant-btn-primary-login:active {
+    color: #fff;
+    background-color: #04308f;
+    border-color: #04308f;
+  }
+  @keyframes ma-bg-move {
+    0% {
+      background-position: -500px 0;
     }
-    .wave {
-        background: #0a755715;
+    50% {
+      background-position: 1000px 0;
     }
-    .under {
-        background-color: #dbf5ed;
+    100% {
+      background-position: 1000px 0;
     }
-    .dark .wave {
-        background: rgb(10 117 87 / 20%);
-    }
-    .dark .under {
-        background-color: #051510;
-    }
-    .dark #login {
-        background-color: rgb(8, 22, 20);
-    }
-    .dark h1 {
-        color: rgb(255 255 255 / 85%);
+  }
+  .wave-btn-bg {
+    position: relative;
+    border-radius: 25px;
+    width: 100%;
+  }
+  .dark .wave-btn-bg {
+    color: #fff;
+    position: relative;
+    background-color: #0a7557;
+    border: 2px double transparent;
+    background-origin: border-box;
+    background-clip: padding-box, border-box;
+    background-size: 300%;
+    animation: wave-btn-tara 4s ease infinite;
+    transition: all 0.5s ease;
+    width: 100%;
+  }
+  .dark .wave-btn-bg-cl {
+    background-image: linear-gradient(rgba(13, 14, 33, 0), rgba(13, 14, 33, 0)),
+      radial-gradient(circle at left top, #0a7557, #387eff, #0a7557) !important;
+    border-radius: 3em;
+  }
+  .dark .wave-btn-bg-cl:hover {
+    width: 95%;
+  }
+  .dark .wave-btn-bg-cl:before {
+    position: absolute;
+    content: "";
+    top: -5px;
+    left: -5px;
+    bottom: -5px;
+    right: -5px;
+    z-index: -1;
+    background: inherit;
+    background-size: inherit;
+    border-radius: 4em;
+    opacity: 0;
+    transition: 0.5s;
+  }
+  .dark .wave-btn-bg-cl:hover::before {
+    opacity: 1;
+    filter: blur(20px);
+    animation: wave-btn-tara 8s linear infinite;
+  }
+  @keyframes wave-btn-tara {
+    to {
+      background-position: 300%;
     }
+  }
+  .dark .ant-btn-primary-login {
+    font-size: 14px;
+    color: #fff;
+    text-align: center;
+    background-image: linear-gradient(
+      rgba(13, 14, 33, 0.45),
+      rgba(13, 14, 33, 0.35)
+    );
+    border-radius: 2rem;
+    border: none;
+    outline: none;
+    background-color: transparent;
+    height: 46px;
+    position: relative;
+    white-space: nowrap;
+    cursor: pointer;
+    touch-action: manipulation;
+    padding: 0 15px;
+    width: 100%;
+    animation: none;
+    background-position-x: 0;
+    box-shadow: none;
+  }
 </style>
 <body>
-<a-layout id="app" v-cloak class="login" :class="themeSwitcher.currentTheme">
+<a-layout id="app" v-cloak :class="themeSwitcher.currentTheme">
     <transition name="list" appear>
-        <a-layout-content class="under">
+        <a-layout-content class="under" style="min-height: 0;">
             <div class='wave'></div>
             <div class='wave wave2'></div>
             <div class='wave wave3'></div>
-            <a-row type="flex" justify="center" align="middle" style="height: 100%;">
-            <a-col :xs="22" :sm="20" :md="14" :lg="10" :xl="6" id="login">
-                <a-row type="flex" justify="center">
+            <a-row type="flex" justify="center" align="middle" style="height: 100%; overflow: auto;">
+            <a-col :xs="22" :sm="20" :md="14" :lg="10" :xl="8" :xxl="6" id="login" style="margin: 3rem 0;">
+            <a-row type="flex" justify="center">
                 <a-col>
                     <h1 class="title">{{ i18n "pages.login.title" }}</h1>
                 </a-col>
@@ -120,7 +237,7 @@
                         <a-form-item>
                             <a-input v-model.trim="user.username" placeholder='{{ i18n "username" }}'
                                      @keydown.enter.native="login" autofocus>
-                                <a-icon slot="prefix" type="user" style="font-size: 16px;" />
+                                <a-icon slot="prefix" type="user" style="font-size: 16px;"/>
                             </a-input>
                         </a-form-item>
                         <a-form-item>
@@ -136,18 +253,20 @@
                         </a-form-item>
                         <a-form-item>
                             <a-row justify="center" class="centered">
-                                <a-button type="primary" :loading="loading" @click="login" :icon="loading ? 'poweroff' : undefined"
-                                          :style="loading ? { width: '50px' } : { display: 'block', width: '100%' }">
-                                    [[ loading ? '' : '{{ i18n "login" }}' ]]
-                                </a-button>
+                                <div class="wave-btn-bg wave-btn-bg-cl">
+                                    <a-button class="ant-btn-primary-login" type="primary" :loading="loading" @click="login" :icon="loading ? 'poweroff' : undefined"
+                                              :style="loading ? { width: '50px' } : { display: 'inline-block' }">
+                                        [[ loading ? '' : '{{ i18n "login" }}' ]]
+                                    </a-button>
+                                </div>
                             </a-row>
                         </a-form-item>
                         <a-form-item>
                             <a-row justify="center" class="centered">
                                 <a-col :span="24">
-                                    <a-select ref="selectLang" v-model="lang" @change="setLang(lang)" :dropdown-class-name="themeSwitcher.currentTheme">
-                                        <a-select-option :value="l.value" :label="l.value" v-for="l in supportLangs">
-                                            <span role="img" :aria-label="l.name" v-text="l.icon"></span>
+                                    <a-select ref="selectLang" v-model="lang" @change="setLang(lang)" style="width: 150px;" :dropdown-class-name="themeSwitcher.currentTheme">
+                                        <a-select-option :value="l.value" label="English" v-for="l in supportLangs">
+                                            <span role="img" aria-label="l.name" v-text="l.icon"></span>
                                             &nbsp;&nbsp;<span v-text="l.name"></span>
                                         </a-select-option>
                                     </a-select>
@@ -182,6 +301,7 @@
             this.password = "";
         }
     }
+
     const app = new Vue({
         delimiters: ['[[', ']]'],
         el: '#app',
@@ -216,7 +336,6 @@
             },
         },
     });
-
 </script>
 </body>
 </html>

+ 1 - 1
web/html/xui/inbound_client_table.html

@@ -19,7 +19,7 @@
             :overlay-class-name="themeSwitcher.currentTheme"
             ok-text='{{ i18n "reset"}}'
             cancel-text='{{ i18n "cancel"}}'>
-            <a-icon slot="icon" type="question-circle-o" style="color: blue"></a-icon>
+            <a-icon slot="icon" type="question-circle-o" :style="themeSwitcher.isDarkTheme ? 'color: #3c89e8' : 'color: blue'"></a-icon>
             <a-icon style="font-size: 24px;" class="normal-icon" type="retweet" v-if="client.email.length > 0"></a-icon>
         </a-popconfirm>
     </a-tooltip>