Datamodel + Appv2 migration, WIP

This commit is contained in:
2026-01-13 08:09:11 +01:00
parent 93d35abde2
commit 364278527d
143 changed files with 3712 additions and 708 deletions

99
styles/global/chat.less Normal file
View File

@@ -0,0 +1,99 @@
/* ----------------------------------------- */
/* Chat Messages */
/* ----------------------------------------- */
.message-header {
h2.damage {
color: orangered;
font-weight: bold;
}
h2.critical {
color: green;
font-weight: bold;
}
h2.fumble {
color: red;
font-weight: bold;
}
h2.success {
color: darkgreen;
font-weight: bold;
}
h2.failure {
color: darkred;
font-weight: bold;
}
h2.roll {
color: darkslategrey;
font-weight: bold;
}
}
h2.good {
color: darkgreen;
font-weight: bold;
}
h2.bad {
color: darkred;
font-weight: bold;
}
.chat-message {
margin: 3px;
padding: 10px;
font-size: 14px;
border-radius: 0;
background-color: white;
background-image: url("/systems/bol/ui/box-border-large.webp");
background-repeat: no-repeat;
background-size: 100% 100%;
.message-header {
.flavor-text {
font-family: "IMFellDWPicaSC-Regular", serif;
font-size: 14px;
h2 {
font-family: "Modesto Condensed", "Palatino Linotype", serif;
font-size: 20px;
}
}
}
.message-content {
.dice-roll {
.dice-result {
.dice-formula {
border-radius: 0px;
border: 1px inset lightgray;
background-color: #282828;
color: white;
}
.dice-tooltip {
.tooltip-part {
.part-total {
border-radius: 0px;
border: 1px inset lightgray;
background-color: #2a2a2a;
color: white;
}
}
}
.dice-total {
border-radius: 0px;
border: 1px inset lightgray;
background-color: #2a2a2a;
color: white;
}
}
}
}
}

110
styles/global/colors.less Normal file
View File

@@ -0,0 +1,110 @@
/* ----------------------------------------- */
/* Premade Colors */
/* ----------------------------------------- */
.light {
color: lightgray;
}
.bg-light {
background: lightgray;
}
.darkgray {
color: #23221d;
}
.bg-darkgray {
background: #23221d;
color: #fff;
}
.darkbrown {
color: #464331c4;
}
.bg-darkbrown {
background: #464331c4;
color: #fff;
}
.darkslate {
color: darkslategray;
}
.bg-darkslate {
background: darkslategray;
color: #fff;
}
.darkgreen {
color: #003c1e;
}
.bg-darkgreen {
background: #003c1e;
color: #fff;
}
.darkblue {
color: midnightblue;
}
.bg-darkblue {
background: midnightblue;
color: #fff;
}
.blue {
color: #009ee0;
}
.bg-blue {
background: #009ee0;
color: #fff;
}
.green {
color: #44a12b;
}
.bg-green {
background: #44a12b;
color: #fff;
}
.black {
color: #000;
}
.bg-black {
background: #000;
color: #fff;
}
.red {
color: #cd071e;
}
.bg-red {
background: #cd071e;
color: #fff;
}
.darkred {
color: darkred;
}
.bg-darkred {
background: darkred;
color: #fff;
}
.purple {
color: purple;
}
.bg-purple {
background: purple;
color: #fff;
}

98
styles/global/flex.less Normal file
View File

@@ -0,0 +1,98 @@
/* ----------------------------------------- */
/* Flexbox Utilities */
/* ----------------------------------------- */
.flxrow {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
> * {
flex: 1;
}
.flex1 { flex: 1; }
.flex2 { flex: 2; }
.flex3 { flex: 3; }
.flex4 { flex: 4; }
}
.flexrow {
display: flex;
flex-flow: row wrap;
justify-content: flex-start;
/* Wrong in v13: > * { flex: 1; } */
.flex1 { flex: 1; }
.flex2 { flex: 2; }
.flex3 { flex: 3; }
.flex4 { flex: 4; }
.flex5 { flex: 5; }
.flex6 { flex: 6; }
.flex7 { flex: 7; }
.flex8 { flex: 8; }
.flex9 { flex: 9; }
}
.flexcol {
.flex1 { flex: 1; }
.flex2 { flex: 2; }
.flex3 { flex: 3; }
.flex4 { flex: 4; }
}
.flex-group-center,
.flex-group-left,
.flex-group-right {
justify-content: center;
align-items: center;
text-align: center;
padding: 5px;
}
.flex-group-left {
justify-content: flex-start;
text-align: left;
}
.flex-group-right {
justify-content: flex-end;
text-align: right;
}
.center {
text-align: center;
display: flex;
justify-content: center;
align-items: center;
}
.left {
text-align: left;
display: flex;
align-items: center;
justify-content: flex-start;
}
.right {
justify-content: flex-end;
text-align: right;
display: flex;
align-items: center;
}
.flex-center {
align-items: center;
justify-content: center;
text-align: center;
}
.flex-between {
justify-content: space-between;
}
.no-wrap {
flex-wrap: nowrap !important;
}

