Merge branch 'pr/39' into Develop

This commit is contained in:
Nathanael Phillips 2020-11-06 13:35:18 -07:00
commit 105ebc16b7
72 changed files with 12515 additions and 1599 deletions

BIN
fonts/Aurebesh.ttf Normal file

Binary file not shown.

BIN
fonts/OpenSans-Bold.ttf Normal file

Binary file not shown.

Binary file not shown.

BIN
fonts/OpenSans-Italic.ttf Normal file

Binary file not shown.

View file

@ -5,13 +5,28 @@ const less = require('gulp-less');
/* Compile LESS
/* ----------------------------------------- */
const SW5E_LESS = ["less/*.less"];
const SW5E_LESS = ["less/**/*.less"];
function compileLESS() {
return gulp.src("less/sw5e.less")
return gulp.src("less/original/sw5e.less")
.pipe(less())
.pipe(gulp.dest("./"))
}
const css = gulp.series(compileLESS);
function compileGlobalLess() {
return gulp.src("less/update/sw5e-global.less")
.pipe(less())
.pipe(gulp.dest("./"))
}
function compileLightLess() {
return gulp.src("less/update/sw5e-light.less")
.pipe(less())
.pipe(gulp.dest("./"))
}
function compileDarkLess() {
return gulp.src("less/update/sw5e-dark.less")
.pipe(less())
.pipe(gulp.dest("./"))
}
const css = gulp.series(compileLESS, compileGlobalLess, compileLightLess, compileDarkLess);
/* ----------------------------------------- */
/* Watch Updates

View file

@ -583,6 +583,7 @@
"SW5E.RollSituationalBonus": "Situational Bonus?",
"SW5E.Save": "Save",
"SW5E.SheetClassCharacter": "Default Character Sheet",
"SW5E.SheetClassCharacterOld": "Old Character Sheet",
"SW5E.SheetClassNPC": "Default NPC Sheet",
"SW5E.SheetClassVehicle": "Default Vehicle Sheet",
"SW5E.SheetClassItem": "Default Item Sheet",
@ -858,5 +859,9 @@
"SETTINGS.5eRestN": "Rest Variant",
"SETTINGS.5eRestPHB": "Player's Handbook (LR: 8 hours, SR: 1 hour)",
"SETTINGS.5eRestGritty": "Gritty Realism (LR: 7 days, SR: 8 hours)",
"SETTINGS.5eRestEpic": "Epic Heroism (LR: 1 hour, SR: 1 min)"
"SETTINGS.5eRestEpic": "Epic Heroism (LR: 1 hour, SR: 1 min)",
"SETTINGS.SWColorL": "Set the color theme of the game",
"SETTINGS.SWColorN": "Display Theme",
"SETTINGS.SWColorLight": "Light Theme",
"SETTINGS.SWColorDark": "Dark Theme"
}

View file

@ -0,0 +1,146 @@
//override Primary Red
@colorRed: #E81111;
@colorDarkBg: #2b2b2b;
//Background
@primaryBackground: linear-gradient(90deg,#626262 0,#4d4d4d 30%,#4d4d4d 70%,#626262);
//Typography
@headingColor: @colorRed;
@headerBorderColor: @colorBlue;
@bodyFontColor: white;
@linkColor: @colorRed;
@linkSecondaryColor: @colorPaleGray;
@blockquoteBackground: @colorPaleRed;
@blockquoteBorder: @colorRed;
@blockquoteShadow: 0 0 20px rgba(@colorRed, 0.8);
//forms
@inputBackgroundColor: @colorDarkGray;
@inputBorderNormal: @colorLightGray;
@inputBorderHover: @colorGray;
@inputBorderFocus: @colorRed;
@inputTextColor: white;
@buttonBackground: @colorRed;
@buttonTextColor: white;
@buttonHoverBackground: lighten(@colorRed, 5);
@buttonSecondaryBackground: @colorLightGray;
@buttonSecondaryTextColor: white;
@buttonSecondaryHoverBackground: lighten(@colorLightGray, 5);
//other bits
@hrColor: @colorBlue;
@tableTextColor: white;
@tableHeaderTextColor: @colorPaleGray;
@tableBackground: @colorGray;
@tableRowHoverBackground: lighten(@colorLightGray, 10);
@tableRowBorderColor: @colorLightGray;
//universalColors
@windowHeaderBackground: @colorDarkBg;
@windowHeaderLinkColor: @colorRed;
//Sidebar
@sidebarTabBackground: @windowHeaderBackground;
@sidebarTabLinkColor: @windowHeaderLinkColor;
@sidebarTabLinkUnderline: @colorRed;
@chatBackground: @colorDarkGray;
@chatHeaderColor: @colorRed;
@chatHeaderBottomBorderColor: @colorBlue;
@chatNotificationColor: @colorBlue;
@cardButtonBorder: @colorLightGray;
@cardFooterBorder: @colorLightBlue;
@cardFooterSeparator: @colorPaleGray;
@diceFormulaBackground: @colorGray;
@diceFormualColor: white;
@diceTotalBackground: @colorPaleRed;
@diceTotalBorder: @colorRed;
@diceTotalShadow: @colorRed;
@diceSuccessColor: @colorGreen;
@diceFailureColor: @colorRed;
@diceCriticalBackground: @colorPaleGreen;
@diceCriticalColor: @colorGreen;
@diceFumbleBackground: @colorPaleRed;
@diceFumbleColor: @colorRed;
@altRowBackground: @colorGray;
@combatRoundColor: @colorRed;
@combatRoundBorder: @colorBlue;
@combatCombatantControlColor: @colorPaleGray;
@combatCombatantControlColorActive: @colorRed;
@combatActiveCombatantColor: @colorBlue;
@combatTokenResourceColor: white;
@combatTokenResouceBorder: @colorLightGray;
@combatControlsBorder: @colorBlue;
@folderSearchIconColor: @colorBlue;
@folderSubdirectoryBackground: @colorDarkBg;
@folderSubdirectoryBorder: @colorLightGray;
@directoryListItemBorder: @colorBlue;
@folderHeaderBackground: @colorDarkBg;
@folderHeaderColor: white;
@folderIconColor: @colorBlue;
@entityBackgroundColor: @colorDarkBg;
@entityNameColor: @colorBlack;
@sceneBorderColor: @colorBlue;
@sceneBackgroundColor: @colorDarkBg;
@playlistBackgroundColor: @colorDarkBg;
@playlistHeaderBorder: @colorBlue;
@playlistSoundColor: @colorBlack;
@compendiumEntityBackground: @colorDarkBg;
@compendiumStatusIcon: @colorLightGray;
@foundryNavBgColor: rgba(@colorLightBlue, 0.4);
@foundryNavTextColor: white;
@foundryNavBorderColor: @colorBlue;
@foundryNavBgColorGM: @colorBlue;
@foundryNavBorderColorGM: @colorPaleBlue;
@foundryNavSceneLinkColor: white;
@foundryNavActiveBgColor: rgba(@colorRed, 0.6);
@foundryNavActiveBorderColor: lighten(@colorRed, 20);
@foundryNavActiveGlow: darken(@colorRed, 20);
@foundryNavContextShadow: darken(@colorBlue, 20);
@foundryNavContextBorderColor: @colorBlue;
@foundryPlayersArrowColor: @colorLightGray;
@actorPanelBgColor: white;
@actorNameColor: @colorRed;
@actorXPBarBorder: @colorGray;
@actorXPBarBackground: @colorPaleBlue;
@actorXPBarColor: @colorBlue;
@actorProficiencyTextColor: @colorGray;
@actorAttributeInputColor: @colorGray;
@actorSeparatorColor: @colorLightGray;
@actorAttributeButtonBorder: @colorPaleGray;
@actorAttributeButtonBorderHover: @colorRed;
@actorNavigationTabsColor: @colorGray;
@actorNavigationTabsActiveColor: @colorRed;
@actorNavigationTabsHoverBgColor: rgba(@colorGray, 0.1);
@actorNavigationTabsActiveHoverBgColor: rgba(@colorRed, 0.1);
@actorFilterBorderColor: @colorLightGray;
@actorFilterHoverColor: @colorRed;
@actorFilterActiveColor: @colorRed;
@actorGroupListHeaderBgColor: lighten(@colorPaleGray, 10);
@actorGroupListTitleBorderColor: @colorBlue;
@actorGroupListColumnBorderColor: @colorPaleGray;
@actorGroupListAltRowColor: lighten(@colorPaleGray, 10);
@actorItemRollableD20Color: @colorGray;
@actorItemRollableD20HoverColor: @colorRed;
@actorItemControlToggleColor: @colorLightGray;
@actorAbilityScoreColor: @colorGray;
@actorAbilityBorderColor: @colorPaleGray;
@actorSkillsAltRowColor: lighten(@colorPaleGray, 10);
@actorEncumbranceLabelBackground: @colorPaleGray;
@actorEncumbranceTextColor: @colorBlack;
@actorEncumbranceBorderColor: @colorBlack;
@actorEncumbranceBarBgColor: @colorPaleBlue;
@actorEncumbranceBarColor: @colorBlue;

View file

@ -0,0 +1,143 @@
//Background
@primaryBackground: linear-gradient(90deg,#afc6d6 0,#d6d6d6 30%,#d6d6d6 70%,#afc6d6);// linear-gradient(90deg, @colorPaleBlue 0%, @colorPaleGray 30%, @colorPaleGray 70%, @colorPaleBlue);
//Typography
@headingColor: @colorRed;
@headerBorderColor: @colorBlue;
@bodyFontColor: @colorBlack;
@linkColor: @colorRed;
@linkSecondaryColor: @colorGray;
@blockquoteBackground: @colorPaleBlue;
@blockquoteBorder: @colorBlue;
@blockquoteShadow: 0 0 20px rgba(@colorBlue, 0.8);
//forms
@inputBackgroundColor: white;
@inputBorderNormal: @colorLightGray;
@inputBorderHover: @colorGray;
@inputBorderFocus: @colorRed;
@inputTextColor: @colorBlack;
@buttonBackground: @colorRed;
@buttonTextColor: white;
@buttonHoverBackground: lighten(@colorRed, 5);
@buttonSecondaryBackground: @colorPaleGray;
@buttonSecondaryTextColor: @colorBlack;
@buttonSecondaryHoverBackground: lighten(@colorPaleGray, 5);
//other bits
@hrColor: @colorBlue;
@tableTextColor: @colorBlack;
@tableHeaderTextColor: @colorLightGray;
@tableBackground: white;
@tableRowHoverBackground: lighten(@colorPaleGray, 10);
@tableRowBorderColor: @colorPaleGray;
//universalColors
@windowHeaderBackground: white;
@windowHeaderLinkColor: @colorRed;
//Sidebar
@sidebarTabBackground: @windowHeaderBackground;
@sidebarTabLinkColor: @windowHeaderLinkColor;
@sidebarTabLinkUnderline: @colorRed;
@chatBackground: white;
@chatHeaderColor: @colorRed;
@chatHeaderBottomBorderColor: @colorBlue;
@chatNotificationColor: @colorBlue;
@cardButtonBorder: @colorLightGray;
@cardFooterBorder: @colorLightBlue;
@cardFooterSeparator: @colorPaleGray;
@diceFormulaBackground: @colorPaleGray;
@diceFormualColor: @colorBlack;
@diceTotalBackground: @colorPaleBlue;
@diceTotalBorder: @colorBlue;
@diceTotalShadow: @colorBlue;
@diceSuccessColor: @colorGreen;
@diceFailureColor: @colorRed;
@diceCriticalBackground: @colorPaleGreen;
@diceCriticalColor: @colorGreen;
@diceFumbleBackground: @colorPaleRed;
@diceFumbleColor: @colorRed;
@altRowBackground: @colorPaleBlue;
@combatRoundColor: @colorRed;
@combatRoundBorder: @colorBlue;
@combatCombatantControlColor: @colorLightGray;
@combatCombatantControlColorActive: @colorDarkGray;
@combatActiveCombatantColor: @colorBlue;
@combatTokenResourceColor: @colorGray;
@combatTokenResouceBorder: @colorLightGray;
@combatControlsBorder: @colorBlue;
@folderSearchIconColor: @colorBlue;
@folderSubdirectoryBackground: white;
@folderSubdirectoryBorder: @colorBlack;
@directoryListItemBorder: @colorBlue;
@folderHeaderBackground: white;
@folderHeaderColor: @colorBlack;
@folderIconColor: @colorBlue;
@entityBackgroundColor: white;
@entityNameColor: @colorBlack;
@sceneBorderColor: @colorBlue;
@sceneBackgroundColor: white;
@playlistBackgroundColor: white;
@playlistHeaderBorder: @colorBlue;
@playlistSoundColor: @colorBlack;
@compendiumEntityBackground: white;
@compendiumStatusIcon: @colorLightGray;
@foundryNavBgColor: rgba(@colorLightBlue, 0.4);
@foundryNavTextColor: white;
@foundryNavBorderColor: @colorBlue;
@foundryNavBgColorGM: @colorBlue;
@foundryNavBorderColorGM: @colorPaleBlue;
@foundryNavSceneLinkColor: white;
@foundryNavActiveBgColor: rgba(@colorRed, 0.6);
@foundryNavActiveBorderColor: lighten(@colorRed, 20);
@foundryNavActiveGlow: darken(@colorRed, 20);
@foundryNavContextShadow: darken(@colorBlue, 20);
@foundryNavContextBorderColor: @colorBlue;
@foundryPlayersArrowColor: @colorLightGray;
@actorPanelBgColor: white;
@actorNameColor: @colorRed;
@actorXPBarBorder: @colorGray;
@actorXPBarBackground: @colorPaleBlue;
@actorXPBarColor: @colorBlue;
@actorProficiencyTextColor: @colorGray;
@actorAttributeInputColor: @colorGray;
@actorSeparatorColor: @colorLightGray;
@actorAttributeButtonBorder: @colorPaleGray;
@actorAttributeButtonBorderHover: @colorRed;
@actorNavigationTabsColor: @colorGray;
@actorNavigationTabsActiveColor: @colorRed;
@actorNavigationTabsHoverBgColor: rgba(@colorGray, 0.1);
@actorNavigationTabsActiveHoverBgColor: rgba(@colorRed, 0.1);
@actorFilterBorderColor: @colorLightGray;
@actorFilterHoverColor: @colorRed;
@actorFilterActiveColor: @colorRed;
@actorGroupListHeaderBgColor: lighten(@colorPaleGray, 10);
@actorGroupListTitleBorderColor: @colorBlue;
@actorGroupListColumnBorderColor: @colorPaleGray;
@actorGroupListAltRowColor: lighten(@colorPaleGray, 10);
@actorItemRollableD20Color: @colorGray;
@actorItemRollableD20HoverColor: @colorRed;
@actorItemControlToggleColor: @colorLightGray;
@actorAbilityScoreColor: @colorGray;
@actorAbilityBorderColor: @colorPaleGray;
@actorSkillsAltRowColor: lighten(@colorPaleGray, 10);
@actorEncumbranceLabelBackground: @colorPaleGray;
@actorEncumbranceTextColor: @colorBlack;
@actorEncumbranceBorderColor: @colorBlack;
@actorEncumbranceBarBgColor: @colorPaleBlue;
@actorEncumbranceBarColor: @colorBlue;

View file

@ -0,0 +1,67 @@
/* ----------------------------------------- */
/* Fonts */
/* ----------------------------------------- */
.russoOne(@size: 20px) {
font-family: 'Russo One';
font-size: @size;
font-weight: 400;
letter-spacing: 0.5px;
}
.openSans(@size: 13px, @weight: 400) {
font-family: 'Open Sans';
font-size: @size;
font-weight: @weight;
}
.fontAwesome() {
font-family: "Font Awesome 5 Free";
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
font-weight: 900;
}
/* ----------------------------------------- */
/* Sheet Styles */
/* ----------------------------------------- */
@colorDark: #191813;
@colorFaint: #c9c7b8;
@colorBeige: #b5b3a4;
@colorTan: #7a7971;
@colorOlive: #4b4a44;
@colorCrimson: #44191A;
@borderGroove: 2px groove #eeede0;
//@sheetBackground: url("ui/parchment.jpg") repeat;
//SW5e Colors
@colorBlack: #1C1C1C;
@colorDarkGray: #363636;
@colorGray: #4f4f4f;
@colorLightGray: #828282;
@colorPaleGray: #D6D6D6;
@colorRed: #c40f0f;
@colorPaleRed: #FBF4F4;
@colorLightRed: #F6E1E1;
@colorBlue: #0d99cc;
@colorLightBlue: #7ed6f7;
@colorPaleBlue: #afc6d6;
@colorGreen: #0dce0d;
@colorPaleGreen: #bcdcbe;
@sheetBackground: linear-gradient(90deg, @colorPaleBlue 0%, @colorPaleGray 30%, @colorPaleGray 70%, @colorPaleBlue);
.dropShadow1(){
box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2);
}
.dropShadow2() {
box-shadow: 0 4px 5px 0 rgba(0,0,0,0.14), 0 1px 10px 0 rgba(0,0,0,0.12), 0 2px 4px -1px rgba(0,0,0,0.3);
}
.dropShadow3() {
box-shadow: 0 8px 17px 2px rgba(0,0,0,0.14), 0 3px 14px 2px rgba(0,0,0,0.12), 0 5px 5px -3px rgba(0,0,0,0.2);
}

View file

@ -0,0 +1,988 @@
.panel {
padding: 8px;
border-radius: 4px;
.dropShadow1();
}
.sw5e.sheet.actor.character {
min-width: 780px;
min-height: 720px;
}
.sw5e.sheet .window-content {
.openSans(12px);
input,
select {
height: 24px;
line-height: 20px;
padding: 1px 4px;
&:hover {
box-shadow: none;
}
&:focus {
box-shadow: none;
}
}
button {
cursor: pointer;
&:hover,
&:focus {
box-shadow: none;
}
}
}
.sw5e.sheet.actor {
.swalt-sheet {
display: grid;
grid-template-rows: 182px 40px auto;
section>h1 {
.russoOne(17px);
text-align: left;
margin-bottom: 4px;
}
header {
display: grid;
grid-template-rows: 1fr 26px auto;
grid-template-columns: 128px 1fr;
column-gap: 8px;
row-gap: 8px;
img {
grid-column-start: 1;
grid-row-start: 1;
grid-row-end: 4;
}
h1.character-name {
grid-row: 1;
grid-column: 2;
margin: 0;
border: none;
align-self: center;
height: auto;
.russoOne(32px);
text-transform: uppercase;
height: auto;
input[type="text"] {
.russoOne(32px);
text-transform: uppercase;
height: auto;
&:focus {
text-transform: none;
}
}
}
.level-experience {
grid-row: 1;
grid-column: 3;
.charlevel {
.russoOne(17px);
text-align: right;
}
.experience {
.russoOne(17px);
text-align: right;
line-height: 26px;
input {
display: inline-block;
width: 120px;
text-align: right;
}
}
.xpbar {
height: 8px;
.bar {
display: block;
height: 100%;
}
}
}
.summary {
grid-column-start: 2;
grid-row-start: 2;
grid-column-end: 4;
display: grid;
grid-template-rows: 1fr;
grid-template-columns: repeat(4, 1fr);
input,
.proficiency {
display: inline;
height: auto;
.russoOne(17px);
line-height: 24px;
}
.proficiency {
line-height: 26px;
}
}
.attributes {
grid-column-start: 2;
grid-row-start: 3;
grid-column-end: 4;
display: grid;
grid-template-columns: repeat(5, 1fr);
column-gap: 12px;
h1 {
text-align: center;
}
.attribute-value,
.attribute-value input {
.russoOne(22px);
text-align: center;
line-height: 1;
}
.attribute-value {
&.multiple {
display: grid;
grid-template-columns: auto 14px auto;
input {
width: 100%;
}
}
input {
display: inline-block;
}
.value-number {
display: inline-block;
text-align: right;
padding: 0px 3px;
&:last-child {
text-align: left;
}
}
span.value-number {
padding: 1px 4px;
}
.initiative {
padding: 1px 4px;
display: block;
}
}
footer {
button {
background: none;
padding: 1px 3px;
font-size: inherit;
line-height: inherit;
display: inline-block;
width: auto;
&:hover {
font-weight: 400;
}
}
&.hit-points,
&.hit-dice,
&.initiative {
display: grid;
grid-template-columns: 1fr 1fr;
column-gap: 8px;
margin-top: 0;
input,
button {
//border: 1px solid @colorPaleGray;
width: 100%;
text-align: center;
}
button {
font-weight: 400;
margin-top: 2px;
}
span {
display: block;
padding: 3px 4px;
}
}
&.speed {
margin-top: 0;
input {
text-align: center;
}
}
}
}
}
nav.sheet-navigation {
display: grid;
grid-template-columns: repeat(6, 1fr);
column-gap: 16px;
margin: 4px 0;
.item {
background: none;
border: none;
border-bottom: 3px solid transparent;
border-radius: 0;
margin: 0;
padding: 0 0 8px;
line-height: 1.6;
.russoOne(16px);
}
}
.editor {
position: static;
min-height: 32px;
padding: 0;
.editor-edit {
display: block;
font-size: 12px;
background: none;
border: none;
padding: 0;
box-shadow: none;
top: 0;
right: 0;
&:hover {
text-shadow: none;
}
}
.tox.tox-tinymce {
height: 250px !important;
}
}
.tab {
display: none;
&.active {
display: block;
}
.filter-list {
list-style: none;
margin: 0;
padding: 0 0 8px;
display: flex;
flex-direction: row;
justify-content: flex-end;
max-width: 100%;
.filter-title {
display: none;
font-weight: bold;
width: 50px;
}
.filter-item {
width: 100px;
text-align: center;
&+.filter-item {
margin-left: 12px;
}
&:hover {
text-shadow: none;
}
}
}
.group-list-header {
display: grid;
padding-right: 6px;
}
.group-list-title {
h3 {
.russoOne(17px);
margin: 4px 0 0;
padding: 0 4px;
display: inline;
border: none;
}
.item-create {
font-size: 12px;
i {
font-size: 10px;
}
&:hover {
text-shadow: none;
}
}
}
.group-list-header,
.group-list {
.item-detail {
text-align: left;
padding: 4px;
}
}
.group-list {
height: 100%;
overflow-y: scroll;
& > li:first-child {
padding-top: 8px;
}
}
.group-list,
.group-list ol {
list-style: none;
margin: 0 0 8px;
padding: 0;
.item-uses {
input {
display: inline-block;
width: 32px;
margin-right: 0;
text-align: right;
}
span {
padding-left: 8px;
}
.slot-max-override {
margin-left: 5px;
&:hover {
text-shadow: none;
}
}
}
li.item {
display: grid;
h4 {
.openSans(13px, 700);
letter-spacing: 0;
}
.item-name,
.item-detail {
padding: 4px;
line-height: 30px;
}
.item-name {
display: flex;
.item-image {
width: 30px;
height: 30px;
position: relative;
background-size: contain;
&::before {
font-family: "Font Awesome 5 Free";
font-weight: 900;
content: '\f6cf';
opacity: 0;
position: absolute;
top: 0;
left: 2px;
font-size: 26px;
}
}
h4 {
line-height: 30px;
display: inline-block;
height: 30px;
padding-left: 8px;
margin: 0;
}
&.rollable:hover {
text-shadow: none;
.item-image {
background-image: none !important;
&::before {
opacity: 1;
}
&:hover {
background-image: none !important;
&::before {
opacity: 1;
}
}
}
}
}
.item-summary {
grid-column-start: 1;
grid-column-end: -1;
padding: 4px 4px 4px 38px;
}
.item-controls {
display: flex;
flex-direction: row;
justify-content: space-evenly;
}
.item-control {
&:hover {
text-shadow: none;
}
}
}
}
.group-grid-inventory {
grid-template-columns: auto 60px 100px 100px 100px;
&.group-list-title {
.item-controls {
grid-column-start: 5;
}
}
}
.group-grid-features {
grid-template-columns: auto 100px 100px 100px;
&.group-list-title {
display: grid;
}
.item-controls {
grid-column-start: 4;
}
}
.group-grid-powers {
grid-template-columns: auto repeat(5, 100px);
&.group-list-title {
display: grid;
align-items: end;
.item-detail {
padding: 0 4px;
}
}
}
.group-grid-fav-items {
grid-template-columns: auto 60px 30px 30px 50px;
&.group-list-title {
display: grid;
align-items: end;
.item-detail {
padding: 0 4px;
}
}
}
}
.tab > .panel {
height: 100%;
overflow: hidden;
display: grid;
}
.tab.attributes {
&.active {
display: grid;
}
grid-template-columns: 350px auto;
grid-template-rows: auto;
column-gap: 16px;
.abilities {
display: grid;
grid-template-columns: 128px auto;
grid-template-rows: auto;
column-gap: 12px;
ol {
list-style: none;
margin: 0;
padding: 0;
}
.scores {
li {
border-radius: 0;
padding: 4px;
&+li {
border-top: 0 !important;
}
&:first-child {
border-radius: 4px 4px 0 0;
}
&:last-child {
border-bottom-width: 1px;
border-radius: 0 0 4px 4px;
}
h2 {
.russoOne(14px);
border: none;
text-align: center;
margin: 0;
&:hover {
text-shadow: none;
}
}
.ability-score {
.russoOne(22px);
text-align: center;
width: 48px;
margin: 0 auto;
height: 24px;
display: block;
}
.ability-modifiers {
margin: 0 -4px -4px;
display: grid;
grid-template-columns: 28px auto 28px;
.ability-mod,
.ability-save {
padding: 2px 4px;
display: block;
font-weight: bold;
font-size: 13px;
text-align: center;
border-style: solid;
}
.ability-mod {
border-width: 1px 1px 0 0;
border-radius: 0 4px 0 0;
}
.ability-save {
border-width: 1px 0 0 1px;
border-radius: 4px 0 0 0;
}
.proficiency-toggle {
border: none;
background: none;
line-height: 1;
}
}
}
}
.skills {
li {
display: grid;
grid-template-columns: 28px auto 18px 28px;
align-items: center;
.proficiency-toggle {
border: none;
background: none;
height: 23px;
line-height: 23px;
padding: 0 4px;
}
.skill-name {
&:hover {
text-shadow: none;
}
}
.skill-ability {
text-transform: capitalize;
}
.skill-mod {
text-align: right;
padding-right: 4px;
}
}
}
}
.traits-resources {
grid-template-rows: 32px auto;
nav {
margin-bottom: 4px;
button {
display: inline-block;
width: auto;
background: none;
border: none;
border-bottom: 3px solid transparent;
border-radius: 0;
margin: 0;
padding: 0 4px;
line-height: 1.6;
.russoOne(14px);
&+button {
margin-left: 8px;
}
}
}
section.traits {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 16px;
row-gap: 8px;
input,
select {
display: block;
width: 100%;
text-align: left;
}
label {
font-size: 13px;
}
.trait-selector {
background: none;
border: none;
display: inline;
width: auto;
&:hover {
text-shadow: none;
}
i.fas {
float: none;
&:hover {
text-shadow: none;
}
}
}
.languages {
grid-column-end: span 2;
label {
&:hover {
cursor: pointer;
}
}
}
.traits-list {
li {
display: inline;
&::after {
content: ',';
}
&:last-child::after {
content: '';
}
}
}
ul.passives {
grid-column-end: span 2;
list-style: none;
padding: 0;
margin: 0;
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 4px;
row-gap: 4px;
strong {
font-size: 13px;
}
}
}
section.resources {
.resource-items {
display: grid;
grid-template-columns: repeat(3, 1fr);
column-gap: 12px;
.resource {
h1 {
border: none;
margin: 0;
input {
font-family: 'Russo One';
font-size: 16px;
font-weight: 400;
text-align: center;
margin-bottom: 4px;
border-radius: 0;
}
}
.attribute-value,
.attribute-value input {
.russoOne(22px);
text-align: center;
line-height: 1;
}
.attribute-value {
display: grid;
grid-template-columns: auto 14px auto;
input {
display: block;
width: 100%;
}
.value-number {
display: block;
width: 100%;
text-align: right;
padding: 0px 3px;
&:last-child {
text-align: left;
}
}
span.value-number {
padding: 1px 4px;
}
}
.attribute-footer {
display: grid;
grid-template-columns: 1fr 1fr;
label {
text-align: center;
}
}
}
}
.counters {
border: none;
margin: 16px 0;
display: grid;
grid-template-columns: repeat(3, 1fr);
.counter {
height: auto;
border: none;
text-align: center;
h4 {
font-size: 13px;
//display: inline;
&.rollable {
&:hover {
text-shadow: none;
}
}
}
.counter-value {
display: inline;
text-align: left;
}
input[type="text"] {
display: inline-block;
width: 10px;
}
input[type="checkbox"] {
display: inline-block;
}
.death-success,
.death-fail {
display: inline-block;
}
.death-success {
margin-right: 8px;
}
}
}
}
}
}
.tab.inventory {
&>.panel {
grid-template-rows: 32px 32px 24px auto;
}
.currency-encumbrance {
display: grid;
grid-template-columns: 200px auto;
margin-bottom: 8px;
align-items: center;
}
.currency {
.russoOne(14px);
input {
display: inline-block;
width: 128px;
.openSans(13px);
}
}
.encumbrance-wrapper {
display: grid;
grid-template-columns: 400px 100px;
width: 500px;
justify-self: end;
.encumbrance-label {
font-size: 12px;
line-height: 14px;
width: 100%;
text-shadow: none;
padding: 0;
margin: 0;
height: auto;
text-align: center;
margin-left: -2px;
border-radius: 0 4px 4px 0;
}
.encumbrance {
position: relative;
border-radius: 4px;
height: 16px;
margin: 0;
width: 100%;
.encumbrance-bar {
position: absolute;
top: 0;
left: 0;
height: 100%;
border-radius: 4px;
border: none;
}
}
}
}
.tab.features {
&>.panel {
grid-template-rows: 24px auto;
}
}
.tab.powerbook {
&>.panel {
grid-template-rows: 32px 24px 24px auto;
}
.powercasting-ability {
display: grid;
grid-template-columns: 2fr 1fr 1fr;
label, h3 {
.russoOne(13px);
border-bottom: none;
}
.power-dc {
grid-column-start: 3;
}
}
}
.tab.biography {
grid-template-columns: 1fr 2fr;
grid-template-rows: 100%;
column-gap: 16px;
padding-bottom: 8px;
max-width: 100%;
&.active {
display: grid;
}
&>.panel {
display: block;
overflow-y: auto;
}
section {
position: relative;
}
}
.tab.notes {
&>.panel {
display: block;
overflow-y: auto;
}
section {
position: relative;
&>input {
.russoOne(16px);
text-align: left;
margin-bottom: 4px;
}
.editor .editor-edit {
top: 3px;
}
}
}
&.limited {
grid-template-rows: 144px auto;
row-gap: 8px;
header {
grid-template-rows: 1fr;
}
.tab.biography {
grid-template-columns: 100%;
}
}
}
}

