refactor: replace custom CRM with Monica fork
Some checks failed
Build & Push Monica Image to Gitea Registry / build-and-push (push) Failing after 9s

This commit is contained in:
Kroonk
2026-05-22 16:19:55 +02:00
parent 38cc4c09ca
commit a213a1dba0
2215 changed files with 242567 additions and 6015 deletions

48
resources/sass/_custom_bootstrap.scss vendored Normal file
View File

@@ -0,0 +1,48 @@
// Bootstrap
html {
font-size: 14px;
}
// Includes all the imports from the standard Bootstrap project
@import "~bootstrap/scss/bootstrap-reboot";
@import "~bootstrap/scss/bootstrap-grid";
// @import "~bootstrap/scss/_functions";
// @import "~bootstrap/scss/_variables";
// @import "~bootstrap/scss/_mixins";
// @import "~bootstrap/scss/_root";
// @import "~bootstrap/scss/_reboot";
// @import "~bootstrap/scss/_type";
// @import "~bootstrap/scss/_images";
// @import "~bootstrap/scss/_code";
// @import "~bootstrap/scss/_grid";
@import "~bootstrap/scss/_tables";
@import "~bootstrap/scss/_forms";
// @import "~bootstrap/scss/_buttons";
// @import "~bootstrap/scss/_transitions";
@import "~bootstrap/scss/_dropdown";
// @import "~bootstrap/scss/_button-group";
// @import "~bootstrap/scss/_input-group";
// @import "~bootstrap/scss/_custom-forms";
@import "~bootstrap/scss/_nav";
// @import "~bootstrap/scss/_navbar";
@import "~bootstrap/scss/_card";
// @import "~bootstrap/scss/_breadcrumb";
@import "~bootstrap/scss/_pagination";
// @import "~bootstrap/scss/_badge";
// @import "~bootstrap/scss/_jumbotron";
@import "~bootstrap/scss/_alert";
// @import "~bootstrap/scss/_progress";
// @import "~bootstrap/scss/_media";
// @import "~bootstrap/scss/_list-group";
@import "~bootstrap/scss/_close";
// @import "~bootstrap/scss/_toasts";
@import "~bootstrap/scss/_modal";
// @import "~bootstrap/scss/_tooltip";
// @import "~bootstrap/scss/_popover";
// @import "~bootstrap/scss/_carousel";
// @import "~bootstrap/scss/_spinners";
// @import "~bootstrap/scss/_utilities";
@import "~bootstrap/scss/_print";

225
resources/sass/_datatable.min.scss vendored Normal file
View File

@@ -0,0 +1,225 @@
table.dataTable {
clear: both;
margin-top: 6px !important;
margin-bottom: 6px !important;
max-width: none !important;
border-collapse: separate !important
}
table.dataTable td,
table.dataTable th {
-webkit-box-sizing: content-box;
box-sizing: content-box
}
table.dataTable td.dataTables_empty,
table.dataTable th.dataTables_empty {
text-align: center
}
table.dataTable.nowrap th,
table.dataTable.nowrap td {
white-space: nowrap
}
div.dataTables_wrapper div.dataTables_length label {
font-weight: normal;
text-align: left;
white-space: nowrap
}
div.dataTables_wrapper div.dataTables_length select {
width: 75px;
display: inline-block
}
div.dataTables_wrapper div.dataTables_filter {
text-align: right
}
div.dataTables_wrapper div.dataTables_filter label {
font-weight: normal;
white-space: nowrap;
text-align: left
}
div.dataTables_wrapper div.dataTables_filter input {
margin-left: 0.5em;
display: inline-block;
width: auto
}
div.dataTables_wrapper div.dataTables_info {
padding-top: 0.85em;
white-space: nowrap
}
div.dataTables_wrapper div.dataTables_paginate {
margin: 0;
white-space: nowrap;
text-align: right
}
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
margin: 2px 0;
white-space: nowrap
}
div.dataTables_wrapper div.dataTables_processing {
position: absolute;
top: 50%;
left: 50%;
width: 200px;
margin-left: -100px;
margin-top: -26px;
text-align: center;
padding: 1em 0
}
table.dataTable thead>tr>th.sorting_asc,
table.dataTable thead>tr>th.sorting_desc,
table.dataTable thead>tr>th.sorting,
table.dataTable thead>tr>td.sorting_asc,
table.dataTable thead>tr>td.sorting_desc,
table.dataTable thead>tr>td.sorting {
padding-right: 30px
}
table.dataTable thead>tr>th:active,
table.dataTable thead>tr>td:active {
outline: none
}
table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
cursor: pointer;
position: relative
}
table.dataTable thead .sorting:before,
table.dataTable thead .sorting:after,
table.dataTable thead .sorting_asc:before,
table.dataTable thead .sorting_asc:after,
table.dataTable thead .sorting_desc:before,
table.dataTable thead .sorting_desc:after,
table.dataTable thead .sorting_asc_disabled:before,
table.dataTable thead .sorting_asc_disabled:after,
table.dataTable thead .sorting_desc_disabled:before,
table.dataTable thead .sorting_desc_disabled:after {
position: absolute;
bottom: 0.9em;
display: block;
opacity: 0.3
}
table.dataTable thead .sorting:before,
table.dataTable thead .sorting_asc:before,
table.dataTable thead .sorting_desc:before,
table.dataTable thead .sorting_asc_disabled:before,
table.dataTable thead .sorting_desc_disabled:before {
right: 23px;
content: "\2191";
top: 2px;
}
table.dataTable thead .sorting:after,
table.dataTable thead .sorting_asc:after,
table.dataTable thead .sorting_desc:after,
table.dataTable thead .sorting_asc_disabled:after,
table.dataTable thead .sorting_desc_disabled:after {
right: 10px;
content: "\2193";
top: 2px;
}
table.dataTable thead .sorting_asc:before,
table.dataTable thead .sorting_desc:after {
opacity: 1
}
table.dataTable thead .sorting_asc_disabled:before,
table.dataTable thead .sorting_desc_disabled:after {
opacity: 0
}
div.dataTables_scrollHead table.dataTable {
margin-bottom: 0 !important
}
div.dataTables_scrollBody table {
border-top: none;
margin-top: 0 !important;
margin-bottom: 0 !important
}
div.dataTables_scrollBody table thead .sorting:after,
div.dataTables_scrollBody table thead .sorting_asc:after,
div.dataTables_scrollBody table thead .sorting_desc:after {
display: none
}
div.dataTables_scrollBody table tbody tr:first-child th,
div.dataTables_scrollBody table tbody tr:first-child td {
border-top: none
}
div.dataTables_scrollFoot table {
margin-top: 0 !important;
border-top: none
}
@media screen and (max-width: 767px) {
div.dataTables_wrapper div.dataTables_length,
div.dataTables_wrapper div.dataTables_filter,
div.dataTables_wrapper div.dataTables_info,
div.dataTables_wrapper div.dataTables_paginate {
text-align: center
}
}
table.dataTable.table-condensed>thead>tr>th {
padding-right: 20px
}
table.dataTable.table-condensed .sorting:after,
table.dataTable.table-condensed .sorting_asc:after,
table.dataTable.table-condensed .sorting_desc:after {
top: 6px;
right: 6px
}
table.table-bordered.dataTable th,
table.table-bordered.dataTable td {
border-left-width: 0
}
table.table-bordered.dataTable th:last-child,
table.table-bordered.dataTable th:last-child,
table.table-bordered.dataTable td:last-child,
table.table-bordered.dataTable td:last-child {
border-right-width: 0
}
table.table-bordered.dataTable tbody th,
table.table-bordered.dataTable tbody td {
border-bottom-width: 0
}
div.dataTables_scrollHead table.table-bordered {
border-bottom-width: 0
}
div.table-responsive>div.dataTables_wrapper>div.row {
margin: 0
}
div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child {
padding-left: 0
}
div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child {
padding-right: 0
}