233
styles/global/forms.less Normal file
View File

@@ -0,0 +1,233 @@
/* ----------------------------------------- */
/* Form Styles */
/* ----------------------------------------- */
.bol {
input[readonly="true"] {
border: none;
color: dimgray;
cursor: not-allowed;
width: 100%;
vertical-align: middle;
background: transparent;
}
input[type="text"],
input[type="number"],
input[type="text"]:hover,
input[type="number"]:hover,
input[type="text"]:focus,
input[type="number"]:focus {
border-radius: 0;
border: none;
box-shadow: none;
}
input:disabled:hover,
select:disabled:hover,
textarea:disabled:hover,
input:disabled:focus,
select:disabled:focus,
textarea:disabled:focus {
box-shadow: none !important;
border: 1px solid transparent !important;
outline: none !important;
}
button {
background: rgba(0, 0, 0, 0.1);
}
select {
box-shadow: none;
font-size: 14px;
text-align: center;
text-align-last: center;
-moz-text-align-last: center;
width: 100%;
border: none;
border-radius: 0;
&[multiple] {
box-shadow: none;
border: none;
font-size: 14px;
&:focus option:checked {
background: darkred linear-gradient(0deg, darkred 0%, darkred 100%);
color: white;
}
}
}
option {
font-size: 14px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
&:hover,
&:focus,
&:active,
&:checked,
&[selected] {
cursor: pointer;
background: darkred linear-gradient(0deg, darkred 0%, darkred 100%);
color: white;
}
}
label.checkbox {
flex: auto;
padding: 0;
margin: 0;
height: 22px;
line-height: 22px;
font-size: 11px;
> input[type="checkbox"] {
width: 16px;
height: 16px;
margin: 0 2px 0 0;
position: relative;
top: 4px;
}
&.right > input[type="checkbox"] {
margin: 0 0 0 2px;
}
}
.form-group {
label {
flex: 2;
font-weight: bold;
}
.form-fields {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
> * {
flex: 1;
margin: 0 3px 0 0;
&:last-child {
margin-right: 0;
}
.flex1 { flex: 1; }
.flex2 { flex: 2; }
.flex3 { flex: 3; }
.flex4 { flex: 4; }
}
label {
flex: 0 0 100%;
margin: 0;
&.checkbox {
flex: auto;
text-align: left;
}
}
.field-value {
text-align: center;
}
}
&.stacked {
label {
flex: 0 0 100%;
margin: 0;
&.checkbox {
flex: auto;
text-align: left;
}
}
}
}
.form-header {
margin: 0.25em 0 0.25em 0;
padding: 2px 5px;
font-family: "Wolfsbane2Expanded", cursive;
color: #4b4a44;
background-color: lightgray;
}
h1.form-header {
font-size: 2.2em;
font-weight: 700;
}
h2.form-header {
font-size: 1.8em;
font-weight: 500;
border-bottom: 1px groove #eeede0;
}
h3.form-header {
font-size: 1.2em;
font-weight: 500;
border-bottom: 1px groove #eeede0;
}
h4.form-header {
font-size: 1em;
font-weight: 500;
font-family: 'Signika', sans-serif;
color: black;
background-color: transparent;
border-top: none;
border-bottom: 1px groove #eeede0;
}
.tag {
display: inline-block;
margin: 0 2px 0 0;
padding: 0 3px;
font-size: 10px;
line-height: 16px;
border: 1px solid #999;
border-radius: 3px;
background: rgba(0, 0, 0, 0.05);
}
::placeholder {
color: lightgray;
opacity: 1;
}
:-ms-input-placeholder {
color: lightgray;
}
::-ms-input-placeholder {
color: lightgray;
}
input::placeholder {
color: lightgray;
}
.property {
margin-top: 2px;
}
.inc-dec-btns {
color: #4b4a44;
}
}
.chat-button {
font-size: 0.8rem;
}
.summmary-number {
padding-left: 4rem;
}