View file

@ -0,0 +1,397 @@
.panel {
background: @actorPanelBgColor;
}
.sw5e.sheet .window-content {
color: @colorBlack;
background: linear-gradient(90deg,#afc6d6 0,#d6d6d6 30%,#d6d6d6 70%,#afc6d6);
input,
select {
color: @colorBlack;
&:hover {
border-color: @inputBorderHover;
}
&:focus {
border-color: @inputBorderFocus;
}
}
button {
&:hover,
&:focus {
border-color: @inputBorderFocus;
}
}
}
.sw5e.sheet.actor {
color: @colorBlack;
.swalt-sheet {
section>h1 {
border-bottom: 2px solid @colorBlue;
}
header {
h1.character-name {
color: @actorNameColor;
input[type="text"] {
color: @actorNameColor;
}
}
.level-experience {
.xpbar {
border: 1px solid @actorXPBarBorder;
background-color: @actorXPBarBackground;
.bar {
background-color: @actorXPBarColor;
}
}
}
.summary {
input,
.proficiency {
color: @actorProficiencyTextColor;
}
}
.attributes {
.attribute-value,
.attribute-value input {
color: @actorAttributeInputColor;
}
.attribute-value {
.value-separator {
color: @actorSeparatorColor;
}
}
footer {
button {
border: 1px solid @actorAttributeButtonBorder;
&:hover {
color: @actorAttributeButtonBorderHover;
}
}
&.hit-points,
&.hit-dice,
&.initiative {
button {
border: 1px solid @actorAttributeButtonBorder;
color: @colorRed;
&:hover {
border-color: @actorAttributeButtonBorderHover;
}
}
}
}
}
}
nav.sheet-navigation {
.item {
color: @actorNavigationTabsColor;
&.active {
color: @actorNavigationTabsActiveColor;
border-bottom-color: @actorNavigationTabsActiveColor;
&:hover {
background: @actorNavigationTabsHoverBgColor;
}
}
&:hover {
background: @actorNavigationTabsHoverBgColor;
}
}
}
.tab {
.filter-list {
.filter-item {
border-bottom: 2px solid @actorFilterBorderColor;
&:hover {
color: @actorFilterHoverColor;
}
&.active {
color: @actorFilterActiveColor;
border-bottom-color: @actorFilterActiveColor;
}
}
}
.group-list-header {
background: @actorGroupListHeaderBgColor;
}
.group-list-title {
border-bottom: 1px solid @actorGroupListTitleBorderColor;
}
.group-list-header,
.group-list {
.item-detail {
border-left: 1px solid @actorGroupListColumnBorderColor;
}
}
.group-list,
.group-list ol {
li.item {
&:nth-child(even) {
background-color: @actorGroupListAltRowColor;
}
h4 {
color: @colorBlack;
}
.item-name {
.item-image {
&::before {
color: @actorItemRollableD20Color;
}
}
&.rollable:hover {
.item-image {
&:hover {
&::before {
color: @actorItemRollableD20HoverColor;
}
}
}
}
}
.item-control {
&:hover {
color: @linkColor !important;
}
&.item-toggle {
color: @actorItemControlToggleColor;
&.active {
color: @colorBlack;
}
}
}
}
}
}
.tab.attributes {
.abilities {
.scores {
li {
border: 1px solid @actorAbilityBorderColor;
h2 {
&:hover {
color: @linkColor;
}
}
.ability-score {
color: @actorAbilityScoreColor;
}
.ability-modifiers {
.ability-mod,
.ability-save {
border-color: @actorAbilityBorderColor;
}
}
}
}
.skills {
li {
&:nth-child(even) {
background-color: @actorSkillsAltRowColor;
}
.skill-name {
&:hover {
color: @linkColor;
}
}
}
}
}
.traits-resources {
nav {
button {
color: @actorNavigationTabsColor;
&.active {
color: @actorNavigationTabsActiveColor;
border-bottom-color: @actorNavigationTabsActiveColor;
&:hover {
background: @actorNavigationTabsActiveHoverBgColor;
}
}
&:hover {
background: @actorNavigationTabsHoverBgColor;
}
}
}
section.traits {
.trait-selector {
i.fas {
color: @linkColor;
}
}
.languages {
label {
&:hover {
color: @linkColor;
}
}
}
}
section.resources {
.resource-items {
.resource {
h1 {
input {
color: @headingColor;
border-bottom: 2px solid @headerBorderColor;
}
}
.attribute-value,
.attribute-value input {
color: @actorAttributeInputColor;
}
.attribute-value {
.value-separator {
color: @actorSeparatorColor;
}
}
}
}
.counters {
.counter {
h4 {
&.rollable {
&:hover {
color: @linkColor;
}
}
}
.death-success {
i {
color: @colorGreen;
}
}
.death-fail {
i {
color: @colorRed;
}
}
}
}
}
}
}
.tab.inventory {
.currency {
color: @headingColor;
}
.encumbrance-wrapper {
.encumbrance-label {
background: @actorEncumbranceLabelBackground;
color: @actorEncumbranceTextColor;
border: 1px solid @actorEncumbranceBorderColor;
}
.encumbrance {
background: @actorEncumbranceBarBgColor;
.encumbrance-bar {
background: @actorEncumbranceBarColor;
}
}
}
}
.tab.powerbook {
.powercasting-ability {
label,
h3 {
color: @headingColor;
span {
color: @colorBlack;
}
}
}
}
.tab.notes {
section {
&>input {
color: @headingColor;
border-bottom: 2px solid @headerBorderColor;
}
}
}
}
}

View file

@ -0,0 +1,105 @@
input[type="text"], input[type="number"], input[type="password"], input[type="date"], input[type="time"], select, textarea {
border-radius: 4px;
transition: all 0.3s;
&:hover {
box-shadow: none;
}
&:focus {
box-shadow: none;
}
}
input[type=range] {
-webkit-appearance: none; /* Hides the slider so that custom slider can be made */
width: 100%; /* Specific width is required for Firefox. */
background: transparent; /* Otherwise white in Chrome */
}
input[type=range]::-webkit-slider-thumb{
-webkit-appearance: none;
background: @colorRed;
width: 12px;
height: 12px;
border-radius: 32px;
cursor: pointer;
box-shadow: none;
}
input[type=range]::-moz-range-thumb{
-webkit-appearance: none;
background: @colorRed;
width: 12px;
height: 12px;
border-radius: 32px;
cursor: pointer;
box-shadow: none;
}
input[type=range]::-ms-thumb {
-webkit-appearance: none;
background: @colorRed;
width: 12px;
height: 12px;
border-radius: 32px;
cursor: pointer;
box-shadow: none;
}
input[type=range]::-webkit-slider-runnable-track {
width: 100%;
height: 6px;
cursor: pointer;
background: @colorLightBlue;
border-radius: 4px;
border: 1px solid @colorBlue;
box-shadow: none;
}
input[type=range]:focus::-webkit-slider-runnable-track {
background: @colorBlue;
}
input[type=range]::-moz-range-track {
width: 100%;
height: 6px;
cursor: pointer;
background: @colorLightBlue;
border-radius: 4px;
border: 1px solid @colorBlue;
box-shadow: none;
}
input[type=range]::-ms-track {
width: 100%;
height: 6px;
cursor: pointer;
background: @colorLightBlue;
border-radius: 4px;
border: 1px solid @colorBlue;
box-shadow: none;
}
input[type=range]:focus {
outline: none; /* Removes the blue border. You should probably do some kind of focus styling for accessibility reasons though. */
}
input[type=range]::-ms-track {
width: 100%;
cursor: pointer;
/* Hides the slider so custom styles can be added */
background: transparent;
border-color: transparent;
color: transparent;
}
button, input[type="button"], input[type="submit"], input[type="reset"] {
.openSans(13px, 700);
text-align: center;
border: none;
border-radius: 4px;
cursor: pointer;
transition: all 0.3s;
&:hover, &:focus {
box-shadow: none;
}
&:disabled {
opacity: 0.6;
cursor: default;
}
}

View file

@ -0,0 +1,53 @@
input[type="text"], input[type="number"], input[type="password"], input[type="date"], input[type="time"], select, textarea {
border: 1px solid @inputBorderNormal;
color: @inputTextColor;
&:hover {
border-color: @inputBorderHover;
}
&:focus {
border-color: @inputBorderFocus;
}
&::placeholder {
color: @inputTextColor;
opacity: 0.5;
}
::-ms-input-placeholder { /* Microsoft Edge */
color: @inputTextColor;
opacity: 0.5;
}
}
button, input[type="button"], input[type="submit"], input[type="reset"] {
background: @buttonBackground;
color: @buttonTextColor;
&:hover, &:focus {
background: @buttonHoverBackground;
}
&:disabled {
&:hover, &:focus {
background: @buttonBackground;
}
}
}
input[type="reset"], button.secondary, button[type="reset"], input[type="button"].secondary, input[type="submit"].secondary {
background: @buttonSecondaryBackground;
color: @buttonSecondaryTextColor;
&:hover {
background: @buttonSecondaryHoverBackground;
}
&:disabled {
&:hover, &:focus {
background: @buttonSecondaryBackground;
}
}
}
form {
button {
border: none;
}
.notes, .hint {
color: rgba(@bodyFontColor, 0.8);
}
}

View file

@ -0,0 +1,49 @@
.window-app {
border-radius: 4px;
border: none;
.dropShadow2();
& > header {
background: @windowHeaderBackground;
border-radius: 4px 4px 0 0;
border: none;
.dropShadow1();
margin-bottom: 4px;
}
.window-content {
background: @primaryBackground;
color: @bodyFontColor;
footer {
margin-top: 8px;
}
}
&.minimized {
& > header, & > .window-header {
border: none;
border-radius: 4px;
margin: 0;
}
}
}
#client-settings {
nav.tabs {
border: none;
font-size: 17px;
line-height: 1.6;
a.item {
border-bottom: 3px solid transparent;
color: @bodyFontColor;
&:hover {
text-decoration: none;
}
&.active {
text-shadow: none;
border-bottom-color: @sidebarTabLinkUnderline;
}
}
}
section.content {
border: none;
margin-top: 4px;
}
}

View file

@ -0,0 +1,84 @@
#navigation {
#nav-toggle {
background: @foundryNavBgColor;
color: @foundryNavTextColor;
transform: rotate(-90deg);
}
.nav-item {
border: 1px solid @foundryNavBorderColor;
}
#scene-list {
.scene {
border: 1px solid @foundryNavBorderColor;
background: rgba(@foundryNavBgColor, 0.4);
a {
color: @foundryNavSceneLinkColor;
}
&.gm {
border: 1px solid @foundryNavBorderColorGM;
background: rgba(@foundryNavBgColorGM, 0.4);
}
&.view, &.context {
box-shadow: 0 0 8px @foundryNavContextShadow;
border-color: @foundryNavContextBorderColor;
}
&.active {
border-color: @foundryNavActiveBorderColor;
background: @foundryNavActiveBgColor;
box-shadow: 0 0 8px @foundryNavActiveGlow;
}
}
}
}
#controls {
.scene-control, .control-tool {
background: @foundryNavBgColor;
color: @foundryNavTextColor;
border: 1px solid @foundryNavBorderColor;
box-shadow: none;
&:hover {
background: @foundryNavBgColor;
box-shadow: 0 0 8px @foundryNavContextShadow;
}
&.active {
border-color: @foundryNavActiveBorderColor;
background: @foundryNavActiveBgColor;
box-shadow: 0 0 8px @foundryNavActiveGlow;
}
}
}
#players {
border: none;
border-radius: 4px;
h3 {
background: @sidebarTabBackground;
border: none;
margin: 0;
padding: 0 8px;
font-size: 17px;
line-height: 30px;
.dropShadow1();
border-radius: 4px 4px 0 0;
.players-mode {
color: @foundryPlayersArrowColor;
}
}
ol {
margin: 4px 0;
.player-name.self {
color: inherit;
font-weight: 700;
}
.player {
color: @bodyFontColor;
}
.player-active {
margin-top: 7px;
&.active {
box-shadow: none;
}
}
}
}

View file

@ -0,0 +1,381 @@
#sidebar {
border: none; //1px solid @colorBlue;
&.collapsed {
#sidebar-tabs {
min-height: 370px;
justify-content: center;
& > .item.active {
border: none;
}
}
}
}
#sidebar-tabs {
border: none;
box-shadow: none;
justify-content: space-between;
.dropShadow1();
.item {
font-size: 16px;
}
.item.active {
border: none;
box-shadow: none;
background: none;
text-shadow: none;
}
}
/*-----------
** Chat Tab
-----------*/
#chat-log {
.chat-message {
border: none;
border-radius: 4px;
margin-bottom: 8px;
.dropShadow1();
& > header {
color: @colorRed;
border-bottom: 2px solid @colorBlue;
margin-bottom: 4px;
span {
color: @colorBlack;
}
}
}
}
.notification-pip {
color: @colorBlue;
}
.sw5e.chat-card {
.card-header {
padding: 0;
border: none;
img {
flex: 0 0 36px;
margin-right: 4px;
}
h3 {
flex: 1;
margin: 0;
line-height: 36px;
.russoOne(17px);
border-bottom: none;
&:hover {
text-shadow: none;
}
}
}
.card-content {
margin: 4px 0;
h3 {
font-size: 12px;
margin: 0;
font-weight: bold;
}
> * {
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
}
}
.card-buttons {
margin: 4px 0;
span {
display: block;
line-height: 28px;
text-align: center;
}
button {
.openSans(13px, 700);
padding: 4px 0;
height: auto;
line-height: 1.6;
margin: 4px 0;
border: none;
border-radius: 4px;
&:hover, &:focus {
box-shadow: none;
}
}
}
.card-footer {
padding: 4px 0 0;
span {
padding: 0 4px 0 0;
font-size: 10px;
&:last-child {
border-right: none;
padding-right: 0;
}
}
}
}
.dice-roll {
.dice-formula {
border: none;
box-shadow: none;
border-radius: 4px;
}
.dice-total {
border-radius: 0;
padding: 4px 0;
}
}
#chat-controls {
padding-top: 4px;
}
#chat-form textarea {
&:focus {
box-shadow: none;
outline: none;
}
}
/*-----------
** Combat Tab
-----------*/
#combat {
h3 {
border: none;
}
#combat-tracker {
li.combatant {
padding: 4px 0;
background: none;
.token-name {
text-shadow: none;
}
h4 {
color: @colorBlack;
}
.roll {
background: none;
&::before {
content: "\f6cf";
.fontAwesome();
font-size: 28px;
}
}
.initiative {
text-shadow: none;
}
&.hidden {
opacity: 0.5;
}
}
}
#combat-controls {
padding-top: 0;
}
}
/*
** Folders
*/
.sidebar-tab {
.directory-header {
margin-bottom: 4px;
.header-search {
position: relative;
i.fa-search {
position: absolute;
left: 8px;
}
input {
text-align: left;
padding-left: 22px;
&:focus {
box-shadow: none;
}
}
}
}
.subdirectory {
border: none;
margin-left: 8px;
min-height: 8px;
}
.directory-list {
padding-bottom: 4px;
.folder {
& > .folder-header {
line-height: default;
padding: 0 0 0 8px;
position: relative;
border: none;
h3 {
padding: 8px 4px;
.openSans(13px, 700);
line-height: 1.6;
& > i {
margin-right: 4px;
}
}
a {
position: absolute;
top: 0;
right: 4px;
height: 100%;
padding: 0 4px;
i {
margin-top: 12px;
}
&.create-folder {
right: 28px;
}
}
}
}
.directory-item img {
flex: 0 0 32px;
height: 32px;
width: 32px;
align-self: center;
}
.actor, .item, .journal, .table {
border: none;
.entity-name {
.openSans(13px, 700);
}
}
}
}
#scenes {
.subdirectory {
border-left: none;
}
.scene {
border: none;
box-shadow: none;
position: relative;
height: 128px;
& + .scene {
margin-top: 4px;
}
&::after {
content: '';
display: block;
width: 100%;
height: 99px;
position: absolute;
top: 28px;
left: 0;
}
h3 {
.openSans(13px, 700);
text-align: left;
text-shadow: none;
padding: 4px 4px 4px 12px;
line-height: 1.6;
position: absolute;
top: 0;
left: 0;
width: 100%;
}
}
}
#playlists {
.directory-list {
padding: 0 8px;
li.playlist {
padding: 8px;
border-radius: 4px;
margin-bottom: 8px;
border-top: inherit;
.dropShadow1();
.playlist-header {
text-decoration: none;
}
li.sound {
border: none;
h4 {
.openSans(13px, 400);
}
}
}
}
}
#compendium {
.compendium-entity {
margin: 0 4px;
padding: 8px;
.dropShadow1();
border-radius: 4px;
border: none;
&+ .compendium-entity {
margin-top: 4px;
}
h3 {
background: none;
border: none;
.russoOne(17px);
padding: 0;
margin-bottom: 4px;
}
ol.compendium-list {
li.compendium-pack {
margin: 0;
padding: 4px;
border: none;
.pack-title {
margin: 0;
position: relative;
a {
.openSans(13px, 700);
i {
display: none;
}
}
.status-icons {
top: 4px;
font-size: 13px;
}
}
}
}
}
}
#settings {
h2 {
border: none;
margin: 0 8px;
padding: 0;
background: none;
}
#game-details, #settings-game, #settings-documentation, #settings-access {
padding: 0 8px;
margin: 0 0 8px;
}
}

View file

@ -0,0 +1,295 @@
#sidebar-tabs {
background: @sidebarTabBackground;
& > .collapse {
color: @sidebarTabLinkColor;
}
.item.active {
color: @sidebarTabLinkColor;
border-bottom: 3px solid @sidebarTabLinkUnderline;
}
}
/*-----------
** Chat Tab
-----------*/
#chat-log {
.chat-message {
background: @chatBackground;
color: @bodyFontColor;
& > header {
color: @chatHeaderColor;
border-bottom: 2px solid @chatHeaderBottomBorderColor;
span {
color: @bodyFontColor;
}
}
}
}
.notification-pip {
color: @chatNotificationColor;
}
.sw5e.chat-card {
.card-header {
h3 {
color: @bodyFontColor;
&:hover {
color: @bodyFontColor;
}
}
}
.card-buttons {
span {
border: 1px solid @cardButtonBorder;
}
}
.card-footer {
border-top: 1px solid @cardFooterBorder;
span {
border-right: 1px solid @cardFooterSeparator;
&:last-child {
border-right: none;
}
}
}
}
.dice-roll {
.dice-formula {
background: @diceFormulaBackground;
color: @diceFormualColor;
box-shadow: none;
border-radius: 4px;
}
.dice-total {
background: @diceTotalBackground;
border: 1px solid @diceTotalBorder;
box-shadow: 0 0 12px rgba(@diceTotalShadow,.8);
&.success {
color: @diceSuccessColor;
}
&.failure {
color: @diceFailureColor;
}
&.critical {
color: @diceCriticalColor;
background: @diceCriticalBackground;
box-shadow: 0 0 12px rgba(@diceCriticalColor,.5);
}
&.fumble {
color: @diceFumbleColor;
background: @diceFumbleBackground;
box-shadow: 0 0 12px rgba(@diceFumbleColor,.5);
}
}
}
#chat-controls {
.roll-type-select {
background: @inputBackgroundColor;
}
label {
color: @bodyFontColor;
}
}
#chat-form textarea {
background: @inputBackgroundColor;
}
/*-----------
** Combat Tab
-----------*/
#combat {
#combat-round {
color: @combatRoundColor;
border-bottom: 2px solid @combatRoundColor;
.encounters {
h4 {
color: @combatRoundColor;
}
a {
color: @linkSecondaryColor;
&:hover {
color: @linkColor;
}
}
}
}
#combat-tracker {
//padding-top: 4px;
li.combatant {
color: @bodyFontColor;
&:nth-child(even) {
background: rgba(@altRowBackground, 0.5);
}
h4 {
color: @bodyFontColor
}
.roll {
color: @linkSecondaryColor;
&:hover {
color: @linkColor;
}
}
.combatant-control {
color: @combatCombatantControlColor;
&.active {
color: @combatCombatantControlColorActive;
}
}
.token-resource {
color: @combatTokenResourceColor;
border-right: 1px solid @combatTokenResouceBorder;
}
&.active {
color: @combatActiveCombatantColor;
.initiative, h4 {
color: @combatActiveCombatantColor;
}
}
&.hidden {
color: @bodyFontColor;
}
}
}
#combat-controls {
border-top: 1px solid @combatControlsBorder;
}
}
/*
** Folders
*/
.sidebar-tab {
.directory-header {
.header-search {
i.fa-search {
color: @folderSearchIconColor;
}
input {
background: @inputBackgroundColor;
}
}
}
.subdirectory {
background: @folderSubdirectoryBackground;
.folder {
border-left: 2px solid rgba(@folderSubdirectoryBorder, 0.4);
}
}
.directory-list {
li + li {
border-top: 1px solid @directoryListItemBorder;
}
.folder {
& > .folder-header {
background: @folderHeaderBackground;
h3 {
background: @folderHeaderBackground;
color: @folderHeaderColor;
& > i {
color: @folderIconColor;
}
}
a {
color: @linkSecondaryColor;
&:hover {
color: @linkColor;
}
}
}
&.collapsed > .folder-header {
background: @folderHeaderBackground;
}
& + .entity {
border-top: 1px solid @directoryListItemBorder;
}
}
.actor, .item, .journal, .table {
background: @entityBackgroundColor;
.entity-name {
color: @entityNameColor;
}
&:nth-child(even) {
background: rgba(@altRowBackground, 0.3);
}
}
}
}
#scenes {
.scene {
border-top: 1px solid @sceneBorderColor;
border-left: 4px solid @sceneBorderColor;
&::after {
box-shadow: 0 0 20px @sceneBorderColor inset;
}
h3 {
background: @sceneBackgroundColor;
}
}
}
#playlists {
.directory-list {
li.playlist {
background: @playlistBackgroundColor;
.playlist-header {
background: @playlistBackgroundColor;
color: @colorRed;
border-bottom: 2px solid @playlistHeaderBorder;
}
li.sound {
color: @playlistSoundColor;
}
a.sound-control {
color: @linkColor;
}
}
}
}
#compendium {
.compendium-entity {
background: @compendiumEntityBackground !important;
h3 {
border-bottom: 2px solid @headerBorderColor;
}
ol.compendium-list {
li.compendium-pack {
&:nth-child(even) {
background: rgba(@altRowBackground, 0.3);
}
.pack-title {
.status-icons {
color: @compendiumStatusIcon;
}
}
footer.compendium-footer {
color: @bodyFontColor;
}
}
}
}
}
#settings {
h2 {
color: @headingColor;
border-bottom: 2px solid @headerBorderColor;
}
#game-details, #settings-game, #settings-documentation, #settings-access {
color: @bodyFontColor;
}
}

View file

