snapshot of https://github.com/espocrm/espocrm.git (master, 2026-09-18; blobs > 131072B omitted)
Some checks failed
Test / Test on PHP 8.3 (push) Failing after 5s
Test / Test on PHP 8.4 (push) Failing after 4s
Test / Test on PHP 8.5 (push) Failing after 3s
TypeScript static analysis / TypeScript check (push) Failing after 14s
Test Integration on MySQL / Test on PHP 8.3 (push) Failing after 2s
Test Integration on MySQL / Test on PHP 8.5 (push) Failing after 0s
Test Integration on PostgreSQL / Test on PHP 8.4 fix (push) Failing after 1s
Test Integration on PostgreSQL / Test on PHP 8.4 master (push) Failing after 1s

This commit is contained in:
upstream-mirror
2026-09-18 04:19:15 +05:00
commit 7cc7e6b4f3
10077 changed files with 900756 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
body .alert {
padding: var(--10px) var(--15px);
border-radius: var(--border-radius);
.message {
word-break: break-word;
}
}
body > .alert {
padding: var(--5px) var(--18px);
min-height: var(--30px);
max-width: var(--400px);
height: auto;
border-radius: 0 0 var(--border-radius) var(--border-radius);
box-shadow: var(--dropdown-box-shadow);
&.alert-closable {
.message {
width: calc(100% - var(--16px));
float: left;
}
}
.close-container {
width: var(--16px);
height: var(--16px);
float: right;
.close {
right: var(--minus-11px);
top: var(--minus-1px);
position: relative;
color: inherit;
text-shadow: none;
opacity: 1;
background: transparent;
padding: 0;
border: 0;
float: none;
&:hover {
opacity: 0.7;
}
> span {
line-height: var(--16px);
}
}
}
}
.alert-success {
.alert-variant-espo(var(--state-success-bg); var(--state-success-border); var(--state-success-text));
}
.alert-info {
.alert-variant-espo(var(--state-info-bg); var(--state-info-border); var(--state-info-text));
}
.alert-warning {
.alert-variant-espo(var(--state-warning-bg); var(--state-warning-border); var(--state-warning-text));
}
.alert-danger {
.alert-variant-espo(var(--state-danger-bg); var(--state-danger-border); var(--state-danger-text));
}
.alert-primary {
.alert-variant-espo(var(--state-primary-bg); var(--state-primary-border); var(--state-primary-text));
}

View File