View File

@@ -0,0 +1,71 @@
/* ----------------------------------------- */
/* Foundry VTT Overrides */
/* ----------------------------------------- */
#pause {
background: none;
> img {
width: 200px;
height: 200px;
top: -50px;
left: calc(50% - 100px);
opacity: 0.7;
}
h3 {
font-family: "IMFellDWPicaSC-Regular", serif;
font-size: 32px;
text-shadow: 0px 3px 5px #000000;
}
}
::-webkit-scrollbar-thumb {
outline: none;
border-radius: 3px;
background: #999 !important;
border: 1px solid #333 !important;
border-color: #333 !important;
}
::-webkit-scrollbar-track {
box-shadow: 0 0 3px #005d67 inset !important;
border-radius: 3px;
}
* {
scrollbar-width: thin !important;
scrollbar-color: #005d67 #ccc !important;
}
.element-invisible {
position: absolute;
width: 1px;
height: 1px;
margin: -1px;
border: 0;
padding: 0;
clip: rect(0 0 0 0);
overflow: hidden;
}
.roll-box {
border-width: 1px;
border-color: #000000;
margin-bottom: 2px;
}
.hide {
display: none;
}
ul.no-bullets {
list-style-type: none;
padding: 0;
margin: 0;
}
.nomargin {
margin: 0;
padding: 0;
}

View File

@@ -0,0 +1,105 @@
/* ----------------------------------------- */
/* Items List */
/* ----------------------------------------- */
.items-list {
list-style: none;
margin: 7px 0;
padding: 0;
overflow-y: hidden;
.item-header {
font-family: 'Signika', sans-serif;
font-size: 1em;
color: #4b4a44;
background-color: lightgray;
.item-name {
font-family: "Wolfsbane2Expanded", cursive;
font-size: 1.5em;
}
}
.item {
min-height: 30px;
line-height: 24px;
padding: 3px 0 3px 3px;
border-bottom: 1px solid #BBB;
align-items: stretch;
.item-image {
flex: 0 0 30px;
padding: 0;
margin: 0 5px 0 0;
height: 30px;
width: 30px;
min-height: 30px;
min-width: 30px;
img {
padding: 0;
margin: 0;
border: none;
height: 30px;
width: 30px;
min-height: 30px;
min-width: 30px;
}
&.roll-weapon,
&.roll-career {
background-color: transparent;
background-image: url("../../../icons/svg/dice-target.svg") !important;
background-size: 30px 30px;
background-repeat: no-repeat;
background-position: center;
cursor: pointer;
&:hover {
background-color: gray;
img {
visibility: hidden;
}
}
}
}
.item-name,
.item-field {
margin: 0;
}
.item-controls-1 {
flex: 0 0 18px;
}
.item-controls,
.item-controls-2 {
flex: 0 0 36px;
}
.item-controls-3 {
flex: 0 0 54px;
}
.item-control {
color: #4b4a44;
}
}
.item-name-fixed-medium {
min-width: 8rem;
width: 8rem;
}
.item-field-fixed-short {
max-width: 3rem;
min-width: 3rem;
width: 3rem;
}
}
.bougette-dice-img {
color: rgba(150, 44, 44, 0.70);
}

View File

@@ -0,0 +1,61 @@
/* ----------------------------------------- */
/* LOCAL FONTS */
/* ----------------------------------------- */
@font-face {
font-family: 'Contrail One';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/contrailone/v10/eLGbP-j_JA-kG0_Zo51noafdZQ.ttf) format('truetype');
}
@font-face {
font-family: "CCMeanwhile";
src: url('../fonts/ccmeanwhile-regular.ttf');
}
@font-face {
font-family: "Wolfsbane2";
src: url('../fonts/wolfsbane2.ttf');
}
@font-face {
font-family: "Wolfsbane2Condensed";
src: url('../fonts/wolfsbane2cond.ttf');
}
@font-face {
font-family: "Wolfsbane2Expanded";
src: url('../fonts/wolfsbane2expand.ttf');
}
@font-face {
font-family: "IMFellDWPicaSC-Regular";
src: url('../fonts/IMFellDWPicaSC-Regular.ttf');
}
/* ----------------------------------------- */
/* TEXT STYLES */
/* ----------------------------------------- */
a.entity-link,
a.inline-roll {
border: none;
background: transparent;
border-bottom: 1px dotted grey;
padding: 0;
}
a.inline-roll {
border: none;
}
a:hover {
text-shadow: 0 0 5px #a00;
}
.ellipsis {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}