@ -0,0 +1,495 @@
#sidebar {
border: none; //1px solid @colorBlue;
}
#sidebar-tabs {
border: none;
box-shadow: none;
background: white;
.dropShadow1();
& > .collapse {
color: @colorRed;
}
.item {
font-size: 16px;
}
.item.active {
color: @colorRed;
border: none;
border-bottom: 3px solid @colorRed;
box-shadow: none;
background: none;
text-shadow: none;
}
}
/*-----------
** Chat Tab
-----------*/
#chat-log {
.chat-message {
background: white;
border: none;
border-radius: 4px;
margin-bottom: 8px;
.dropShadow1();
& > header {
color: @colorRed;
border-bottom: 2px solid @colorBlue;
margin-bottom: 4px;
span {
color: @colorBlack;
}
}
}
}
.notification-pip {
color: @colorBlue;
text-shadow: none;
}
.sw5e.chat-card {
font-size: 13px;
.card-header {
padding: 0;
border: none;
img {
flex: 0 0 36px;
margin-right: 4px;
}
h3 {
flex: 1;
margin: 0;
line-height: 36px;
.russoOne(17px);
color: @colorBlack;
&:hover {
color: @colorBlack;
text-shadow: none;
}
}
}
.card-content {
margin: 4px 0;
h3 {
font-size: 12px;
margin: 0;
font-weight: bold;
}
> * {
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
}
}
.card-buttons {
margin: 4px 0;
span {
display: block;
line-height: 28px;
text-align: center;
border: 1px solid @colorLightGray;
}
button {
.openSans(13px, 700);
padding: 4px 0;
height: auto;
line-height: 1.6;
margin: 4px 0;
background: @colorRed;
border: none;
border-radius: 4px;
&:hover, &:focus {
background-color: lighten(@colorRed, 5);
box-shadow: none;
}
}
}
.card-footer {
padding: 4px 0 0;
border-top: 1px solid @colorLightBlue;
span {
border-right: 2px groove #FFF;
padding: 0 4px 0 0;
font-size: 10px;
&:last-child {
border-right: none;
padding-right: 0;
}
}
}
}
.dice-roll {
.dice-formula {
background: none;
border: none;
}
.dice-total {
background: @colorPaleBlue;
border: 1px solid @colorBlue;
border-radius: 0;
padding: 4px 0;
box-shadow: 0 0 12px rgba(@colorBlue,.5);
&.success {
color: inherit;
background: #c7d0c0;
border: 1px solid #006c00;
}
&.failure {
color: inherit;
background: #ffdddd;
border: 1px solid #6e0000;
}
&.critical {
color: @colorGreen;
background: @colorPaleGreen;
box-shadow: 0 0 12px rgba(@colorGreen,.5);
}
&.fumble {
color: red;
}
}
}
#chat-controls {
padding-top: 4px;
label {
color: @colorBlack;
}
}
#chat-form textarea {
background: white;
&:focus {
box-shadow: none;
outline: none;
}
}
/*-----------
** Combat Tab
-----------*/
#combat {
#combat-round {
color: @colorRed;
border-bottom: 2px solid @colorBlue;
.encounters {
h4 {
color: @colorRed;
}
a {
color: @colorGray;
&:hover {
color: @colorRed;
}
}
}
}
#combat-tracker {
//padding-top: 4px;
li.combatant {
padding: 4px 0;
color: @colorBlack;
background: none;
&:nth-child(even) {
background: rgba(@colorPaleBlue, 0.5);
}
h4 {
color: @colorBlack;
text-shadow: none;
}
.roll {
background: none;
color: @colorGray;
&::before {
content: "\f6cf";
.fontAwesome();
font-size: 28px;
}
&:hover {
color: @colorRed;
}
}
.combatant-control {
color: @colorLightGray;
text-shadow: none;
&.active {
color: @colorDarkGray;
}
}
.token-resource {
color: @colorGray;
border-right: 1px solid @colorLightGray;
}
.initiative {
text-shadow: none;
}
&.active {
color: @colorBlue;
.initiative, h4 {
color: @colorBlue;
}
}
&.hidden {
opacity: 0.5;
color: @colorBlack;
}
}
}
#combat-controls {
padding-top: 0;
border-top: 1px solid @colorBlue;
}
}
/*
** Folders
*/
.sidebar-tab {
.directory-header {
margin-bottom: 4px;
.header-search {
position: relative;
i.fa-search {
position: absolute;
left: 8px;
color: @colorBlue;
}
input {
text-align: left;
padding-left: 22px;
background: white;
&:focus {
box-shadow: none;
}
}
}
}
.subdirectory {
border: none;
margin-left: 8px;
background: white;
min-height: 8px;
.folder {
border-left: 2px solid rgba(@colorBlack, 0.4);
}
}
.directory-list {
padding-bottom: 4px;
li + li {
border-top: 1px solid @colorBlue;
}
.folder {
& > .folder-header {
line-height: default;
padding: 0 0 0 8px;
position: relative;
border: none;
background: white;
h3 {
padding: 8px 4px;
background: white;
color: @colorBlack;
.openSans(13px, 700);
line-height: 1.6;
& > i {
margin-right: 4px;
color: @colorBlue;
}
}
a {
position: absolute;
top: 0;
right: 4px;
height: 100%;
padding: 0 4px;
color: @colorLightGray;
&:hover {
color: @colorRed;
}
i {
margin-top: 12px;
}
&.create-folder {
right: 28px;
}
}
}
&.collapsed > .folder-header {
background: white;
}
& + .entity {
border-top: 1px solid @colorBlue;
}
}
.directory-item img {
flex: 0 0 32px;
height: 32px;
width: 32px;
align-self: center;
}
.actor, .item, .journal, .table {
background: white;
border: none;
.entity-name {
.openSans(13px, 700);
color: @colorBlack;
}
&:nth-child(even) {
background: rgba(@colorPaleBlue, 0.3);
}
}
}
}
#scenes {
.subdirectory {
border-left: none;
}
.scene {
border: none;
border-top: 1px solid @colorBlue;
border-left: 4px solid @colorBlue;
box-shadow: none;
position: relative;
height: 128px;
//margin-bottom: 4px;
& + .scene {
margin-top: 4px;
}
&::after {
content: '';
display: block;
width: 100%;
height: 99px;
position: absolute;
top: 28px;
left: 0;
box-shadow: 0 0 20px @colorBlue inset;
}
h3 {
.openSans(13px, 700);
text-align: left;
text-shadow: none;
padding: 4px 4px 4px 12px;
background: white;
line-height: 1.6;
position: absolute;
top: 0;
left: 0;
width: 100%;
}
}
}
#playlists {
.directory-list {
padding: 0 8px;
li.playlist {
padding: 8px;
border-radius: 4px;
background: white;
margin-bottom: 8px;
border-top: inherit;
.dropShadow1();
.playlist-header {
background: white;
color: @colorRed;
text-decoration: none;
border-bottom: 2px solid @colorBlue;
}
li.sound {
border: none;
color: @colorBlack;
h4 {
.openSans(13px, 400);
}
}
a.sound-control {
color: @colorRed;
}
}
}
}
#compendium {
.compendium-entity {
margin: 0 4px;
padding: 8px;
background: white !important;
.dropShadow1();
border-radius: 4px;
border: none;
&+ .compendium-entity {
margin-top: 4px;
}
h3 {
border: none;
color: @colorRed;
border-bottom: 2px solid @colorBlue;
.russoOne(17px);
padding: 0;
margin-bottom: 4px;
}
ol.compendium-list {
li.compendium-pack {
margin: 0;
padding: 4px;
border: none;
&:nth-child(even) {
background: rgba(@colorPaleBlue, 0.3);
}
.pack-title {
margin: 0;
position: relative;
a {
.openSans(13px, 700);
i {
display: none;
}
}
.status-icons {
top: 4px;
color: @colorLightGray;
font-size: 13px;
}
}
footer.compendium-footer {
color: @colorBlack;
}
}
}
}
}
#settings {
h2 {
color: @colorRed;
border: none;
border-bottom: 2px solid @colorBlue;
margin: 0 8px;
padding: 0;
}
#game-details, #settings-game, #settings-documentation, #settings-access {
padding: 0 8px;
margin: 0 0 8px;
color: @colorBlack;
}
}

View file

@ -0,0 +1,47 @@
@import "_variables.less";
@import "_variables-dark.less";
body.dark-theme {
.app {
background: @primaryBackground;
}
h1,
h2,
h3,
h4,
h5,
h6 {
color: @headingColor;
}
h3 {
border-bottom: 2px solid @headerBorderColor;
}
a {
color: @linkColor;
text-decoration: none;
&:hover,
&:active {
text-shadow: none;
text-decoration: underline;
}
}
blockquote {
padding: 4px 8px;
background-color: @blockquoteBackground;
border: 1px solid @blockquoteBorder;
box-shadow: @blockquoteShadow;
}
hr {
border-width: 0 0 1px 0;
border-bottom: 1px solid @hrColor;
}
@import "components/forms-themes.less";
@import "components/sidebar-themes.less";
@import "components/foundry-nav-themes.less";
@import "components/foundry-app-window-themes.less";
@import "components/actor-themes.less";
}

View file

@ -0,0 +1,185 @@
/* open-sans-regular - latin */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 400;
src: url('./fonts/OpenSans-Regular.ttf');
}
@font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: 400;
src: url('./fonts/OpenSans-Italic.ttf');
}
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: url('./fonts/OpenSans-Bold.ttf');
}
@font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: 700;
src: url('./fonts/OpenSans-BoldItalic.ttf');
}
/* russo-one-regular - latin */
@font-face {
font-family: 'Russo One';
font-style: normal;
font-weight: 400;
src: url('./fonts/RussoOne.ttf');
}
@font-face {
font-family: 'Russo One';
font-style: italic;
font-weight: 400;
src: url('./fonts/RussoOne.ttf');
}
@font-face {
font-family: 'Russo One';
font-style: normal;
font-weight: 700;
src: url('./fonts/RussoOne.ttf');
}
@font-face {
font-family: 'Aurebesh';
font-style: normal;
font-weight: 400;
src: url('./fonts/Aurebesh.ttf');
}
@import "_variables.less";
html {
box-sizing: border-box;
}
*, *:before, *:after {
box-sizing: inherit;
}
// ::-webkit-scrollbar {
// width: 6px;
// height: 6px;
// }
::-webkit-scrollbar-track {
border: 1px solid @colorBlue;
border-radius: 4px;
}
::-webkit-scrollbar-thumb {
outline: none;
border-radius: 4px;
background: @colorBlue;
border: none;
}
:root {
scrollbar-width: thin;
scrollbar-color: @colorBlue @colorPaleBlue;
}
body {
.openSans(13px, 400);
}
h1 {
.russoOne(34px);
}
h2 {
.russoOne(27px);
}
h3 {
.russoOne(21px);
}
h4 {
.russoOne(17px);
}
h5, h6 {
.russoOne(13px);
}
a {
text-decoration: none;
&:hover, &:active {
text-shadow: none;
text-decoration: underline;
}
}
.app {
border: none;// 1px solid @colorBlue;
.dropShadow1();
}
#pause {
img {display: none;}
background: none;
height: 128px;
&::before {
content: '';
position: absolute;
top: 0;
margin-left: -64px;
left: 50%;
width: 128px;
height: 128px;
background: url("ui/pause-inner.svg") no-repeat 50% 50%;
animation-name: pause-spin;
animation-duration: 10000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
&::after {
content: '';
position: absolute;
top: 0;
margin-left: -64px;
left: 50%;
width: 128px;
height: 128px;
background: url("ui/pause-outer.svg") no-repeat 50% 50%;
animation-name: pause-spin;
animation-duration: 5000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
animation-direction: reverse;
}
h3 {
border-bottom: 0;
line-height: 1;
position: absolute;
top: 50%;
left: 50%;
width: 256px;
margin-left: -128px;
margin-top: -13px;
text-shadow: 0 0 24px @colorBlue;
&::before, &::after {
position: absolute;
font-family: "Aurebesh", sans-serif;
font-size: 13px;
color: @colorGray;
animation: none;
opacity: 0.8;
text-shadow: 0 0 8px @colorBlue;
}
&::before {
content: "GAME";
top: -13px;
left: 42px;
}
&::after {
content: "PAUSED";
bottom: -13px;
right: 42px;
}
}
}
@import "components/forms-global.less";
@import "components/sidebar-global.less";
@import "components/actor-global.less";
@keyframes pause-spin {
from {
transform:rotate(0deg);
}
to {
transform: rotate(360deg);
}
}

View file

@ -0,0 +1,47 @@
@import "_variables.less";
@import "_variables-light.less";
body.light-theme {
.app {
background: @primaryBackground;
}
h1,
h2,
h3,
h4,
h5,
h6 {
color: @headingColor;
}
h3 {
border-bottom: 2px solid @headerBorderColor;
}
a {
color: @linkColor;
text-decoration: none;
&:hover,
&:active {
text-shadow: none;
text-decoration: underline;
}
}
blockquote {
padding: 4px 8px;
background-color: @blockquoteBackground;
border: 1px solid @blockquoteBorder;
box-shadow: @blockquoteShadow;
}
hr {
border-width: 0 0 1px 0;
border-bottom: 1px solid @hrColor;
}
@import "components/forms-themes.less";
@import "components/sidebar-themes.less";
@import "components/foundry-nav-themes.less";
@import "components/foundry-app-window-themes.less";
@import "components/actor-themes.less";
}

View file

@ -0,0 +1,61 @@
@import "variables.less";
a {
color: @colorRed;
text-decoration: none;
&:hover, &:active {
text-shadow: none;
text-decoration: underline;
}
}
.app {
background: @sheetBackground;
border: none;// 1px solid @colorBlue;
.dropShadow1();
}
#context-menu {
background: none;
border: none;
border-radius: 0;
color: @colorBlack;
padding: 0 8px;
ol.context-items {
background: white;
border-radius: 4px;
border: 1px solid @colorLightGray;
.dropShadow2();
li.context-item {
&:first-child {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
&:last-child {
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
}
i {
color: @colorBlue;
}
&:hover {
background: @colorRed;
color: white;
text-shadow: none;
cursor: pointer;
i {
color: white;
}
}
& + li {
border-top: 1px solid @colorPaleGray;
}
}
}
}
@import "components/forms.less";
@import "components/sidebar.less";

View file

@ -43,8 +43,8 @@ export default class ActorSheet5e extends ActorSheet {
/** @override */
get template() {
if ( !game.user.isGM && this.actor.limited ) return "systems/sw5e/templates/actors/limited-sheet.html";
return `systems/sw5e/templates/actors/${this.actor.data.type}-sheet.html`;
if ( !game.user.isGM && this.actor.limited ) return "systems/sw5e/templates/actors/oldActor/limited-sheet.html";
return `systems/sw5e/templates/actors/oldActor/${this.actor.data.type}-sheet.html`;
}
/* -------------------------------------------- */

View file

@ -0,0 +1,631 @@
import ActorSheet5e from "../base.js";
import Actor5e from "../../entity.js";
/**
* An Actor sheet for player character type actors in the SW5E system.
* Extends the base ActorSheet5e class.
* @type {ActorSheet5e}
*/
export default class ActorSheet5eCharacterNew extends ActorSheet5e {
get template() {
if (!game.user.isGM && this.actor.limited) return "systems/sw5e/templates/actors/newActor/limited-sheet.html";
return "systems/sw5e/templates/actors/newActor/character-sheet.html";
}
/**
* Define default rendering options for the NPC sheet
* @return {Object}
*/
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
classes: ["swalt", "sw5e", "sheet", "actor", "character"],
blockFavTab: true,
subTabs: null,
width: 800,
tabs: [{
navSelector: ".root-tabs",
contentSelector: ".sheet-body",
initial: "attributes"
}],
});
}
/* -------------------------------------------- */
/**
* Add some extra data when rendering the sheet to reduce the amount of logic required within the template.
*/
getData() {
const sheetData = super.getData();
// Temporary HP
let hp = sheetData.data.attributes.hp;
if (hp.temp === 0) delete hp.temp;
if (hp.tempmax === 0) delete hp.tempmax;
// Resources
sheetData["resources"] = ["primary", "secondary", "tertiary"].reduce((arr, r) => {
const res = sheetData.data.resources[r] || {};
res.name = r;
res.placeholder = game.i18n.localize("SW5E.Resource"+r.titleCase());
if (res && res.value === 0) delete res.value;
if (res && res.max === 0) delete res.max;
return arr.concat([res]);
}, []);
// Experience Tracking
sheetData["disableExperience"] = game.settings.get("sw5e", "disableExperienceTracking");
sheetData["classLabels"] = this.actor.itemTypes.class.map(c => c.name).join(", ");
// Return data for rendering
return sheetData;
}
/* -------------------------------------------- */
/**
* Organize and classify Owned Items for Character sheets
* @private
*/
_prepareItems(data) {
// Categorize items as inventory, powerbook, features, and classes
const inventory = {
weapon: { label: "SW5E.ItemTypeWeaponPl", items: [], dataset: {type: "weapon"} },
equipment: { label: "SW5E.ItemTypeEquipmentPl", items: [], dataset: {type: "equipment"} },
consumable: { label: "SW5E.ItemTypeConsumablePl", items: [], dataset: {type: "consumable"} },
tool: { label: "SW5E.ItemTypeToolPl", items: [], dataset: {type: "tool"} },
backpack: { label: "SW5E.ItemTypeContainerPl", items: [], dataset: {type: "backpack"} },
loot: { label: "SW5E.ItemTypeLootPl", items: [], dataset: {type: "loot"} }
};
// Partition items by category
let [items, powers, feats, classes, species, archetypes, classfeatures, backgrounds, lightsaberforms] = data.items.reduce((arr, item) => {
// Item details
item.img = item.img || DEFAULT_TOKEN;
item.isStack = Number.isNumeric(item.data.quantity) && (item.data.quantity !== 1);
// Item usage
item.hasUses = item.data.uses && (item.data.uses.max > 0);
item.isOnCooldown = item.data.recharge && !!item.data.recharge.value && (item.data.recharge.charged === false);
item.isDepleted = item.isOnCooldown && (item.data.uses.per && (item.data.uses.value > 0));
item.hasTarget = !!item.data.target && !(["none",""].includes(item.data.target.type));
// Item toggle state
this._prepareItemToggleState(item);
// Classify items into types
if ( item.type === "power" ) arr[1].push(item);
else if ( item.type === "feat" ) arr[2].push(item);
else if ( item.type === "class" ) arr[3].push(item);
else if ( item.type === "species" ) arr[4].push(item);
else if ( item.type === "archetype" ) arr[5].push(item);
else if ( item.type === "classfeature" ) arr[6].push(item);
else if ( item.type === "background" ) arr[7].push(item);
else if ( item.type === "lightsaberform" ) arr[8].push(item);
else if ( Object.keys(inventory).includes(item.type ) ) arr[0].push(item);
return arr;
}, [[], [], [], [], [], [], [], [], []]);
// Apply active item filters
items = this._filterItems(items, this._filters.inventory);
powers = this._filterItems(powers, this._filters.powerbook);
feats = this._filterItems(feats, this._filters.features);
// Organize items
for ( let i of items ) {
i.data.quantity = i.data.quantity || 0;
i.data.weight = i.data.weight || 0;
i.totalWeight = Math.round(i.data.quantity * i.data.weight * 10) / 10;
inventory[i.type].items.push(i);
}
// Organize Powerbook and count the number of prepared powers (excluding always, at will, etc...)
const powerbook = this._preparePowerbook(data, powers);
const nPrepared = powers.filter(s => {
return (s.data.level > 0) && (s.data.preparation.mode === "prepared") && s.data.preparation.prepared;
}).length;
// Organize Features
const features = {
classes: { label: "SW5E.ItemTypeClassPl", items: [], hasActions: false, dataset: {type: "class"}, isClass: true },
classfeatures: { label: "SW5E.ItemTypeClassFeats", items: [], hasActions: false, dataset: {type: "classfeature"}, isClassfeature: true },
archetype: { label: "SW5E.ItemTypeArchetype", items: [], hasActions: false, dataset: {type: "archetype"}, isArchetype: true },
species: { label: "SW5E.ItemTypeSpecies", items: [], hasActions: false, dataset: {type: "species"}, isSpecies: true },
background: { label: "SW5E.ItemTypeBackground", items: [], hasActions: false, dataset: {type: "background"}, isBackground: true },
lightsaberform: { label: "SW5E.ItemTypeLightsaberForm", items: [], hasActions: false, dataset: {type: "lightsaberform"}, isLightsaberform: true },
active: { label: "SW5E.FeatureActive", items: [], hasActions: true, dataset: {type: "feat", "activation.type": "action"} },
passive: { label: "SW5E.FeaturePassive", items: [], hasActions: false, dataset: {type: "feat"} }
};
for ( let f of feats ) {
if ( f.data.activation.type ) features.active.items.push(f);
else features.passive.items.push(f);
}
classes.sort((a, b) => b.levels - a.levels);
features.classes.items = classes;
features.classfeatures.items = classfeatures;
features.archetype.items = archetypes;
features.species.items = species;
features.background.items = backgrounds;
features.lightsaberform.items = lightsaberforms;
// Assign and return
data.inventory = Object.values(inventory);
data.powerbook = powerbook;
data.preparedPowers = nPrepared;
data.features = Object.values(features);
}
/* -------------------------------------------- */
/**
* A helper method to establish the displayed preparation state for an item
* @param {Item} item
* @private
*/
_prepareItemToggleState(item) {
if (item.type === "power") {
const isAlways = getProperty(item.data, "preparation.mode") === "always";
const isPrepared = getProperty(item.data, "preparation.prepared");
item.toggleClass = isPrepared ? "active" : "";
if ( isAlways ) item.toggleClass = "fixed";
if ( isAlways ) item.toggleTitle = CONFIG.SW5E.powerPreparationModes.always;
else if ( isPrepared ) item.toggleTitle = CONFIG.SW5E.powerPreparationModes.prepared;
else item.toggleTitle = game.i18n.localize("SW5E.PowerUnprepared");
}
else {
const isActive = getProperty(item.data, "equipped");
item.toggleClass = isActive ? "active" : "";
item.toggleTitle = game.i18n.localize(isActive ? "SW5E.Equipped" : "SW5E.Unequipped");
}
}
/* -------------------------------------------- */
/* Event Listeners and Handlers
/* -------------------------------------------- */
/**
* Activate event listeners using the prepared sheet HTML
* @param html {HTML} The prepared HTML object ready to be rendered into the DOM
*/
activateListeners(html) {
super.activateListeners(html);
if ( !this.options.editable ) return;
// Inventory Functions
html.find(".currency-convert").click(this._onConvertCurrency.bind(this));
// Item State Toggling
html.find('.item-toggle').click(this._onToggleItem.bind(this));
// Short and Long Rest
html.find('.short-rest').click(this._onShortRest.bind(this));
html.find('.long-rest').click(this._onLongRest.bind(this));
// Death saving throws
html.find('.death-save').click(this._onDeathSave.bind(this));
// Send Languages to Chat onClick
html.find('[data-options="share-languages"]').click(event => {
event.preventDefault();
let langs = this.actor.data.data.traits.languages.value.map(l => SW5E.languages[l] || l).join(", ");
let custom = this.actor.data.data.traits.languages.custom;
if (custom) langs += ", " + custom.replace(/;/g, ",");
let content = `
<div class="sw5e chat-card item-card" data-acor-id="${this.actor._id}">
<header class="card-header flexrow">
<img src="${this.actor.data.token.img}" title="" width="36" height="36" style="border: none;"/>
<h3>Known Languages</h3>
</header>
<div class="card-content">${langs}</div>
</div>
`;
// Send to Chat
let rollWhisper = null;
let rollBlind = false;
let rollMode = game.settings.get("core", "rollMode");
if (["gmroll", "blindroll"].includes(rollMode)) rollWhisper = ChatMessage.getWhisperIDs("GM");
if (rollMode === "blindroll") rollBlind = true;
ChatMessage.create({
user: game.user._id,
content: content,
speaker: {
actor: this.actor._id,
token: this.actor.token,
alias: this.actor.name
},
type: CONST.CHAT_MESSAGE_TYPES.OTHER
});
});
// Item Delete Confirmation
html.find('.item-delete').off("click");
html.find('.item-delete').click(event => {
let li = $(event.currentTarget).parents('.item');
let itemId = li.attr("data-item-id");
let item = this.actor.getOwnedItem(itemId);
new Dialog({
title: `Deleting ${item.data.name}`,
content: `<p>Are you sure you want to delete ${item.data.name}?</p>`,
buttons: {
Yes: {
icon: '<i class="fa fa-check"></i>',
label: 'Yes',
callback: dlg => {
this.actor.deleteOwnedItem(itemId);
}
},
cancel: {
icon: '<i class="fas fa-times"></i>',
label: 'No'
},
},
default: 'cancel'
}).render(true);
});
}
/* -------------------------------------------- */
/**
* Handle rolling a death saving throw for the Character
* @param {MouseEvent} event The originating click event
* @private
*/
_onDeathSave(event) {
event.preventDefault();
return this.actor.rollDeathSave({event: event});
}
/* -------------------------------------------- */
/**
* Handle toggling the state of an Owned Item within the Actor
* @param {Event} event The triggering click event
* @private
*/
_onToggleItem(event) {
event.preventDefault();
const itemId = event.currentTarget.closest(".item").dataset.itemId;
const item = this.actor.getOwnedItem(itemId);
const attr = item.data.type === "power" ? "data.preparation.prepared" : "data.equipped";
return item.update({[attr]: !getProperty(item.data, attr)});
}
/* -------------------------------------------- */
/**
* Take a short rest, calling the relevant function on the Actor instance
* @param {Event} event The triggering click event
* @private
*/
async _onShortRest(event) {
event.preventDefault();
await this._onSubmit(event);
return this.actor.shortRest();
}
/* -------------------------------------------- */
/**
* Take a long rest, calling the relevant function on the Actor instance
* @param {Event} event The triggering click event
* @private
*/
async _onLongRest(event) {
event.preventDefault();
await this._onSubmit(event);
return this.actor.longRest();
}
/* -------------------------------------------- */
/**
* Handle mouse click events to convert currency to the highest possible denomination
* @param {MouseEvent} event The originating click event
* @private
*/
async _onConvertCurrency(event) {
event.preventDefault();
return Dialog.confirm({
title: `${game.i18n.localize("SW5E.CurrencyConvert")}`,
content: `<p>${game.i18n.localize("SW5E.CurrencyConvertHint")}</p>`,
yes: () => this.actor.convertCurrency()
});
}
/* -------------------------------------------- */
/** @override */
async _onDropItemCreate(itemData) {
// Upgrade the number of class levels a character has and add features
if ( itemData.type === "class" ) {
const cls = this.actor.itemTypes.class.find(c => c.name === itemData.name);
const classWasAlreadyPresent = !!cls;
// Add new features for class level
if ( !classWasAlreadyPresent ) {
Actor5e.getClassFeatures(itemData).then(features => {
this.actor.createEmbeddedEntity("OwnedItem", features);
});
}
// If the actor already has the class, increment the level instead of creating a new item
// then add new features as long as level increases
if ( classWasAlreadyPresent ) {
const lvl = cls.data.data.levels;
const newLvl = Math.min(lvl + 1, 20 + lvl - this.actor.data.data.details.level);
if ( !(lvl === newLvl) ) {
cls.update({"data.levels": newLvl});
itemData.data.levels = newLvl;
Actor5e.getClassFeatures(itemData).then(features => {
this.actor.createEmbeddedEntity("OwnedItem", features);
});
}
return
}
}
super._onDropItemCreate(itemData);
}
}
async function addFavorites(app, html, data) {
// Thisfunction is adapted for the SwaltSheet from the Favorites Item
// Tab Module created for Foundry VTT - by Felix Müller (Felix#6196 on Discord).
// It is licensed under a Creative Commons Attribution 4.0 International License
// and can be found at https://github.com/syl3r86/favtab.
let favItems = [];
let favFeats = [];
let favPowers = {
0: {
isCantrip: true,
powers: []
},
1: {
powers: [],
value: data.actor.data.powers.power1.value,
max: data.actor.data.powers.power1.max
},
2: {
powers: [],
value: data.actor.data.powers.power2.value,
max: data.actor.data.powers.power2.max
},
3: {
powers: [],
value: data.actor.data.powers.power3.value,
max: data.actor.data.powers.power3.max
},
4: {
powers: [],
value: data.actor.data.powers.power4.value,
max: data.actor.data.powers.power4.max
},
5: {
powers: [],
value: data.actor.data.powers.power5.value,
max: data.actor.data.powers.power5.max
},
6: {
powers: [],
value: data.actor.data.powers.power6.value,
max: data.actor.data.powers.power6.max
},
7: {
powers: [],
value: data.actor.data.powers.power7.value,
max: data.actor.data.powers.power7.max
},
8: {
powers: [],
value: data.actor.data.powers.power8.value,
max: data.actor.data.powers.power8.max
},
9: {
powers: [],
value: data.actor.data.powers.power9.value,
max: data.actor.data.powers.power9.max
}
}
let powerCount = 0
let items = data.actor.items;
for (let item of items) {
if (item.type == "class") continue;
if (item.flags.favtab === undefined || item.flags.favtab.isFavourite === undefined) {
item.flags.favtab = {
isFavourite: false
};
}
let isFav = item.flags.favtab.isFavourite;
if (app.options.editable) {
let favBtn = $(`<a class="item-control item-toggle item-fav ${isFav ? "active" : ""}" data-fav="${isFav}" title="${isFav ? "Remove from Favourites" : "Add to Favourites"}"><i class="fas fa-star"></i></a>`);
favBtn.click(ev => {
app.actor.getOwnedItem(item._id).update({
"flags.favtab.isFavourite": !item.flags.favtab.isFavourite
});
});
html.find(`.item[data-item-id="${item._id}"]`).find('.item-controls').prepend(favBtn);
}
if (isFav) {
item.powerComps = "";
if (item.data.components) {
let comps = item.data.components;
let v = (comps.vocal) ? "V" : "";
let s = (comps.somatic) ? "S" : "";
let m = (comps.material) ? "M" : "";
let c = (comps.concentration) ? true : false;
let r = (comps.ritual) ? true : false;
item.powerComps = `${v}${s}${m}`;
item.powerCon = c;
item.powerRit = r;
}
item.editable = app.options.editable;
switch (item.type) {
case 'feat':
if (item.flags.favtab.sort === undefined) {
item.flags.favtab.sort = (favFeats.count + 1) * 100000; // initial sort key if not present
}
favFeats.push(item);
break;
case 'power':
if (item.data.preparation.mode) {
item.powerPrepMode = ` (${CONFIG.SW5E.powerPreparationModes[item.data.preparation.mode]})`
}
if (item.data.level) {
favPowers[item.data.level].powers.push(item);
} else {
favPowers[0].powers.push(item);
}
powerCount++;
break;
default:
if (item.flags.favtab.sort === undefined) {
item.flags.favtab.sort = (favItems.count + 1) * 100000; // initial sort key if not present
}
favItems.push(item);
break;
}
}
}
// Alter core CSS to fit new button
// if (app.options.editable) {
// html.find('.powerbook .item-controls').css('flex', '0 0 88px');
// html.find('.inventory .item-controls, .features .item-controls').css('flex', '0 0 90px');
// html.find('.favourite .item-controls').css('flex', '0 0 22px');
// }
let tabContainer = html.find('.favtabtarget');
data.favItems = favItems.length > 0 ? favItems.sort((a, b) => (a.flags.favtab.sort) - (b.flags.favtab.sort)) : false;
data.favFeats = favFeats.length > 0 ? favFeats.sort((a, b) => (a.flags.favtab.sort) - (b.flags.favtab.sort)) : false;
data.favPowers = powerCount > 0 ? favPowers : false;
data.editable = app.options.editable;
await loadTemplates(['systems/sw5e/templates/actors/newActor/item.hbs']);
let favtabHtml = $(await renderTemplate('systems/sw5e/templates/actors/newActor/template.hbs', data));
favtabHtml.find('.item-name h4').click(event => app._onItemSummary(event));
if (app.options.editable) {
favtabHtml.find('.item-image').click(ev => app._onItemRoll(ev));
let handler = ev => app._onDragItemStart(ev);
favtabHtml.find('.item').each((i, li) => {
if (li.classList.contains("inventory-header")) return;
li.setAttribute("draggable", true);
li.addEventListener("dragstart", handler, false);
});
//favtabHtml.find('.item-toggle').click(event => app._onToggleItem(event));
favtabHtml.find('.item-edit').click(ev => {
let itemId = $(ev.target).parents('.item')[0].dataset.itemId;
app.actor.getOwnedItem(itemId).sheet.render(true);
});
favtabHtml.find('.item-fav').click(ev => {
let itemId = $(ev.target).parents('.item')[0].dataset.itemId;
let val = !app.actor.getOwnedItem(itemId).data.flags.favtab.isFavourite
app.actor.getOwnedItem(itemId).update({
"flags.favtab.isFavourite": val
});
});
// Sorting
favtabHtml.find('.item').on('drop', ev => {
ev.preventDefault();
ev.stopPropagation();
let dropData = JSON.parse(ev.originalEvent.dataTransfer.getData('text/plain'));
// if (dropData.actorId !== app.actor.id || dropData.data.type === 'power') return;
if (dropData.actorId !== app.actor.id) return;
let list = null;
if (dropData.data.type === 'feat') list = favFeats;
else list = favItems;
let dragSource = list.find(i => i._id === dropData.data._id);
let siblings = list.filter(i => i._id !== dropData.data._id);
let targetId = ev.target.closest('.item').dataset.itemId;
let dragTarget = siblings.find(s => s._id === targetId);
if (dragTarget === undefined) return;
const sortUpdates = SortingHelpers.performIntegerSort(dragSource, {
target: dragTarget,
siblings: siblings,
sortKey: 'flags.favtab.sort'
});
const updateData = sortUpdates.map(u => {
const update = u.update;
update._id = u.target._id;
return update;
});
app.actor.updateEmbeddedEntity("OwnedItem", updateData);
});
}
tabContainer.append(favtabHtml);
// try {
// if (game.modules.get("betterrolls5e") && game.modules.get("betterrolls5e").active) BetterRolls.addItemContent(app.object, favtabHtml, ".item .item-name h4", ".item-properties", ".item > .rollable div");
// }
// catch (err) {
// // Better Rolls not found!
// }
Hooks.callAll("renderedSwaltSheet", app, html, data);
}
async function addSubTabs(app, html, data) {
if(data.options.subTabs == null) {
//let subTabs = []; //{subgroup: '', target: '', active: false}
data.options.subTabs = {};
html.find('[data-subgroup-selection] [data-subgroup]').each((idx, el) => {
let subgroup = el.getAttribute('data-subgroup');
let target = el.getAttribute('data-target');
let targetObj = {target: target, active: el.classList.contains("active")}
if(data.options.subTabs.hasOwnProperty(subgroup)) {
data.options.subTabs[subgroup].push(targetObj);
} else {
data.options.subTabs[subgroup] = [];
data.options.subTabs[subgroup].push(targetObj);
}
})
}
for(const group in data.options.subTabs) {
data.options.subTabs[group].forEach(tab => {
if(tab.active) {
html.find(`[data-subgroup=${group}][data-target=${tab.target}]`).addClass('active');
} else {
html.find(`[data-subgroup=${group}][data-target=${tab.target}]`).removeClass('active');
}
})
}
html.find('[data-subgroup-selection]').children().on('click', event => {
let subgroup = event.target.closest('[data-subgroup]').getAttribute('data-subgroup');
let target = event.target.closest('[data-target]').getAttribute('data-target');
html.find(`[data-subgroup=${subgroup}]`).removeClass('active');
html.find(`[data-subgroup=${subgroup}][data-target=${target}]`).addClass('active');
let tabId = data.options.subTabs[subgroup].find(tab => {
return tab.target == target
});
data.options.subTabs[subgroup].map(el => {
if(el.target == target) {
el.active = true;
} else {
el.active = false;
}
return el;
})
})
}
Hooks.on("renderActorSheet5eCharacterNew", (app, html, data) => {
addFavorites(app, html, data);
addSubTabs(app, html, data);
});

