This commit is contained in:
pbao9
2026-01-30 08:23:19 +07:00
parent a3c3f4a577
commit 8b4c93e820
210 changed files with 71688 additions and 590 deletions
+73
View File
@@ -0,0 +1,73 @@
// Alert
.alert {
svg {
width: 19px;
height: 19px;
margin-right: .5rem;
}
i {
font-size: 19px;
margin-right: .5rem;
}
.alert-link {
text-decoration: underline;
}
}
@each $state, $value in $theme-colors {
// Basic alerts
.alert-#{$state} {
background-color: rgba($value, .1);
color:$value;
border-color: rgba($value, .5);
.alert-link {
color:$value;
}
&.alert-light {
border-color: rgba($value, 1);
color: $secondary;
.alert-link {
color: $secondary;
}
}
&.alert-dark {
border-color: rgba($dark, .2);
}
}
// Fill alerts
.alert-fill-#{$state} {
--#{$prefix}alert-color: #{$white};
--#{$prefix}alert-bg: var(--#{$prefix}#{$state});
--#{$prefix}alert-border-color: var(--#{$prefix}#{$state}-border-subtle);
--#{$prefix}alert-link-color: var(--#{$prefix}#{$state}-text-emphasis);
&.alert-fill-light {
--#{$prefix}alert-color: #{$dark};
}
&.alert-fill-dark {
--#{$prefix}alert-color: #{$light};
}
}
}
@if $enable-dark-mode {
@include color-mode(dark) {
@each $state, $value in $theme-colors {
.alert-#{$state} {
&.alert-light {
border-color: rgba($value, .2);
}
&.alert-dark {
border-color: rgba($light, .3);
color: $secondary;
.alert-link {
color: $secondary;
}
}
}
}
}
}
+9
View File
@@ -0,0 +1,9 @@
// Auth page
.auth-page {
.auth-side-wrapper {
width: 100%;
height: 100%;
background-size: cover;
}
}
+7
View File
@@ -0,0 +1,7 @@
// Badges
a.badge { // for link badges
&:hover {
color: $white;
}
}
@@ -0,0 +1,31 @@
// Breadcrumb
.breadcrumb {
&.breadcrumb-line {
.breadcrumb-item {
+ .breadcrumb-item {
&::before {
content: "-" !important;
}
}
}
}
&.breadcrumb-dot {
.breadcrumb-item {
+ .breadcrumb-item {
&::before {
content: "•" !important;
}
}
}
}
&.breadcrumb-arrow {
.breadcrumb-item {
+ .breadcrumb-item {
&::before {
content: ">" !important;
}
}
}
}
}
+109
View File
@@ -0,0 +1,109 @@
// Buttons
.btn {
i {
font-size: 1rem;
}
&.btn-rounded {
@include border-radius(50px);
}
&.btn-xs {
padding: $btn-padding-y-xs $btn-padding-x-xs;
font-size: $btn-font-size-xs;
}
// Overriding bootstrap style
&.btn-outline-light {
--#{$prefix}btn-color: var(--#{$prefix}body-color);
}
// Buttons with only icons
&.btn-icon {
width: 38px;
height: 38px;
padding: 0;
display: inline-flex;
align-items: center;
justify-content: center;
svg {
height: 18px;
}
&.btn-xs {
width: 30px;
height: 30px;
svg {
height: 14px;
}
}
&.btn-sm {
width: 36px;
height: 36px;
svg {
height: 15px;
}
}
&.btn-lg {
width: 42px;
height: 42px;
svg {
height: 20px;
}
}
}
// Buttons with icon and text
&.btn-icon-text {
height: 38px;
display: inline-flex;
align-items: center;
.btn-icon-prepend {
margin-right: .5rem;
}
.btn-icon-append {
margin-left: .5rem;
}
.btn-icon-prepend,
.btn-icon-append {
width: 18px;
height: 18px;
}
&.btn-xs {
.btn-icon-prepend,
.btn-icon-append {
width: 14px;
height: 14px;
}
}
&.btn-sm {
.btn-icon-prepend,
.btn-icon-append {
width: 15px;
height: 15px;
}
}
&.btn-lg {
.btn-icon-prepend,
.btn-icon-append {
width: 20px;
height: 20px;
}
}
}
}
// Social buttons
@each $color, $value in $social-colors {
.btn-#{$color} {
@include social-button(social-color($color));
}
.btn-outline-#{$color} {
@include social-outline-button(social-color($color));
}
}
// Inverse buttons
@each $color, $value in $theme-colors {
.btn-inverse-#{$color} {
@include button-inverse-variant($value);
}
}
+30
View File
@@ -0,0 +1,30 @@
// Cards
.card {
.card-body {
+ .card-body {
padding-top: 1rem;
}
}
.card-title {
text-transform: uppercase;
font-size: .875rem;
font-weight: 500;
}
}
.card-group {
box-shadow: $card-box-shadow;
.card {
box-shadow: none;
}
}
@if $enable-dark-mode {
@include color-mode(dark) {
.card {
--#{$prefix}card-border-color: #{$card-border-color-dark};
--#{$prefix}card-box-shadow: #{$card-box-shadow-dark};
}
}
}
+165
View File
@@ -0,0 +1,165 @@
// Chat page
.chat-wrapper {
height: calc(100vh - #{$navbar-height} - 102px);
@media(max-width: 991px) {
min-height: 100%;
}
@media(max-width: 991px) {
height: 100%;
}
.chat-aside {
@media(min-width: 992px) {
padding-right: 23px;
}
.aside-body {
.tab-content {
.tab-pane {
position: relative;
max-height: calc(100vh - 385px);
.chat-list {
.chat-item {
a {
> div {
padding-top: 11px;
padding-bottom: 11px;
}
}
}
}
}
}
}
}
.chat-content {
@media(max-width: 991px) {
position: absolute;
background: var(--#{$prefix}body-bg);
left: 0;
bottom: -1px;
top: 0;
right: 0;
display: none;
&.show {
display: block;
}
}
.chat-header {
padding: 0 10px;
}
.chat-body {
position: relative;
max-height: calc(100vh - 340px);
margin-top: 20px;
margin-bottom: 20px;
@media(max-width: 767px) {
max-height: calc(100vh - 315px);
}
@media(max-width: 991px) {
max-height: calc(100vh - 342px);
}
.messages {
padding: 0 10px;
list-style-type: none;
.message-item {
display: flex;
max-width: 80%;
margin-bottom: 20px;
@media(max-width: 767px) {
max-width: 95%;
}
.content {
.bubble {
position: relative;
padding: 7px 15px;
margin-bottom: 4px;
width: -webkit-fit-content;
width: -moz-fit-content;
width: fit-content;
}
span {
font-size: 12px;
color: $secondary;
}
}
&.friend {
img {
order: 1;
margin-right: 15px;
}
.content {
order: 2;
.bubble {
background: rgba($primary, .1);
border-radius: 0 5px 5px;
&::before {
content: '';
width: 0;
height: 0;
position: absolute;
left: -10px;
top: 0;
border-top: 5px solid rgba($primary, .1);
border-bottom: 5px solid transparent;
border-left: 5px solid transparent;
border-right:5px solid rgba($primary, .1);
}
}
}
}
&.me {
margin-left: auto;
img {
order: 2;
margin-left: 15px;
}
.content {
order: 1;
margin-left: auto;
.bubble {
background: rgba($info, .1);
border-radius: 5px 0 5px 5px;
margin-left: auto;
&::before {
content: '';
width: 0;
height: 0;
position: absolute;
right: -10px;
top: 0;
border-top: 5px solid rgba($info, .1);
border-bottom: 5px solid transparent;
border-left: 5px solid rgba($info, .1);
border-right:5px solid transparent;
}
}
span {
text-align: right;
display: block;
}
}
}
}
}
}
}
figure {
position: relative;
.status {
width: 11px;
height: 11px;
background: $secondary;
position: absolute;
bottom: 0px;
right: -2px;
border-radius: 50%;
border: 2px solid var(--#{$prefix}body-bg);
&.online {
background: $success;
}
&.offline {
background: $secondary;
}
}
}
}
+7
View File
@@ -0,0 +1,7 @@
// Close button
.btn-close {
&:focus {
box-shadow: none;
}
}
@@ -0,0 +1 @@
// Dashboard
+110
View File
@@ -0,0 +1,110 @@
// Dropdowns
// .dropdown,
// .btn-group:not(.dropstart):not(.dropend):not(.dropup) {
.dropdown-toggle {
&::after {
border: solid;
border-width: 0 1px 1px 0;
display: inline-block;
padding: 2px;
transform: rotate(45deg) scale(1.2);
margin-left: 6px;
}
&.dropdown-toggle-split::after {
margin-left: 0;
}
}
// }
.dropup {
.dropdown-toggle {
&::after {
border: solid;
border-width: 0 1px 1px 0;
display: inline-block;
padding: 2px;
transform: rotate(225deg) scale(1.2);
margin-left: 6px;
vertical-align: middle;
}
&.dropdown-toggle-split::after {
margin-left: 0;
}
}
}
.dropstart {
.dropdown-toggle {
&::before {
border: solid;
border-width: 0 1px 1px 0;
display: inline-block;
padding: 2px;
transform: rotate(130deg) scale(1.2);
margin-right: 6px;
vertical-align: middle;
}
&.dropdown-toggle-split::before {
margin-right: 0;
}
}
}
.dropend {
.dropdown-toggle {
&::after {
border: solid;
border-width: 0 1px 1px 0;
display: inline-block;
padding: 2px;
transform: rotate(315deg) scale(1.2);
margin-left: 6px;
vertical-align: middle;
}
&.dropdown-toggle-split::after {
margin-left: 0;
}
}
}
// .dropdown,
// .btn-group,
// .dropstart,
// .dropend,
// .dropup {
.dropdown-toggle {
&.no-toggle-icon {
&::after {
display: none;
}
}
}
// }
.dropdown-menu {
padding: .35rem;
margin-top: 0;
box-shadow: $dropdown-box-shadow;
}
.dropdown-item {
font-size: .812rem;
padding: .25rem .875rem;
border-radius: 2px;
i, svg {
color: $secondary;
}
&:not(&:active, &.active):hover {
background-color: $component-hover-bg;
&, i, svg {
color: $component-hover-color;
}
}
&:active,
&.active {
i, svg {
color: $component-active-color;
}
}
}
+129
View File
@@ -0,0 +1,129 @@
// Email page
.email-aside-nav {
&.collapse {
display: block;
@media(max-width: 991px) {
display: none;
}
&.show {
@media(max-width: 991px) {
display: block;
}
}
}
.nav-item {
border-radius: .2rem;
.nav-link {
color: var(--#{$prefix}body-color);
svg {
color: $secondary;
}
}
&:hover {
background: $component-hover-bg;
.nav-link {
&, svg {
color: $component-hover-color;
}
}
}
&.active {
background: $component-hover-bg;
.nav-link {
&, svg {
color: $component-hover-color;
}
}
}
}
}
.email-list-item {
display: flex;
align-items: center;
border-bottom: 1px solid var(--#{$prefix}border-color);
padding: 10px 20px;
cursor: pointer;
&:hover {
background: $component-hover-bg;
}
&:last-child {
margin-bottom: 5px;
}
.email-list-actions {
width: 40px;
vertical-align: top;
display: table-cell;
.form-check {
margin-bottom: 0;
}
.favorite {
display: block;
padding-left: 1px;
line-height: 15px;
span {
svg {
width: 14px;
color: $secondary;
}
}
&:hover span svg {
color: var(--#{$prefix}body-color);
}
&.active {
span {
svg {
color: $warning;
}
}
}
}
}
.email-list-detail {
width: calc(100% - 40px);
display: flex;
justify-content: space-between;
align-items: center;
flex-grow: 1;
.content {
overflow: hidden;
.from {
display: block;
margin: 0 0 1px 0;
color: var(--#{$prefix}body-color);
}
.msg {
width: 97%;
color: $secondary;
font-size: .8rem;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.date {
color: var(--#{$prefix}body-color);
white-space: nowrap;
.icon {
svg {
width: 14px;
margin-right: 7px;
color: $secondary;
}
}
}
}
&.email-list-item--unread {
background-color: var(--#{$prefix}primary-bg-subtle);
// background-color: $primary-bg-subtle;
.content {
.from {
font-weight: 500;
}
.msg {
font-weight: 700;
}
}
}
}
+33
View File
@@ -0,0 +1,33 @@
// Forms
.form-control-xs,
.form-select-xs {
padding: $input-padding-y-xs $input-padding-x-xs;
font-size: $input-font-size-xs;
}
.form-control-xs {
+ .input-group-text {
padding-top: $input-padding-y-xs;
padding-bottom: $input-padding-y-xs;
}
}
.form-check-input {
margin-top: .13em; // height adjustment
}
.input-group-text {
svg {
width: 18px;
height: 18px;
}
}
// For RTL
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
+40
View File
@@ -0,0 +1,40 @@
// Icons
.icons-list {
border-left: 1px solid var(--#{$prefix}border-color);
border-top: 1px solid var(--#{$prefix}border-color);
> div {
border-bottom: 1px solid var(--#{$prefix}border-color);
border-right: 1px solid var(--#{$prefix}border-color);
background: var(--#{$prefix}body-bg);
display: flex;
align-items: center;
padding:15px 20px;
font-weight: 400;
i {
display: inline-block;
font-size: 20px;
text-align: left;
margin-right: 12px;
color: $secondary;
transition: all .3s ease-in-out;
}
svg {
width: 20px;
margin-right: 12px;
color: $secondary;
transition: all .3s ease-in-out;
}
&:hover {
cursor: text;
i,
svg {
transform: scale(1.3);
color: $primary;
}
}
}
}
+59
View File
@@ -0,0 +1,59 @@
// Nav
.nav {
&.nav-tabs {
.nav-item {
.nav-link {
border-color: $nav-tabs-link-border-color;
color: var(--#{$prefix}body-color);
background-color: $nav-tabs-link-bg;
cursor: pointer;
&.active {
border-color: $nav-tabs-link-active-border-color;
color: $primary;
background: $nav-tabs-link-active-bg;
}
&.disabled {
background-color: transparent;
color: $secondary;
}
}
}
&.nav-tabs-vertical {
border-bottom: 0;
.nav-link {
width: 100%;
border: 1px solid transparent;
border-radius: 0;
border-color: $nav-tabs-link-border-color;
color: var(--#{$prefix}body-color);
background-color: $nav-tabs-link-bg;
&:first-child {
border-radius: $border-radius 0 0 0;
}
&:last-child {
border-radius: 0 0 0 $border-radius;
}
&.active {
background-color: $nav-tabs-link-active-bg;
color: $primary;
border-right-color: transparent;
}
}
}
&.nav-tabs-line {
.nav-link {
border: 0;
background-color: transparent;
&.active {
border-bottom: 2px solid $primary;
}
}
}
}
}
.tab-content {
&.tab-content-vertical {
height: 100%;
}
}
@@ -0,0 +1,33 @@
// Pagination
.pagination {
.page-item {
.page-link {
svg {
width: 16px;
height: 16px;
}
}
}
&.pagination-separated {
.page-item {
margin-left: 2px;
margin-right: 2px;
&:first-child {
margin-left: 0;
}
&:last-child {
margin-right: 0;
}
}
}
&.pagination-rounded {
.page-item {
margin-right: 2px;
margin-left: 2px;
.page-link {
@include border-radius(50px);
}
}
}
}
+35
View File
@@ -0,0 +1,35 @@
// Tables
.table {
margin-bottom: 0;
>:not(:last-child)>:last-child>* {
border-bottom-color: inherit;
}
thead {
th {
border-top: 0;
font-weight: 500;
font-size: 12px;
text-transform: uppercase;
color: $secondary;
i {
margin-left: 0.325rem;
}
}
}
th,
td {
white-space: nowrap;
}
td {
img {
width: 36px;
height: 36px;
border-radius: 100%;
}
}
}
+74
View File
@@ -0,0 +1,74 @@
// Timeline page
.timeline {
border-left: 3px solid $primary;
border-bottom-right-radius: $border-radius;
border-top-right-radius: $border-radius;
background: var(--#{$prefix}tertiary-bg);
margin: 0 auto;
position: relative;
padding: 50px;
list-style: none;
max-width: 40%;
@media(max-width: 767px) {
max-width: 98%;
padding: 25px;
}
.event {
border-bottom: 1px dashed $secondary;
padding-bottom: (50px * 0.5);
margin-bottom: 25px;
position: relative;
@media(max-width: 767px) {
padding-top: 30px;
}
.title {
font-weight: 500;
font-size: 1rem;
margin-bottom: 10px;
}
&:last-of-type {
padding-bottom: 0;
margin-bottom: 0;
border: none;
}
&:before, &:after {
position: absolute;
display: block;
top: 0;
}
&:before {
left: (((120px * 0.6) + 50px + 4px + 4px + (4px * 2)) * 1.5) * -1;
content: attr(data-date);
text-align: right;
font-weight: 500;
font-size: 0.9em;
min-width: 120px;
@media(max-width: 767px) {
left: 0px;
text-align: left;
}
}
&:after {
-webkit-box-shadow: 0 0 0 3px $primary;
box-shadow: 0 0 0 3px $primary;
left: (50px + 3px + (8px * 0.35)) * -1;
background: var(--#{$prefix}body-bg);
border-radius: 50%;
height: 9px;
width: 9px;
content: "";
top: 5px;
@media(max-width: 767px) {
left: (25px + 4px + (8px * 0.35)) * -1;
}
}
}
}