19
resources/sass/_variables.scss vendored Normal file
View File

@@ -0,0 +1,19 @@
// Colors
// $blue:
// $indigo:
// $purple:
// $pink:
// $red:
// $orange:
// $yellow:
// $green:
// $teal:
// $cyan:
// Body
// $body-bg:
// Typography
$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
$font-size-base: 1rem;
$line-height-base: 1.5;

675
resources/sass/app-ltr.scss vendored Normal file
View File

@@ -0,0 +1,675 @@
$htmldir: ltr !default;
// Variables
@import "variables";
// Bootstrap
@import "custom_bootstrap";
@import "~hint.css/hint.min";
@import "~tachyons/css/tachyons.min";
// For the datatables
@import "_datatable.min";
// Icon fonts
@import "~font-awesome/scss/font-awesome";
// Tooltip
@import "~vue-directive-tooltip/src/css/index.scss";
// Radio button
@import "~pretty-checkbox/src/pretty-checkbox";
// datepicker
@import "~@hokify/vuejs-datepicker/dist/vuejs-datepicker.css";
// Tables
@import "~vue-good-table/dist/vue-good-table.css";
@import "buttons";
@import "header";
@import "people";
@import "journal";
@import "marketing";
@import "settings";
@import "modal";
@import "changelog";
// Custom colors
// Extending Tachyions
$bg-hover-monica: #d7e3ec;
.bg-gray-monica {
background-color: #f2f4f8;
}
.bg-blue-monica {
background-color: #325776;
}
.b--gray-monica {
border-color: #d0d0d0;
}
.bg-hover-monica {
&:hover {
background-color: $bg-hover-monica;
}
}
.bg-pale-red {
background-color: #f4cecd;
}
.box-shadow {
background: #ffffff;
border: 1px solid #d0d0d0;
box-shadow: 1px -1px 4px #d0d0d0;
border-radius: 11px;
}
.w-5 {
width: 5%;
}
.w-95 {
width: 95%;
}
.w-12 {
width: calc(100% / 12);
}
.form-error-message {
border-top: 1px solid #d9534f;
background-color: #f4cecd;
box-shadow: inset 0 3px 0 0 #d9534f, inset 0 0 0 0 transparent, 0 0 0 1px #eeeeee, 0 1px 3px 0 #d0d0d0;
}
.form-information-message {
border-top: 1px solid #0366d5;
background-color: #d1ecfa;
box-shadow: inset 0 3px 0 0 #228b22, inset 0 0 0 0 transparent, 0 0 0 1px #eeeeee, 0 1px 3px 0 #d0d0d0;
svg {
width: 20px;
color: #ffffff;
}
}
// Utilities
.border-bottom {
border-bottom: 1px solid $border-color;
}
.border-top {
border-top: 1px solid $border-color;
}
.border-right {
border-right: 1px solid $border-color;
}
.border-left {
border-left: 1px solid $border-color;
}
.padding-left-none {
padding-left: 0;
}
.boxed {
background: #ffffff;
border: 1px solid $border-color;
border-radius: 3px;
box-shadow: 0 1px 3px 0 #eeeeee;
}
.box-padding {
padding: 15px;
}
.badge {
display: inline-block;
padding: 4px 5px;
font-size: 75%;
font-weight: 700;
line-height: 1;
color: #ffffff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: .25rem;
}
.badge-success {
background-color: #32cd32;
}
.badge-danger {
background-color: #d9534f;
}
kbd {
padding:0.1em 0.6em;
border:1px solid #d0d0d0;
font-size:11px;
font-family:Arial,Helvetica,sans-serif;
background-color:#fafafa;
color:#313436;
box-shadow:0 1px 0px #999999,0 0 0 2px #ffffff inset;
border-radius:3px;
display:inline-block;
margin:0 0.1em;
text-shadow:0 1px 0 #ffffff;
line-height:1.4;
white-space:nowrap;
}
.life-event {
.life-event-add-row {
&:hover {
background-color: $bg-hover-monica;
}
}
.life-event-add-arrow {
right: 10px;
top: 12px;
}
.life-event-add-icon {
background-color: #d7e3ec;
border-radius: 50%;
padding: 20px;
width: 65px;
img {
width: 70px;
}
}
}
.chart-activities {
display: table;
table-layout: fixed;
width: 100%;
max-width: 700px;
height: 200px;
background-image: linear-gradient(to bottom, #d0d0d0 2%, transparent 2%);
background-size: 100% 50px;
background-position: left top;
li {
position: relative;
display: table-cell;
vertical-align: bottom;
height: 200px;
}
span {
margin: 0 1em;
display: block;
background: #d1ecfa;
animation: draw 1s ease-in-out;
&:before{
position: absolute;
left: 0;
right: 0;
top: 100%;
padding: 5px 1em 0;
display: block;
text-align: center;
content: attr(title);
word-wrap: break-word;
}
}
}
@keyframes draw{
0%{height:0;}
}
// Generic styles
body {
color: #4a4a4a;
@if $htmldir == rtl {
text-align: right;
}
}
a {
color: #0366d5;
padding: 1px;
text-decoration: underline;
&:hover {
background-color: #0366d5;
color: #ffffff;
text-decoration: none;
}
&.action-link {
color: #999999;
font-size: 11px;
text-decoration: underline;
margin-right: 5px;
@if $htmldir == rtl {
float: right;
}
&:hover {
background-color: #313436;
color: #eeeeee;
}
}
}
a[hreflang]:after {
content: " (" attr(hreflang) ")";
}
ul {
list-style-type: none;
margin: 0;
padding: 0;
&.horizontal {
li {
display: inline;
}
}
}
.pretty {
white-space: inherit;
&.form-check-input {
@if $htmldir == ltr {
margin-left: 0;
} @else {
margin-right: 0;
}
}
.state label{
text-indent: 0;
@if $htmldir == ltr {
padding-left: 2rem;
} @else {
padding-right: 2rem;
}
line-height: 1.4em;
&:after, &:before {
top: 0;
}
}
}
.markdown {
ul {
list-style-type: disc;
margin-left: 15px;
padding-left: 0;
margin-top: 10px;
margin-bottom: 10px;
}
}
.hidden {
display: none;
}
input:disabled {
background-color: #999999;
}
.pagination-box {
margin-top: 30px;
text-align: center;
}
.alert-success {
margin: 20px 0;
}
.central-form {
margin-top: 40px;
h2 {
font-weight: 400;
margin-bottom: 20px;
text-align: center;
}
.offset-sm-3-right {
margin-right: 25%;
}
.form-check-inline {
margin-right: 10px;
}
.form-group > label:not(:first-child) {
margin-top: 10px;
}
input[type="radio"] {
margin-right: 5px;
}
.dates {
.form-inline {
display: inline;
input[type="number"] {
margin: 0 10px;
width: 52px;
}
input[type="date"] {
margin-left: 20px;
margin-top: 10px;
}
}
}
.form-group:not(:last-child) {
border-bottom: 1px solid #eeeeee;
padding-bottom: 20px;
}
.nav {
margin-top: 40px;
.nav-link {
text-decoration: none;
}
}
.tab-content {
border-right: 1px solid #d0d0d0;
border-left: 1px solid #d0d0d0;
border-bottom: 1px solid #d0d0d0;
padding: 15px;
}
}
.profile-page-avatar {
left: 48%;
top: -60px;
img, div {
border-radius: 50%;
}
@media (max-width: 480px) {
left: 40%;
}
}
.avatar-photo {
img {
border-radius: 3px;
}
}
.breadcrumb {
background-color: #fafafa;
ul {
font-size: 12px;
padding: 30px 0 24px;
li:not(:last-child):after {
content: '>';
@if $htmldir == ltr {
margin-left: 5px;
margin-right: 1px;
} @else {
margin-right: 5px;
margin-left: 1px;
}
}
}
}
.table {
border-collapse: collapse;
display: table;
width: 100%;
.table-row {
border-left: 1px solid #d0d0d0;
border-right: 1px solid #d0d0d0;
border-top: 1px solid #d0d0d0;
display: table-row;
&:first-child {
.table-cell:first-child {
border-top-left-radius: 3px;
}
.table-cell:last-child {
border-top-right-radius: 3px;
}
}
&:last-child {
border-bottom: 1px solid #d0d0d0;
}
&:hover {
background-color: #fafafa;
}
}
.table-cell {
display: table-cell;
padding: 8px 10px;
}
.table-header {
color: #4a4a4a;
background-color: #f2f4f8;
font-size: 1.1rem;
font-weight: bolder;
}
.audit-log-cell {
font-size: 0.9rem;
}
}
.profile-selected {
.profile-selected-left {
border-left: 1px solid #d0d0d0;
border-top: 1px solid #d0d0d0;
border-bottom: 1px solid #d0d0d0;
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
}
.profile-selected-right {
border-right: 1px solid #d0d0d0;
border-top: 1px solid #d0d0d0;
border-bottom: 1px solid #d0d0d0;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
}
}
.full-page-modal {
background: #ffffff;
border: 1px solid #eeeeee;
box-shadow: 2px 0px 6px #999999;
border-radius: 12px;
.full-page-modal-year-selector {
&:hover, &.selected {
background-color: #fafafa;
}
}
}
.full-page-modal-header {
background: #ffffff;
border-top-left-radius: 12px;
border-top-right-radius: 12px;
}
.column-list {
column-count: 3;
column-gap: 20px;
}
.dt-row.hover {
&:hover {
background-color: #d7e3ec;
}
}
.profile-edit-contact-button {
right: 20px;
top: 20px;
}
.nowrap-link {
white-space: nowrap;
}
// datasets
table.vgt-table {
font-size: 14px;
td.vgt-table-date {
padding-left: 10px;
vertical-align: middle;
width: 110px;
}
td.vgt-table-action .action-btn {
border: 1px solid transparent;
display: inline;
padding: 0px 8px 4px;
&:hover {
box-shadow: 1px 0px 1px #d0d0d0, -1px 1px 1px #d0d0d0, 0px 1px 4px #d0d0d0;
border-radius: 3px;
}
}
th {
padding-left: 10px;
font-size: 13px;
}
td {
padding-left: 10px;
font-size: 14px;
}
}
.vgt-wrap__footer {
padding: 3px 10px!important;
background: linear-gradient(#ffffff,#fafafa)!important;
}
footer {
.badge-success {
font-size: 12px;
font-weight: 400;
}
.show-version {
text-align: left;
h2 {
font-size: 16px;
}
.note {
margin-bottom: 20px;
ul {
list-style-type: disc;
}
li {
display: block;
font-size: 15px;
text-align: left;
}
}
}
}
@media (max-width: 480px) {
.sidebar-box {
border: 1px solid $border-color;
border-radius: 3px;
.sidebar-heading {
background-color: #fafafa;
margin-top: 0;
padding: 5px;
}
.sidebar-blank {
background-color: #ffffff;
border: 0;
}
li {
padding: 5px;
}
}
.column-list {
column-count: 1;
column-gap: 20px;
}
.chart-activities {
span{
margin: 0 4px;
}
}
}
// Fix svg alignment
svg {
vertical-align: baseline !important;
}
// Input error handle
.form-group-error {
animation-name: shake;
animation-fill-mode: forwards;
animation-duration: .6s;
animation-timing-function: ease-in-out;
z-index: 99;
}
.form-group-error .error {
border-color: #d9534f !important;
color:#f4cecd;
}
// Shake animation
@keyframes shake {
0%, 100% {
transform: translateX(0);
}
15%, 45%, 75% {
transform: translateX(0.375rem);
}
30%, 60%, 90% {
transform: translateX(-0.375rem);
}
}

3
resources/sass/app-rtl.scss vendored Normal file
View File

@@ -0,0 +1,3 @@
$htmldir: rtl;
@import "app-ltr";

112
resources/sass/buttons.scss vendored Normal file
View File

@@ -0,0 +1,112 @@
.btn {
color: #4a4a4a;
background-color: #d7e3ec;
background-image: -webkit-linear-gradient(270deg, #fafafa 0%, #d7e3ec 90%);
background-image: linear-gradient(-180deg, #fafafa 0%, #d7e3ec 90%);
position: relative;
display: inline-block;
padding: 6px 12px;
font-size: 14px;
font-weight: 600;
line-height: 20px;
white-space: nowrap;
vertical-align: middle;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-repeat: repeat-x;
background-position: -1px -1px;
background-size: 110% 110%;
border: 1px solid #d0d0d0;
border-radius: 0.25em;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
text-decoration: none;
&:hover, &:focus {
text-decoration: none;
background-color: #d0d0d0;
background-image: -webkit-linear-gradient(270deg, #d7e3ec 0%, #d0d0d0 90%);
background-image: linear-gradient(-180deg, #d7e3ec 0%, #d0d0d0 90%);
background-position: 0 -0.5em;
background-repeat: repeat-x;
border-color: #999999;
color: #0366d5;
}
&:active {
background-color: #d0d0d0;
background-image: none;
border-color: #999999;
box-shadow: inset 0 0.15em 0.3em #eeeeee;
}
&:disabled {
background-image: linear-gradient(-180deg, #d0d0d0 0%, #d0d0d0 90%);
}
&:focus {
outline: none;
text-decoration: none;
}
}
.btn-primary {
color: #ffffff;
background-color: #228b22;
background-image: -webkit-linear-gradient(270deg, #32cd32 0%, #228b22 90%);
background-image: linear-gradient(-180deg, #32cd32 0%, #228b22 90%);
&:hover, &:focus {
background-color: #228b22;
background-image: -webkit-linear-gradient(270deg, #32cd32 0%, #228b22 90%);
background-image: linear-gradient(-180deg, #32cd32 0%, #228b22 90%);
background-position: 0 -0.5em;
border-color: #228b22;
color: #ffd700;
}
}
.btn-danger {
color: #b22222;
&:hover, &:focus {
background-color: #b22222;
background-image: linear-gradient(#d9534f, #b22222);
border-color: #b22222;
color: #ffffff;
}
}
.btn-warning {
color: #daa520;
&:hover, &:focus {
background-color: #daa520;
background-image: linear-gradient(#fffacd, #daa520);
border-color: #daa520;
color: #ffffff;
}
}
.btn-add {
position: relative;
top: 3px;
border: 1px solid #4a4a4a;
border-radius: 50%;
width: 15px;
margin-right: 3px;
}
.small-btn {
background: #ffffff;
color: #4a4a4a;
opacity: 0.8;
box-shadow: 1px 0px 1px #d0d0d0, -1px 1px 1px #d0d0d0, 0px 1px 4px #d0d0d0;
border-radius: 11px;
font-weight: 500;
text-decoration: none;
}

7
resources/sass/changelog.scss vendored Normal file
View File

@@ -0,0 +1,7 @@
.changelog {
img {
max-width: 100%;
border: 1px solid #d0d0d0;
padding: 3px;
}
}

240
resources/sass/header.scss vendored Normal file
View File

@@ -0,0 +1,240 @@
.header-logo {
text-decoration: none;
&:hover {
text-decoration: none;
background-color: transparent;
}
}
.header-search {
padding: 0;
position: relative;
margin: auto 0;
}
.header-search-form {
position: relative;
span {
color: #d0d0d0;
font-size: 12px;
left: 10px;
position: absolute;
top: 10px;
}
input {
border: 0;
color: #ffffff;
padding-left: 29px;
}
}
.header-nav {
@if $htmldir == ltr {
text-align: right;
} @else {
text-align: left;
}
.header-nav-item {
display: inline;
margin-right: 10px;
@if $htmldir == ltr {
&:last-child {
margin-right: 0;
}
} @else {
&:last-child {
margin-right: 10px;
}
&:first-child {
margin-right: 0;
}
}
}
}
.header-nav-item-link {
color: #ffffff;
font-weight: 300;
padding: 3px 11px;
text-decoration: none;
&:hover {
background-color: #497193;
border-radius: 3px;
color: #ffffff;
padding: 3px 11px;
text-decoration: none;
}
svg {
position: relative;
top: 3px;
}
}
.header-search-input {
background: #497193;
border-color: #497193;
color: #ffffff;
&::placeholder {
opacity: 0.5;
color: #f2f4f8;
}
&:-ms-input-placeholder {
opacity: 0.5;
color: #f2f4f8;
}
&:focus {
background: #f2f4f8;
color: #313436;
}
}
.header-search-results {
position: absolute;
width: 100%;
z-index: 10;
}
.header-search-result {
position: relative;
background: #ffffff;
box-shadow: 0 3px 3px 0 #999999;
border-bottom: 1px solid #eeeeee;
a {
color: inherit;
text-decoration: none;
vertical-align: middle;
background: transparent;
span {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 1;
}
}
a:hover {
background: inherit;
color: inherit;
}
.avatar {
border-radius: 3px;
display: inline-block;
height: 36px;
margin: 10px;
width: 36px;
}
.avatar-initials {
text-align: center;
padding-top: 6px;
font-size: 15px;
color: #ffffff;
}
&:last-child {
border-bottom: initial;
}
}
.header-search-result:hover {
background: #fafafa;
}
.pulse {
-webkit-animation: pulse 3s linear infinite;
-moz-animation: pulse 3s linear infinite;
-ms-animation: pulse 3s linear infinite;
animation: pulse 3s linear infinite;
&:before {
position: absolute;
content: '';
background-color:#32cd32;
border-radius:50%;
width: 9px;
height: 9px;
pointer-events: none;
top: 16px;
left: 17px;
z-index: 10000;
}
}
@keyframes pulse {
0% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-o-transform: scale(1.1);
-ms-transform: scale(1.1);
transform: scale(1.1);
}
50% {
-webkit-transform: scale(0.8);
-moz-transform: scale(0.8);
-o-transform: scale(0.8);
-ms-transform: scale(0.8);
transform: scale(0.8);
}
100% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-o-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
}
@media (max-width: 767px) {
header {
.mobile-menu {
border: 1px solid #325776;
margin-bottom: 20px;
li {
border-bottom: 1px solid #497193;
margin-bottom: 0;
padding: 4px 0;
a {
text-decoration: none;
}
&:last-child {
border-bottom: 0;
}
&.cta {
border: 0;
a {
width: 100%;
}
}
}
}
}
.header-search {
padding: 0;
margin: 20px 0;
ul {
padding-right: 26px;
}
}
}

26
resources/sass/journal.scss vendored Normal file
View File

@@ -0,0 +1,26 @@
.journal-calendar-text {
top: 19px;
line-height: 16px;
width: 62px;
}
.journal-calendar-box {
width: 62px;
@if $htmldir == ltr {
margin-right: 11px;
} @else {
margin-left: 11px;
}
}
.journal-calendar-content {
width: calc(100% - 73px);
}
.journal-line {
transition: all .2s;
&:hover {
border-color: #0366d5;
}
}

317
resources/sass/marketing.scss vendored Normal file
View File

@@ -0,0 +1,317 @@
.marketing {
&.homepage {
.top-page {
background-color: #4a4a4a;
border-bottom: 1px solid #d0d0d0;
color: #ffffff;
padding-top: 40px;
text-align: center;
.navigation {
position: absolute;
right: 20px;
top: 20px;
a {
border: 1px solid #ffffff;
border-radius: 6px;
color: #ffffff;
padding: 10px;
text-decoration: none;
}
}
h1 {
font-size: 32px;
font-weight: 300;
margin-bottom: 40px;
}
p {
font-size: 18px;
font-weight: 300;
margin: 0 auto;
max-width: 550px;
&.cta {
margin-bottom: 50px;
margin-top: 70px;
a {
font-size: 20px;
font-weight: 300;
padding: 20px 50px;
}
}
}
.logo {
margin-bottom: 20px;
}
}
.before-sections {
text-align: center;
h3 {
font-size: 25px;
font-weight: 300;
margin-bottom: 40px;
margin-top: 80px;
}
}
.section-homepage {
border-bottom: 1px solid #d0d0d0;
padding: 60px 0;
.visual {
text-align: center;
}
h2 {
font-size: 18px;
font-weight: 300;
margin-bottom: 25px;
}
&.dates {
h2 {
margin-top: 40px;
}
}
&.activities {
h2 {
margin-top: 130px;
}
}
&.features {
h3 {
font-size: 18px;
font-weight: 300;
margin-bottom: 40px;
text-align: center;
}
ul {
li {
font-size: 16px;
margin: 10px auto;
max-width: 60%;
i {
color: #228b22;
}
}
}
}
&.try {
text-align: center;
p {
margin-bottom: 50px;
margin-top: 70px;
a {
font-size: 20px;
font-weight: 300;
padding: 20px 50px;
}
}
}
}
.why {
background-color: #4a4a4a;
color: #ffffff;
padding-bottom: 50px;
h3 {
font-size: 20px;
font-weight: 300;
margin-bottom: 30px;
padding-top: 50px;
text-align: center;
}
p {
font-size: 16px;
font-weight: 300;
margin: 10px auto 20px;
max-width: 550px;
}
}
}
.footer-marketing {
margin-bottom: 40px;
padding-top: 40px;
text-align: center;
a {
margin-right: 10px;
}
}
&.register {
background-color: #fafafa;
padding-top: 90px;
padding-bottom: 40px;
.offset-md-3-right {
margin-right: 25%;
}
.signup-box {
background-color: #ffffff;
border: 1px solid #d0d0d0;
border-radius: 5px;
padding: 50px 20px 20px;
h1 {
font-weight: 700;
text-align: center;
}
h2, h3 {
font-weight: 300;
text-align: center;
}
h2 {
margin-top: 20px;
margin-bottom: 20px;
}
h3 {
font-size: 15px;
margin-bottom: 30px;
}
.form-inline {
label {
display: block;
}
}
button {
margin-top: 10px;
width: 100%;
}
a.action {
margin-top: 10px;
width: 100%;
text-align: center;
}
.help {
font-size: 13px;
text-align: center;
}
.checkbox {
display: none;
}
.links {
margin-top: 20px;
li {
font-size: 14px;
margin-bottom: 5px;
}
}
}
}
.subpages {
.header {
background-color: #4a4a4a;
text-align: center;
}
}
}
.releases, .privacy, .statistics {
max-width: 750px;
margin-left: auto;
margin-right: auto;
padding: 20px 30px 100px 30px;
margin-top: 50px;
background-color: #ffffff;
box-shadow: 0px 8px 20px #d0d0d0;
h2 {
text-align: center;
}
h3 {
font-size: 15px;
margin-top: 30px;
}
}
.releases {
ul {
list-style-type: disc;
margin-left: 20px;
}
}
@media (max-width: 480px) {
.marketing {
&.homepage {
img {
max-width: 100%;
}
.before-sections h3 {
margin-bottom: 0;
}
.section-homepage {
&.people {
.visual {
margin-top: 40px;
}
}
&.activities {
h2 {
margin-top: 0;
}
.visual {
margin-top: 40px;
}
}
&.features {
ul li {
max-width: 100%;
}
}
&.try {
padding: 30px 0;
}
}
}
&.register {
.signup-box {
.logo {
left: 39%;
top: -47px;
}
}
}
}
}

97
resources/sass/modal.scss vendored Normal file
View File

@@ -0,0 +1,97 @@
.modal {
h5 {
font-size: 20px;
font-weight: 500;
}
label {
padding-left: 0;
}
.close {
position: absolute;
@if $htmldir == ltr {
right: 19px;
} @else {
left: 19px;
}
top: 14px;
font-size: 30px;
}
&.log-call {
.date-it-happened {
margin-top: 20px;
}
.exact-date {
display: none;
margin-top: 20px;
input {
display: inline;
}
}
}
}
.modal-mask {
position: fixed;
z-index: 9998;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #4a4a4a;
display: table;
transition: opacity .3s ease;
}
.modal-wrapper {
display: table-cell;
vertical-align: middle;
}
.modal-container {
max-width: 500px;
max-height: 80%;
margin: 0px auto;
padding: 20px 30px;
background-color: #ffffff;
border-radius: 2px;
box-shadow: 0 2px 8px #999999;
transition: all .3s ease;
font-family: Helvetica, Arial, sans-serif;
text-align: center;
img {
max-height: 400px;
}
}
/*
* The following styles are auto-applied to elements with
* transition="modal" when their visibility is toggled
* by Vue.js.
*
* You can easily play with the modal transition by editing
* these styles.
*/
.modal-enter {
opacity: 0;
}
.modal-leave-active {
opacity: 0;
}
.modal-enter .modal-container,
.modal-leave-active .modal-container {
-webkit-transform: scale(1.1);
transform: scale(1.1);
}
.sweet-modal-overlay {
-webkit-perspective: none !important;
}

618
resources/sass/people.scss vendored Normal file
View File

@@ -0,0 +1,618 @@
.avatars {
a {
text-decoration: none;
&:hover {
background-color: transparent;
}
}
}
.people-list {
.breadcrumb {
border-bottom: 1px solid #eeeeee;
}
.main-content {
margin-top: 20px;
}
.sidebar {
.sidebar-cta {
margin-bottom: 20px;
padding: 15px;
text-align: center;
width: 100%;
}
li {
margin-bottom: 7px;
@if $htmldir == ltr {
padding-left: 15px;
} @else {
padding-right: 15px;
}
position: relative;
&.selected::before {
color: #999999;
content: '>';
left: 0;
position: absolute;
}
.number-contacts-per-tag,
.number-contacts-without-tag {
@if $htmldir == ltr {
float: right;
} @else {
float: left;
}
}
}
.number-contacts-without-tag{
font-size: 1rem;
}
}
.list {
border: 1px solid #eeeeee;
border-radius: 3px;
}
.clear-filter {
border: 1px solid #eeeeee;
position: relative;
padding: 6px;
border-radius: 3px;
a {
position: absolute;
@if $htmldir == ltr {
right: 10px;
} @else {
left: 10px;
}
}
}
.people-list-item {
border-bottom: 1px solid #eeeeee;
padding: 10px;
&:hover {
background-color: #fafafa;
}
&.sorting {
background-color: #fafafa;
position: relative;
padding: 10px;
.options {
display: inline;
position: absolute;
@if $htmldir == ltr {
right: 10px;
} @else {
left: 10px;
}
.dropdown-btn {
&:after {
content: '\f0d7';
font-family: FontAwesome;
margin-left: 5px;
}
}
.dropdown-item {
padding: 3px 20px 3px 10px;
&:before {
content: '\f00c';
font-family: FontAwesome;
margin-right: 5px;
color: #ffffff;
}
&:hover {
background-color: #0366d5;
color: #ffffff;
}
&.selected {
&:before {
color: #999999;
}
}
}
}
}
a {
color: #313436;
text-decoration: none;
display: block;
&:hover {
background-color: transparent;
color: #313436;
}
}
.people-list-item-information {
color: #999999;
font-size: 12px;
font-style: italic;
position: relative;
text-align: right;
top: 16px;
@if $htmldir == ltr {
float: right;
} @else {
float: left;
}
}
}
}
.blank-people-state {
margin-top: 30px;
text-align: center;
h3 {
font-weight: 400;
margin-bottom: 30px;
}
.cta-blank {
margin-bottom: 30px;
}
.illustration-blank {
p {
margin-top: 30px;
}
img {
display: block;
margin: 0 auto 20px;
}
}
}
.avatar-header {
top: 40px;
margin-top: -30px;
.image-header::after {
box-shadow: inset 1px 1px 3px 0 #d0d0d0;
border-radius: 7px;
content: '';
display: block;
height: 100%;
position: absolute;
top: 0;
width: 100%;
}
.hide-child:hover {
.child {
background: #4a4a4a;
}
a:hover {
background: transparent;
text-decoration: underline;
}
}
}
.people-show {
.main-content {
background-color: #ffffff;
padding-bottom: 20px;
padding-top: 40px;
.section-title {
position: relative;
h3 {
border-bottom: 1px solid #d0d0d0;
font-size: 18px;
font-weight: 400;
margin-bottom: 20px;
padding-bottom: 10px;
@if $htmldir == ltr {
padding-left: 23px;
} @else {
padding-right: 23px;
}
padding-top: 10px;
position: relative;
}
.icon-section {
position: absolute;
top: 14px;
width: 17px;
}
}
.sidebar {
.sidebar-cta {
a {
margin-bottom: 20px;
width: 100%;
}
}
}
}
.profile {
.sidebar-box {
background-color: #f2f4f8;
border: 1px solid #eeeeee;
border-radius: 3px;
color: #313436;
margin-bottom: 25px;
padding: 10px;
position: relative;
font-size: 0.875rem;
&.edit {
background-color: #fffceb;
border-color: #ffd700;
}
}
.sidebar-box-title {
margin-bottom: 4px;
position: relative;
h3 {
font-size: 12px;
font-weight: 500;
text-transform: uppercase;
}
a {
position: absolute;
right: 7px;
}
img {
left: -3px;
position: relative;
width: 20px;
&.people-information {
top: -4px;
}
}
}
.sidebar-box-paragraph:not(:last-child) {
margin-bottom: 9px;
}
.people-list {
li {
margin-bottom: 4px;
}
}
.people-information,
.work,
.introductions {
li {
color: #999999;
font-size: 12px;
margin-bottom: 10px;
&:last-child {
margin-bottom: 0;
}
i {
text-align: center;
width: 17px;
}
}
}
.section {
margin-bottom: 35px;
&.kids,
&.food-preferences {
.section-heading img {
position: relative;
top: -3px;
}
}
.inline-action {
display: inline;
margin-left: 10px;
a {
margin-right: 5px;
}
}
.section-heading {
border-bottom: 1px solid #eeeeee;
padding-bottom: 4px;
margin-bottom: 10px;
img {
width: 25px;
}
}
.section-action {
display: inline;
float: right;
}
.section-blank {
background-color: #fafafa;
border: 1px solid #eeeeee;
border-radius: 3px;
padding: 15px;
text-align: center;
h3 {
font-weight: 400;
font-size: 14px;
}
}
}
}
.gifts {
.gift-recipient {
font-size: 15px;
&:not(:first-child) {
margin-top: 25px;
}
}
.offered {
background-color: #32cd32;
border-radius: 10rem;
display: inline-block;
font-size: 75%;
font-weight: 400;
line-height: 1;
color: #ffffff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
padding: 2px 0;
padding-right: .6em;
padding-left: .6em;
}
.gift-list-item {
border-top: 1px solid #eeeeee;
padding: 5px 0;
&:last-child {
border-bottom: 0;
}
}
.gift-list-item-url {
display: inline;
font-size: 12px;
margin-left: 10px;
padding: 5px 0 0;
}
.gift-list-item-information {
display: inline;
margin-left: 10px;
}
.gift-list-item-date,
.gift-list-item-actions {
color: #999999;
display: inline;
font-size: 12px;
a {
color: #999999;
font-size: 11px;
margin-right: 5px;
text-decoration: underline;
}
li {
display: inline;
}
}
.gift-list-item-actions {
margin-left: 5px;
}
.for {
font-style: italic;
margin-left: 10px;
}
}
.activities,
.reminders,
.tasks,
.debts,
.gifts {
.date {
color: #999999;
font-size: 12px;
margin-right: 10px;
width: 100px;
}
.frequency-type,
.value {
background-color: #d7e3ec;
border: 1px solid #eeeeee;
border-radius: 3px;
display: inline;
font-size: 12px;
padding: 0 6px;
}
.list-actions {
position: relative;
text-align: center;
width: 90px;
a:not(:last-child) {
@if $htmldir == ltr {
margin-right: 5px;
} @else {
margin-left: 5px;
}
}
a.edit {
position: relative;
top: 1px;
}
}
.empty {
font-style: italic;
}
}
.reminders {
.frequency-type {
white-space: nowrap;
}
input[type='date'] {
margin-bottom: 20px;
width: 170px;
}
.form-check {
input[type='number'] {
display: inline;
width: 50px;
}
}
}
.debts {
.debts-list {
.debt-nature {
width: 220px;
}
}
}
}
.create-people {
.import {
margin-bottom: 30px;
text-align: center;
}
}
@media (max-width: 480px) {
.people-list {
margin-top: 20px;
.people-list-mobile {
border-bottom: 1px solid $border-color;
li {
padding: 6px 0;
}
}
.people-list-item {
.people-list-item-information {
display: none;
}
}
}
.people-show {
.main-content {
&.modal {
margin-top: 0;
}
&.dashboard {
.sidebar-box {
margin-bottom: 15px;
}
.sidebar-cta {
margin-top: 15px;
}
.people-information-actions {
margin-bottom: 20px;
}
}
&.activities {
.cta-mobile {
margin-bottom: 20px;
a {
width: 100%;
}
}
.activities-list {
.activity-item-date {
top: -4px;
}
}
}
}
}
.create-people {
width: 100%;
.btn {
width: 100%;
}
}
.list-add-item {
margin-left: 0;
}
.inline-form {
.task-add-title {
width: 100%;
}
textarea {
width: 100%;
}
}
.box-links {
margin-bottom: 10px;
position: relative;
right: 0;
top: 0;
li {
margin-left: 0;
}
}
}

299
resources/sass/settings.scss vendored Normal file
View File

@@ -0,0 +1,299 @@
.settings {
.breadcrumb {
margin-bottom: 20px;
}
.sidebar-menu {
ul {
border: 1px solid $border-color;
border-radius: 3px;
}
li {
padding: 10px;
&:not(:last-child) {
border-bottom: 1px solid $border-color;
}
&.selected {
background-color: #fafafa;
i {
color: green;
}
}
a {
width: 100%;
}
i {
@if $htmldir == ltr {
margin-right: 5px;
} @else {
margin-left: 5px;
}
color: #999999;
}
}
}
.settings-reset,
.settings-delete,
.settings-group {
border: 1px solid;
padding: 10px;
margin-top: 40px;
h2 {
font-weight: normal;
font-size: 16px;
}
h3 {
font-weight: normal;
font-size: 14px;
}
}
.settings-delete {
border-color: #d9534f;
border-radius: 3px;
}
.settings-reset {
border-color: #daa520;
border-radius: 3px;
}
.settings-group {
border-color: #999999;
border-radius: 3px;
}
.warning-zone {
margin-bottom: 30px;
margin-top: 30px;
padding: 10px 10px 5px 15px;
border: 1px solid #daa520;
border-radius: 3px;
background-color: #fffacd;
}
.users-list {
h3.with-actions {
padding-bottom: 13px;
a {
float: right;
}
}
.table-cell.actions {
@if $htmldir == ltr {
text-align: right;
} @else {
text-align: left;
}
}
}
.tags-list {
h3.with-actions {
padding-bottom: 13px;
}
.table-cell.actions {
@if $htmldir == ltr {
text-align: right;
} @else {
text-align: left;
}
}
}
.blank-screen {
text-align: center;
img {
margin-bottom: 30px;
margin-top: 30px;
}
h2 {
font-weight: normal;
margin-bottom: 10px;
}
h3 {
margin-top: 0;
border-bottom: 0;
}
p {
margin: 0 auto;
width: 400px;
&.cta {
margin-top: 40px;
margin-bottom: 10px;
}
}
.requires-subscription {
margin-top: 20px;
font-size: 13px;
color: #999999;
}
}
.subscriptions {
.upgrade-benefits {
margin-bottom: 20px;
li {
margin-left: 20px;
list-style-type: disc;
}
}
#label-card-element {
margin-bottom: 15px;
}
.downgrade {
ul {
background-color: #fafafa;
border: 1px solid $border-color;
border-radius: 6px;
margin-bottom: 20px;
padding: 25px;
}
li {
padding-bottom: 15px;
&:not(:last-child) {
border-bottom: 1px solid $border-color;
}
&:not(:first-child) {
margin-top: 10px;
}
&.success {
.rule-title {
text-decoration: line-through;
}
.icon:after {
font-family: FontAwesome;
font-size: 17px;
content: "\f058";
top: 10px;
position: relative;;
}
}
&.fail {
.icon:after {
font-family: FontAwesome;
font-size: 17px;
color: #d9534f;
content: "\f057";
top: 10px;
position: relative;;
}
}
.rule-title {
font-size: 18px;
padding-left: 5px;
}
.rule-to-succeed {
font-size: 13px;
display: block;
padding-left: 27px;
}
}
}
}
.report {
.report-summary {
background-color: #fafafa;
border: 1px solid $border-color;
border-radius: 3px;
margin-bottom: 30px;
li {
padding: 5px 10px;
&:not(:last-child) {
border-bottom: 1px solid $border-color;
}
span {
font-weight: 600;
}
}
}
.status {
text-align: center;
width: 95px;
}
.reason {
font-style: italic;
}
}
&.import {
.success {
color: #32cd32;
}
.failure {
color: #d9534f;
}
.warning {
color: #daa520;
}
.date {
font-size: 13px;
margin-left: 10px;
}
h3.with-actions {
padding-bottom: 13px;
a {
float: right;
}
}
}
&.upload {
.warning-zone {
padding: 20px 15px;
ul {
@if $htmldir == ltr {
margin-left: 20px;
} @else {
margin-right: 20px;
}
list-style-type: disc;
}
}
}
.reminder-info {
text-decoration: underline dotted;
}
}

22
resources/sass/stripe.scss vendored Normal file
View File

@@ -0,0 +1,22 @@
.StripeElement {
background-color: #ffffff;
height: 45px;
width: 100%;
padding: 13px 12px;
border-radius: 4px;
border: 1px solid #999999;
-webkit-transition: box-shadow 150ms ease;
transition: box-shadow 150ms ease;
}
.StripeElement--focus {
box-shadow: 0 1px 3px 0 #d0d0d0;
}
.StripeElement--invalid {
border-color: #d9534f;
}
.StripeElement--webkit-autofill {
background-color: #fffacd !important;
}