View file

@ -1,5 +1,5 @@
import ActorSheet5e from "./base.js";
import Actor5e from "../entity.js";
import ActorSheet5e from "../base.js";
import Actor5e from "../../entity.js";
/**
* An Actor sheet for player character type actors in the SW5E system.

View file

@ -1,4 +1,4 @@
import ActorSheet5e from "../sheets/base.js";
import ActorSheet5e from "../base.js";
/**
* An Actor sheet for NPC type characters in the SW5E system.

View file

@ -1,4 +1,4 @@
import ActorSheet5e from "./base.js";
import ActorSheet5e from "../base.js";
/**
* An Actor sheet for Vehicle type actors.

View file

@ -142,4 +142,16 @@ export const registerSystemSettings = function() {
transformTokens: true
}
});
game.settings.register("sw5e", "colorTheme", {
name: "SETTINGS.SWColorN",
hint: "SETTINGS.SWColorL",
scope: "world",
config: true,
default: "light",
type: String,
choices: {
"light": "SETTINGS.SWColorLight",
"dark": "SETTINGS.SWColorDark"
}
});
};

View file

@ -9,12 +9,22 @@ export const preloadHandlebarsTemplates = async function() {
const templatePaths = [
// Actor Sheet Partials
"systems/sw5e/templates/actors/parts/actor-traits.html",
"systems/sw5e/templates/actors/parts/actor-inventory.html",
"systems/sw5e/templates/actors/parts/actor-features.html",
"systems/sw5e/templates/actors/parts/actor-powerbook.html",
"systems/sw5e/templates/actors/parts/actor-effects.html",
"systems/sw5e/templates/actors/oldActor/parts/actor-traits.html",
"systems/sw5e/templates/actors/oldActor/parts/actor-inventory.html",
"systems/sw5e/templates/actors/oldActor/parts/actor-features.html",
"systems/sw5e/templates/actors/oldActor/parts/actor-powerbook.html",
"systems/sw5e/templates/actors/oldActor/parts/actor-effects.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-biography.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-core.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-features.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-inventory.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-notes.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-powerbook.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-resources.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-traits.html",
// Item Sheet Partials
"systems/sw5e/templates/items/parts/item-action.html",
"systems/sw5e/templates/items/parts/item-activation.html",

1787
sw5e copy.css Normal file

File diff suppressed because it is too large Load diff

733
sw5e-dark.css Normal file
View file

@ -0,0 +1,733 @@
/* ----------------------------------------- */
/* Fonts */
/* ----------------------------------------- */
/* ----------------------------------------- */
/* Sheet Styles */
/* ----------------------------------------- */
body.dark-theme {
/*-----------
** Chat Tab
-----------*/
/*-----------
** Combat Tab
-----------*/
/*
** Folders
*/
}
body.dark-theme .app {
background: linear-gradient(90deg, #626262 0, #4d4d4d 30%, #4d4d4d 70%, #626262);
}
body.dark-theme h1,
body.dark-theme h2,
body.dark-theme h3,
body.dark-theme h4,
body.dark-theme h5,
body.dark-theme h6 {
color: #E81111;
}
body.dark-theme h3 {
border-bottom: 2px solid #0d99cc;
}
body.dark-theme a {
color: #E81111;
text-decoration: none;
}
body.dark-theme a:hover,
body.dark-theme a:active {
text-shadow: none;
text-decoration: underline;
}
body.dark-theme blockquote {
padding: 4px 8px;
background-color: #FBF4F4;
border: 1px solid #E81111;
box-shadow: 0 0 20px rgba(232, 17, 17, 0.8);
}
body.dark-theme hr {
border-width: 0 0 1px 0;
border-bottom: 1px solid #0d99cc;
}
body.dark-theme input[type="text"],
body.dark-theme input[type="number"],
body.dark-theme input[type="password"],
body.dark-theme input[type="date"],
body.dark-theme input[type="time"],
body.dark-theme select,
body.dark-theme textarea {
border: 1px solid #828282;
color: white;
}
body.dark-theme input[type="text"]:hover,
body.dark-theme input[type="number"]:hover,
body.dark-theme input[type="password"]:hover,
body.dark-theme input[type="date"]:hover,
body.dark-theme input[type="time"]:hover,
body.dark-theme select:hover,
body.dark-theme textarea:hover {
border-color: #4f4f4f;
}
body.dark-theme input[type="text"]:focus,
body.dark-theme input[type="number"]:focus,
body.dark-theme input[type="password"]:focus,
body.dark-theme input[type="date"]:focus,
body.dark-theme input[type="time"]:focus,
body.dark-theme select:focus,
body.dark-theme textarea:focus {
border-color: #E81111;
}
body.dark-theme input[type="text"]::placeholder,
body.dark-theme input[type="number"]::placeholder,
body.dark-theme input[type="password"]::placeholder,
body.dark-theme input[type="date"]::placeholder,
body.dark-theme input[type="time"]::placeholder,
body.dark-theme select::placeholder,
body.dark-theme textarea::placeholder {
color: white;
opacity: 0.5;
}
body.dark-theme input[type="text"] ::-ms-input-placeholder,
body.dark-theme input[type="number"] ::-ms-input-placeholder,
body.dark-theme input[type="password"] ::-ms-input-placeholder,
body.dark-theme input[type="date"] ::-ms-input-placeholder,
body.dark-theme input[type="time"] ::-ms-input-placeholder,
body.dark-theme select ::-ms-input-placeholder,
body.dark-theme textarea ::-ms-input-placeholder {
/* Microsoft Edge */
color: white;
opacity: 0.5;
}
body.dark-theme button,
body.dark-theme input[type="button"],
body.dark-theme input[type="submit"],
body.dark-theme input[type="reset"] {
background: #E81111;
color: white;
}
body.dark-theme button:hover,
body.dark-theme input[type="button"]:hover,
body.dark-theme input[type="submit"]:hover,
body.dark-theme input[type="reset"]:hover,
body.dark-theme button:focus,
body.dark-theme input[type="button"]:focus,
body.dark-theme input[type="submit"]:focus,
body.dark-theme input[type="reset"]:focus {
background: #ef2424;
}
body.dark-theme button:disabled:hover,
body.dark-theme input[type="button"]:disabled:hover,
body.dark-theme input[type="submit"]:disabled:hover,
body.dark-theme input[type="reset"]:disabled:hover,
body.dark-theme button:disabled:focus,
body.dark-theme input[type="button"]:disabled:focus,
body.dark-theme input[type="submit"]:disabled:focus,
body.dark-theme input[type="reset"]:disabled:focus {
background: #E81111;
}
body.dark-theme input[type="reset"],
body.dark-theme button.secondary,
body.dark-theme button[type="reset"],
body.dark-theme input[type="button"].secondary,
body.dark-theme input[type="submit"].secondary {
background: #828282;
color: white;
}
body.dark-theme input[type="reset"]:hover,
body.dark-theme button.secondary:hover,
body.dark-theme button[type="reset"]:hover,
body.dark-theme input[type="button"].secondary:hover,
body.dark-theme input[type="submit"].secondary:hover {
background: #8f8f8f;
}
body.dark-theme input[type="reset"]:disabled:hover,
body.dark-theme button.secondary:disabled:hover,
body.dark-theme button[type="reset"]:disabled:hover,
body.dark-theme input[type="button"].secondary:disabled:hover,
body.dark-theme input[type="submit"].secondary:disabled:hover,
body.dark-theme input[type="reset"]:disabled:focus,
body.dark-theme button.secondary:disabled:focus,
body.dark-theme button[type="reset"]:disabled:focus,
body.dark-theme input[type="button"].secondary:disabled:focus,
body.dark-theme input[type="submit"].secondary:disabled:focus {
background: #828282;
}
body.dark-theme form button {
border: none;
}
body.dark-theme form .notes,
body.dark-theme form .hint {
color: rgba(255, 255, 255, 0.8);
}
body.dark-theme #sidebar-tabs {
background: #2b2b2b;
}
body.dark-theme #sidebar-tabs > .collapse {
color: #E81111;
}
body.dark-theme #sidebar-tabs .item.active {
color: #E81111;
border-bottom: 3px solid #E81111;
}
body.dark-theme #chat-log .chat-message {
background: #363636;
color: white;
}
body.dark-theme #chat-log .chat-message > header {
color: #E81111;
border-bottom: 2px solid #0d99cc;
}
body.dark-theme #chat-log .chat-message > header span {
color: white;
}
body.dark-theme .notification-pip {
color: #0d99cc;
}
body.dark-theme .sw5e.chat-card .card-header h3 {
color: white;
}
body.dark-theme .sw5e.chat-card .card-header h3:hover {
color: white;
}
body.dark-theme .sw5e.chat-card .card-buttons span {
border: 1px solid #828282;
}
body.dark-theme .sw5e.chat-card .card-footer {
border-top: 1px solid #7ed6f7;
}
body.dark-theme .sw5e.chat-card .card-footer span {
border-right: 1px solid #D6D6D6;
}
body.dark-theme .sw5e.chat-card .card-footer span:last-child {
border-right: none;
}
body.dark-theme .dice-roll .dice-formula {
background: #4f4f4f;
color: white;
box-shadow: none;
border-radius: 4px;
}
body.dark-theme .dice-roll .dice-total {
background: #FBF4F4;
border: 1px solid #E81111;
box-shadow: 0 0 12px rgba(232, 17, 17, 0.8);
}
body.dark-theme .dice-roll .dice-total.success {
color: #0dce0d;
}
body.dark-theme .dice-roll .dice-total.failure {
color: #E81111;
}
body.dark-theme .dice-roll .dice-total.critical {
color: #0dce0d;
background: #bcdcbe;
box-shadow: 0 0 12px rgba(13, 206, 13, 0.5);
}
body.dark-theme .dice-roll .dice-total.fumble {
color: #E81111;
background: #FBF4F4;
box-shadow: 0 0 12px rgba(232, 17, 17, 0.5);
}
body.dark-theme #chat-controls .roll-type-select {
background: #363636;
}
body.dark-theme #chat-controls label {
color: white;
}
body.dark-theme #chat-form textarea {
background: #363636;
}
body.dark-theme #combat #combat-round {
color: #E81111;
border-bottom: 2px solid #E81111;
}
body.dark-theme #combat #combat-round .encounters h4 {
color: #E81111;
}
body.dark-theme #combat #combat-round .encounters a {
color: #D6D6D6;
}
body.dark-theme #combat #combat-round .encounters a:hover {
color: #E81111;
}
body.dark-theme #combat #combat-tracker li.combatant {
color: white;
}
body.dark-theme #combat #combat-tracker li.combatant:nth-child(even) {
background: rgba(79, 79, 79, 0.5);
}
body.dark-theme #combat #combat-tracker li.combatant h4 {
color: white;
}
body.dark-theme #combat #combat-tracker li.combatant .roll {
color: #D6D6D6;
}
body.dark-theme #combat #combat-tracker li.combatant .roll:hover {
color: #E81111;
}
body.dark-theme #combat #combat-tracker li.combatant .combatant-control {
color: #D6D6D6;
}
body.dark-theme #combat #combat-tracker li.combatant .combatant-control.active {
color: #E81111;
}
body.dark-theme #combat #combat-tracker li.combatant .token-resource {
color: white;
border-right: 1px solid #828282;
}
body.dark-theme #combat #combat-tracker li.combatant.active {
color: #0d99cc;
}
body.dark-theme #combat #combat-tracker li.combatant.active .initiative,
body.dark-theme #combat #combat-tracker li.combatant.active h4 {
color: #0d99cc;
}
body.dark-theme #combat #combat-tracker li.combatant.hidden {
color: white;
}
body.dark-theme #combat #combat-controls {
border-top: 1px solid #0d99cc;
}
body.dark-theme .sidebar-tab .directory-header .header-search i.fa-search {
color: #0d99cc;
}
body.dark-theme .sidebar-tab .directory-header .header-search input {
background: #363636;
}
body.dark-theme .sidebar-tab .subdirectory {
background: #2b2b2b;
}
body.dark-theme .sidebar-tab .subdirectory .folder {
border-left: 2px solid rgba(130, 130, 130, 0.4);
}
body.dark-theme .sidebar-tab .directory-list li + li {
border-top: 1px solid #0d99cc;
}
body.dark-theme .sidebar-tab .directory-list .folder > .folder-header {
background: #2b2b2b;
}
body.dark-theme .sidebar-tab .directory-list .folder > .folder-header h3 {
background: #2b2b2b;
color: white;
}
body.dark-theme .sidebar-tab .directory-list .folder > .folder-header h3 > i {
color: #0d99cc;
}
body.dark-theme .sidebar-tab .directory-list .folder > .folder-header a {
color: #D6D6D6;
}
body.dark-theme .sidebar-tab .directory-list .folder > .folder-header a:hover {
color: #E81111;
}
body.dark-theme .sidebar-tab .directory-list .folder.collapsed > .folder-header {
background: #2b2b2b;
}
body.dark-theme .sidebar-tab .directory-list .folder + .entity {
border-top: 1px solid #0d99cc;
}
body.dark-theme .sidebar-tab .directory-list .actor,
body.dark-theme .sidebar-tab .directory-list .item,
body.dark-theme .sidebar-tab .directory-list .journal,
body.dark-theme .sidebar-tab .directory-list .table {
background: #2b2b2b;
}
body.dark-theme .sidebar-tab .directory-list .actor .entity-name,
body.dark-theme .sidebar-tab .directory-list .item .entity-name,
body.dark-theme .sidebar-tab .directory-list .journal .entity-name,
body.dark-theme .sidebar-tab .directory-list .table .entity-name {
color: #1C1C1C;
}
body.dark-theme .sidebar-tab .directory-list .actor:nth-child(even),
body.dark-theme .sidebar-tab .directory-list .item:nth-child(even),
body.dark-theme .sidebar-tab .directory-list .journal:nth-child(even),
body.dark-theme .sidebar-tab .directory-list .table:nth-child(even) {
background: rgba(79, 79, 79, 0.3);
}
body.dark-theme #scenes .scene {
border-top: 1px solid #0d99cc;
border-left: 4px solid #0d99cc;
}
body.dark-theme #scenes .scene::after {
box-shadow: 0 0 20px #0d99cc inset;
}
body.dark-theme #scenes .scene h3 {
background: #2b2b2b;
}
body.dark-theme #playlists .directory-list li.playlist {
background: #2b2b2b;
}
body.dark-theme #playlists .directory-list li.playlist .playlist-header {
background: #2b2b2b;
color: #E81111;
border-bottom: 2px solid #0d99cc;
}
body.dark-theme #playlists .directory-list li.playlist li.sound {
color: #1C1C1C;
}
body.dark-theme #playlists .directory-list li.playlist a.sound-control {
color: #E81111;
}
body.dark-theme #compendium .compendium-entity {
background: #2b2b2b !important;
}
body.dark-theme #compendium .compendium-entity h3 {
border-bottom: 2px solid #0d99cc;
}
body.dark-theme #compendium .compendium-entity ol.compendium-list li.compendium-pack:nth-child(even) {
background: rgba(79, 79, 79, 0.3);
}
body.dark-theme #compendium .compendium-entity ol.compendium-list li.compendium-pack .pack-title .status-icons {
color: #828282;
}
body.dark-theme #compendium .compendium-entity ol.compendium-list li.compendium-pack footer.compendium-footer {
color: white;
}
body.dark-theme #settings h2 {
color: #E81111;
border-bottom: 2px solid #0d99cc;
}
body.dark-theme #settings #game-details,
body.dark-theme #settings #settings-game,
body.dark-theme #settings #settings-documentation,
body.dark-theme #settings #settings-access {
color: white;
}
body.dark-theme #navigation #nav-toggle {
background: rgba(126, 214, 247, 0.4);
color: white;
transform: rotate(-90deg);
}
body.dark-theme #navigation .nav-item {
border: 1px solid #0d99cc;
}
body.dark-theme #navigation #scene-list .scene {
border: 1px solid #0d99cc;
background: rgba(126, 214, 247, 0.4);
}
body.dark-theme #navigation #scene-list .scene a {
color: white;
}
body.dark-theme #navigation #scene-list .scene.gm {
border: 1px solid #afc6d6;
background: rgba(13, 153, 204, 0.4);
}
body.dark-theme #navigation #scene-list .scene.view,
body.dark-theme #navigation #scene-list .scene.context {
box-shadow: 0 0 8px #07516c;
border-color: #0d99cc;
}
body.dark-theme #navigation #scene-list .scene.active {
border-color: #f46b6b;
background: rgba(232, 17, 17, 0.6);
box-shadow: 0 0 8px #890a0a;
}
body.dark-theme #controls .scene-control,
body.dark-theme #controls .control-tool {
background: rgba(126, 214, 247, 0.4);
color: white;
border: 1px solid #0d99cc;
box-shadow: none;
}
body.dark-theme #controls .scene-control:hover,
body.dark-theme #controls .control-tool:hover {
background: rgba(126, 214, 247, 0.4);
box-shadow: 0 0 8px #07516c;
}
body.dark-theme #controls .scene-control.active,
body.dark-theme #controls .control-tool.active {
border-color: #f46b6b;
background: rgba(232, 17, 17, 0.6);
box-shadow: 0 0 8px #890a0a;
}
body.dark-theme #players {
border: none;
border-radius: 4px;
}
body.dark-theme #players h3 {
background: #2b2b2b;
border: none;
margin: 0;
padding: 0 8px;
font-size: 17px;
line-height: 30px;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
border-radius: 4px 4px 0 0;
}
body.dark-theme #players h3 .players-mode {
color: #828282;
}
body.dark-theme #players ol {
margin: 4px 0;
}
body.dark-theme #players ol .player-name.self {
color: inherit;
font-weight: 700;
}
body.dark-theme #players ol .player {
color: white;
}
body.dark-theme #players ol .player-active {
margin-top: 7px;
}
body.dark-theme #players ol .player-active.active {
box-shadow: none;
}
body.dark-theme .window-app {
border-radius: 4px;
border: none;
box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
}
body.dark-theme .window-app > header {
background: #2b2b2b;
border-radius: 4px 4px 0 0;
border: none;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
margin-bottom: 4px;
}
body.dark-theme .window-app .window-content {
background: linear-gradient(90deg, #626262 0, #4d4d4d 30%, #4d4d4d 70%, #626262);
color: white;
}
body.dark-theme .window-app .window-content footer {
margin-top: 8px;
}
body.dark-theme .window-app.minimized > header,
body.dark-theme .window-app.minimized > .window-header {
border: none;
border-radius: 4px;
margin: 0;
}
body.dark-theme #client-settings nav.tabs {
border: none;
font-size: 17px;
line-height: 1.6;
}
body.dark-theme #client-settings nav.tabs a.item {
border-bottom: 3px solid transparent;
color: white;
}
body.dark-theme #client-settings nav.tabs a.item:hover {
text-decoration: none;
}
body.dark-theme #client-settings nav.tabs a.item.active {
text-shadow: none;
border-bottom-color: #E81111;
}
body.dark-theme #client-settings section.content {
border: none;
margin-top: 4px;
}
body.dark-theme .panel {
background: white;
}
body.dark-theme .sw5e.sheet .window-content {
color: #1C1C1C;
background: linear-gradient(90deg, #afc6d6 0, #d6d6d6 30%, #d6d6d6 70%, #afc6d6);
}
body.dark-theme .sw5e.sheet .window-content input,
body.dark-theme .sw5e.sheet .window-content select {
color: #1C1C1C;
}
body.dark-theme .sw5e.sheet .window-content input:hover,
body.dark-theme .sw5e.sheet .window-content select:hover {
border-color: #4f4f4f;
}
body.dark-theme .sw5e.sheet .window-content input:focus,
body.dark-theme .sw5e.sheet .window-content select:focus {
border-color: #E81111;
}
body.dark-theme .sw5e.sheet .window-content button:hover,
body.dark-theme .sw5e.sheet .window-content button:focus {
border-color: #E81111;
}
body.dark-theme .sw5e.sheet.actor {
color: #1C1C1C;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet section > h1 {
border-bottom: 2px solid #0d99cc;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header h1.character-name {
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header h1.character-name input[type="text"] {
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .level-experience .xpbar {
border: 1px solid #4f4f4f;
background-color: #afc6d6;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .level-experience .xpbar .bar {
background-color: #0d99cc;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .summary input,
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .summary .proficiency {
color: #4f4f4f;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .attributes .attribute-value,
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .attributes .attribute-value input {
color: #4f4f4f;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .attributes .attribute-value .value-separator {
color: #828282;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer button {
border: 1px solid #D6D6D6;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer button:hover {
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer.hit-points button,
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer.hit-dice button,
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer.initiative button {
border: 1px solid #D6D6D6;
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer.hit-points button:hover,
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer.hit-dice button:hover,
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer.initiative button:hover {
border-color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item {
color: #4f4f4f;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item.active {
color: #E81111;
border-bottom-color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item.active:hover {
background: rgba(79, 79, 79, 0.1);
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item:hover {
background: rgba(79, 79, 79, 0.1);
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .filter-list .filter-item {
border-bottom: 2px solid #828282;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .filter-list .filter-item:hover {
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .filter-list .filter-item.active {
color: #E81111;
border-bottom-color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list-header {
background: #f0f0f0;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list-title {
border-bottom: 1px solid #0d99cc;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list-header .item-detail,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list .item-detail {
border-left: 1px solid #D6D6D6;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item:nth-child(even),
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item:nth-child(even) {
background-color: #f0f0f0;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item h4,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item h4 {
color: #1C1C1C;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item .item-name .item-image::before,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item .item-name .item-image::before {
color: #4f4f4f;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item .item-name.rollable:hover .item-image:hover::before,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item .item-name.rollable:hover .item-image:hover::before {
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item .item-control:hover,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item .item-control:hover {
color: #E81111 !important;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item .item-control.item-toggle,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item .item-control.item-toggle {
color: #828282;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item .item-control.item-toggle.active,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item .item-control.item-toggle.active {
color: #1C1C1C;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li {
border: 1px solid #D6D6D6;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li h2:hover {
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li .ability-score {
color: #4f4f4f;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li .ability-modifiers .ability-mod,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li .ability-modifiers .ability-save {
border-color: #D6D6D6;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .skills li:nth-child(even) {
background-color: #f0f0f0;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .skills li .skill-name:hover {
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources nav button {
color: #4f4f4f;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources nav button.active {
color: #E81111;
border-bottom-color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources nav button.active:hover {
background: rgba(232, 17, 17, 0.1);
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources nav button:hover {
background: rgba(79, 79, 79, 0.1);
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits .trait-selector i.fas {
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits .languages label:hover {
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .resource-items .resource h1 input {
color: #E81111;
border-bottom: 2px solid #0d99cc;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .resource-items .resource .attribute-value,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .resource-items .resource .attribute-value input {
color: #4f4f4f;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .resource-items .resource .attribute-value .value-separator {
color: #828282;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .counters .counter h4.rollable:hover {
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .counters .counter .death-success i {
color: #0dce0d;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .counters .counter .death-fail i {
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.inventory .currency {
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.inventory .encumbrance-wrapper .encumbrance-label {
background: #D6D6D6;
color: #1C1C1C;
border: 1px solid #1C1C1C;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.inventory .encumbrance-wrapper .encumbrance {
background: #afc6d6;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.inventory .encumbrance-wrapper .encumbrance .encumbrance-bar {
background: #0d99cc;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability label,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability h3 {
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability label span,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability h3 span {
color: #1C1C1C;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.notes section > input {
color: #E81111;
border-bottom: 2px solid #0d99cc;
}

1567
sw5e-global.css Normal file

File diff suppressed because it is too large Load diff

733
sw5e-light.css Normal file
View file

@ -0,0 +1,733 @@
/* ----------------------------------------- */
/* Fonts */
/* ----------------------------------------- */
/* ----------------------------------------- */
/* Sheet Styles */
/* ----------------------------------------- */
body.light-theme {
/*-----------
** Chat Tab
-----------*/
/*-----------
** Combat Tab
-----------*/
/*
** Folders
*/
}
body.light-theme .app {
background: linear-gradient(90deg, #afc6d6 0, #d6d6d6 30%, #d6d6d6 70%, #afc6d6);
}
body.light-theme h1,
body.light-theme h2,
body.light-theme h3,
body.light-theme h4,
body.light-theme h5,
body.light-theme h6 {
color: #c40f0f;
}
body.light-theme h3 {
border-bottom: 2px solid #0d99cc;
}
body.light-theme a {
color: #c40f0f;
text-decoration: none;
}
body.light-theme a:hover,
body.light-theme a:active {
text-shadow: none;
text-decoration: underline;
}
body.light-theme blockquote {
padding: 4px 8px;
background-color: #afc6d6;
border: 1px solid #0d99cc;
box-shadow: 0 0 20px rgba(13, 153, 204, 0.8);
}
body.light-theme hr {
border-width: 0 0 1px 0;
border-bottom: 1px solid #0d99cc;
}
body.light-theme input[type="text"],
body.light-theme input[type="number"],
body.light-theme input[type="password"],
body.light-theme input[type="date"],
body.light-theme input[type="time"],
body.light-theme select,
body.light-theme textarea {
border: 1px solid #828282;
color: #1C1C1C;
}
body.light-theme input[type="text"]:hover,
body.light-theme input[type="number"]:hover,
body.light-theme input[type="password"]:hover,
body.light-theme input[type="date"]:hover,
body.light-theme input[type="time"]:hover,
body.light-theme select:hover,
body.light-theme textarea:hover {
border-color: #4f4f4f;
}
body.light-theme input[type="text"]:focus,
body.light-theme input[type="number"]:focus,
body.light-theme input[type="password"]:focus,
body.light-theme input[type="date"]:focus,
body.light-theme input[type="time"]:focus,
body.light-theme select:focus,
body.light-theme textarea:focus {
border-color: #c40f0f;
}
body.light-theme input[type="text"]::placeholder,
body.light-theme input[type="number"]::placeholder,
body.light-theme input[type="password"]::placeholder,
body.light-theme input[type="date"]::placeholder,
body.light-theme input[type="time"]::placeholder,
body.light-theme select::placeholder,
body.light-theme textarea::placeholder {
color: #1C1C1C;
opacity: 0.5;
}
body.light-theme input[type="text"] ::-ms-input-placeholder,
body.light-theme input[type="number"] ::-ms-input-placeholder,
body.light-theme input[type="password"] ::-ms-input-placeholder,
body.light-theme input[type="date"] ::-ms-input-placeholder,
body.light-theme input[type="time"] ::-ms-input-placeholder,
body.light-theme select ::-ms-input-placeholder,
body.light-theme textarea ::-ms-input-placeholder {
/* Microsoft Edge */
color: #1C1C1C;
opacity: 0.5;
}
body.light-theme button,
body.light-theme input[type="button"],
body.light-theme input[type="submit"],
body.light-theme input[type="reset"] {
background: #c40f0f;
color: white;
}
body.light-theme button:hover,
body.light-theme input[type="button"]:hover,
body.light-theme input[type="submit"]:hover,
body.light-theme input[type="reset"]:hover,
body.light-theme button:focus,
body.light-theme input[type="button"]:focus,
body.light-theme input[type="submit"]:focus,
body.light-theme input[type="reset"]:focus {
background: #dc1111;
}
body.light-theme button:disabled:hover,
body.light-theme input[type="button"]:disabled:hover,
body.light-theme input[type="submit"]:disabled:hover,
body.light-theme input[type="reset"]:disabled:hover,
body.light-theme button:disabled:focus,
body.light-theme input[type="button"]:disabled:focus,
body.light-theme input[type="submit"]:disabled:focus,
body.light-theme input[type="reset"]:disabled:focus {
background: #c40f0f;
}
body.light-theme input[type="reset"],
body.light-theme button.secondary,
body.light-theme button[type="reset"],
body.light-theme input[type="button"].secondary,
body.light-theme input[type="submit"].secondary {
background: #D6D6D6;
color: #1C1C1C;
}
body.light-theme input[type="reset"]:hover,
body.light-theme button.secondary:hover,
body.light-theme button[type="reset"]:hover,
body.light-theme input[type="button"].secondary:hover,
body.light-theme input[type="submit"].secondary:hover {
background: #e3e3e3;
}
body.light-theme input[type="reset"]:disabled:hover,
body.light-theme button.secondary:disabled:hover,
body.light-theme button[type="reset"]:disabled:hover,
body.light-theme input[type="button"].secondary:disabled:hover,
body.light-theme input[type="submit"].secondary:disabled:hover,
body.light-theme input[type="reset"]:disabled:focus,
body.light-theme button.secondary:disabled:focus,
body.light-theme button[type="reset"]:disabled:focus,
body.light-theme input[type="button"].secondary:disabled:focus,
body.light-theme input[type="submit"].secondary:disabled:focus {
background: #D6D6D6;
}
body.light-theme form button {
border: none;
}
body.light-theme form .notes,
body.light-theme form .hint {
color: rgba(28, 28, 28, 0.8);
}
body.light-theme #sidebar-tabs {
background: white;
}
body.light-theme #sidebar-tabs > .collapse {
color: #c40f0f;
}
body.light-theme #sidebar-tabs .item.active {
color: #c40f0f;
border-bottom: 3px solid #c40f0f;
}
body.light-theme #chat-log .chat-message {
background: white;
color: #1C1C1C;
}
body.light-theme #chat-log .chat-message > header {
color: #c40f0f;
border-bottom: 2px solid #0d99cc;
}
body.light-theme #chat-log .chat-message > header span {
color: #1C1C1C;
}
body.light-theme .notification-pip {
color: #0d99cc;
}
body.light-theme .sw5e.chat-card .card-header h3 {
color: #1C1C1C;
}
body.light-theme .sw5e.chat-card .card-header h3:hover {
color: #1C1C1C;
}
body.light-theme .sw5e.chat-card .card-buttons span {
border: 1px solid #828282;
}
body.light-theme .sw5e.chat-card .card-footer {
border-top: 1px solid #7ed6f7;
}
body.light-theme .sw5e.chat-card .card-footer span {
border-right: 1px solid #D6D6D6;
}
body.light-theme .sw5e.chat-card .card-footer span:last-child {
border-right: none;
}
body.light-theme .dice-roll .dice-formula {
background: #D6D6D6;
color: #1C1C1C;
box-shadow: none;
border-radius: 4px;
}
body.light-theme .dice-roll .dice-total {
background: #afc6d6;
border: 1px solid #0d99cc;
box-shadow: 0 0 12px rgba(13, 153, 204, 0.8);
}
body.light-theme .dice-roll .dice-total.success {
color: #0dce0d;
}
body.light-theme .dice-roll .dice-total.failure {
color: #c40f0f;
}
body.light-theme .dice-roll .dice-total.critical {
color: #0dce0d;
background: #bcdcbe;
box-shadow: 0 0 12px rgba(13, 206, 13, 0.5);
}
body.light-theme .dice-roll .dice-total.fumble {
color: #c40f0f;
background: #FBF4F4;
box-shadow: 0 0 12px rgba(196, 15, 15, 0.5);
}
body.light-theme #chat-controls .roll-type-select {
background: white;
}
body.light-theme #chat-controls label {
color: #1C1C1C;
}
body.light-theme #chat-form textarea {
background: white;
}
body.light-theme #combat #combat-round {
color: #c40f0f;
border-bottom: 2px solid #c40f0f;
}
body.light-theme #combat #combat-round .encounters h4 {
color: #c40f0f;
}
body.light-theme #combat #combat-round .encounters a {
color: #4f4f4f;
}
body.light-theme #combat #combat-round .encounters a:hover {
color: #c40f0f;
}
body.light-theme #combat #combat-tracker li.combatant {
color: #1C1C1C;
}
body.light-theme #combat #combat-tracker li.combatant:nth-child(even) {
background: rgba(175, 198, 214, 0.5);
}
body.light-theme #combat #combat-tracker li.combatant h4 {
color: #1C1C1C;
}
body.light-theme #combat #combat-tracker li.combatant .roll {
color: #4f4f4f;
}
body.light-theme #combat #combat-tracker li.combatant .roll:hover {
color: #c40f0f;
}
body.light-theme #combat #combat-tracker li.combatant .combatant-control {
color: #828282;
}
body.light-theme #combat #combat-tracker li.combatant .combatant-control.active {
color: #363636;
}
body.light-theme #combat #combat-tracker li.combatant .token-resource {
color: #4f4f4f;
border-right: 1px solid #828282;
}
body.light-theme #combat #combat-tracker li.combatant.active {
color: #0d99cc;
}
body.light-theme #combat #combat-tracker li.combatant.active .initiative,
body.light-theme #combat #combat-tracker li.combatant.active h4 {
color: #0d99cc;
}
body.light-theme #combat #combat-tracker li.combatant.hidden {
color: #1C1C1C;
}
body.light-theme #combat #combat-controls {
border-top: 1px solid #0d99cc;
}
body.light-theme .sidebar-tab .directory-header .header-search i.fa-search {
color: #0d99cc;
}
body.light-theme .sidebar-tab .directory-header .header-search input {
background: white;
}
body.light-theme .sidebar-tab .subdirectory {
background: white;
}
body.light-theme .sidebar-tab .subdirectory .folder {
border-left: 2px solid rgba(28, 28, 28, 0.4);
}
body.light-theme .sidebar-tab .directory-list li + li {
border-top: 1px solid #0d99cc;
}
body.light-theme .sidebar-tab .directory-list .folder > .folder-header {
background: white;
}
body.light-theme .sidebar-tab .directory-list .folder > .folder-header h3 {
background: white;
color: #1C1C1C;
}
body.light-theme .sidebar-tab .directory-list .folder > .folder-header h3 > i {
color: #0d99cc;
}
body.light-theme .sidebar-tab .directory-list .folder > .folder-header a {
color: #4f4f4f;
}
body.light-theme .sidebar-tab .directory-list .folder > .folder-header a:hover {
color: #c40f0f;
}
body.light-theme .sidebar-tab .directory-list .folder.collapsed > .folder-header {
background: white;
}
body.light-theme .sidebar-tab .directory-list .folder + .entity {
border-top: 1px solid #0d99cc;
}
body.light-theme .sidebar-tab .directory-list .actor,
body.light-theme .sidebar-tab .directory-list .item,
body.light-theme .sidebar-tab .directory-list .journal,
body.light-theme .sidebar-tab .directory-list .table {
background: white;
}
body.light-theme .sidebar-tab .directory-list .actor .entity-name,
body.light-theme .sidebar-tab .directory-list .item .entity-name,
body.light-theme .sidebar-tab .directory-list .journal .entity-name,
body.light-theme .sidebar-tab .directory-list .table .entity-name {
color: #1C1C1C;
}
body.light-theme .sidebar-tab .directory-list .actor:nth-child(even),
body.light-theme .sidebar-tab .directory-list .item:nth-child(even),
body.light-theme .sidebar-tab .directory-list .journal:nth-child(even),
body.light-theme .sidebar-tab .directory-list .table:nth-child(even) {
background: rgba(175, 198, 214, 0.3);
}
body.light-theme #scenes .scene {
border-top: 1px solid #0d99cc;
border-left: 4px solid #0d99cc;
}
body.light-theme #scenes .scene::after {
box-shadow: 0 0 20px #0d99cc inset;
}
body.light-theme #scenes .scene h3 {
background: white;
}
body.light-theme #playlists .directory-list li.playlist {
background: white;
}
body.light-theme #playlists .directory-list li.playlist .playlist-header {
background: white;
color: #c40f0f;
border-bottom: 2px solid #0d99cc;
}
body.light-theme #playlists .directory-list li.playlist li.sound {
color: #1C1C1C;
}
body.light-theme #playlists .directory-list li.playlist a.sound-control {
color: #c40f0f;
}
body.light-theme #compendium .compendium-entity {
background: white !important;
}
body.light-theme #compendium .compendium-entity h3 {
border-bottom: 2px solid #0d99cc;
}
body.light-theme #compendium .compendium-entity ol.compendium-list li.compendium-pack:nth-child(even) {
background: rgba(175, 198, 214, 0.3);
}
body.light-theme #compendium .compendium-entity ol.compendium-list li.compendium-pack .pack-title .status-icons {
color: #828282;
}
body.light-theme #compendium .compendium-entity ol.compendium-list li.compendium-pack footer.compendium-footer {
color: #1C1C1C;
}
body.light-theme #settings h2 {
color: #c40f0f;
border-bottom: 2px solid #0d99cc;
}
body.light-theme #settings #game-details,
body.light-theme #settings #settings-game,
body.light-theme #settings #settings-documentation,
body.light-theme #settings #settings-access {
color: #1C1C1C;
}
body.light-theme #navigation #nav-toggle {
background: rgba(126, 214, 247, 0.4);
color: white;
transform: rotate(-90deg);
}
body.light-theme #navigation .nav-item {
border: 1px solid #0d99cc;
}
body.light-theme #navigation #scene-list .scene {
border: 1px solid #0d99cc;
background: rgba(126, 214, 247, 0.4);
}
body.light-theme #navigation #scene-list .scene a {
color: white;
}
body.light-theme #navigation #scene-list .scene.gm {
border: 1px solid #afc6d6;
background: rgba(13, 153, 204, 0.4);
}
body.light-theme #navigation #scene-list .scene.view,
body.light-theme #navigation #scene-list .scene.context {
box-shadow: 0 0 8px #07516c;
border-color: #0d99cc;
}
body.light-theme #navigation #scene-list .scene.active {
border-color: #f14848;
background: rgba(196, 15, 15, 0.6);
box-shadow: 0 0 8px #650808;
}
body.light-theme #controls .scene-control,
body.light-theme #controls .control-tool {
background: rgba(126, 214, 247, 0.4);
color: white;
border: 1px solid #0d99cc;
box-shadow: none;
}
body.light-theme #controls .scene-control:hover,
body.light-theme #controls .control-tool:hover {
background: rgba(126, 214, 247, 0.4);
box-shadow: 0 0 8px #07516c;
}
body.light-theme #controls .scene-control.active,
body.light-theme #controls .control-tool.active {
border-color: #f14848;
background: rgba(196, 15, 15, 0.6);
box-shadow: 0 0 8px #650808;
}
body.light-theme #players {
border: none;
border-radius: 4px;
}
body.light-theme #players h3 {
background: white;
border: none;
margin: 0;
padding: 0 8px;
font-size: 17px;
line-height: 30px;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
border-radius: 4px 4px 0 0;
}
body.light-theme #players h3 .players-mode {
color: #828282;
}
body.light-theme #players ol {
margin: 4px 0;
}
body.light-theme #players ol .player-name.self {
color: inherit;
font-weight: 700;
}
body.light-theme #players ol .player {
color: #1C1C1C;
}
body.light-theme #players ol .player-active {
margin-top: 7px;
}
body.light-theme #players ol .player-active.active {
box-shadow: none;
}
body.light-theme .window-app {
border-radius: 4px;
border: none;
box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
}
body.light-theme .window-app > header {
background: white;
border-radius: 4px 4px 0 0;
border: none;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
margin-bottom: 4px;
}
body.light-theme .window-app .window-content {
background: linear-gradient(90deg, #afc6d6 0, #d6d6d6 30%, #d6d6d6 70%, #afc6d6);
color: #1C1C1C;
}
body.light-theme .window-app .window-content footer {
margin-top: 8px;
}
body.light-theme .window-app.minimized > header,
body.light-theme .window-app.minimized > .window-header {
border: none;
border-radius: 4px;
margin: 0;
}
body.light-theme #client-settings nav.tabs {
border: none;
font-size: 17px;
line-height: 1.6;
}
body.light-theme #client-settings nav.tabs a.item {
border-bottom: 3px solid transparent;
color: #1C1C1C;
}
body.light-theme #client-settings nav.tabs a.item:hover {
text-decoration: none;
}
body.light-theme #client-settings nav.tabs a.item.active {
text-shadow: none;
border-bottom-color: #c40f0f;
}
body.light-theme #client-settings section.content {
border: none;
margin-top: 4px;
}
body.light-theme .panel {
background: white;
}
body.light-theme .sw5e.sheet .window-content {
color: #1C1C1C;
background: linear-gradient(90deg, #afc6d6 0, #d6d6d6 30%, #d6d6d6 70%, #afc6d6);
}
body.light-theme .sw5e.sheet .window-content input,
body.light-theme .sw5e.sheet .window-content select {
color: #1C1C1C;
}
body.light-theme .sw5e.sheet .window-content input:hover,
body.light-theme .sw5e.sheet .window-content select:hover {
border-color: #4f4f4f;
}
body.light-theme .sw5e.sheet .window-content input:focus,
body.light-theme .sw5e.sheet .window-content select:focus {
border-color: #c40f0f;
}
body.light-theme .sw5e.sheet .window-content button:hover,
body.light-theme .sw5e.sheet .window-content button:focus {
border-color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor {
color: #1C1C1C;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet section > h1 {
border-bottom: 2px solid #0d99cc;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header h1.character-name {
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header h1.character-name input[type="text"] {
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header .level-experience .xpbar {
border: 1px solid #4f4f4f;
background-color: #afc6d6;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header .level-experience .xpbar .bar {
background-color: #0d99cc;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header .summary input,
body.light-theme .sw5e.sheet.actor .swalt-sheet header .summary .proficiency {
color: #4f4f4f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header .attributes .attribute-value,
body.light-theme .sw5e.sheet.actor .swalt-sheet header .attributes .attribute-value input {
color: #4f4f4f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header .attributes .attribute-value .value-separator {
color: #828282;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer button {
border: 1px solid #D6D6D6;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer button:hover {
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer.hit-points button,
body.light-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer.hit-dice button,
body.light-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer.initiative button {
border: 1px solid #D6D6D6;
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer.hit-points button:hover,
body.light-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer.hit-dice button:hover,
body.light-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer.initiative button:hover {
border-color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item {
color: #4f4f4f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item.active {
color: #c40f0f;
border-bottom-color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item.active:hover {
background: rgba(79, 79, 79, 0.1);
}
body.light-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item:hover {
background: rgba(79, 79, 79, 0.1);
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .filter-list .filter-item {
border-bottom: 2px solid #828282;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .filter-list .filter-item:hover {
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .filter-list .filter-item.active {
color: #c40f0f;
border-bottom-color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list-header {
background: #f0f0f0;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list-title {
border-bottom: 1px solid #0d99cc;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list-header .item-detail,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list .item-detail {
border-left: 1px solid #D6D6D6;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item:nth-child(even),
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item:nth-child(even) {
background-color: #f0f0f0;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item h4,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item h4 {
color: #1C1C1C;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item .item-name .item-image::before,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item .item-name .item-image::before {
color: #4f4f4f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item .item-name.rollable:hover .item-image:hover::before,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item .item-name.rollable:hover .item-image:hover::before {
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item .item-control:hover,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item .item-control:hover {
color: #c40f0f !important;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item .item-control.item-toggle,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item .item-control.item-toggle {
color: #828282;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item .item-control.item-toggle.active,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item .item-control.item-toggle.active {
color: #1C1C1C;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li {
border: 1px solid #D6D6D6;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li h2:hover {
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li .ability-score {
color: #4f4f4f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li .ability-modifiers .ability-mod,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li .ability-modifiers .ability-save {
border-color: #D6D6D6;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .skills li:nth-child(even) {
background-color: #f0f0f0;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .skills li .skill-name:hover {
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources nav button {
color: #4f4f4f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources nav button.active {
color: #c40f0f;
border-bottom-color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources nav button.active:hover {
background: rgba(196, 15, 15, 0.1);
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources nav button:hover {
background: rgba(79, 79, 79, 0.1);
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits .trait-selector i.fas {
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits .languages label:hover {
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .resource-items .resource h1 input {
color: #c40f0f;
border-bottom: 2px solid #0d99cc;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .resource-items .resource .attribute-value,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .resource-items .resource .attribute-value input {
color: #4f4f4f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .resource-items .resource .attribute-value .value-separator {
color: #828282;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .counters .counter h4.rollable:hover {
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .counters .counter .death-success i {
color: #0dce0d;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .counters .counter .death-fail i {
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.inventory .currency {
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.inventory .encumbrance-wrapper .encumbrance-label {
background: #D6D6D6;
color: #1C1C1C;
border: 1px solid #1C1C1C;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.inventory .encumbrance-wrapper .encumbrance {
background: #afc6d6;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.inventory .encumbrance-wrapper .encumbrance .encumbrance-bar {
background: #0d99cc;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability label,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability h3 {
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability label span,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability h3 span {
color: #1C1C1C;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.notes section > input {
color: #c40f0f;
border-bottom: 2px solid #0d99cc;
}

757
sw5e-update.css Normal file
View file

@ -0,0 +1,757 @@
/* ----------------------------------------- */
/* Fonts */
/* ----------------------------------------- */
/* russo-one-regular - latin */
@font-face {
font-family: 'Russo One';
font-style: normal;
font-weight: 400;
src: url('./fonts/RussoOne.ttf');
}
@font-face {
font-family: 'Russo One';
font-style: italic;
font-weight: 400;
src: url('./fonts/RussoOne.ttf');
}
@font-face {
font-family: 'Russo One';
font-style: normal;
font-weight: 700;
src: url('./fonts/RussoOne.ttf');
}
/* open-sans-regular - latin */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 400;
src: url('./fonts/OpenSans-Regular.ttf');
}
@font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: 400;
src: url('./fonts/OpenSans-Italic.ttf');
}
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: url('./fonts/OpenSans-Bold.ttf');
}
@font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: 700;
src: url('./fonts/OpenSans-BoldItalic.ttf');
}
/* ----------------------------------------- */
/* Sheet Styles */
/* ----------------------------------------- */
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
::-webkit-scrollbar-track {
border: 1px solid #0d99cc;
border-radius: 4px;
}
::-webkit-scrollbar-thumb {
outline: none;
border-radius: 4px;
background: #0d99cc;
border: none;
}
:root {
scrollbar-width: thin;
scrollbar-color: #0d99cc #afc6d6;
}
body {
font-family: 'Open Sans';
font-size: 13px;
font-weight: 400;
}
h1 {
font-family: 'Russo One';
font-size: 34px;
font-weight: 400;
}
h2 {
font-family: 'Russo One';
font-size: 27px;
font-weight: 400;
}
h3 {
font-family: 'Russo One';
font-size: 21px;
font-weight: 400;
}
h4 {
font-family: 'Russo One';
font-size: 17px;
font-weight: 400;
}
h5,
h6 {
font-family: 'Russo One';
font-size: 13px;
font-weight: 400;
}
a {
color: #c40f0f;
text-decoration: none;
}
a:hover,
a:active {
text-shadow: none;
text-decoration: underline;
}
.app {
background: linear-gradient(90deg, #afc6d6 0%, #D6D6D6 30%, #D6D6D6 70%, #afc6d6);
border: none;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
}
#context-menu {
background: none;
border: none;
border-radius: 0;
color: #1C1C1C;
padding: 0 8px;
}
#context-menu ol.context-items {
background: white;
border-radius: 4px;
border: 1px solid #828282;
box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
}
#context-menu ol.context-items li.context-item:first-child {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
#context-menu ol.context-items li.context-item:last-child {
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
}
#context-menu ol.context-items li.context-item i {
color: #0d99cc;
}
#context-menu ol.context-items li.context-item:hover {
background: #c40f0f;
color: white;
text-shadow: none;
cursor: pointer;
}
#context-menu ol.context-items li.context-item:hover i {
color: white;
}
#context-menu ol.context-items li.context-item + li {
border-top: 1px solid #D6D6D6;
}
input[type="text"],
input[type="number"],
input[type="password"],
input[type="date"],
input[type="time"],
select,
textarea {
border: 1px solid #828282;
border-radius: 4px;
color: #1C1C1C;
transition: all 0.3s;
}
input[type="text"]:hover,
input[type="number"]:hover,
input[type="password"]:hover,
input[type="date"]:hover,
input[type="time"]:hover,
select:hover,
textarea:hover {
border-color: #4f4f4f;
box-shadow: none;
}
input[type="text"]:focus,
input[type="number"]:focus,
input[type="password"]:focus,
input[type="date"]:focus,
input[type="time"]:focus,
select:focus,
textarea:focus {
border-color: #c40f0f;
box-shadow: none;
}
input[type=range] {
-webkit-appearance: none;
/* Hides the slider so that custom slider can be made */
width: 100%;
/* Specific width is required for Firefox. */
background: transparent;
/* Otherwise white in Chrome */
}
input[type=range]::-webkit-slider-thumb {
-webkit-appearance: none;
background: #c40f0f;
width: 12px;
height: 12px;
border-radius: 32px;
cursor: pointer;
box-shadow: none;
}
input[type=range]::-moz-range-thumb {
-webkit-appearance: none;
background: #c40f0f;
width: 12px;
height: 12px;
border-radius: 32px;
cursor: pointer;
box-shadow: none;
}
input[type=range]::-ms-thumb {
-webkit-appearance: none;
background: #c40f0f;
width: 12px;
height: 12px;
border-radius: 32px;
cursor: pointer;
box-shadow: none;
}
input[type=range]::-webkit-slider-runnable-track {
width: 100%;
height: 6px;
cursor: pointer;
background: #7ed6f7;
border-radius: 4px;
border: 1px solid #0d99cc;
box-shadow: none;
}
input[type=range]:focus::-webkit-slider-runnable-track {
background: #0d99cc;
}
input[type=range]::-moz-range-track {
width: 100%;
height: 6px;
cursor: pointer;
background: #7ed6f7;
border-radius: 4px;
border: 1px solid #0d99cc;
box-shadow: none;
}
input[type=range]::-ms-track {
width: 100%;
height: 6px;
cursor: pointer;
background: #7ed6f7;
border-radius: 4px;
border: 1px solid #0d99cc;
box-shadow: none;
}
input[type=range]:focus {
outline: none;
/* Removes the blue border. You should probably do some kind of focus styling for accessibility reasons though. */
}
input[type=range]::-ms-track {
width: 100%;
cursor: pointer;
/* Hides the slider so custom styles can be added */
background: transparent;
border-color: transparent;
color: transparent;
}
button {
font-family: 'Open Sans';
font-size: 13px;
font-weight: 700;
background: #c40f0f;
color: white;
text-align: center;
border: none;
border-radius: 4px;
cursor: pointer;
transition: all 0.3s;
}
button:hover,
button:focus {
box-shadow: none;
background: #dc1111;
}
#sidebar {
border: none;
}
#sidebar-tabs {
border: none;
box-shadow: none;
background: white;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
}
#sidebar-tabs > .collapse {
color: #c40f0f;
}
#sidebar-tabs .item {
font-size: 16px;
}
#sidebar-tabs .item.active {
color: #c40f0f;
border: none;
border-bottom: 3px solid #c40f0f;
box-shadow: none;
background: none;
text-shadow: none;
}
/*-----------
** Chat Tab
-----------*/
#chat-log .chat-message {
background: white;
border: none;
border-radius: 4px;
margin-bottom: 8px;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
}
#chat-log .chat-message > header {
color: #c40f0f;
border-bottom: 2px solid #0d99cc;
margin-bottom: 4px;
}
#chat-log .chat-message > header span {
color: #1C1C1C;
}
.notification-pip {
color: #0d99cc;
text-shadow: none;
}
.sw5e.chat-card {
font-size: 13px;
}
.sw5e.chat-card .card-header {
padding: 0;
border: none;
}
.sw5e.chat-card .card-header img {
flex: 0 0 36px;
margin-right: 4px;
}
.sw5e.chat-card .card-header h3 {
flex: 1;
margin: 0;
line-height: 36px;
font-family: 'Russo One';
font-size: 17px;
font-weight: 400;
color: #1C1C1C;
}
.sw5e.chat-card .card-header h3:hover {
color: #1C1C1C;
text-shadow: none;
}
.sw5e.chat-card .card-content {
margin: 4px 0;
}
.sw5e.chat-card .card-content h3 {
font-size: 12px;
margin: 0;
font-weight: bold;
}
.sw5e.chat-card .card-content > * {
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
}
.sw5e.chat-card .card-buttons {
margin: 4px 0;
}
.sw5e.chat-card .card-buttons span {
display: block;
line-height: 28px;
text-align: center;
border: 1px solid #828282;
}
.sw5e.chat-card .card-buttons button {
font-family: 'Open Sans';
font-size: 13px;
font-weight: 700;
padding: 4px 0;
height: auto;
line-height: 1.6;
margin: 4px 0;
background: #c40f0f;
border: none;
border-radius: 4px;
}
.sw5e.chat-card .card-buttons button:hover,
.sw5e.chat-card .card-buttons button:focus {
background-color: #dc1111;
box-shadow: none;
}
.sw5e.chat-card .card-footer {
padding: 4px 0 0;
border-top: 1px solid #7ed6f7;
}
.sw5e.chat-card .card-footer span {
border-right: 2px groove #FFF;
padding: 0 4px 0 0;
font-size: 10px;
}
.sw5e.chat-card .card-footer span:last-child {
border-right: none;
padding-right: 0;
}
.dice-roll .dice-formula {
background: none;
border: none;
}
.dice-roll .dice-total {
background: #afc6d6;
border: 1px solid #0d99cc;
border-radius: 0;
padding: 4px 0;
box-shadow: 0 0 12px rgba(13, 153, 204, 0.5);
}
.dice-roll .dice-total.success {
color: inherit;
background: #c7d0c0;
border: 1px solid #006c00;
}
.dice-roll .dice-total.failure {
color: inherit;
background: #ffdddd;
border: 1px solid #6e0000;
}
.dice-roll .dice-total.critical {
color: #0dce0d;
background: #bcdcbe;
box-shadow: 0 0 12px rgba(13, 206, 13, 0.5);
}
.dice-roll .dice-total.fumble {
color: red;
}
#chat-controls {
padding-top: 4px;
}
#chat-controls label {
color: #1C1C1C;
}
#chat-form textarea {
background: white;
}
#chat-form textarea:focus {
box-shadow: none;
outline: none;
}
/*-----------
** Combat Tab
-----------*/
#combat #combat-round {
color: #c40f0f;
border-bottom: 2px solid #0d99cc;
}
#combat #combat-round .encounters h4 {
color: #c40f0f;
}
#combat #combat-round .encounters a {
color: #4f4f4f;
}
#combat #combat-round .encounters a:hover {
color: #c40f0f;
}
#combat #combat-tracker li.combatant {
padding: 4px 0;
color: #1C1C1C;
background: none;
}
#combat #combat-tracker li.combatant:nth-child(even) {
background: rgba(175, 198, 214, 0.5);
}
#combat #combat-tracker li.combatant h4 {
color: #1C1C1C;
text-shadow: none;
}
#combat #combat-tracker li.combatant .roll {
background: none;
color: #4f4f4f;
}
#combat #combat-tracker li.combatant .roll::before {
content: "\f6cf";
font-family: "Font Awesome 5 Free";
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
font-weight: 900;
font-size: 28px;
}
#combat #combat-tracker li.combatant .roll:hover {
color: #c40f0f;
}
#combat #combat-tracker li.combatant .combatant-control {
color: #828282;
text-shadow: none;
}
#combat #combat-tracker li.combatant .combatant-control.active {
color: #363636;
}
#combat #combat-tracker li.combatant .token-resource {
color: #4f4f4f;
border-right: 1px solid #828282;
}
#combat #combat-tracker li.combatant .initiative {
text-shadow: none;
}
#combat #combat-tracker li.combatant.active {
color: #0d99cc;
}
#combat #combat-tracker li.combatant.active .initiative,
#combat #combat-tracker li.combatant.active h4 {
color: #0d99cc;
}
#combat #combat-tracker li.combatant.hidden {
opacity: 0.5;
color: #1C1C1C;
}
#combat #combat-controls {
padding-top: 0;
border-top: 1px solid #0d99cc;
}
/*
** Folders
*/
.sidebar-tab .directory-header {
margin-bottom: 4px;
}
.sidebar-tab .directory-header .header-search {
position: relative;
}
.sidebar-tab .directory-header .header-search i.fa-search {
position: absolute;
left: 8px;
color: #0d99cc;
}
.sidebar-tab .directory-header .header-search input {
text-align: left;
padding-left: 22px;
background: white;
}
.sidebar-tab .directory-header .header-search input:focus {
box-shadow: none;
}
.sidebar-tab .subdirectory {
border: none;
margin-left: 8px;
background: white;
min-height: 8px;
}
.sidebar-tab .subdirectory .folder {
border-left: 2px solid rgba(28, 28, 28, 0.4);
}
.sidebar-tab .directory-list {
padding-bottom: 4px;
}
.sidebar-tab .directory-list li + li {
border-top: 1px solid #0d99cc;
}
.sidebar-tab .directory-list .folder > .folder-header {
line-height: default;
padding: 0 0 0 8px;
position: relative;
border: none;
background: white;
}
.sidebar-tab .directory-list .folder > .folder-header h3 {
padding: 8px 4px;
background: white;
color: #1C1C1C;
font-family: 'Open Sans';
font-size: 13px;
font-weight: 700;
line-height: 1.6;
}
.sidebar-tab .directory-list .folder > .folder-header h3 > i {
margin-right: 4px;
color: #0d99cc;
}
.sidebar-tab .directory-list .folder > .folder-header a {
position: absolute;
top: 0;
right: 4px;
height: 100%;
padding: 0 4px;
color: #828282;
}
.sidebar-tab .directory-list .folder > .folder-header a:hover {
color: #c40f0f;
}
.sidebar-tab .directory-list .folder > .folder-header a i {
margin-top: 12px;
}
.sidebar-tab .directory-list .folder > .folder-header a.create-folder {
right: 28px;
}
.sidebar-tab .directory-list .folder.collapsed > .folder-header {
background: white;
}
.sidebar-tab .directory-list .folder + .entity {
border-top: 1px solid #0d99cc;
}
.sidebar-tab .directory-list .directory-item img {
flex: 0 0 32px;
height: 32px;
width: 32px;
align-self: center;
}
.sidebar-tab .directory-list .actor,
.sidebar-tab .directory-list .item,
.sidebar-tab .directory-list .journal,
.sidebar-tab .directory-list .table {
background: white;
border: none;
}
.sidebar-tab .directory-list .actor .entity-name,
.sidebar-tab .directory-list .item .entity-name,
.sidebar-tab .directory-list .journal .entity-name,
.sidebar-tab .directory-list .table .entity-name {
font-family: 'Open Sans';
font-size: 13px;
font-weight: 700;
color: #1C1C1C;
}
.sidebar-tab .directory-list .actor:nth-child(even),
.sidebar-tab .directory-list .item:nth-child(even),
.sidebar-tab .directory-list .journal:nth-child(even),
.sidebar-tab .directory-list .table:nth-child(even) {
background: rgba(175, 198, 214, 0.3);
}
#scenes .subdirectory {
border-left: none;
}
#scenes .scene {
border: none;
border-top: 1px solid #0d99cc;
border-left: 4px solid #0d99cc;
box-shadow: none;
position: relative;
height: 128px;
}
#scenes .scene + .scene {
margin-top: 4px;
}
#scenes .scene::after {
content: '';
display: block;
width: 100%;
height: 99px;
position: absolute;
top: 28px;
left: 0;
box-shadow: 0 0 20px #0d99cc inset;
}
#scenes .scene h3 {
font-family: 'Open Sans';
font-size: 13px;
font-weight: 700;
text-align: left;
text-shadow: none;
padding: 4px 4px 4px 12px;
background: white;
line-height: 1.6;
position: absolute;
top: 0;
left: 0;
width: 100%;
}
#playlists .directory-list {
padding: 0 8px;
}
#playlists .directory-list li.playlist {
padding: 8px;
border-radius: 4px;
background: white;
margin-bottom: 8px;
border-top: inherit;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
}
#playlists .directory-list li.playlist .playlist-header {
background: white;
color: #c40f0f;
text-decoration: none;
border-bottom: 2px solid #0d99cc;
}
#playlists .directory-list li.playlist li.sound {
border: none;
color: #1C1C1C;
}
#playlists .directory-list li.playlist li.sound h4 {
font-family: 'Open Sans';
font-size: 13px;
font-weight: 400;
}
#playlists .directory-list li.playlist a.sound-control {
color: #c40f0f;
}
#compendium .compendium-entity {
margin: 0 4px;
padding: 8px;
background: white !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
border-radius: 4px;
border: none;
}
#compendium .compendium-entity + .compendium-entity {
margin-top: 4px;
}
#compendium .compendium-entity h3 {
border: none;
color: #c40f0f;
border-bottom: 2px solid #0d99cc;
font-family: 'Russo One';
font-size: 17px;
font-weight: 400;
padding: 0;
margin-bottom: 4px;
}
#compendium .compendium-entity ol.compendium-list li.compendium-pack {
margin: 0;
padding: 4px;
border: none;
}
#compendium .compendium-entity ol.compendium-list li.compendium-pack:nth-child(even) {
background: rgba(175, 198, 214, 0.3);
}
#compendium .compendium-entity ol.compendium-list li.compendium-pack .pack-title {
margin: 0;
position: relative;
}
#compendium .compendium-entity ol.compendium-list li.compendium-pack .pack-title a {
font-family: 'Open Sans';
font-size: 13px;
font-weight: 700;
}
#compendium .compendium-entity ol.compendium-list li.compendium-pack .pack-title a i {
display: none;
}
#compendium .compendium-entity ol.compendium-list li.compendium-pack .pack-title .status-icons {
top: 4px;
color: #828282;
font-size: 13px;
}
#compendium .compendium-entity ol.compendium-list li.compendium-pack footer.compendium-footer {
color: #1C1C1C;
}
#settings h2 {
color: #c40f0f;
border: none;
border-bottom: 2px solid #0d99cc;
margin: 0 8px;
padding: 0;
}
#settings #game-details,
#settings #settings-game,
#settings #settings-documentation,
#settings #settings-access {
padding: 0 8px;
margin: 0 0 8px;
color: #1C1C1C;
}