@@ -0,0 +1,21 @@
.animation-spin-fast {
animation: fa-spin 0.5s infinite linear;
}
@keyframes animation-spin-fast {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.fa-spin {
animation-name: fa-spin;
animation-delay: 0s;
animation-direction: normal;
animation-duration: 2s;
animation-iteration-count: infinite;
animation-timing-function: linear;
}

View File

@@ -0,0 +1,546 @@
.btn {
border-radius: var(--border-radius);
&.radius-right {
border-top-right-radius: var(--border-radius) !important;
border-bottom-right-radius: var(--border-radius) !important;
}
&.radius-left {
border-top-left-radius: var(--border-radius) !important;
border-bottom-left-radius: var(--border-radius) !important;
}
&.margin-right {
margin-right: var(--padding-base-horizontal);
}
&.margin-left {
margin-left: var(--padding-base-horizontal);
}
}
.btn-text {
+ .btn {
border-top-left-radius: var(--border-radius) !important;
border-bottom-left-radius: var(--border-radius) !important;
}
}
.btn {
&:has(+ .btn-text) {
border-top-right-radius: var(--border-radius) !important;
border-bottom-right-radius: var(--border-radius) !important;
}
}
.btn {
height: var(--input-height-base);
font-weight: 500;
}
.btn-lg {
height: var(--input-height-large);
}
.btn-sm {
height: var(--input-height-small);
}
.btn.btn-link {
height: auto;
&:focus {
color: var(--link-color);
}
&:focus:hover {
color: var(--link-hover-color);
}
}
a.btn {
user-select: none;
-webkit-user-drag: none;
}
.btn.btn-default, .btn.btn-link {
> .caret {
color: var(--gray-soft);
}
}
.input-group {
.input-group-btn > {
.btn {
height: var(--input-height-base);
}
}
&.input-group-sm {
.input-group-btn > {
.btn {
height: var(--input-height-small);
}
}
}
&.input-group-lg {
.input-group-btn > {
.btn {
height: var(--input-height-large);
}
}
}
.input-group-btn .btn.btn-sm {
height: var(--input-height-small);
}
}
.btn:not(.btn-link):not(.btn-text) {
&:active:hover {
outline: 0;
background-image: none;
box-shadow: var(--btn-active-box-shadow);
}
}
.btn.disabled {
&:active:hover {
box-shadow: none !important;
}
}
.btn-icon {
width: var(--btn-icon-width);
padding-left: 0;
padding-right: 0;
.fa, .fas {
position: relative;
width: var(--16px);
text-align: center;
}
}
.btn-icon.btn-sm {
.fa-sm {
top: 0;
}
}
.btn-icon.btn-sm {
width: var(--btn-icon-width-small);
.fa, .fas {
font-size: var(--12px);
width: var(--12px);
line-height: var(--18px);
}
}
.btn.btn-xs-wide {
min-width: var(--btn-xs-wide-width);
}
.btn.btn-s-wide {
min-width: var(--btn-s-wide-width);
}
.btn.btn-wide {
min-width: var(--btn-wide-width);
}
.btn.btn-x-wide {
min-width: var(--btn-x-wide-width);
}
.btn.btn-xx-wide {
min-width: var(--btn-xx-wide-width);
}
.btn.btn-icon-wide {
width: var(--54px);
}
.btn.btn-icon-x-wide {
width: var(--76px);
}
.btn.btn-icon-xx-wide {
width: var(--100px);
}
.btn.btn-full-wide {
width: 100%;
text-overflow: ellipsis;
overflow: hidden;
}
.btn-default.active {
&,
&:hover,
&:focus {
> .fa,
> .far,
> .fas {
color: var(--btn-default-color);
}
}
}
.btn-default > .fa,
.btn-default > .far,
.btn-default > .fas {
color: @gray-soft;
}
.btn-default > .fa.text-muted,
.btn-default > .far.text-muted,
.btn-default > .fas.text-muted {
color: @gray-light;
}
.btn-default,
.btn-text {
&,
&:hover,
&:focus,
&:active {
> .fas,
> .far {
&.text-success {
color: var(--state-success-text);
}
&.text-danger {
color: var(--state-danger-text);
}
&.text-warning {
color: var(--state-warning-text);
}
&.text-info {
color: var(--state-info-text);
}
&.text-primary {
color: var(--state-primary-text);
}
}
}
}
.btn-default.disabled > .fa,
.btn-default.disabled > .far,
.btn-default.disabled > .fas {
color: @gray-light;
}
.btn-group.open,
.open > {
.btn.dropdown-toggle:not(.btn-text):not(.btn-link) {
box-shadow: var(--btn-active-box-shadow);
}
}
.btn-group > .btn-text {
&.active {
border-bottom-color: transparent;
&:after {
position: absolute;
bottom: var(--minus-2px);
right: calc(50%);
width: calc(100%);
content: "";
border-radius: var(--border-radius);
transform: translate(50%, -50%);
background-color: var(--gray-light);
height: var(--1px);
display: block;
}
}
}
.btn:not(.btn-icon) {
> .fas,
> .far {
&:first-child + span {
padding-left: var(--2px);
}
}
}
.btn-text {
color: var(--btn-text-color);
&.btn-default {
color: var(--btn-text-color);
background-color: transparent;
border-color: transparent;
&:active,
&:focus,
&:hover,
&:hover:active,
&:focus:active {
background-color: transparent;
color: var(--btn-text-color);
border-color: transparent;
}
}
&.btn-success,
&.text-success {
color: var(--state-success-text);
background-color: transparent;
border-color: transparent;
&:active,
&:focus,
&:hover,
&:hover:active,
&:focus:active {
background-color: transparent;
color: var(--state-success-text);
border-color: transparent;
}
}
&.btn-danger,
&.text-danger {
color: var(--state-danger-text);
background-color: transparent;
border-color: transparent;
&:active,
&:focus,
&:hover,
&:hover:active,
&:focus:active {
background-color: transparent;
color: var(--state-danger-text);
border-color: transparent;
}
}
&.btn-warning,
&.text-warning {
color: var(--state-warning-text);
background-color: transparent;
border-color: transparent;
&:active,
&:focus,
&:hover,
&:hover:active,
&:focus:active {
background-color: transparent;
color: var(--state-warning-text);
border-color: transparent;
}
}
&.btn-info,
&.text-ingo {
color: var(--state-info-text);
background-color: transparent;
border-color: transparent;
&:active,
&:focus,
&:hover,
&:hover:active,
&:focus:active {
background-color: transparent;
color: var(--state-info-text);
border-color: transparent;
}
}
&:focus {
> .fas,
> .far {
color: var(--gray-soft);
}
}
.far,
.fas {
color: var(--gray-soft);
}
&,
&:active,
&.active,
&:active:hover,
&[disabled],
fieldset[disabled] & {
background-color: transparent;
.box-shadow(none);
}
&,
&:hover,
&:focus,
&:active {
border-color: transparent;
}
&:hover,
&:focus {
color: var(--btn-text-color);
text-decoration: none;
background-color: transparent;
}
&.dropdown-toggle[aria-expanded="true"],
&:hover {
.far,
.fas {
color: var(--btn-text-color);
}
}
&.disabled,
&[disabled],
fieldset[disabled] & {
&:hover,
&:focus {
color: @gray-light;
text-decoration: none;
}
color: @gray-light;
.far,
.fas {
color: @gray-light;
}
}
&.active {
border-bottom: var(--1px) solid @gray-light;
}
&.btn-text-hoverable {
&:hover,
&:focus:hover {
text-decoration: underline;
color: var(--btn-text-color)
}
&:focus,
&:focus:hover {
color: var(--btn-text-color)
}
}
font-weight: 500;
}
.btn-link, .btn-default, .btn-text {
.caret {
border-top-color: var(--text-muted-color);
}
&:hover {
.caret {
border-top-color: var(--btn-text-color);
}
}
}
&.open {
.btn-link, .btn-default, .btn-text {
.caret {
border-top-color: var(--btn-text-color);
}
}
}
.btn-default {
.button-variant-espo(
var(--btn-default-color);
var(--btn-default-bg);
var(--btn-default-border);
var(--btn-default-hover-bg);
var(--btn-default-active-bg);
var(--btn-default-hover-border);
var(--btn-default-active-border)
);
}
.btn-primary {
.button-variant-espo(
var(--btn-primary-color);
var(--btn-primary-bg);
var(--btn-primary-border);
var(--btn-primary-hover-bg);
var(--btn-primary-active-bg);
var(--btn-primary-hover-border);
var(--btn-primary-active-border)
);
}
.btn-success {
.button-variant-espo(
var(--btn-success-color);
var(--btn-success-bg);
var(--btn-success-border);
var(--btn-success-hover-bg);
var(--btn-success-active-bg);
var(--btn-success-hover-border);
var(--btn-success-active-border)
);
}
.btn-warning {
.button-variant-espo(
var(--btn-warning-color);
var(--btn-warning-bg);
var(--btn-warning-border);
var(--btn-warning-hover-bg);
var(--btn-warning-active-bg);
var(--btn-warning-hover-border);
var(--btn-warning-active-border)
);
}
.btn-danger {
.button-variant-espo(
var(--btn-danger-color);
var(--btn-danger-bg);
var(--btn-danger-border);
var(--btn-danger-hover-bg);
var(--btn-danger-active-bg);
var(--btn-danger-hover-border);
var(--btn-danger-active-border)
);
}
.btn-info {
.button-variant-espo(
var(--btn-info-color);
var(--btn-info-bg);
var(--btn-info-border);
var(--btn-info-hover-bg);
var(--btn-info-active-bg);
var(--btn-info-hover-border);
var(--btn-info-active-border)
);
}
.btn {
&.btn-default,
&.btn-text {
&.text-success {
color: var(--state-success-text);
}
&.text-danger {
color: var(--state-danger-text);
}
&.text-warning {
color: var(--state-warning-text);
}
&.text-primary {
color: var(--state-primary-text);
}
&.text-info {
color: var(--state-info-text);
}
}
}

View File

@@ -0,0 +1,379 @@
.autocomplete-suggestions {
border: var(--dropdown-border-width) solid var(--dropdown-border);
background-color: var(--dropdown-bg);
color: var(--dropdown-link-color);
cursor: default;
overflow: auto;
padding: var(--5px) 0;
user-select: none;
min-width: calc(var(--50px) + var(--10px));
.autocomplete-suggestion.autocomplete-selected {
background-color: var(--dropdown-link-hover-bg) !important;
color: var(--dropdown-link-hover-color) !important;
}
strong {
font-weight: normal;
color: @brand-primary;
}
.autocomplete-suggestion {
padding: var(--4px) var(--10px);
white-space: nowrap;
overflow: hidden;
a {
&:hover {
text-decoration: none;
}
}
}
}
.popover,
.dropdown-menu,
.selectize-dropdown,
.selectize-dropdown.form-control,
.autocomplete-suggestions,
.ui-timepicker-wrapper {
.dropdown-border();
}
// Separately intentionally as this one is not supported in FF.
select.form-control::picker(select) {
.dropdown-border();
}
.popover {
background-color: var(--dropdown-bg);
&.bottom > .arrow {
border-bottom-color: var(--dropdown-border);
}
&.top > .arrow {
border-top-color: var(--dropdown-border);
}
&.left > .arrow {
border-left-color: var(--dropdown-border);
}
&.right > .arrow {
border-right-color: var(--dropdown-border);
}
}
.ui-timepicker-wrapper {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
ul.dropdown-menu > li.checkbox {
margin-left: 0;
margin-top: 0;
margin-bottom: 0;
padding: var(--4px) 0 var(--4px) var(--14px);
.checkbox-text {
padding-left: var(--2px);
}
user-select: none;
label {
padding-left: var(--23px);
input[type="checkbox"].form-checkbox {
margin-left: calc(var(--23px) * -1);
&.form-checkbox-small {
margin-top: var(--3px);
}
}
}
}
ul.dropdown-menu {
> li > a {
padding-top: var(--4px);
padding-bottom: var(--4px);
-webkit-user-select: none;
-webkit-user-drag: none;
-moz-user-select: none;
user-select: none;
line-height: var(--line-height-computed);
&.active {
background-color: var(--dropdown-link-active-bg);
text-decoration: none;
outline: 0;
}
> .check-icon + div {
padding-right: var(--26px);
}
span.fa-check {
position: relative;
top: var(--1px);
+ div {
display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: top;
max-width: 100%;
}
}
&.disabled {
color: var(--text-muted-color);
}
&:not(:has(.check-icon)) {
overflow: hidden;
text-overflow: ellipsis;
}
> div {
overflow: hidden;
text-overflow: ellipsis;
}
}
> li.checkbox:last-child {
margin-bottom: var(--3px);
}
> .dropdown-header {
user-select: none;
}
}
ul {
&.dropdown-menu-with-icons,
&:has(> li:not(.hidden) > a span.item-icon) {
> li {
&:not(:has(.item-icon-grid)) {
a {
padding-left: var(--12px);
}
.fas,
.far,
.glyphicon,
.empty-icon {
width: var(--16px);
text-align: center;
display: inline-block;
color: var(--gray-soft);
}
.item-icon {
font-size: var(--12px);
}
.item-text {
padding-left: var(--10px);
position: static;
}
}
}
}
&:has(> li:not(.hidden) > a span.item-icon) {
> li {
> a:not(:has(span.item-icon)):not(:has(span.item-icon)) {
padding-left: var(--28px);
}
}
}
}
ul.dropdown-menu {
> li {
a {
.item-icon + .item-text {
padding-left: var(--10px);
}
}
}
> li {
.item-icon-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(var(--34px), 1fr));
> a {
padding: var(--4px) var(--4px);
text-align: center;
&:hover {
background-color: var(--dropdown-link-hover-bg);
}
}
}
}
> li {
> a {
&,
> div {
> .reaction-icon {
font-size: var(--16px) !important;
}
}
}
}
}
.btn-group.open .dropdown-toggle {
&.btn-text {
box-shadow: none;
}
}
.btn.dropdown-toggle > span.caret.wide {
margin-left: var(--2px);
margin-right: var(--2px);
}
/*.fix-position {
.btn-group {
position: unset;
}
}*/
.dropdown-menu {
.quick-search-list-item {
input {
border-left: 0;
border-right: 0;
border-radius: 0;
}
}
}
@media screen and (max-width: @screen-xs-max) {
ul.dropdown-menu {
max-width: 100vw;
}
}
ul.dropdown-menu {
> li.divider:first-child {
display: none;
}
> li.divider:last-child {
display: none;
}
> li.divider + li.divider {
display: none;
}
> li.divider:not(.hidden) + li.hidden + li.divider {
display: none;
}
> li.divider:not(.hidden) + li.hidden + li.hidden + li.divider {
display: none;
}
> li.divider:not(.hidden) + li.hidden + li.hidden + li.hidden + li.divider {
display: none;
}
> li.divider:not(.hidden) + li.hidden + li.hidden + li.hidden + li.hidden + li.divider {
display: none;
}
> li.divider:not(.hidden) + li.hidden + li.hidden + li.hidden + li.hidden + li.hidden + li.divider {
display: none;
}
> li.divider:not(.hidden) + li.hidden + li.hidden + li.hidden + li.hidden + li.hidden + li.hidden + li.divider {
display: none;
}
> li.hidden:first-child + li.divider {
display: none;
}
> li.hidden:first-child + li.hidden + li.divider {
display: none;
}
> li.hidden:first-child + li.hidden + li.hidden + li.divider {
display: none;
}
> li.hidden:first-child + li.hidden + li.hidden + li.hidden + li.divider {
display: none;
}
> li.hidden:first-child + li.hidden + li.hidden + li.hidden + li.hidden + li.divider {
display: none;
}
> li.hidden:first-child + li.hidden + li.hidden + li.hidden + li.hidden + li.hidden + li.divider {
display: none;
}
> li.divider:has(+ li.hidden:last-child) {
display: none;
}
> li.divider:has(+ li.hidden + li.hidden:last-child) {
display: none;
}
> li.divider:has(+ li.hidden + li.hidden + li.hidden:last-child) {
display: none;
}
> li.divider:has(+ li.hidden + li.hidden + li.hidden + li.hidden:last-child) {
display: none;
}
> li.divider:has(+ li.hidden + li.hidden + li.hidden + li.hidden + li.hidden:last-child) {
display: none;
}
> li.divider:has(+ li.hidden + li.hidden + li.hidden + li.hidden + li.hidden + li.hidden:last-child) {
display: none;
}
}
.textcomplete-dropdown {
.textcomplete-item {
> span {
display: block;
cursor: pointer;
padding: var(--4px) var(--20px);
overflow: hidden;
text-overflow: ellipsis;
img.avatar {
margin-right: var(--5px);
}
}
&:hover {
> span {
background-color: var(--dropdown-link-hover-bg);
}
}
}
&:not(:has(> li:hover)) {
.textcomplete-item {
&.active {
background-color: var(--gray-lighter);
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,116 @@
.grid-auto-fill-xs,
.grid-auto-fill-sm,
.grid-auto-fill-md {
margin-left: calc(var(--grid-gutter-width-half) * -1);
margin-right: calc(var(--grid-gutter-width-half) * -1);
&:extend(.clearfix all);
> div {
float: left;
position: relative;
min-height: var(--1px);
padding-left: var(--grid-gutter-width-half);
padding-right: var(--grid-gutter-width-half);
}
}
.grid-auto-fill-xs {
> div {
width: 20%;
}
}
.grid-auto-fill-sm {
> div {
width: 25%;
}
}
.grid-auto-fill-md {
> div {
width: 50%;
}
}
@media screen and (max-width: @screen-sm-max) {
.grid-auto-fill-xs {
> div {
width: 25%;
}
}
.grid-auto-fill-sm {
> div {
width: 33.33333333333333%;
}
}
.grid-auto-fill-md {
> div {
width: 50%;
}
}
}
@media screen and (max-width: @screen-xs-max) {
.grid-auto-fill-xs {
> div {
width: 50%;
}
}
.grid-auto-fill-sm,
.grid-auto-fill-md {
> div {
width: 100%;
}
}
}
@supports (display: grid) {
.grid-auto-fill-xxs,
.grid-auto-fill-xs,
.grid-auto-fill-sm,
.grid-auto-fill-md {
display: grid;
grid-column-gap: var(--grid-gutter-width);
margin-left: 0;
margin-right: 0;
> div {
width: unset !important;
padding-left: unset !important;
padding-right: unset !important;
min-height: unset !important;
position: unset !important;
float: unset !important;
}
&::before,
&::after {
display: none !important;
}
}
.grid-auto-fill-xxs {
grid-template-columns: repeat(auto-fill, minmax(var(--grid-column-width-xxsmall), 1fr));
}
.grid-auto-fill-xs {
grid-template-columns: repeat(auto-fill, minmax(var(--grid-column-width-xsmall), 1fr));
}
.grid-auto-fill-sm {
grid-template-columns: repeat(auto-fill, minmax(var(--grid-column-width-small), 1fr));
}
.grid-auto-fill-md {
grid-template-columns: repeat(auto-fill, minmax(var(--grid-column-width-medium), 1fr));
}
.grid-auto-fit-xxs,
.grid-auto-fit-xs,
.grid-auto-fit-sm {
display: grid;
grid-column-gap: var(--grid-gutter-width);
}
.grid-auto-fit-xxs {
grid-template-columns: repeat(auto-fit, minmax(var(--grid-column-width-xxsmall), 1fr));
}
.grid-auto-fit-xs {
grid-template-columns: repeat(auto-fit, minmax(var(--grid-column-width-xsmall), 1fr));
}
.grid-auto-fit-sm {
grid-template-columns: repeat(auto-fit, minmax(var(--grid-column-width-small), 1fr));
}
}

View File

@@ -0,0 +1,51 @@
.fas,
.far,
.fa {
font-size: var(--icon-size-base);
line-height: var(--icon-line-height-base);
}
.btn {
.fas,
.far {
line-height: var(--line-height-computed);
&.fa-sm {
line-height: var(--icon-line-height-small);
}
}
}
.fas.fa-sm,
.far.fa-sm,
.btn-sm .fas,
.btn-sm .far,
.small .far,
.small .fas,
.fas.small,
.far.small {
font-size: var(--icon-size-small);
line-height: var(--icon-line-height-small);
}
.btn:not(.btn-sm),
ul.nav.tabs > li > a {
> .fas.fa-ellipsis-h {
vertical-align: middle;
}
}
.btn-sm {
> .fa-ellipsis-h,
> .fa-plus {
font-size: var(--14px);
}
}
.icon-is-replied {
transform: scaleX(-1);
&::before {
content: "\f064";
}
}

View File

@@ -0,0 +1,365 @@
.modal-container.overlaid .modal-content {
.box-shadow(none);
}
.modal-header {
background-color: @modal-header-bg;
padding: var(--modal-title-padding) var(--panel-padding);
border-bottom: 0 solid var(--modal-header-border-color);
min-height: calc(var(--modal-title-line-height) + var(--modal-title-padding));
&.fixed-height {
height: var(--43px);
max-height: var(--43px);
overflow: hidden;
.modal-title {
width: calc(100% - var(--21px));
> .modal-title-text {
max-width: 100%;
overflow: hidden;
white-space: nowrap;
display: inline-block;
}
&.overlapped {
> .modal-title-text {
&:before {
content: " ";
position: absolute;
right: var(--34px);
background: linear-gradient(to right, transparent, @modal-header-bg);
height: var(--30px);
width: calc(var(--30px) * 2);
}
}
}
}
}
.modal-title {
> .modal-title-text {
user-select: none;
}
}
a {
color: @text-color;
}
.close {
font-size: var(--31px);
font-weight: normal;
margin-top: calc(var(--6px) * -1);
max-height: var(--24px);
> span {
position: relative;
max-height: var(--24px);
height: var(--24px);
display: inline-block;
}
opacity: 1;
text-shadow: none;
&,
> .fas,
> .far {
color: var(--text-muted-color);
}
&:hover {
opacity: 1;
&,
> .fas,
> .far {
color: var(--btn-text-color);
}
}
}
.collapse-button,
.maximize-button,
.minimize-button {
position: relative;
padding-right: var(--17px);
padding-left: var(--17px);
float: right;
&,
> .fas,
> .far {
color: var(--text-muted-color);
}
&:hover {
&,
> .fas,
> .far {
color: var(--btn-text-color);
}
}
}
.maximize-button,
.minimize-button {
top: var(--2px);
left: var(--minus-3px);
}
.collapse-button {
top: var(--3px);
left: var(--minus-3px);
}
}
.modal-footer {
margin-top: var(--modal-title-padding);
padding: var(--panel-padding) var(--panel-padding) var(--panel-padding);
background-color: @modal-footer-bg;
&.shadowed:not(.has-sticked-bar) {
box-shadow: var(--top-bar-box-shadow);
}
> .main-btn-group {
float: left;
}
> .additional-btn-group {
float: right;
}
}
.modal-backdrop.in {
background-color: var(--modal-backdrop-bg);
backdrop-filter: var(--modal-backdrop-filter);
opacity: 1;
&.backdrop-confirm {
z-index: 1051;
}
}
.modal-dialog > .modal-content {
background-clip: border-box;
border-color: transparent;
border-width: 0;
@media (min-width: @screen-sm-min) {
box-shadow: var(--modal-box-shadow);
}
}
.modal-footer {
margin-top: 0;
padding-top: var(--modal-title-padding);
padding-bottom: var(--modal-title-padding);
}
.modal-header {
padding-top: var(--8px);
padding-bottom: var(--8px);
}
.modal-header + .modal-footer {
position: relative;
z-index: 4;
}
.dialog-confirm {
.modal-footer > .main-btn-group {
float: right;
}
.modal-footer > .additional-btn-group {
float: left;
}
&.modal {
z-index: 1052;
}
}
.modal-container {
> .modal {
> .modal-dialog {
> .modal-content {
@media (min-width: @screen-sm-min) {
border-left: var(--modal-border-width) solid var(--modal-border-color);
}
}
}
}
}
@media (min-width: @screen-sm-min) {
.modal-dialog {
margin: 0 0 0 auto;
}
.modal-content .note-editor > .modal > .modal-dialog {
margin: 0 0 0 calc(var(--container-padding) * -1);
}
.dialog-confirm > .modal-dialog,
.dialog-centered > .modal-dialog {
margin: 0 auto;
}
}
@media (max-width: @screen-sm-min) {
.modal-dialog {
margin: 0 0 0 0;
}
}
.modal-dialog {
.modal-body {
.list-sticky-bar {
top: var(--94px) !important;
width: 100% !important;
right: 0 !important;
left: unset !important;
padding-left: calc(var(--container-padding) - var(--1px));
padding-right: calc(var(--container-padding) - var(--1px) + var(--scroll-width));
}
}
&:not(:has(footer.modal-footer)) {
.modal-body {
.list-sticky-bar {
top: var(--43px) !important;
}
}
}
}
@media screen and (max-width: @screen-xs-max) {
.modal-dialog {
margin: 0 0;
}
.modal-dialog {
.image-container {
margin-left: calc(0rem - var(--modal-padding));
margin-right: calc(0rem - var(--panel-padding));
}
}
}
.modal-dialog {
&.maximized {
.image-container {
> img {
max-height: calc(100vh - (var(--43px) + var(--modal-inner-padding) * 2));
}
}
}
}
.dialog-confirm > .modal-dialog > .modal-content {
text-align: center;
.confirm-message {
> ul {
text-align: start;
}
}
}
@media screen and (min-width: @screen-sm-min) {
.modal-dialog {
width: ~"min(var(--740px), 94vw)";
}
}
@media screen and (min-width: @screen-md-min) {
.modal-dialog {
width: ~"min(calc(var(--900px) + var(--30px)), 90vw)";
}
.dialog-confirm > .modal-dialog,
.dialog-centered > .modal-dialog {
width: ~"min(var(--550px), 90vw)";
}
}
@media screen and (min-width: @screen-sm-min) {
.modal-dialog.maximized {
width: 100vw;
}
}
.dialog-confirm,
.dialog-centered {
> .modal-dialog > .modal-content {
border-radius: var(--panel-border-radius);
@media screen and (max-width: @screen-xs-max) {
// Already applied for wider screens.
box-shadow: var(--modal-box-shadow);
}
> .modal-header {
//border-top-left-radius: var(--panel-border-radius);
//border-top-right-radius: var(--panel-border-radius);
}
> .modal-footer {
border-bottom-left-radius: var(--panel-border-radius);
border-bottom-right-radius: var(--panel-border-radius);
}
> .modal-body {
.panel.no-side-margin {
box-shadow: none;
}
}
border-top-left-radius: 0;
border-top-right-radius: 0;
border: var(--modal-border-width) solid var(--modal-border-color);
border-top-width: 0;
}
}
.modal-body > .no-side-margin {
margin-left: calc(0rem - var(--panel-padding));
margin-right: calc(0rem - var(--panel-padding));
> .negate-no-side-margin {
margin-left: var(--panel-padding);
margin-right: var(--panel-padding);
}
}
.modal.in .modal.in {
overflow: visible !important;
//noinspection CssOverwrittenProperties
overflow-y: visible !important;
}
.modal.in {
.modal-dialog {
// Important. Prevents overflow of sticky bars.
transform: translate(0, 0);
}
}
.modal-body > .list-group {
background-color: var(--panel-bg);
}
.modal {
&.dialog-record,
&:has(> .modal-dialog > .modal-content > .modal-body > .record.no-side-margin),
&:has(> .modal-dialog > .modal-content > .modal-body > .record-container.no-side-margin) {
.modal-body {
scrollbar-gutter: stable;
}
}
}

View File

@@ -0,0 +1,419 @@
#navbar .navbar {
border-bottom-width: 0;
img.logo {
max-height: 100%;
}
.navbar-brand {
padding: 0;
user-select: none;
}
.navbar-right {
@media screen and (max-width: @screen-xs-max) {
margin-right: var(--minus-2px);
}
> li > a {
text-align: center;
}
&.shadowed:not(.has-sticked-bar) {
@media screen and (min-width: @screen-sm-min) {
box-shadow: var(--top-bar-box-shadow);
}
}
}
.navbar-form.global-search-container {
padding-left: 0;
padding-right: 0;
}
.navbar-toggle {
float: left;
text-align: center;
width: 38px;
margin: 0;
color: @navbar-inverse-link-color;
}
.tab span.color-icon {
left: calc(var(--1px) * -1);
font-size: 86%;
top: calc(var(--1px) * -1);
}
ul.tabs {
user-select: none;
> li:not(.active) > a:focus:not(:hover) {
background-color: transparent;
}
li > a > .group-caret {
position: absolute;
top: var(--9px);
inset-inline-end: var(--13px);
font-size: var(--12px);
opacity: 0.6;
}
li.more {
li.open > a {
background-color: var(--dropdown-link-hover-bg);
color: var(--dropdown-link-hover-color);
}
&.open {
> a#nav-more-tabs-dropdown {
background-color: var(--navbar-inverse-link-active-bg);
}
}
li.tab.active {
> a {
background-color: var(--dropdown-link-hover-bg);
color: var(--dropdown-link-hover-color);
}
}
}
li.in-more.dropdown {
ul.dropdown-menu {
//border-top-left-radius: 0;
}
}
}
.menu-container {
> ul.dropdown-menu {
> li {
> a:has(> .item-user-profile) {
padding-left: var(--10px);
.avatar {
margin-right: var(--8px);
}
}
}
}
}
@media screen and (min-width: @screen-sm-min) {
.tabs > .more {
li.show-more a {
text-align: center;
}
.after-show-more {
display: none;
}
.more-expanded {
.show-more {
display: none;
}
.after-show-more {
display: list-item;
}
}
}
}
@media screen and (max-width: @screen-xs-max) {
li.show-more {
display: none;
}
}
}
@media screen and (min-width: @screen-sm-min) {
#navbar .navbar {
.navbar-body {
-webkit-overflow-scrolling: unset;
}
}
}
@media screen and (max-width: @screen-xs-max) {
#navbar .navbar {
min-height: var(--navbar-height);
border-width: 0;
.navbar-nav > li > a {
padding-top: var(--navbar-tab-vertical-padding);
padding-bottom: var(--navbar-tab-vertical-padding);
height: var(--navbar-height);
}
.navbar-form.global-search-container {
padding-left: var(--8px);
padding-right: var(--8px);
}
.navbar-form.global-search-container > .input-group {
margin-left: var(--14px);
}
.navbar-right {
> li {
display: inline-block;
}
> li.notifications-badge-container {
display: inline-block;
float: right;
}
> li.menu-container {
float: right;
> a {
float: right;
&::after {
content: " ";
clear: both;
display: table;
}
}
> ul {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
}
}
.notifications-badge-container > .notifications-button > .number-badge {
left: unset;
right: var(--4px);
}
.navbar-body {
overflow-x: hidden !important;
}
.navbar-brand {
height: var(--navbar-height) !important;
> img.logo {
height: var(--navbar-height) !important;
}
}
ul.tabs {
li > a {
padding-top: var(--navbar-tab-vertical-padding);
padding-bottom: var(--navbar-tab-vertical-padding);
}
> li.more {
&.open {
> ul {
li > a {
padding-top: var(--navbar-tab-vertical-padding);
padding-bottom: var(--navbar-tab-vertical-padding);
padding-left: var(--15px);
padding-right: var(--15px);
}
}
}
> li > a > span.full-label,
li > a > span.full-label {
display: inline-block;
text-overflow: ellipsis;
max-width: calc(100%);
overflow: hidden;
white-space: nowrap;
}
}
li > a > .group-caret {
transform: rotate(90deg);
}
li > a {
height: var(--navbar-height);
}
li.tab-group {
@media screen and (min-width: @screen-md-min) {
background-color: @navbar-inverse-bg;
}
> a > .full-label {
padding-right: var(--8px);
}
}
li.tab-group.open > a {
background-color: var(--navbar-inverse-link-active-bg) !important;
color: var(--navbar-inverse-link-color) !important;
}
}
@supports (display: grid) {
ul.tabs {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(var(--200px), 1fr));
&::before {
content: none;
display: none;
}
&::after {
content: none;
display: none;
}
> li.more {
grid-column: ~"1 / -1";
&.open {
> ul {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(var(--200px), 1fr));
}
}
}
}
}
.navbar-toggle {
padding-top: var(--navbar-tab-vertical-padding);
padding-bottom: var(--navbar-tab-vertical-padding);
border: 0;
}
}
}
@media screen and (max-width: @screen-xs-max) {
#navbar .navbar {
.navbar-body:not(.in) {
border-top-width: 0;
box-shadow: none;
height: 0;
overflow: hidden;
}
.navbar-right-container {
li.notifications-badge-container {
position: absolute;
top: 0;
right: 0;
}
}
ul.tabs {
> li.tab-divider {
display: none;
}
> li.more {
ul {
> li.tab-divider {
display: none;
}
}
}
}
}
}
#navbar > .navbar {
.tabs {
> li {
> a {
.short-label,
.more-icon {
color: var(--navbar-inverse-link-icon-color);
}
&:hover,
&:focus {
.short-label,
.more-icon {
color: var(--navbar-inverse-link-icon-hover-color);
}
}
}
&.active > a {
.short-label,
.more-icon {
color: var(--navbar-inverse-link-icon-hover-color);
}
}
}
.more-dropdown-menu {
.short-label,
.more-icon {
color: var(--navbar-link-icon-color);
}
}
}
.tabs,
.navbar-right {
> li {
> a {
.fas,
.far {
line-height: var(--21px);
}
}
}
}
}
body[data-navbar="side"] {
#navbar > .navbar {
.minimizer {
color: var(--navbar-inverse-link-icon-color) !important;
}
}
}
@media screen and (max-width: @screen-xs-max) {
#navbar {
.navbar-inverse .navbar-nav {
> li > a {
> .fas,
> .far {
color: var(--navbar-inverse-link-icon-color);
}
}
.more-dropdown-menu {
.short-label,
.more-icon {
color: var(--navbar-inverse-link-icon-color);
}
}
}
}
}
@media screen and (max-width: @screen-xs-max) {
body[data-navbar="top"] {
#navbar {
.navbar-inverse .navbar-nav {
> li > a {
> .fas,
> .far {
color: var(--navbar-inverse-link-icon-color);
}
}
}
}
}
}