3146
sw5e.css

File diff suppressed because it is too large Load diff

48
sw5e.js
View file

@ -22,9 +22,10 @@ import Item5e from "./module/item/entity.js";
import AbilityTemplate from "./module/pixi/ability-template.js";
import AbilityUseDialog from "./module/apps/ability-use-dialog.js";
import ActorSheetFlags from "./module/apps/actor-flags.js";
import ActorSheet5eCharacter from "./module/actor/sheets/character.js";
import ActorSheet5eNPC from "./module/actor/sheets/npc.js";
import ActorSheet5eVehicle from "./module/actor/sheets/vehicle.js";
import ActorSheet5eCharacter from "./module/actor/sheets/oldSheets/character.js";
import ActorSheet5eNPC from "./module/actor/sheets/oldSheets/npc.js";
import ActorSheet5eVehicle from "./module/actor/sheets/oldSheets/vehicle.js";
import ActorSheet5eCharacterNew from "./module/actor/sheets/newSheet/character.js";
import ItemSheet5e from "./module/item/sheet.js";
import ShortRestDialog from "./module/apps/short-rest.js";
import TraitSelector from "./module/apps/trait-selector.js";
@ -48,6 +49,7 @@ Hooks.once("init", function() {
AbilityUseDialog,
ActorSheetFlags,
ActorSheet5eCharacter,
ActorSheet5eCharacterNew,
ActorSheet5eNPC,
ActorSheet5eVehicle,
ItemSheet5e,
@ -87,11 +89,16 @@ Hooks.once("init", function() {
// Register sheet application classes
Actors.unregisterSheet("core", ActorSheet);
Actors.registerSheet("sw5e", ActorSheet5eCharacter, {
Actors.registerSheet("sw5e", ActorSheet5eCharacterNew, {
types: ["character"],
makeDefault: true,
label: "SW5E.SheetClassCharacter"
});
Actors.registerSheet("sw5e", ActorSheet5eCharacter, {
types: ["character"],
makeDefault: false,
label: "SW5E.SheetClassCharacterOld"
});
Actors.registerSheet("sw5e", ActorSheet5eNPC, {
types: ["npc"],
makeDefault: true,
@ -152,6 +159,9 @@ Hooks.once("setup", function() {
}
// add DND5E translation for module compatability
game.i18n.translations.DND5E = game.i18n.translations.SW5E;
// console.log(game.settings.get("sw5e", "colorTheme"));
let theme = game.settings.get("sw5e", "colorTheme") + '-theme';
document.body.classList.add(theme);
});
/* -------------------------------------------- */
@ -213,8 +223,36 @@ Hooks.on("getChatLogEntryContext", chat.addChatMessageContextOptions);
Hooks.on("renderChatLog", (app, html, data) => Item5e.chatListeners(html));
Hooks.on("renderChatPopout", (app, html, data) => Item5e.chatListeners(html));
Hooks.on('getActorDirectoryEntryContext', Actor5e.addDirectoryContextOptions);
Hooks.on("renderSceneDirectory", (app, html, data)=> {
//console.log(html.find("header.folder-header"));
setFolderBackground(html);
});
Hooks.on("renderActorDirectory", (app, html, data)=> {
setFolderBackground(html);
});
Hooks.on("renderItemDirectory", (app, html, data)=> {
setFolderBackground(html);
});
Hooks.on("renderJournalDirectory", (app, html, data)=> {
setFolderBackground(html);
});
Hooks.on("renderRollTableDirectory", (app, html, data)=> {
setFolderBackground(html);
});
Hooks.on("ActorSheet5eCharacterNew", (app, html, data) => {
console.log("renderSwaltSheet");
});
// TODO I should remove this
Handlebars.registerHelper('getProperty', function (data, property) {
return getProperty(data, property);
});
function setFolderBackground(html) {
html.find("header.folder-header").each(function() {
let bgColor = $(this).css("background-color");
if(bgColor == undefined)
bgColor = "rgb(255,255,255)";
$(this).closest('li').css("background-color", bgColor);
})
}

View file

@ -6,7 +6,7 @@
"author": "Dev Team",
"scripts": [],
"esmodules": ["sw5e.js"],
"styles": ["sw5e.css"],
"styles": ["sw5e.css", "sw5e-global.css", "sw5e-light.css", "sw5e-dark.css"],
"packs": [
{
"name": "adventuringgear",

View file

@ -0,0 +1,144 @@
<form class="{{cssClass}} swalt-sheet" autocomplete="off">
{{!-- Sheet Header --}}
<header class="panel">
<img class="profile" src="{{actor.img}}" title="{{actor.name}}" data-edit="img" />
<h1 class="character-name">
<input name="name" type="text" value="{{actor.name}}" placeholder="{{ localize 'SW5E.Name' }}" />
</h1>
<div class="level-experience">
<div class="charlevel">
{{ localize "SW5E.Level" }} {{data.details.level}} {{classLabels}}
</div>
{{#unless disableExperience}}
<div class="experience">
<input name="data.details.xp.value" type="text" value="{{data.details.xp.value}}" data-dtype="Number"
placeholder="0" />
<span class="sep">/</span>
<span class="max">{{data.details.xp.max}}</span>
</div>
<div class="xpbar">
<span class="bar" style="width: {{data.details.xp.pct}}%"></span>
</div>
{{/unless}}
</div>
<div class="summary">
<input type="text" name="data.details.species" value="{{data.details.species}}"
placeholder="{{ localize 'SW5E.Species' }}" />
<input type="text" name="data.details.background" value="{{data.details.background}}"
placeholder="{{ localize 'SW5E.Background' }}" />
<input type="text" name="data.details.alignment" value="{{data.details.alignment}}"
placeholder="{{ localize 'SW5E.Alignment' }}" />
<div class="proficiency">
Proficiency {{numberFormat data.attributes.prof decimals=0 sign=true}}
</div>
</div>
{{!-- Header Attributes --}}
<div class="attributes">
{{!-- ARMOR CLASS --}}
<section>
<h1>{{ localize "SW5E.ArmorClass" }}</h1>
<div class="attribute-value">
<input class="ac-display" name="data.attributes.ac.value" type="text"
value="{{data.attributes.ac.value}}" data-dtype="Number" placeholder="10" />
</div>
</section>
{{!-- HIT POINTS --}}
<section>
<h1>Hit Points</h1>
<div class="attribute-value multiple">
<input name="data.attributes.hp.value" type="text" value="{{data.attributes.hp.value}}"
data-dtype="Number" placeholder="10" class="value-number" />
<span class="value-separator">/</span>
<input name="data.attributes.hp.max" type="text" value="{{data.attributes.hp.max}}"
data-dtype="Number" placeholder="10" class="value-number" />
</div>
<footer class="attribute-footer hit-points">
<input name="data.attributes.hp.temp" type="text" class="temphp" placeholder="+Temp"
value="{{data.attributes.hp.temp}}" data-dtype="{{data.attributes.hp.type}}" />
<input name="data.attributes.hp.tempmax" type="text" class="temphp" placeholder="+Max"
value="{{data.attributes.hp.tempmax}}" data-dtype="{{data.attributes.hp.type}}" />
</footer>
</section>
{{!-- HIT DICE / SHORT & LONG REST BUTTONS --}}
<section>
<h1>{{ localize "SW5E.HitDice" }}</h1>
<div class="attribute-value multiple">
<span class="value-number">{{data.attributes.hd}}</span>
<span class="value-separator">/</span>
<span class="value-number">{{data.details.level}}</span>
</div>
<footer class="attribute-footer hit-dice">
<button type="button" class="rest short-rest">{{ localize "SW5E.RestS" }}</button>
<button type="button" class="rest long-rest">{{ localize "SW5E.RestL" }}</button>
</footer>
</section>
{{!-- INITIATIVE --}}
<section>
<h1>{{ localize "SW5E.Initiative" }}</h1>
<div class="attribute-value">
<span class="initiative">{{numberFormat data.attributes.init.total decimals=0 sign=true}}</span>
</div>
<footer class="attribute-footer initiative">
<span>{{ localize "SW5E.Modifier" }}</span>
<input name="data.attributes.init.value" type="text" placeholder="0" data-dtype="Number"
value="{{numberFormat data.attributes.init.value decimals=0 sign=true}}" />
</footer>
</section>
{{!-- SPEED / MOVEMENT TYPES --}}
<section>
<h1>{{ localize "SW5E.Speed" }}</h1>
<div class="attribute-value">
<input name="data.attributes.speed.value" type="text" value="{{data.attributes.speed.value}}"
placeholder="0" />
</div>
<footer class="attribute-footer speed">
<input type="text" class="speed" name="data.attributes.speed.special"
value="{{data.attributes.speed.special}}" placeholder="{{ localize 'SW5E.SpeedSpecial' }}" />
</footer>
</section>
</div>
</header>
{{!-- PC Sheet Navigation --}}
<nav class="sheet-navigation root-tabs" data-group="primary">
<button class="item active" data-tab="attributes">Core</button>
<button class="item" data-tab="inventory">{{ localize "SW5E.Inventory" }}</button>
<button class="item" data-tab="features">{{ localize "SW5E.Features" }}</button>
<button class="item" data-tab="powerbook">{{ localize "SW5E.Powerbook" }}</button>
<button class="item" data-tab="biography">{{ localize "SW5E.Biography" }}</button>
<button class="item" data-tab="notes">Notes</button>
</nav>
{{!-- PC Sheet Body --}}
<section class="sheet-body">
{{!-- Core Tab --}}
<section class="tab attributes core" data-group="primary" data-tab="attributes">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-core.html" sections=attributes}}
</section>
{{!-- Inventory Tab --}}
<section class="tab inventory" data-group="primary" data-tab="inventory">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-inventory.html" sections=inventory}}
</section>
{{!-- Features Tab --}}
<section class="tab features" data-group="primary" data-tab="features">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-features.html" sections=features}}
</section>
{{!-- Powerbook Tab --}}
<section class="tab powerbook" data-group="primary" data-tab="powerbook">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-powerbook.html"}}
</section>
{{!-- Biography Tab --}}
<section class="tab biography" data-group="primary" data-tab="biography">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-biography.html"}}
</section>
{{!-- Notes Tab --}}
<section class="tab notes" data-group="primary" data-tab="notes">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-notes.html"}}
</section>
</form>

View file

@ -0,0 +1,137 @@
<form class="{{cssClass}} swalt-sheet" autocomplete="off">
{{!-- Sheet Header --}}
<header class="panel">
<img class="profile" src="{{actor.img}}" title="{{actor.name}}" data-edit="img" />
<h1 class="character-name">
<input name="name" type="text" value="{{actor.name}}" placeholder="{{ localize 'SW5E.Name' }}" />
</h1>
<div class="level-experience">
<div class="charlevel">
{{ localize "SW5E.Level" }} {{data.details.level}} {{classLabels}}
</div>
{{#unless disableExperience}}
<div class="experience">
<input name="data.details.xp.value" type="text" value="{{data.details.xp.value}}" data-dtype="Number"
placeholder="0" />
<span class="sep">/</span>
<span class="max">{{data.details.xp.max}}</span>
</div>
<div class="xpbar">
<span class="bar" style="width: {{data.details.xp.pct}}%"></span>
</div>
{{/unless}}
</div>
<div class="summary">
<input type="text" name="data.details.species" value="{{data.details.species}}"
placeholder="{{ localize 'SW5E.Species' }}" />
<input type="text" name="data.details.background" value="{{data.details.background}}"
placeholder="{{ localize 'SW5E.Background' }}" />
<input type="text" name="data.details.alignment" value="{{data.details.alignment}}"
placeholder="{{ localize 'SW5E.Alignment' }}" />
<div class="proficiency">
Proficiency {{numberFormat data.attributes.prof decimals=0 sign=true}}
</div>
</div>
{{!-- Header Attributes --}}
<div class="attributes">
{{!-- ARMOR CLASS --}}
<section>
<h1>{{ localize "SW5E.ArmorClass" }}</h1>
<div class="attribute-value">
<input class="ac-display" name="data.attributes.ac.value" type="text"
value="{{data.attributes.ac.value}}" data-dtype="Number" placeholder="10" />
</div>
</section>
{{!-- HIT POINTS --}}
<section>
<h1>Hit Points</h1>
<div class="attribute-value multiple">
<input name="data.attributes.hp.value" type="text" value="{{data.attributes.hp.value}}"
data-dtype="Number" placeholder="10" class="value-number" />
<span class="value-separator">/</span>
<input name="data.attributes.hp.max" type="text" value="{{data.attributes.hp.max}}"
data-dtype="Number" placeholder="10" class="value-number" />
</div>
<footer class="attribute-footer hit-points">
<input name="data.attributes.hp.temp" type="text" class="temphp" placeholder="+Temp"
value="{{data.attributes.hp.temp}}" data-dtype="{{data.attributes.hp.type}}" />
<input name="data.attributes.hp.tempmax" type="text" class="temphp" placeholder="+Max"
value="{{data.attributes.hp.tempmax}}" data-dtype="{{data.attributes.hp.type}}" />
</footer>
</section>
{{!-- HIT DICE / SHORT & LONG REST BUTTONS --}}
<section>
<h1>{{ localize "SW5E.HitDice" }}</h1>
<div class="attribute-value multiple">
<span class="value-number">{{data.attributes.hd}}</span>
<span class="value-separator">/</span>
<span class="value-number">{{data.details.level}}</span>
</div>
<footer class="attribute-footer hit-dice">
<button type="button" class="rest short-rest">{{ localize "SW5E.RestS" }}</button>
<button type="button" class="rest long-rest">{{ localize "SW5E.RestL" }}</button>
</footer>
</section>
{{!-- INITIATIVE --}}
<section>
<h1>{{ localize "SW5E.Initiative" }}</h1>
<div class="attribute-value">
<span class="initiative">{{numberFormat data.attributes.init.total decimals=0 sign=true}}</span>
</div>
<footer class="attribute-footer initiative">
<span>{{ localize "SW5E.Modifier" }}</span>
<input name="data.attributes.init.value" type="text" placeholder="0" data-dtype="Number"
value="{{numberFormat data.attributes.init.value decimals=0 sign=true}}" />
</footer>
</section>
{{!-- SPEED / MOVEMENT TYPES --}}
<section>
<h1>{{ localize "SW5E.Speed" }}</h1>
<div class="attribute-value">
<input name="data.attributes.speed.value" type="text" value="{{data.attributes.speed.value}}"
placeholder="0" />
</div>
<footer class="attribute-footer speed">
<input type="text" class="speed" name="data.attributes.speed.special"
value="{{data.attributes.speed.special}}" placeholder="{{ localize 'SW5E.SpeedSpecial' }}" />
</footer>
</section>
</div>
</header>
{{!-- PC Sheet Navigation --}}
<nav class="sheet-navigation root-tabs" data-group="primary">
<button class="item active" data-tab="attributes">Core</button>
<button class="item" data-tab="inventory">{{ localize "SW5E.Inventory" }}</button>
<button class="item" data-tab="features">{{ localize "SW5E.Features" }}</button>
<button class="item" data-tab="powerbook">{{ localize "SW5E.Powerbook" }}</button>
<button class="item" data-tab="biography">{{ localize "SW5E.Biography" }}</button>
</nav>
{{!-- PC Sheet Body --}}
<section class="sheet-body">
{{!-- Core Tab --}}
<section class="tab attributes core" data-group="primary" data-tab="attributes">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-core.html" sections=attributes}}
</section>
{{!-- Inventory Tab --}}
<section class="tab inventory" data-group="primary" data-tab="inventory">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-inventory.html" sections=inventory}}
</section>
{{!-- Features Tab --}}
<section class="tab features" data-group="primary" data-tab="features">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-features.html" sections=features}}
</section>
{{!-- Powerbook Tab --}}
<section class="tab powerbook" data-group="primary" data-tab="powerbook">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-powerbook.html"}}
</section>
{{!-- Biography Tab --}}
<section class="tab biography" data-group="primary" data-tab="biography">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-biography.html"}}
</section>
</form>

View file

@ -0,0 +1,33 @@
<li class="item group-grid-fav-items" data-item-id="{{item._id}}">
<div class="item-name rollable">
<div class="item-image" style="background-image: url({{item.img}})"></div>
<h4>{{item.name}}</h4>
</div>
<div class="item-detail item-uses">
{{#if item.data.uses.max }}
{{item.data.uses.value}} / {{item.data.uses.max}}
{{/if}}
</div>
<div class="item-detail item-count">
{{#if item.data.quantity}}
{{item.data.quantity}}
{{/if}}
</div>
<div class="item-detail item-comps">
{{#if item.powerComps}}
{{item.powerComps}}
{{#if item.powerCon}}<i class='fas fa-copyright'></i>{{/if}}
{{#if item.powerRit}}<i class='fas fa-registered'></i>{{/if}}
{{/if}}
</div>
<div class="item-detail item-controls">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-fav" title="Remove"><i class="fas fa-sign-out-alt"></i></a>
</div>
</li>

View file

@ -0,0 +1,27 @@
<form class="{{cssClass}} swalt-sheet limited" autocomplete="off">
<!-- HEADER -->
<header class="panel">
<img class="profile" src="{{actor.img}}" title="{{actor.name}}" data-edit="img" />
<h1 class="character-name">
{{actor.name}}
</h1>
</header>
<!-- BODY -->
<section class="sheet-body">
<div class="tab biography active">
<div class="panel">
<section class="additional-info">
<h1 class="section-titles">Description</h1>
{{editor content=data.details.description.value target="data.details.description.value" button=true owner=owner editable=editable}}
</section>
<section>
<h1 class="section-titles">Background</h1>
{{editor content=data.details.biography.value target="data.details.biography.value" button=true owner=owner editable=editable}}
</section>
</div>
</div>
</section>
</form>

View file

@ -0,0 +1,22 @@
<div class="panel additional-info">
<section><h1 class="section-titles biopage">Personality Traits</h1>
{{editor content=data.details.trait target="data.details.trait" button=true owner=owner editable=editable}}
</section>
<section><h1 class="section-titles biopage">Ideals</h1>
{{editor content=data.details.ideal target="data.details.ideal" button=true owner=owner editable=editable}}
</section>
<section><h1 class="section-titles biopage">Bonds</h1>
{{editor content=data.details.bond target="data.details.bond" button=true owner=owner editable=editable}}
</section>
<section><h1 class="section-titles biopage">Flaws</h1>
{{editor content=data.details.flaw target="data.details.flaw" button=true owner=owner editable=editable}}
</section>
</div>
<div class="panel background">
<section><h1 class="section-titles biopage">Description</h1>
{{editor content=data.details.description.value target="data.details.description.value" button=true owner=owner editable=editable}}
</section>
<section><h1 class="section-titles">Background</h1>
{{editor content=data.details.biography.value target="data.details.biography.value" button=true owner=owner editable=editable}}
</section>
</div>

View file

@ -0,0 +1,56 @@
<section class="panel abilities">
{{!-- Ability Scores --}}
<section class="scores">
<h1>Ability Scores</h1>
<ol>
{{#each data.abilities as |ability id|}}
<li class="ability {{#if ability.proficient}}proficient{{/if}}" data-ability="{{id}}">
<h2 class="ability-name rollable">{{ability.label}}</h4>
<input class="ability-score" name="data.abilities.{{id}}.value" type="text"
value="{{ability.value}}" data-dtype="Number" placeholder="10" />
<div class="ability-modifiers">
<span class="ability-mod"
title="Modifier">{{numberFormat ability.mod decimals=0 sign=true}}</span>
<input type="hidden" name="data.abilities.{{id}}.proficient"
value="{{ability.proficient}}" data-dtype="Number" />
<button class="proficiency-toggle ability-proficiency"
title="Proficiency">{{{ability.icon}}}</button>
<span class="ability-save"
title="Saving Throw">{{numberFormat ability.save decimals=0 sign=true}}</span>
</div>
</li>
{{/each}}
</ol>
</section>
{{!-- Skills --}}
<section class="skills">
<h1>Skills</h1>
<ol>
{{#each data.skills as |skill s|}}
<li class="skill {{#if skill.value}}proficient{{/if}}" data-skill="{{s}}">
<input type="hidden" name="data.skills.{{s}}.value" value="{{skill.value}}"
data-dtype="Number" />
<button class="proficiency-toggle skill-proficiency"
title="{{skill.hover}}">{{{skill.icon}}}</button>
<span class="skill-name rollable">{{skill.label}}</span>
<span class="skill-ability">{{skill.ability}}</span>
<span class="skill-mod">{{numberFormat skill.total decimals=0 sign=true}}</span>
{{!-- <input class="skill-bonus" name="data.skills.{{s}}.bonus" type="text" value="{{numberFormat skill.bonus decimals=0 sign=true}}" data-dtype="Number" placeholder="0" title="Misc. Modifier"/> --}}
{{!-- <span class="skill-passive">({{skill.passive}})</span> --}}
</li>
{{/each}}
</ol>
</section>
</section>
<section class="panel traits-resources">
<nav class="core-tabs tab-list" data-subgroup-selection>
<button type="button" class="item active" data-subgroup="coreattributes" data-target="traits">Traits</button>
<button type="button" class="item" data-subgroup="coreattributes" data-target="resources">Resources</button>
</nav>
<div class="tab core-traits active" data-subgroup="coreattributes" data-target="traits">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-traits.html"}}
</div>
<div class="tab core-resources" data-subgroup="coreattributes" data-target="resources">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-resources.html"}}
</div>
</section>

View file

@ -0,0 +1,80 @@
<div class="panel">
<ul class="filter-list" data-filter="features">
<li class="filter-title">{{localize "SW5E.Filter"}}</li>
<li class="filter-item" data-filter="action">{{localize "SW5E.Action"}}</li>
<li class="filter-item" data-filter="bonus">{{localize "SW5E.BonusAction"}}</li>
<li class="filter-item" data-filter="reaction">{{localize "SW5E.Reaction"}}</li>
</ul>
<ol class="group-list">
{{#each sections as |section sid|}}
<li>
<div class="group-list-title group-grid-features">
<div class="title">
<h3 class="item-name">{{localize section.label}}</h3>
{{#if ../owner}}
<a class="item-control item-create" title="{{localize 'SW5E.FeatureAdd'}}"
{{#each section.dataset as |v k|}}data-{{k}}="{{v}}" {{/each}}>
<i class="fas fa-plus"></i> {{localize "SW5E.Add"}}
</a>
{{/if}}
</div>
{{#if section.hasActions}}
<div class="item-detail item-uses">{{localize "SW5E.Uses"}}</div>
<div class="item-detail item-action">{{localize "SW5E.Usage"}}</div>
{{/if}}
</div>
<ol class="item-list">
{{#each section.items as |item iid|}}
<li class="item group-grid-features {{#if isDepleted}}depleted{{/if}}" data-item-id="{{item._id}}">
<div class="item-name rollable">
<div class="item-image" style="background-image: url({{item.img}})"></div>
<h4>{{item.name}}</h4>
</div>
{{#if section.hasActions}}
<div class="item-detail item-uses">
{{#if item.isOnCooldown}}
<a class="item-recharge rollable">{{item.labels.recharge}}</a>
{{else if item.data.recharge.value}}
{{localize "SW5E.Charged"}}
{{else if item.hasUses}}
<input type="text" value="{{item.data.uses.value}}" placeholder="0" />/<span>{{item.data.uses.max}}</span>
{{/if}}
</div>
<div class="item-detail item-action">
{{#if item.data.activation.type }}
{{item.labels.activation}}
{{/if}}
</div>
{{else if section.isClass}}
<div class="item-detail player-class">
{{item.data.subclass}}
</div>
<div class="item-detail player-class-levels">
Level {{item.data.levels}}
</div>
{{/if}}
{{#if ../../owner}}
<div class="item-controls item-detail">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/if}}
</li>
{{/each}}
</ol>
</li>
{{/each}}
</ol>
</div>

View file

@ -0,0 +1,112 @@
<section class="panel">
{{#if isCharacter }}
<div class="currency-encumbrance">
<label class="currency">
{{localize "SW5E.Currency"}}
{{#each data.currency as |v k|}}
<input type="text" name="data.currency.{{k}}" value="{{v}}" data-dtype="Number" />
{{/each}}
</label>
{{#with data.attributes.encumbrance}}
<div class="encumbrance-wrapper" title="Encumbrance">
<div class="encumbrance {{#if encumbered}}encumbered{{/if}}">
<span class="encumbrance-bar" style="width:{{pct}}%"></span>
<i class="encumbrance-breakpoint encumbrance-33 arrow-up"></i>
<i class="encumbrance-breakpoint encumbrance-33 arrow-down"></i>
<i class="encumbrance-breakpoint encumbrance-66 arrow-up"></i>
<i class="encumbrance-breakpoint encumbrance-66 arrow-down"></i>
</div>
<span class="encumbrance-label">{{value}} / {{max}}</span>
</div>
{{/with}}
</div>
{{/if}}
<ul class="filter-list" data-filter="inventory">
<li class="filter-title">{{localize "SW5E.Filter"}}</li>
<li class="filter-item" data-filter="action">{{localize "SW5E.Action"}}</li>
<li class="filter-item" data-filter="bonus">{{localize "SW5E.BonusAction"}}</li>
<li class="filter-item" data-filter="reaction">{{localize "SW5E.Reaction"}}</li>
<li class="filter-item" data-filter="equipped">{{localize "SW5E.Equipped"}}</li>
</ul>
<div class="group-list-header group-grid-inventory">
<div>&nbsp;</div>
{{#if isCharacter}}
<div class="item-detail item-weight">{{localize "SW5E.Weight"}}</div>
{{/if}}
<div class="item-detail item-uses">{{localize "SW5E.Charges"}}</div>
<div class="item-detail item-action">{{localize "SW5E.Usage"}}</div>
<div class="item-detail"></div>
</div>
<ol class="group-list">
{{#each sections as |section sid|}}
<li>
<div class="group-list-title">
<h3 class="item-name">{{localize section.label}}</h3>
{{#if ../owner}}
<a class="item-control item-create" title='{{localize "SW5E.ItemCreate"}}'
{{#each section.dataset as |v k|}}data-{{k}}="{{v}}" {{/each}}>
<i class="fas fa-plus"></i> {{localize "SW5E.Add"}}
</a>
{{/if}}
</div>
<ol class="group-items">
{{#each section.items as |item iid|}}
<li class="item group-grid-inventory" data-item-id="{{item._id}}">
<div class="item-name rollable">
<div class="item-image" style="background-image: url({{item.img}})"></div>
<h4>
{{item.name~}}
{{~#if item.isStack}} ({{item.data.quantity}}){{/if}}
{{~#if item.data.attuned}} <i class="fas fa-sun attuned"
title={{localize "SW5E.Attuned"}}></i>{{/if}}
</h4>
</div>
{{#if ../../isCharacter}}
<div class="item-detail item-weight">
{{#if item.totalWeight}}
{{ item.totalWeight }} {{localize "SW5E.AbbreviationLbs"}}
{{/if}}
</div>
{{/if}}
<div class="item-detail item-uses">
{{#if item.hasUses }}
<input type="text" value="{{item.data.uses.value}}" placeholder="0" />
/<span style="padding-left: 8px;">{{item.data.uses.max}}</span>
{{/if}}
</div>
<div class="item-detail item-action">
{{#if item.data.activation.type }}
{{item.labels.activation}}
{{/if}}
</div>
{{#if ../../owner}}
<div class="item-detail item-controls">
<a class="item-control item-toggle {{item.toggleClass}}" title='{{item.toggleTitle}}'>
<i class="fas fa-shield-alt"></i>
</a>
<a class="item-control item-edit" title='{{localize "SW5E.ItemEdit"}}'><i
class="fas fa-edit"></i></a>
<a class="item-control item-delete" title='{{localize "SW5E.ItemDelete"}}'><i
class="fas fa-trash"></i></a>
</div>
{{/if}}
</li>
{{/each}}
</ol>
</li>
{{/each}}
</ol>
</section>

View file

@ -0,0 +1,33 @@
<div class="panel">
<section class="background">
<input type="text" name="data.details.notesname" value="{{data.details.notesname}}"
placeholder="Personal Journal" />
{{editor content=data.details.notes.value target="data.details.notes.value" button=true owner=owner editable=editable}}
</section>
<section>
<input type="text" name="data.details.notes1name" value="{{data.details.notes1name}}"
placeholder="Additional Notes" />
{{editor content=data.details.notes1.value target="data.details.notes1.value" button=true owner=owner editable=editable}}
</section>
<section>
<input type="text" name="data.details.notes2name" value="{{data.details.notes2name}}"
placeholder="Additional Notes" />
{{editor content=data.details.notes2.value target="data.details.notes2.value" button=true owner=owner editable=editable}}
</section>
<section>
<input type="text" name="data.details.notes3name" value="{{data.details.notes3name}}"
placeholder="Additional Notes" />
{{editor content=data.details.notes3.value target="data.details.notes3.value" button=true owner=owner editable=editable}}
</section>
<section>
<input type="text" name="data.details.notes4name" value="{{data.details.notes4name}}"
placeholder="Additional Notes" />
{{editor content=data.details.notes4.value target="data.details.notes4.value" button=true owner=owner editable=editable}}
</section>
</section>
</div>

View file

@ -0,0 +1,135 @@
<section class="panel">
<div class="powercasting-ability">
<label>{{localize "SW5E.PowerAbility"}}
<select name="data.attributes.powercasting" data-type="String">
{{#select data.attributes.powercasting}}
<option value="">{{localize "SW5E.None"}}</option>
{{#each data.abilities as |abl a|}}
<option value="{{a}}">{{abl.label}}</option>
{{/each}}
{{/select}}
</select>
</label>
{{#if isNPC}}
<label>{{localize "SW5E.PowercasterLevel"}}
<input class="powercasting-level" type="text" name="data.details.powerLevel" value="{{data.details.powerLevel}}"
data-dtype="Number" placeholder="0" />
</label>
{{/if}}
<h3 class="power-dc">{{localize "SW5E.PowerDC"}} <span>{{data.attributes.powerdc}}</span></h3>
</div>
<ul class="filter-list" data-filter="powerbook">
<li class="filter-title">{{localize "SW5E.Filter"}}</li>
<li class="filter-item" data-filter="action">{{localize "SW5E.Action"}}</li>
<li class="filter-item" data-filter="bonus">{{localize "SW5E.BonusAction"}}</li>
<li class="filter-item" data-filter="reaction">{{localize "SW5E.Reaction"}}</li>
<li class="filter-item" data-filter="concentration">{{localize "SW5E.AbbreviationConc"}}</li>
<li class="filter-item" data-filter="ritual">{{localize "SW5E.Ritual"}}</li>
<li class="filter-item" data-filter="prepared">{{localize "SW5E.Prepared"}}{{#if preparedPowers}}
({{preparedPowers}}){{/if}}</li>
</ul>
<div class="group-list-header group-grid-powers">
<div></div>
<div class="item-detail item-uses"></div>
<div class="item-detail item-school">{{localize "SW5E.PowerSchool"}}</div>
<div class="item-detail item-action">{{localize "SW5E.PowerUsage"}}</div>
<div class="item-detail item-target">{{localize "SW5E.PowerTarget"}}</div>
</div>
<ol class="group-list">
{{#each powerbook as |section|}}
<li>
<div class="group-list-title group-grid-powers">
<div class="item-name">
<h3>{{section.label}}</h3>
{{#if section.canCreate}}
<a class="item-control item-create" title="{{localize 'SW5E.PowerCreate'}}"
{{#each section.dataset as |v k|}}data-{{k}}="{{v}}" {{/each}}>
<i class="fas fa-plus"></i> {{localize "SW5E.Add"}}
</a>
{{/if}}
</div>
<div class="item-detail item-uses">
{{#if section.usesSlots}}
<input type="text" name="data.powers.{{section.prop}}.value" value="{{section.uses}}" placeholder="0"
data-dtype="Number" />
/
<span data-level="{{section.prop}}" data-slots="{{section.slots}}">
{{{section.slots}}}
{{#if ../editable}}
<a class="slot-max-override" title="{{localize 'SW5E.PowerProgOverride'}}">
<i class="fas fa-edit"></i>
</a>
{{/if}}
{{ else }}
{{{section.uses}}} / {{{section.slots}}}
{{/if}}
</div>
</div>
<ol class="item-list">
{{#each section.powers as |item i|}}
<li class="item group-grid-powers" data-item-id="{{item._id}}">
<div class="item-name rollable">
<div class="item-image" style="background-image: url({{item.img}})"></div>
<h4>{{item.name}}</h4>
</div>
<div class="item-detail item-uses">
{{#if item.data.uses.per }}
Uses {{item.data.uses.value}} / {{item.data.uses.max}}
{{/if}}
</div>
<!-- <div class="power-comps">
{{#each labels.components}}
<span class="power-component {{this}}">{{this}}</span>
{{/each}}
</div> -->
<div class="item-detail item-school">{{labels.school}}</div>
<div class="item-detail item-action">{{labels.activation}}</div>
<div class="item-detail item-target" title="{{localize 'SW5E.Range'}}: {{labels.range}}">
{{#if labels.target}}
{{labels.target}}
{{else}}None
{{/if}}
</div>
{{#if ../../owner}}
<div class="item-detail item-controls">
{{#if section.canPrepare}}
<a class="item-control item-toggle {{item.toggleClass}}" title="{{item.toggleTitle}}"><i
class="fas fa-check-circle"></i></a>
{{/if}}
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/if}}
</li>
{{/each}}
</ol>
</li>
{{else}}
{{#if owner}}
{{#if filters.powerbook.size}}
<li class="item flexrow">
<p class="notes">{{localize "SW5E.FilterNoPowers"}}</p>
</li>
{{else}}
<li class="item flexrow inventory-header powerbook-header powerbook-empty">
<div class="item-controls">
<a class="item-control item-create" title="{{localize 'SW5E.PowerCreate'}}" data-type="power"
data-level="{{lvl}}"><i class="fas fa-plus"></i> {{localize "SW5E.PowerAdd"}}</a>
</div>
</li>
<li class="item flexrow">
<p class="notes">{{localize "SW5E.NoPowerLevels"}}</p>
</li>
{{/if}}
{{/if}}
{{/each}}
</ol>
</section>

View file

@ -0,0 +1,65 @@
{{!-- Resources, Counters, & Favorites --}}
<section class="resources">
<section class="resource-items">
{{#each resources as |res|}}
<div class="resource">
<h1>
<input name="data.resources.{{res.name}}.label" type="text" value="{{res.label}}"
placeholder="{{res.placeholder}}" />
</h1>
<div class="attribute-value">
<input name="data.resources.{{res.name}}.value" type="text" value="{{res.value}}" data-dtype="Number"
placeholder="0" class="value-number" />
<span class="value-separator">/</span>
<input name="data.resources.{{res.name}}.max" type="text" value="{{res.max}}" data-dtype="Number"
placeholder="0" class="value-number" />
</div>
<footer class="attribute-footer">
<label class="recharge checkbox">
{{ localize "SW5E.AbbreviationSR" }} <input name="data.resources.{{res.name}}.sr" type="checkbox"
{{checked res.sr}} />
</label>
<label class="recharge checkbox">
{{ localize "SW5E.AbbreviationLR" }} <input name="data.resources.{{res.name}}.lr" type="checkbox"
{{checked res.lr}} />
</label>
</footer>
</div>
{{/each}}
</section>
<section class="counters">
<div class="counter">
<h4 class="death-save rollable">{{ localize "SW5E.DeathSave" }}</h4>
<div class="counter-value">
<div class="death-success">
<i class="fas fa-check"></i>
<input type="text" name="data.attributes.death.success" data-dtype="Number" placeholder="0"
value="{{data.attributes.death.success}}" />
</div>
<div class="death-fail">
<i class="fas fa-times"></i>
<input type="text" name="data.attributes.death.failure" data-dtype="Number" placeholder="0"
value="{{data.attributes.death.failure}}" />
</div>
</div>
</div>
<div class="counter">
<h4>{{ localize "SW5E.Exhaustion" }}</h4>
<div class="counter-value">
<input type="text" name="data.attributes.exhaustion" data-dtype="Number" placeholder="0"
value="{{data.attributes.exhaustion}}" />
</div>
</div>
<div class="counter">
<h4>{{ localize "SW5E.Inspiration" }}</h4>
<div class="counter-value">
<input type="checkbox" name="data.attributes.inspiration" data-dtype="Boolean"
{{checked data.attributes.inspiration}} />
</div>
</div>
</section>
<section class="favorites">
<h1>Favorites</h1>
<div class="favtabtarget"></div>
</section>
</section>

View file

@ -0,0 +1,118 @@
<section class="traits">
<label>
{{localize "SW5E.Size"}}
<select class="actor-size" name="data.traits.size">
{{#select data.traits.size}}
{{#each config.actorSizes as |label size|}}
<option value="{{size}}">{{label}}</option>
{{/each}}
{{/select}}
</select>
</label>
<label class="{{#unless data.traits.senses}}inactive{{/unless}}">
{{#unless isVehicle}}
{{localize "SW5E.Senses"}}
<input type="text" name="data.traits.senses" value="{{data.traits.senses}}"
placeholder="{{ localize 'SW5E.None' }}" />
{{/unless}}
</label>
<div class="languages">
<label data-options="share-languages" class="languages">{{localize "SW5E.Languages"}}</label>
<a class="trait-selector" data-options="languages" data-target="data.traits.languages">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.languages.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.DamImm"}}</label>
<a class="trait-selector" data-options="damageResistanceTypes" data-target="data.traits.di">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.di.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.DamRes"}}</label>
<a class="trait-selector" data-options="damageResistanceTypes" data-target="data.traits.dr">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.dr.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.DamVuln"}}</label>
<a class="trait-selector" data-options="damageResistanceTypes" data-target="data.traits.dv">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.dv.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.ConImm"}}</label>
<a class="trait-selector" data-options="conditionTypes" data-target="data.traits.ci">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.ci.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>{{#if isCharacter}}
<div>
<label>{{localize "SW5E.TraitWeaponProf"}}</label>
<a class="trait-selector" data-options="weaponProficiencies" data-target="data.traits.weaponProf">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.weaponProf.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.TraitArmorProf"}}</label>
<a class="trait-selector" data-options="armorProficiencies" data-target="data.traits.armorProf">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.armorProf.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.TraitToolProf"}}</label>
<a class="trait-selector" data-options="toolProficiencies" data-target="data.traits.toolProf">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.toolProf.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
{{/if}}
{{#unless isVehicle}}
<div>
<label>{{localize "SW5E.SpecialTraits"}}</label>
<a class="configure-flags"><i class="fas fa-cog"></i></a>
</div>
{{/unless}}
<ul class="passives"></ul>
</section>

View file

@ -0,0 +1,67 @@
{{#if favItems}}
<ol class="group-list ">
<li>
<div class="group-list-title group-grid-fav-items">
<h3 class="item-name">Items</h3>
<div class="item-detail item-uses">Charges</div>
<div class="item-detail item-quantity">Qty</div>
<div class="item-detail item-comps"></div>
<div class="item-detail item-controls"></div>
</div>
<ol class="item-list">
{{#each favItems as |item id|}}
{{> "systems/sw5e/templates/actors/newActor/item.hbs" item=item}}
{{/each}}
</ol>
</li>
{{#if favFeats}}
<li>
<div class="group-list-title group-grid-fav-items">
<h3 class="item-name">Features &amp; Feats</h3>
<div class="item-detail item-uses">Uses</div>
<div class="item-detail item-quantity"></div>
<div class="item-detail item-comps"></div>
<div class="item-detail item-controls"></div>
</div>
<ol class="item-list">
{{#each favFeats as |feat lvl|}}
{{> "systems/sw5e/templates/actors/newActor/item.hbs" item=feat}}
{{/each}}
</ol>
</li>
{{/if}}
{{#if favPowers}}
{{#each favPowers as |section lvl|}}
{{#if section.powers}}
{{#if lvl}}
<li>
<div class="group-list-title group-grid-fav-items">
<h3 class="item-name">
{{#if section.isCantrip}}At-Will Powers{{else}}Level {{lvl}} Powers{{/if}}
</h3>
<div class="item-detail item-uses">
{{#if section.isCantrip}}&nbsp;
{{else}}
{{section.value}}
/
{{section.max}}
{{/if}}
</div>
<div class="item-detail item-quantity"></div>
<div class="item-detail item-comps"></div>
<div class="item-detail item-controls"></div>
</div>
<ol class="item-list">
{{#each section.powers as |power id|}}
{{> "systems/sw5e/templates/actors/newActor/item.hbs" item=power}}
{{/each}}
</ol>
</li>
{{/if}}{{/if}}
{{/each}}
{{/if}}
</ol>
{{/if}}

View file

@ -210,28 +210,28 @@
</div>
{{!-- Traits --}}
{{> "systems/sw5e/templates/actors/parts/actor-traits.html"}}
{{> "systems/sw5e/templates/actors/oldActor/parts/actor-traits.html"}}
</section>
</div>
{{!-- Inventory Tab --}}
<div class="tab inventory flexcol" data-group="primary" data-tab="inventory">
{{> "systems/sw5e/templates/actors/parts/actor-inventory.html" sections=inventory}}
{{> "systems/sw5e/templates/actors/oldActor/parts/actor-inventory.html" sections=inventory}}
</div>
{{!-- Features Tab --}}
<div class="tab features flexcol" data-group="primary" data-tab="features">
{{> "systems/sw5e/templates/actors/parts/actor-features.html" sections=features}}
{{> "systems/sw5e/templates/actors/oldActor/parts/actor-features.html" sections=features}}
</div>
{{!-- Powerbook Tab --}}
<div class="tab powerbook flexcol" data-group="primary" data-tab="powerbook">
{{> "systems/sw5e/templates/actors/parts/actor-powerbook.html"}}
{{> "systems/sw5e/templates/actors/oldActor/parts/actor-powerbook.html"}}
</div>
{{!-- Effects Tab --}}
<div class="tab effects flexcol" data-group="primary" data-tab="effects">
{{> "systems/sw5e/templates/actors/parts/actor-effects.html"}}
{{> "systems/sw5e/templates/actors/oldActor/parts/actor-effects.html"}}
</div>
{{!-- Biography Tab --}}

11
templates/app-window.html Normal file
View file

@ -0,0 +1,11 @@
<div id="{{id}}" class="app window-app {{classes}} this-is-my-custom-window" data-appid="{{appId}}">
<header class="window-header flexrow">
<h4 class="window-title">{{title}}</h4>
{{#each headerButtons}}
<a class="header-button {{this.class}}"><i class="{{this.icon}}"></i></a>
{{/each}}
</header>
<section class="window-content">
</section>
</div>

26
ui/pause-inner.svg Normal file
View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 128 128" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g>
<g>
<path d="M64,102C53.514,102 44.014,97.743 37.135,90.865L49.861,78.139C53.481,81.76 58.481,84 64,84L64,102Z" style="fill:rgb(126,214,247);fill-opacity:0.75;"/>
<path d="M78.139,78.139C81.76,74.519 84,69.519 84,64C84,62.408 83.814,60.86 83.461,59.374L100.976,55.211C101.646,58.034 102,60.976 102,64C102,74.486 97.743,83.986 90.865,90.865L78.139,78.139Z" style="fill:rgb(126,214,247);fill-opacity:0.75;"/>
<path d="M52.286,27.843L57.835,44.97C49.809,47.572 44,55.113 44,64L26,64C26,47.115 37.037,32.787 52.286,27.843Z" style="fill:rgb(126,214,247);fill-opacity:0.75;"/>
<path d="M79.058,50.844C76.56,47.986 73.26,45.845 69.512,44.77L74.472,27.464C81.595,29.505 87.864,33.574 92.611,39.003L79.058,50.844Z" style="fill:rgb(126,214,247);fill-opacity:0.75;"/>
<use xlink:href="#_Image1" x="32.244" y="73.42" width="37.868px" height="34.865px" transform="matrix(0.996533,0,0,0.996129,0,0)"/>
<path d="M64,102C53.514,102 44.014,97.743 37.135,90.865L49.861,78.139C53.481,81.76 58.481,84 64,84L64,102ZM49.877,79.537L38.559,90.855C44.967,96.929 53.544,100.736 63,100.987L63,84.976C57.958,84.74 53.378,82.721 49.877,79.537Z" style="fill:rgb(178,231,250);"/>
<use xlink:href="#_Image2" x="73.42" y="49.568" width="34.865px" height="46.661px" transform="matrix(0.996129,0,0,0.992795,0,0)"/>
<path d="M78.139,78.139C81.76,74.519 84,69.519 84,64C84,62.408 83.814,60.86 83.461,59.374L100.976,55.211C101.646,58.034 102,60.976 102,64C102,74.486 97.743,83.986 90.865,90.865L78.139,78.139ZM100.221,56.418L84.641,60.121C84.877,61.379 85,62.675 85,64C85,69.436 82.93,74.392 79.537,78.123L90.855,89.441C97.142,82.808 101,73.851 101,64C101,61.402 100.732,58.866 100.221,56.418Z" style="fill:rgb(178,231,250);"/>
<use xlink:href="#_Image3" x="20.075" y="23.225" width="43.835px" height="47.174px" transform="matrix(0.996246,0,0,0.9828,0,0)"/>
<path d="M52.286,27.843L57.835,44.97C49.809,47.572 44,55.113 44,64L26,64C26,47.115 37.037,32.787 52.286,27.843ZM51.647,29.116C37.59,34.101 27.43,47.345 27.014,63L43.024,63C43.425,54.455 48.944,47.238 56.583,44.35L51.647,29.116Z" style="fill:rgb(178,231,250);"/>
<use xlink:href="#_Image4" x="65.141" y="21.84" width="34.125px" height="34.397px" transform="matrix(0.974991,0,0,0.982775,0,0)"/>
</g>
<path d="M79.058,50.844C76.56,47.986 73.26,45.845 69.512,44.77L74.472,27.464C81.595,29.505 87.864,33.574 92.611,39.003L79.058,50.844ZM75.154,28.714L70.742,44.108C73.961,45.2 76.83,47.051 79.135,49.449L91.19,38.917C86.874,34.242 81.368,30.679 75.154,28.714Z" style="fill:rgb(178,231,250);"/>
</g>
<defs>
<image id="_Image1" width="38px" height="35px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAjCAYAAAD48HgdAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADY0lEQVRYha2Y3XLaMBCFP4MhodO+SB4yF3nIPEfbSQoB//SCPfh4kQ1mopkdWViWP61WR2sqHiiv7/vKmlW63QO8vez6R8aeGvReqApYRV0Ca3X9KOAiMINah62i1jiC6qJuH4W7GyxB1cAm6m0Ca4Bj1E1AdksB7wJLUJuAeY56y9lzK4P5CjtFW17sbAKzcXgTrAD1FFCyJ86eIwBOwMHgmvjN4fowXZNBZ8FmoHbAj7jexH2ByWNHs8asZYhFXV82jOAmwW5APQeY4iwHv7ykpcwxpz4tE7GoJVgK9WxApWVZmSfbuPbdKphTwatt0WN3QD3F7yubpceNnvWxBax+ikUt+SFMgGOP3QlVM5YFLZd7qw6T3mlcf18TbU3Qd2976bgAihjgyFgWHGzLWOvWXIN6KGg8Lef5RQuhtOvc/UcDW0dbUDXD8pOgNjGeb6IKoC4ousRTkqDZC0o6tY9aSynxlNjWZqcYp019dKT5cgNUtXXMqu46BcP2P5hJQF3Vdbh30X/NOA4dXMUTgxV2s7LOruzbGFiB6Uuol3ngY15pGY4p7Ua9Q7t6srg4+kOybdzLYuiiWDycX9/3DqnxXXSVnXT5WXWGa1f6uucyOt8C4qrf28uulzEcP26ufVcTE5gLoItgn/pqg0h/LvlYCS6VfsKKpbabmoWEU7rj3pSUuGZdDubX9/3ivGsOTLPpDOjA4E3tyjXnmPNjJ+dcLdAJEB7P/QXmh+sXQ2x1DOLqwqgYrBkfS6NjhbMXYfC622ypYKT8rtRZNhRXAvYMQVlCTm0Upxpb+vgrxq+izx74A/wjTpMLeQFOabMAJR8XEbSXO2TJc9iEd8BPBi1rAuh3ESzB+QeHA+rM05I6oDIOBxUc0Vdj/GDYeKebYAU4B9xwDZcBXWo8VxOYh4nE9Qv4vAmW4FyrBCOwLeO0pnTEePKoMNFz8vAB+OAcY5/Rbm7l/DA+R1VrcAFm0c07zyeoiUieBPaXIWOZBpsA9OXNtrF7/oW+SqbftYyH8NQHlhw88iUuj2j5PEOtU7sEpOc9tztwji9JTvtdf6rk/zI87kpgMBb0k9Ut0C8GS4Bw7cW5On85ldKp/u1l9zhYATBDlq5zKX2V8y1gM6CegHrbS/7evP0XwXeVO/K0YgbyH62T3lPkEP8yAAAAAElFTkSuQmCC"/>
<image id="_Image2" width="35px" height="47px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAvCAYAAABpG3MiAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEG0lEQVRYhbVYW5KbMBBsHn5t5SQ+5H74kHuSxHgNmHx4GlrDCIOzUdUUGItRqzVPCvzn8fnVFP7Z5XwaormziT+4MO9LN+1h18ED+ycwweKl3PM377lob/e8joDqH1iczyoHopRnHAOAzoAUeLLUq8K1AHTnXIyLV3KtBEglcx8mdwCtyd3ADZfzaVhkxoDoTv2Oc4vXJpVdeUwdgG8AN1uil+d5ZgQIF6lFSnkWgdH/CAbGxg3AFcBvAI2B6wDEzDggNYAdgL1JbVcFoEflbYYbgADrMR1VB7OdpWOish2Ao8nBhEpz7qtDNwbTd8CToURPDgx3RxaOAD7suhPFDzzPfHD31MGYogavdkVm2xCMeA8VcCdkZ2f/d3btIVRjMkouvLPfPNoBqRO8ZEZ3QZuhVLLoHZOrMn50Aqa2jai+h6yTxK0lm1FPosCUdQbiiufZKxjGE25kkHuvnxsvEUzIgeKLDOOMFY0DQyBchEA6Exo67SsZW9KB2kRrgCh3TLZCMDRUAiFrmqeSkXNJn3foJbSJDlOcaOVZfzmfvIdBdETeN7K5hRnuhjbTizxyNcqWsSZY+azLHY0lAGLao1SjTAxI41IIRkH4MsADSZQFQzO7BzU7xgSMC3iVu3IoEFUWjSIQgpltKGLGZ95S5hEAbWaJGZ80FQivybseDBXUmJcMQGq0oysHxhvVQLrWw0nKjB2RFkYsG2gzfJFunJSMgZ4lZrwR43I+PW1G6hcC2SPNRVTSIQ1iuWPy9VDESsKuMqOpnUWU1i0KpBVFkQEXTp/3SOqaOUEptFbCyMExw52wgB6Vqb0E3qi1MHNVjzkzic2ovRyQVnS6G7WXnBcpIwTi7SXZ0MgM5udLRlSRGt1YJmS8SHVRNGhmU0mZUaSF9qsOQu/1eFi8kyllRNldTAdak3COMqjuqkCi0KCe5EOD5jYAadZW6+ZxqEFq7BkD1udXo6D1qDVgegcIsz3LwkEm3/EsmLxx08tIsTIZAV6KUTPjVWZ6TOXhDakHsKonI95o2SVEzV4lc7S/Dr2xNJrIDCc3mOpbvkxAR5G9k4MDw42ygG8hHum9UW2GeaZwV2CKOQyMwGQjrfzW3ko96Bvuq0PEjHdNbby0cTshDYJRr1xhity0RR77HxN2EqyVkzG6Z3BcbEfYkvBrAWwxgvwA8MuErDDL0xn4bujSM2Y2MqSe4nXpd5irifZXfa54nwW9NxgiWNY+wGSw7KmY6RfL1LA7eAGIHsYFdAxuPsGM4X+ppcm2KguAGkw9NncfAVbQtJXFsfYDY86G9HvNYItrD06gPV6wsgpMBpAGOR9TIg96CWQ1mACQZmZNHT7/rAayCUwASCu6qABbdTRvgxFAfDf6HD/241s/BmwGE4BSPePi73yV+AsqlEkc6b6L9QAAAABJRU5ErkJggg=="/>
<image id="_Image3" width="44px" height="48px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAwCAYAAABqkJjhAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEx0lEQVRogb2aWXLbMBBEm1psOUfJIf2RQ/ok8SJalPIhNPE4HC6SkqAKRdFFAq1GT88AcqP/1F7fPhvcNskjF0n69fPlMjdO9uJfbQDaSNqUqz9L0llXsBd/ngP9zwAnQDeStqUbtArQroDtSp8E/U8AF7AR6A59qyHDraSTpO9ynQS9+49A95KeytWgzwXgXtJXGcby6LI5/hpggPWyG+hT6PvSzXAbwFoaTbkftIclAa16mbeqbGadsrjoyvCXpHdJvyV9lvuTpC7K4iGGgwS49M8zQP3stgzT6Mqo3/tWdZNRuxtwIgECfS6dem10XW5fBWDb8l6L509KZHGXJAJYsnrQkN0dJrXfel4y3kk6SvrQVRbvukpjJIubGU7AGuABgPeqS96Vid1VQDr4nvA3uksqi5sAT4A9lEl/qLLqgOp01WSr6rVnVQkdytBbXM16KgtbyyNgDwWsgcfo/yj9XXWp7QRt+UL2XNphn1xYh6xieAHsS7m3Xs3qUdVjzbCB7XDd455zUCJ9ErlFEtFjqdkI9qt0g6Yc6NtMxXaSLIX3AbsoicJu5gbuBNuqLrn7MQBjdyCeS6fNpbKYBZwkBgKmbRnsV+jfqhp1McP0a9CdamBRx5SFpGVJxMSwRgYfqjIwsFiYn9ENnPNlsuhmARd2qVtnL1pXBMsAOyupBUI7h3tXcATMwv+SAk6k4MxlwLSuo8ZBtgTWADbh3kFnr2bBr9e3z2ZOEtEVWBtIw6RwVA2uFGyyA4la9WfOzZ3JRlI3CrqJQGPh7eLFXssE4ADKxlQAGVfNY8+2KYbJAAuZKIUWV+/LBgE2A5bWyII+2t10PTzBrpmNUqAM0n3YjC269qDjSHVfF+uPnoyM4ciuATvjcFCDndueZx7udP6kyqxZParWGr2HS9eVi4CzgCC7BmxmeylMBJk9lPXHiyqzBOvxYuI5qW5MK8Pw3UwOZtdy8OD+WwbW3TGQgWUJygA+JnNoADgwHDONVIPNupo7P5jbjTjAoo+zsrMUnA37QN6FSeIy0mocvdTtlIXRw53SGQ+slzMJ9CdABNsDhvVE/bK8I9gldrlSMaVHZlnMD4hYOvmhfrnTlerSDMDGwQK72e5ZGtYfBntcIGEAkszwMIRbc4PlUo2cAePwjIIZMrJrL18FloAZ1QbLL+Nl4pJNgWUMMENKNWjpBqvBEnA8DmXhbOtxH6VLaSCHWNPG7T6LpZvAStImVFHUIM9veRAyBXaqCmMcON2uyZBp4241HpNSJkqe0+vb5+DLa6jbPcahJQ7qg1vAErAnjKcvrs7oHs7/9GB/Ce5MsqRDl0mltRZwLJR5XBRPJf1etr1hsf+M59Jd8q3sErAbtyqM+Gdd2bBlRZfIUjGLfTKcZsh7AZM1g2BQ7jSxqwBgM03fzVzmZnYJ+IJOjflwY4NnvbONDEftnzFOPDC5uxEwddaqBgyfIbjYaIMey2UjD1Tu1i/BeCKnTZq9/VSaXs4mXKVqY07Bo2L8EcBMva1qheYjfCaANZN56Z0kmNXuDjgZBDJV3BbFqm1t46+bLPrXnAbNtkwSTsMngF198F2apcPgfTjgJDA38yO2dB9gaVyHLP5av9RGSx3+TSB95obWg3sUqNsfhCuohUYYBdsAAAAASUVORK5CYII="/>
<image id="_Image4" width="35px" height="35px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADTUlEQVRYha2YW3KbQBBFLyAiKc5Kskh9ZJFaSWJZMqB8qA9cmkEPJ1RNGcMMc7j9RJVeOA7HU8X5r5/76ytrnzmqezd98ztzr9L/gVuFMZBKUhN/a5syBMjVzv8JqghjIE0ANHYOEAB9nPcO9hWozQPQOuZ8k9TGeRP3+xidjRHqcDy9DLUGg2maANnFaG0NIJ8xLgWo/nA8SXrOfAszhYkqTWrsJb0FzDZgqgRzXoEC7CmV1pTBP9oA2AbUVktlmrgGSGtwTfx9SqW6cA1l2KTVTaXsNwyAd5K+66biW8DvCuuqlDLKMDaJCNrYYC4R1GkK7UqTo+80mXYfgNu4x3OKQCVlahsZZNDNBB8x3jWZZLA1rtTeVGpjFBVaMxOqYIoqNrsExJ8Y75JOcQ3HVawBCHVyRC6AMoxnW4CY3IcCHwHwHkC/DewcUEOsQSWAXKEF0BhNcaHWPMcwyKydJjOd06aEMtGHOcZNNc/gHPjgIrQdZHQ2W/SpeT6hBNS6OagnPPISUASFP28sJ4fjaQZT2djYYo5S+u9s7WBz+rieo9JLyaKMbKSZiVhc2+JaUxYtZtaAIZHxd2Pz+L+O+2Ru9ugg98PDOUvqb51TPD7l9ztNZkS9bK5Zv+RmyqqUgLyHWTuqNHi2KzfY+XgAkyPJM680+cDisMLqjk825oUGlU2NipJ0zdGUQxozAloa3KOOkew8/ROJnabsTZIcu8RNyi95E7zflSKEr3af0Pbeh3qEsjgtGfuc1cnKlHyBpNfGJixu4hwfK6lClHmyZKBUrwgEh5kloZjIA2m2kNT7FExE6vcG7B7IxZ4nxQIdjievtntJPzTVklZTrvE203NIyemvsSHFFdOcNc/UY7OVlfFiiB9d7U099D1E3edk0K4IYETSog31t0BSr0eogfRAoZYfhO7FXsgVWfhIWj9ThlxyMUA3yzdNhY+QxXz+Mm4Wj5q7IDIFPHl5jWJjHJNIQSkvfPQydICXpMjDL4RZ21f4pMVHyCEAeWuAedw/APOi+vBT5dHnbS4P/umSe2Mc9G7EvAyToNx0XnNyS5r7nJdAHsIYEHPddKUWw9uIlz/+H8IkqFzH/Jj9PPKVXyGehjGgtbXj5l/9jeYvSubCs9xup7oAAAAASUVORK5CYII="/>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 9 KiB

19
ui/pause-outer.svg Normal file
View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 128 128" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g>
<g>
<circle cx="64" cy="64" r="54" style="fill:none;"/>
<path d="M64,106C83.2,106 99.409,93.088 104.408,75.483L115.954,78.764C109.526,101.399 88.686,118 64,118L64,106Z" style="fill:rgb(13,153,204);fill-opacity:0.9;"/>
<path d="M99.631,41.766C92.207,29.9 79.019,22 64,22C45.975,22 30.587,33.379 24.634,49.338L13.387,45.149C21.04,24.631 40.825,10 64,10C83.31,10 100.266,20.157 109.811,35.414L99.631,41.766Z" style="fill:rgb(13,153,204);fill-opacity:0.9;"/>
<use xlink:href="#_Image1" x="56.038" y="69.04" width="66.954px" height="57.525px" transform="matrix(0.999316,0,0,0.991816,0,0)"/>
<path d="M64,106C83.2,106 99.409,93.088 104.408,75.483L115.954,78.764C109.526,101.399 88.686,118 64,118L64,106ZM105.085,76.715C99.754,93.944 83.87,106.557 65,106.988L65,116.99C88.441,116.556 108.182,100.872 114.709,79.45L105.085,76.715Z" style="fill:rgb(126,214,247);"/>
<use xlink:href="#_Image2" x="6.415" y="2.024" width="110.434px" height="54.35px" transform="matrix(0.994904,0,0,0.988182,0,0)"/>
</g>
<path d="M99.631,41.766C92.207,29.9 79.019,22 64,22C45.975,22 30.587,33.379 24.634,49.338L13.387,45.149C21.04,24.631 40.825,10 64,10C83.31,10 100.266,20.157 109.811,35.414L99.631,41.766ZM108.424,35.101C98.965,20.596 82.594,11 64,11C41.606,11 22.438,24.918 14.682,44.565L24.058,48.056C30.394,32.209 45.898,21 64,21C79.019,21 92.25,28.716 99.939,40.395L108.424,35.101Z" style="fill:rgb(126,214,247);"/>
</g>
<defs>
<image id="_Image1" width="67px" height="58px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEMAAAA6CAYAAADr5+R6AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAF/klEQVRogdWba07jShSECzLRIHTZDXtiTbOn2Q0SIkKJ7g9cdnW5TtuM8nCOFNkEO3F/rvPqdh5wh/by5+/j2mPf315Pa499+LfLuY0ZhN2wrcAQwlHf7MG5GxgCYodvANzyPTUCOA37MzAJyl3ACCD2w/4eExg1Aqi2PKaBstr3NmAKYg/geXi9APjPXi/y/2cATwB+y7kjQHW9zStjuFgFwYH5ANVOAL46r+OwpVrw/vZ6+nXhsZzT6BYEwruud5uWYHwCOMg+hn1gALJpZZgqqAS6BmFQHRo3eOd59wmC249hX2HhXpSxR6sKQlEYwDcQBsk9JoXo+RiO4XF8HTcLw1Th6uC2ihl0qeOw/cLkRoQwKoK2WRhinkU0cO4wuYfXDY+YAHg8Ocj5PG6byggZxCFojFDJ0xSCwjqirVOa0mKTMMQciIJ4RAtCJe/HAhMYL9BG2xyMBVU8YUqjVILWDie0kNzSe6NtCoZUgw5C77QHQk2RtKdhq8drkeWwTsDGYAy2kxcBqCo0BhACiylgcoe9vLfDvBDTtApgQzDMPR4xpU53D7rIEW0xxUFpLaED7pXmADYCI7jHk2w9lQJthakukoKjBlgtydVVju9vr6ebd63Wnnv/4YUVVVFJHpjU4ynVy28/77YtvIHQIMlym8rwwKlxgndXg67XEMk9NJiOH3ATK0B4z6HKAGpFpHScXOqANlacgGmC5yYwOiCoBFVFyh6UvKbHKv1Wqmj6EuAGAVRA6NQdQaSZqZ57UBVecVbp99POPeq039VgFBO6CcSzvKcFkw6GdxeYxxtv0909Zt0q7SowigldL7N7IJLMYZ+lsQWYVKGzW03w9Bnyi8LoqEEndTVzuGvogFgjpOzB2OJBM4Eo+5OLwDAIQO48FQD3EwivFjV7qCJUFRpotdAaZ7XSusnZYHRWuzRQaozwrYPg3dRYoXGiKtN9AtjT6WWU0QFQuQXvosPQIkmVkEC4wgibRRTP47mzoFstMa6C0Vno9fXOtOLlMHzGKsm7yhzpc/id7hofaFUxrpFUFmGEwWsD5GpYAqEDr+YmeKFV5Id8trfz6h4HtKqYuUdv4XkGowh+SQH6P3WJFCwVgi8ap8qSWaNShDduev7H8Jql4qXHExoYMqeQBpq2BKODTD5dQVjsG1aCUAgpg8TsUcIo1ik0QPmA0laVkc5RCEkR7hZepVaKONhrVfaIMEJWSP6uPrq03ctnJQipTFY18LM0+zgIfsYH5qqIXekqGAWEtNqtg+ZF+6A1qFUQeh1kmgz+bZ/LcyvX+JF7JBgsXHgRXiqr5JdM0xgv3heDKzUkVS6BYBrVmuRHIADglwXNaqLFK8Q0YNjfGhf0eQiHQBAp+6jr+TymwpiB+AmEEYbs+8y0zy/4NJoPGpi7Q9p3CEsZyHsUqqAL4qeqcBg9mfqF+QUuPUNVQfD4oJnIAyUHrS5xNhAKQ6fq0yKOzjbx4rSldnkmF0p1SeoxeGxqupIazgICmLuJuooHS5+iT03UbMkOrQqW6hdaataqJ27OAgKoGzVfrdbBptToWYHbtQUZLRVjDsHnQM8CAsgwqqYsPlxqx6ZSvlfBqnlp7s9hxRh1Dgi0BMMHqgWV3uWvYXvCVHGurUr9+6gwfyLPY8NZ3cJtaT4j1QK8GM47El6qQisVAO0ddhfoqgE4PwightEsymIakKoAw74qKbX9/rlVWZ7mMrxcvxgIoIURHwfEXB0q+eZuoQYA5LLcmzXNTldRgxphaFPlF+qNl5vPiqWS3LOEvz7t/w754iCAVhn8ci2qqASgVQO3vUIrleTplfqX8XuuAYH2AAAvf/4y7fnTt96b6CJNVW77nfVB+8C5D1zRJZJRGbyjX/geNN0D+L5APkSqEzU8L3WovWYt9TLjNdwCAs2zid4lYLqT2jzR1jRmaxq3m0OgeTYBMgyfxwTm6tD9atCzCnYLEGjjTyw6vwHrFU5pcidN9OjfmwKg1vzeZOWaCU0HlLrVpqzfKgC12Y9vFlbTKps1bvcweLfuL5HW/pj2Hgee7H/dWfy50HnMbwAAAABJRU5ErkJggg=="/>
<image id="_Image2" width="111px" height="55px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG8AAAA3CAYAAAACGBT6AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAIZUlEQVR4nO2ca27iShSEKzAoUaTsJnvKmrKnbGaUKJoIge6PS0G5XKdtgwnkcSQLY3Cnu78+zza5wTeQh+eXxRztvD49budo57Pk5tIdmCoFqGW4Ngaow9r4F64Z6NXDC7AIajFwzT9TcUjbcD1duyqYVwnPgDmYpZ37Z/p+SBTEBn1gWzvXzy4O8mrgNYA5rIW9IpxrG5UkKH6ur7Br2sZFQF4cnkBLwKa+ws61XUplGh3WlNd9u58J8SLwgpb5xK/C+QpdUKviXp5TkglN5pHvFco6nK/lO2tcEOKnwzNNS9qzQhfYCjXQsdrWkrEA1/JerzlMyPuzQvw0eAPQHJIfSfOq4GQKOMoYU+rA9EhQgTNDPDu8wqe5ZrUO/T7v1/Yq2ey+42nBVK1UmA6qdej3ef+sEM8Kr9C2BOg2XFNtYxtJktb4dRdva6zJHdLCj3BN/easAM8Cr2EiCeYOXWh36Gqam0aVMTnY2MmpIt30mffBTeo/dAHyvfvF2SDODi+AUy1SWLfoQ1PzqNLKt2LehWGAQxFvK5dMfSMkhehAZ9XCWeHtwCVtU00jOL2eJmZKrkVJE5HMZ2U2W7lmFeEmn+gAFaT6zZMAzgJvwLcpMAWnvs0nocqj9gNGH9xckjRNF1gy7Qmim9B3NLTwGIAnwyvMpPq2Cp6u4qG8akjLjk0XEvwt+iaVf0Ph+eJziOrvVPv09SQzehK8BjiFdY+umfSBVhGcaxpwmJihwrV/J0mrypK+1yooVBA5tgqem9JJAI+GZ+A87Ce8e3T9nWtbFXJ7IAL0fY2eV0FFBbC1m1AFQb5wkhY6SB2na+A7TgR4FLwBcASmGue+rVWpSNDGFKb5XWCc2TylQO19U4gehPmYVfPe0dfC0QAnw2uAIyzC01QgrcIqkaVUkd5QXZPXxkgykR4QVb63guiFB+2fRqOE5wBHR6KT4BXg3EwqvDHapiUkn4jWrgL7cQ5J+WRVjPa+e8CmeSykLdc+mlFf0CXA0fBGatwQuNQ5DwhSNHdKmawlp5bFXCN9HF760zlhGwrP/WDThP4ZOUgd4AKHySUwN5epk14y0s4MOf4pZbKxJTI3u2u0zbGOaSXjWKA7Jh4bOe7C317tzu/RN/sU7k7EfHaU5lnlRFOBezs46UCOslqrNK3QlAtq24M72+hDHFNNcTOt97kpbflu3l/VcNmWm08eHRPt2jcIL4BTjWuZylSsXUvTHIAOKPm15Hd04sYAdBlTBnOfW/VLzWfLsmh80AKohxe3O+azCU/8HAegibceFTgtD1WDaeVHrT20VD5LlRi2BfTNIK8NJd9jFlfy6b5YpwB8Ra7G7AGWPs8CFHfANJk8r8Cp49WJ8gF4NFZV6j1CTaWzIa2jpNwwpSUpclSt9HlifympLquibXB+tf8e0e7bGApYdBCudXzf0jgH5+WzVjWiMrtJ63hvZ3B2XYVBBsfIa5z8ZELX6EPUOYJcY1ucC/aDOZ73hcettLWRezjOBQA8PL/g9elxG+GJ1vnqo39Lau+aoabSqw9qLjkwr8b7IkhBQQpKxuw0tArcCjPBW8s4NmhrI8WjUUapHiBR7qVvGrXyfgBtzXNzSW3h4fbazWUC5z6OHfSotALXDEqO3BfbymL1SHGLg5ayz+zLHQ5pAO/RVEqFC0KtBTU8LYIl+grBv70AsHl4fln0AhaLLj0leEA/QNFk06NKB1eVy1pbJikEPxVYKY0ntz14SVtdaXy+MeuLOkXsnJM3/B+4/N2da/qw6Whew1zeIfspTr5PtLYxNLBUqGWb6tuAI/a8poq2/fD8oh+p1qgZSxEux0kF0CKDLkLfAVFf69rYM8fJbC7RNZlqLof8HAeg8BM49W2ptscVevRG5RzCv7eDyL5w7BpIuP9lwUKrUcBBqzbyvqomLeW6XtvLHp5pnU++BhvsoG9xqIYs7Z4WOIXnqcBFoLkUECsNZF+5aD2SpFYBXUCpRNYMvpJjTXadEPhHfIdAO53SAQfnlQRq3QeuDJyK9EVzt1QZ0QLzFt3F7MUNdUXadsoPOzD/AKXWpUqAmgxPnmH3VlElB5ZqeL0qwrWJaeEY8WI+5NXrrBxzekzCS269clHaUNTVQUlJsgc5upp0lbq5/DLgVHZ9dAukjzhwfO5S3B1xXtmWLm4N5tRMA+jCc193h77JXKJr2xWc54Qe2HjF3NOBLwOOYmbUAfoeHceYKkCaJ7OuWe0ubLHbYXC1Ve1Lvx9Iwns039FE1QMbHl8aHKUBUME5RD/cIjG/0+J0rza6GHju0tODVD7S77kp0MqJByVfHhzFAFYQk9XRa6/oQntD37V08kk3m16Q9VzDNVEDm7QZu8UBmGpdx4R8ZXAUGQPH5q5CobzhUDXR6w6tGYEzz9NoUzVLD15XQJp8uvPVAXhH9hHqdwBHeX16ZJ2Ufl6FscIHcl1YK1X+DEtMnaY+w6IJpyebBKyJawVt6x35LrIDyLcKkJC8vFg9UjFYXfIk3SsFydYmc5mScc1VPGQ+6ocVX0UkjUgpkppHjyonPT1NzdPQX4MMzdX0XK9B2lgjryIv6v4U0XrnBvlpuFQbHRULuNnUiadt1s9Uu/xxPIJJv0379ubSpajE6P6gXwcmbnURHrfY2bBu1XMlpN1zf+5EzUPK5b61uUwiQUysT/p3p7R9AzSfy/S9uPRsJcXzGtrzDsCfBu+comZTbe4/9B3uLQ5+0GuXQDdI6UHDL7jZZQGUJR7funmz4284NILykPdXZpa92Sv2qqoqQQLHz1I1/SdFmJ8m1QNIlPTDi2rn16sBV7up+l2kfNx94P9f8pyfpQdff8GdWab8SojiTzypHJWv/MpxcsrPmpvyC+388h8vGGxXIaDqewAAAABJRU5ErkJggg=="/>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
ui/pause-spinner.afdesign Normal file

Binary file not shown.