View File

@@ -0,0 +1,649 @@
.panel,
.well {
border-radius: var(--panel-border-radius);
border-width: var(--panel-border-width);
border-color: var(--panel-default-border);
}
.panel-body {
padding: var(--panel-padding);
.clearfix();
}
.panel-group {
> .panel:first-child {
border-top-left-radius: var(--panel-border-radius);
border-top-right-radius: var(--panel-border-radius);
}
> .panel:last-child {
border-bottom-left-radius: var(--panel-border-radius);
border-bottom-right-radius: var(--panel-border-radius);
}
.panel + .panel {
margin-top: var(--4px);
}
}
.panel > .panel-body.panel-body-form {
padding-bottom: calc(var(--panel-padding) - var(--form-group-margin-bottom));
> .alert {
margin-bottom: var(--form-group-margin-bottom);
}
> .button-container {
padding-bottom: var(--12px);
}
}
.panel-body > .no-margin {
margin: calc(0rem - var(--panel-padding));
}
.panel-body > .no-side-margin .revert-margin {
margin-left: var(--panel-padding);
margin-right: var(--panel-padding);
}
.panel-body > .no-margin .revert-margin {
margin: var(--panel-padding);
}
.panel-body.no-padding {
padding-left: 0 !important;
padding-top: 0 !important;
padding-right: 0 !important;
padding-bottom: 0 !important;
}
.modal-body {
.panel.no-side-margin,
.no-side-margin > .panel {
border-left: 0;
//border-right: 0;
border-radius: 0;
}
.record.no-side-margin,
.record-container.no-side-margin {
> .panel {
border-left: 0;
border-right: 0;
border-radius: 0;
}
.left > .middle > .panel,
.left > .bottom > .panel {
border-left: 0;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
&.first::before {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
&.last::before {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
@media screen and (max-width: @screen-xs-max) {
&,
&.first::before,
&.last::before {
border-radius: 0;
}
}
}
.side > .panel {
//border-right: 0;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
&.first::before {
border-top-right-radius: 0;
border-bottom-left-radius: 0;
}
&.last::before {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
@media screen and (max-width: @screen-xs-max) {
&,
&.first::before,
&.last::before {
border-radius: 0;
}
}
}
}
.no-side-margin {
.record-grid-wide {
.left > .middle > .panel,
.left > .bottom > .panel {
//border-right: 0;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
&.first::before {
border-top-right-radius: 0;
}
&.last::before {
border-bottom-right-radius: 0;
}
}
}
}
}
.panel-body .no-side-margin {
margin-left: calc(0rem - var(--panel-padding));
margin-right: calc(0rem - var(--panel-padding));
> table td:first-child,
> table th:first-child {
padding-left: var(--panel-padding);
}
> table td:last-child,
> table th:last-child {
padding-right: var(--panel-padding);
}
> .list-group-item {
border-left-width: 0;
border-right-width: 0;
}
> .table-bordered {
border-left: 0;
border-right: 0;
td:last-child,
th:last-child {
border-right: 0;
}
td:first-child,
th:first-child {
border-left: 0;
}
}
}
.panel-body .no-bottom-margin {
margin-bottom: calc(0rem - var(--panel-padding)) !important;
}
.panel {
margin-bottom: var(--vertical-gap);
> .panel-heading {
min-height: var(--panel-heading-height);
user-select: none;
&.panel-heading-no-title {
padding-top: var(--6px);
padding-bottom: var(--6px);
}
padding-top: 0;
padding-bottom: 0;
> .panel-title {
font-size: var(--panel-heading-font-size);
line-height: 1.4;
padding-top: calc((var(--panel-heading-height) - var(--panel-heading-font-size) * 1.4) / 2);
padding-bottom: calc((var(--panel-heading-height) - var(--panel-heading-font-size) * 1.4) / 2);
display: flex;
white-space: nowrap;
overflow: hidden;
> span {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
}
h4 {
font-weight: 500;
}
> .btn-group {
margin-top: calc((var(--panel-heading-height) - var(--30px)) / 2);
right: var(--minus-10px);
}
.btn:not(.btn-link) {
background-color: transparent;
border-color: transparent;
color: @gray-soft;
}
.open .btn {
border-color: transparent;
}
.btn,
.btn-default {
&:active,
&.active {
.box-shadow(none);
}
&:hover,
&:focus,
&:active,
&.active {
// Prevents the issue that buttons can be visible through a dropdown opened nearby.
z-index: 1;
}
}
.btn-group .dropdown-toggle,
.btn-group.open .dropdown-toggle
{
&,
&:active {
.box-shadow(none);
}
}
> .link-group {
> a {
padding-left: var(--20px);
}
float: right;
}
> .btn-group > .btn + .dropdown-toggle {
padding-left: var(--padding-small-horizontal);
padding-right: var(--padding-small-horizontal);
}
}
}
body {
.panel {
> .panel-heading {
.btn-group.open {
> .btn[aria-expanded="true"] {
box-shadow: none;
}
}
.btn {
&:hover:active {
box-shadow: none;
}
}
}
}
.panel-danger,
.panel-success,
.panel-primary,
.panel-warning,
.panel-info {
> .panel-heading {
.btn-group.open {
> .btn[aria-expanded="true"] {
&,
&:active,
&:focus {
> .fas,
> .far {
color: var(--btn-text-color);
}
}
}
}
}
}
.panel-styled(
default;
var(--panel-default-bg);
var(--panel-bg);
var(--panel-default-border);
var(--gray-soft);
var(--btn-text-color);
var(--text-solid-color)
);
.panel-styled(
warning;
var(--panel-warning-bg);
var(--panel-bg);
var(--panel-warning-border);
var(--panel-warning-text);
var(--state-warning-text-10);
var(--panel-warning-text);
);
.panel-styled(
danger;
var(--panel-danger-bg);
var(--panel-bg);
var(--panel-danger-border);
var(--panel-danger-text);
var(--state-danger-text-10);
var(--panel-danger-text);
);
.panel-styled(
success;
var(--panel-success-bg);
var(--panel-bg);
var(--panel-success-border);
var(--panel-success-text);
var(--state-success-text-10);
var(--panel-success-text)
);
.panel-styled(
info;
var(--panel-info-bg);
var(--panel-bg);
var(--panel-info-border);
var(--panel-info-text);
var(--state-info-text-10);
var(--panel-info-text);
);
.panel-styled(
primary;
var(--panel-primary-bg);
var(--panel-bg);
var(--panel-primary-border);
var(--panel-primary-text);
var(--gray-lighter);
var(--panel-primary-text);
);
}
.panel {
border-width: var(--panel-border-width);
.panel-heading {
h4.panel-title span.color-icon {
font-size: 61%;
position: relative;
left: 0;
top: var(--minus-2px);
margin-right: var(--2px);
}
}
}
.panel.sticked {
margin-top: calc(-1 * var(--vertical-gap));
border-top-width: max(var(--panel-border-width), var(--1px));
}
.panel {
> .panel-heading {
.btn:hover:not(.btn-link),
.btn:focus:not(.btn-link) {
color: var(--btn-text-color);
> .fa,
> .fas,
> .far {
color: var(--btn-text-color);
}
}
}
}
.panel {
> .panel-heading {
border-top-left-radius: var(--panel-border-radius);
border-top-right-radius: var(--panel-border-radius);
}
> .panel-body {
.list.bottom-border-radius,
> .list-container:last-child > .list {
border-bottom-left-radius: var(--panel-border-radius);
border-bottom-right-radius: var(--panel-border-radius);
> table:not(:has(+ .show-more)),
> table:has(+ .show-more.hidden),
> .list-group,
> .list-group:last-child > .list-group-item:last-child,
> .show-more > a {
border-bottom-left-radius: var(--panel-border-radius);
border-bottom-right-radius: var(--panel-border-radius);
}
> table:not(:has(+ .show-more)) tr:last-child,
> table:has(+ .show-more.hidden) tr:last-child {
> td:first-child {
border-bottom-left-radius: var(--panel-border-radius);
}
> td:last-child {
border-bottom-right-radius: var(--panel-border-radius);
}
}
}
> .no-margin > table {
border-bottom-left-radius: var(--panel-border-radius);
border-bottom-right-radius: var(--panel-border-radius);
}
}
&.first,
&.in-middle {
> .panel-body > .list-container:last-child > .list {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
> table,
> table tr:last-child td,
> .list-group,
> .list-group:last-child > .list-group-item:last-child,
> .show-more > a {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
}
}
}
.panel-styled(@style; @panel-style-bg; @panel-bg; @panel-style-border; @panel-style-text; @hover-color; @heading-text-color) {
.panel-@{style} {
&.headered {
background: linear-gradient(
to bottom,
@panel-style-bg 0,
@panel-style-bg var(--29px),
@panel-bg var(--29px),
@panel-bg 100%
);
}
border-color: @panel-style-border;
> .panel-heading {
color: @heading-text-color;
background-color: @panel-style-bg;
border-color: transparent;
.btn:not(.btn-link),
.btn-@{style}:not(.btn-link) {
&,
&:focus:not(:hover),
&:active:not(:hover) {
color: @panel-style-text;
background-color: transparent;
border-color: transparent;
> .fas,
> .far {
color: inherit;
}
}
&:hover {
color: @hover-color;
> .fas,
> .far {
color: inherit;
}
}
}
.btn-group,
.btn-group.open {
.dropdown-toggle.btn {
&,
&:focus {
color: @panel-style-text;
background-color: transparent;
border-color: transparent;
}
&:hover {
color: @hover-color;
}
}
}
.btn-group.open {
.dropdown-toggle.btn {
color: @hover-color;
> .fas,
> .far {
color: @hover-color !important;
}
}
}
}
}
}
.panel {
> .table:first-child,
> .table-responsive:first-child > .table:first-child {
.border-top-radius(var(--panel-border-radius));
> thead:first-child,
> tbody:first-child {
> tr:first-child {
border-top-left-radius: var(--panel-border-radius);
border-top-right-radius: var(--panel-border-radius);
td:first-child,
th:first-child {
border-top-left-radius: var(--panel-border-radius);
}
td:last-child,
th:last-child {
border-top-right-radius: var(--panel-border-radius);
}
}
}
}
> .table:last-child,
> .table-responsive:last-child > .table:last-child {
.border-bottom-radius(var(--panel-border-radius));
> tbody:last-child,
> tfoot:last-child {
> tr:last-child {
border-bottom-left-radius: var(--panel-border-radius);
border-bottom-right-radius: var(--panel-border-radius);
td:first-child,
th:first-child {
border-bottom-left-radius: var(--panel-border-radius);
}
td:last-child,
th:last-child {
border-bottom-right-radius: var(--panel-border-radius);
}
}
}
}
}
.panel-group-accordion > .panel {
overflow: hidden;
}
.panel > .panel-body > .list-container > {
> .list > .list-group {
> .list-group-item {
border-width: 0;
border-bottom-width: var(--1px);
}
> li.list-group-item:first-child {
border-top-width: var(--1px);
border-top-color: transparent;
}
> li.list-group-item:last-child {
border-bottom-width: 0;
}
}
&:has(+ .list-container) {
> .list > .list-group {
> li.list-group-item:last-child {
border-bottom-width: var(--1px);
}
}
}
}
.panel > .panel-heading {
.panel-actions-container-left {
margin-left: calc(var(--10px) * -1);
}
.panel-actions-container {
> span {
display: inline-block;
padding: var(--4px) var(--10px);
font-size: var(--14px);
line-height: 1.5;
float: left;
}
> .btn-sm {
.fas, .far {
font-size: var(--14px);
}
}
}
}
.panel-heading .btn-sm {
height: auto;
}
.panel.highlighted {
outline: var(--2px) solid var(--brand-info);
outline-offset: var(--minus-1px);
}
.panel {
.panel-footer {
border-bottom-left-radius: var(--panel-border-radius);
border-bottom-right-radius: var(--panel-border-radius);
}
}
.panel {
&:has(> .panel-heading) {
> .panel-body:has(> .list-container.hidden:only-child) {
padding-top: 0;
}
}
}

View File

@@ -0,0 +1,59 @@
.margin {
margin: var(--table-cell-padding) 0;
}
.margin-left {
margin-left: var(--table-cell-padding);
}
.margin-right {
margin-right: var(--table-cell-padding);
}
.margin-left-sm {
margin-left: var(--table-cell-padding-half);
}
.margin-right-sm {
margin-right: var(--table-cell-padding-half);
}
.margin-top-sm {
margin-top: var(--table-cell-padding-half);
}
.margin-top {
margin-top: var(--table-cell-padding);
}
.margin-top-2x {
margin-top: calc(var(--table-cell-padding) * 2);
}
.margin-bottom-sm {
margin-bottom: var(--table-cell-padding-half);
}
.margin-bottom {
margin-bottom: var(--table-cell-padding);
}
.margin-bottom-2x {
margin-bottom: calc(var(--table-cell-padding) * 2);
}
.margin-bottom-3x {
margin-bottom: calc(var(--table-cell-padding) * 3);
}
.margin-bottom-4x {
margin-bottom: calc(var(--table-cell-padding) * 4);
}
.margin-bottom.margin {
margin-top: 0;
}
.center-align {
text-align: center;
}

View File

@@ -0,0 +1,97 @@
#popup-notifications-container {
overflow-y: auto;
overflow-x: hidden;
// Some space to fix the scrollbar gutter issue https://github.com/w3c/csswg-drafts/issues/9904.
right: var(--12px);
bottom: var(--24px);
position: fixed;
height: auto;
z-index: 1051;
float: right;
}
.popup-notification {
width: var(--400px);
padding: var(--panel-padding);
background-color: @panel-bg;
border: var(--2px) solid @main-gray;
margin-top: var(--10px);
margin-right: var(--5px);
border-radius: var(--panel-border-radius);
&:last-child {
margin-bottom: var(--5px);
}
.cell {
margin-bottom: var(--5px);
&:last-child {
margin-bottom: 0;
}
}
h4 {
margin-top: 0;
}
a.close {
margin-top: var(--minus-8px);
margin-right: var(--minus-3px);
}
a[data-action="collapse"] {
margin-top: var(--minus-6px);
margin-right: var(--12px);
}
}
.popup-notification-default {
border-color: @gray-light;
h4 {
color: @gray-light;
}
}
.popup-notification-danger {
border-color: @brand-danger;
h4 {
color: @brand-danger;
}
}
.popup-notification-warning {
border-color: @brand-warning;
h4 {
color: @brand-warning;
}
}
.popup-notification-primary {
border-color: @brand-primary;
h4 {
color: @brand-primary;
}
}
.popup-notification-success {
border-color: @brand-success;
h4 {
color: @brand-success;
}
}
.popup-notification-info {
border-color: @brand-info;
h4 {
color: @brand-info;
}
}
@media screen and (max-width: @screen-xs-max) {
#popup-notifications-container {
width: 100%;
}
.popup-notification {
width: auto;
}
}

View File

@@ -0,0 +1,262 @@
.record .record-grid {
display: grid;
grid-column-gap: var(--container-padding);
grid-template-columns: minmax(auto, 66.6%) minmax(auto, 33.4%);
&.record-grid-wide {
grid-template-columns: 100%;
}
&.record-grid-wide.record-grid-wide {
grid-template-columns: 100%;
}
&.record-grid-small {
grid-template-columns: minmax(auto, 61%) minmax(auto, 39%);
}
max-width: var(--record-grid-max-width);
> div {
min-width: 0;
}
}
.record > div[tabindex="-1"]:focus-visible {
outline: none;
}
.record .cell[tabindex="-1"]:focus-visible {
outline: none;
}
.modal-body {
.record .record-grid {
grid-column-gap: var(--padding-base-horizontal);
}
@media screen and (min-width: @screen-sm-min) {
.record,
.record-container,
.edit-container {
&.no-side-margin {
> div {
> .record-grid-wide {
margin-right: var(--panel-padding);
> .left {
> .middle {
> .panel {
&:not(.middle):not(.last),
&.first {
border-top-right-radius: var(--panel-border-radius);
}
&:not(.middle):not(.first),
&.last {
border-bottom-right-radius: var(--panel-border-radius);
}
}
}
}
}
}
}
}
}
}
@media screen and (max-width: @screen-sm-max) {
.record .record-grid {
grid-template-columns: 100%;
&.record-grid-small {
grid-template-columns: 100%;
}
}
}
.record {
.tabs {
> button.btn {
font-size: var(--15px);
height: var(--40px);
&.invalid {
color: var(--state-danger-text);
transition: color 100ms linear;
}
&:after {
height: var(--2px);
}
padding-left: var(--16px);
padding-right: var(--16px);
}
margin-left: var(--panel-border-radius);
}
.panel.tab-hidden {
display: none;
}
.side.tabs-margin {
@media screen and (min-width: @screen-sm-min) {
margin-top: var(--40px);
}
}
.panel {
&.first {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
border-bottom-width: 0;
}
&.in-middle {
border-top-left-radius: 0;
border-top-right-radius: 0;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
border-bottom-width: 0;
> .panel-heading {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
}
&.last {
border-top-left-radius: 0;
border-top-right-radius: 0;
> .panel-heading {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
}
}
.bottom {
.panel.sticked:first-child {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.tabs {
margin-bottom: var(--12px);
}
}
.record-grid {
> .left:has(> .tabs) {
.bottom:not(:has(> .tabs)) {
margin-top: calc(2 * var(--vertical-gap));
}
}
}
}
.record .middle {
margin-bottom: var(--vertical-gap);
> .panel:first-child {
border-top-width: var(--panel-border-width);
}
> .panel.hidden + .panel {
border-top-width: var(--panel-border-width);
}
.panel + .panel.panels-show-more-delimiter {
padding: var(--padding-large-vertical) var(--panel-padding);
border-top-width: 0;
}
> .panel {
border-top-width: max(var(--panel-border-width), var(--1px));
> .panel-heading {
.btn-group {
top: var(--minus-6px);
.btn {
border-top-width: 0;
}
}
}
margin-bottom: 0;
&:last-child:not(.first):not(.in-middle) {
border-bottom-width: var(--panel-border-width);
}
}
}
.record .middle {
> .panel:first-child {
border-top-width: var(--panel-border-width);
}
> .panel:last-child:not(.first):not(.in-middle) {
border-bottom-width: var(--panel-border-width);
}
> .panel.tab-hidden + .panel {
border-top-width: var(--panel-border-width);
}
> .panel.hidden + .panel {
border-top-width: max(var(--panel-border-width), var(--1px));
}
.panel + .panel.panels-show-more-delimiter {
border-top-width: 0;
}
}
.record .side {
> .panel.sticked:first-child {
margin-top: 0;
border-top-width: var(--panel-border-width);
}
.panel.hidden + .panel.sticked {
margin-top: 0;
border-top-width: var(--panel-border-width);
}
}
.record .bottom {
.panel.hidden + .panel.sticked {
border-top-width: var(--panel-border-width);
}
.btn-group + .panel.sticked {
margin-top: 0;
}
}
.record {
.panel {
.panel-heading .panel-title {
user-select: none;
}
}
}
.panels-show-more-delimiter {
text-align: center;
a > span {
color: @gray-soft;
}
a:hover,
a:active:hover {
> span {
color: var(--btn-text-color);
}
}
}

View File

@@ -0,0 +1,26 @@
@supports not selector(::-webkit-scrollbar) {
.dashlet > .dashlet-body,
.list-kanban-container {
scrollbar-width: thin;
}
* {
scrollbar-width: auto;
scrollbar-color: var(--scroll-thumb-bg) var(--scroll-bg);
}
}
*::-webkit-scrollbar {
height: var(--scroll-width);
width: var(--scroll-width);
}
*::-webkit-scrollbar-track {
background: var(--scroll-bg);
}
*::-webkit-scrollbar-thumb {
background-color: var(--scroll-thumb-bg);
border-radius: 0;
border: var(--scroll-border-width) solid var(--scroll-bg);
}

View File

@@ -0,0 +1,36 @@
body > footer {
background-color: var(--site-footer-bg);
}
body > footer > p.credit {
margin: 0;
user-select: none;
}
body > footer > p,
body > footer > p a,
body > footer > p a:hover,
body > footer > p a:active,
body > footer > p a:visited {
color: var(--site-footer-color);
}
#content > #main[tabindex="-1"] {
outline: none;
}
body[data-content-width="Wide"] {
--container-max-width: var(--container-max-width-wide);
}
body[data-content-width="Full"] {
--container-max-width: 100%;
}
body[data-record-content-width="Wide"] {
--record-grid-max-width: var(--container-max-width-normal);
}
body[data-record-content-width="Full"] {
--record-grid-max-width: 100%;
}

View File

@@ -0,0 +1,188 @@
table.table,
.list-container > .list,
.calendar-container > .calendar,
.calendar-container > .timeline {
background-color: var(--table-bg);
}
.table {
margin-bottom: var(--10px);
> thead,
> tbody {
> tr {
> th:first-child,
> td:first-child {
padding-left: var(--padding-base-horizontal);
@media screen and (max-width: @screen-xs-max) {
padding-left: var(--table-cell-padding);
}
}
> th:last-child,
> td:last-child {
padding-right: var(--padding-base-horizontal);
@media screen and (max-width: @screen-xs-max) {
padding-right: var(--table-cell-padding);
}
}
}
}
&:has(> tbody > tr.border-top-highlighted:first-child) {
> thead > tr:last-child {
> th {
border-bottom: var(--3px) solid var(--brand-info) !important;
}
}
}
> tbody {
> tr {
&.border-bottom-highlighted {
> td {
border-bottom: var(--3px) solid var(--brand-info) !important;
}
}
&.border-top-highlighted {
> td {
border-top: var(--3px) solid var(--brand-info) !important;
}
}
}
}
}
table.table > thead th > a {
color: var(--text-muted-color);
font-weight: 400;
}
table.table > thead th {
color: var(--text-muted-color);
}
th {
font-weight: 600;
}
.table thead > tr > th {
border-bottom: var(--1px) solid @table-border-color;
font-weight: normal;
}
.table tr > th {
font-weight: normal;
}
.table tr.accented {
background-color: var(--table-bg-accent);
}
.table td.accented {
background-color: var(--table-bg-accent);
}
table.table-bordered-inside {
border-collapse: collapse;
border-style: hidden;
td, th {
border: var(--1px) solid var(--default-border-color);
}
}
table.table-bottom-bordered {
border-bottom: var(--1px) solid var(--default-border-color);
}
table.table > tbody td > .list-row-buttons button {
position: relative;
margin-top: var(--3px);
padding-left: var(--table-cell-padding);
padding-right: var(--table-cell-padding);
}
.table.table-no-overflow {
> tbody > tr > td,
> tbody > tr > th,
> thead > tr > th {
text-overflow: ellipsis;
overflow: hidden;
}
}
table.table-fixed {
table-layout: fixed;
}
.table.less-padding > thead > tr > th,
.table.less-padding > tbody > tr > th,
.table.less-padding > tfoot > tr > th,
.table.less-padding > thead > tr > td,
.table.less-padding > tbody > tr > td,
.table.less-padding > tfoot > tr > td {
padding: var(--table-cell-padding) var(--table-cell-less-padding) var(--table-cell-padding) var(--table-cell-less-padding);
}
table.no-margin {
margin-bottom: 0;
}
table.table-panel {
border-collapse: separate;
border-radius: var(--panel-border-radius);
border: var(--panel-border-width) solid var(--panel-default-border);
thead > tr > th {
border-bottom: 0;
}
tbody {
> tr:nth-last-child(1 of :not(.hidden)) {
> td:first-child {
border-bottom-left-radius: var(--panel-border-radius);
}
> td:last-child {
border-bottom-right-radius: var(--panel-border-radius);
}
}
}
}
.table.table-striped {
background-color: transparent;
}
table td.cell-nowrap,
table th.cell-nowrap {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
table td {
> .btn-group.row-dropdown-group {
> .btn.dropdown-toggle {
margin-top: var(--minus-6px);
margin-bottom: var(--minus-6px);
> .caret {
top: var(--minus-1px);
position: relative;
}
}
}
}
.table {
td.cell {
.text-bold {
font-weight: 700;
}
}
}

View File

@@ -0,0 +1,346 @@
.center-align {
text-align: center;
}
a {
font-weight: 500;
}
h1 {
font-size: var(--30px);
margin-top: var(--20px);
margin-bottom: var(--20px);
}
h2 {
font-size: var(--26px);
margin-top: var(--19px);
margin-bottom: var(--16px);
}
h3 {
font-size: var(--22px);
margin-bottom: var(--12px);
}
h4 {
font-size: var(--18px);
}
h5 {
font-weight: 600;
margin-top: var(--10px);
margin-bottom: var(--10px);
font-size: var(--15px);
color: @gray-soft;
}
h6 {
font-weight: 600;
color: @gray-soft;
font-size: var(--14px);
}
code {
font-style: italic;
}
b, strong {
font-weight: 600;
}
.text-soft {
color: @gray-soft;
}
.text-solid {
color: var(--text-solid-color);
}
.text-smaller {
font-size: calc(var(--font-size-small) + var(--1px));
}
.text-italic {
font-style: italic;
}
.text-medium {
font-weight: 500;
}
.text-bold {
font-weight: 600;
}
.text-strikethrough {
text-decoration: line-through;
}
.text-large {
font-size: 1.4em;
}
.text-2em {
font-size: 2em;
}
.text-3em {
font-size: 3em;
}
.text-4em {
font-size: 4em;
}
.text-5em {
font-size: 5em;
}
.text-6em {
font-size: 6em;
}
pre > code {
font-style: normal;
}
hr {
border-top: var(--1px) solid var(--panel-default-border);
}
blockquote {
font-size: var(--font-size-base);
border-left: var(--3px) solid var(--blockquote-border-color);
}
.well > p:last-child {
margin-bottom: 0;
}
.well {
padding: var(--panel-padding);
}
.badge {
font-weight: 600;
}
.badge-circle {
width: var(--8px);
height: var(--8px);
border-radius: var(--4px);
text-align: center;
display: table-cell;
font-size: var(--5px);
line-height: var(--8px);
background-color: @main-gray;
}
.badge-circle.badge-circle-danger {
background-color: @brand-danger;
}
.badge-circle.badge-circle-warning {
background-color: @brand-warning;
}
label {
font-weight: 400;
margin-bottom: var(--3px);
}
.label {
padding: @label-padding-small;
position: relative;
top: var(--minus-1px);
font-weight: 600;
border-radius: var(--border-radius-small);
}
.label-md {
font-weight: normal;
font-size: var(--font-size-base);
padding: var(--1px) var(--7px) var(--2px);
top: 0;
line-height: 1.8;
}
.label-sm {
font-weight: normal;
font-size: 75%;
padding: @label-padding-small;
}
.label.label-state {
font-weight: 400;
&.label-default {
color: var(--state-default-text);
background-color: var(--state-default-bg);
}
&.label-primary {
color: var(--state-primary-text);
background-color: var(--state-primary-bg);
}
&.label-info {
color: var(--state-info-text);
background-color: var(--state-info-bg);
}
&.label-danger {
color: var(--state-danger-text);
background-color: var(--state-danger-bg);
}
&.label-warning {
color: var(--state-warning-text);
background-color: var(--state-warning-bg);
}
&.label-success {
color: var(--state-success-text);
background-color: var(--state-success-bg);
}
}
small,
.small {
font-size: 0.85em;
}
.small .label-md,
.label-lg.small {
padding: @label-padding-small;
}
.label-lg.small {
font-size: 75%;
top: var(--minus-1px);
}
.no-select {
user-select: none;
}
a[role="button"],
a[href="javascript:"] {
&:not(.selectable) {
user-select: none;
}
}
a.disabled {
pointer-events: none;
cursor: default;
}
a.text-muted {
&:hover,
&:focus {
color: var(--text-muted-color);
}
&:hover,
&[aria-describedby]{
> .fas,
> .far {
color: var(--gray-soft);
}
}
}
a.text-soft {
&:hover,
&:focus {
color: var(--gray-soft);
}
&:hover {
> .fas,
> .far {
color: var(--text-gray-color);
}
}
}
a.text-solid {
&:hover,
&:focus {
color: var(--text-solid-color);
}
&:hover {
> .fas,
> .far {
color: var(--text-gray-color);
}
}
}
a.text-record {
.link-content-color();
}
a.text-default {
color: var(--btn-text-color);
&:hover,
&:focus {
color: var(--btn-text-color);
}
&:hover {
> .fas,
> .far {
color: var(--text-gray-color);
}
}
}
a.no-underline {
&:hover,
&:focus {
text-decoration: none;
}
}
.nowrap {
white-space: nowrap;
}
.text-primary {
.text-emphasis-variant-espo(var(--state-primary-text), var(--brand-primary-10));
}
.text-success {
.text-emphasis-variant-espo(var(--state-success-text), var(--state-success-text-10));
}
.text-info {
.text-emphasis-variant-espo(var(--state-info-text), var(--state-info-text-10));
}
.text-warning,
a.text-warning {
.text-emphasis-variant-espo(var(--state-warning-text); var(--state-warning-text-10));
}
.text-danger {
.text-emphasis-variant-espo(var(--state-danger-text); var(--state-danger-text-10));
}
.bg-primary {
color: var(--text-white-color);
.bg-variant-espo(var(--brand-primary), var(--brand-primary-5));
}
.bg-success {
.bg-variant-espo(var(--state-success-bg), var(--state-success-bg-5));
}
.bg-info {
.bg-variant-espo(var(--state-info-bg), var(--state-info-bg-5));
}
.bg-warning {
.bg-variant-espo(var(--state-warning-bg); var(--state-warning-bg-5));
}
.bg-danger {
.bg-variant-espo(var(--state-danger-bg); var(--state-danger-bg-5));
}