Merge pull request #59 from Foundryborne/feature/49-enhace-feature-sheet

Enhace feature sheet and apply new standard style to applications
This commit is contained in:
Murilo Brito 2025-05-26 12:42:35 -03:00 committed by GitHub
commit 307af1fd77
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 1074 additions and 128 deletions

374
styles/daggerheart.css Normal file → Executable file
View file

@ -1806,7 +1806,6 @@
align-items: baseline;
}
.daggerheart.sheet .item-sidebar {
border-right: 1px groove darkgray;
min-width: 160px;
flex: 0;
padding: 4px;
@ -2785,6 +2784,369 @@ div.daggerheart.views.multiclass {
.item-button .item-icon.checked {
opacity: 1;
}
.application.sheet.daggerheart.dh-style.feature .item-sheet-header {
display: flex;
}
.application.sheet.daggerheart.dh-style.feature .item-sheet-header .profile {
height: 130px;
width: 130px;
}
.application.sheet.daggerheart.dh-style.feature section.tab {
height: 400px;
overflow-y: auto;
scrollbar-width: thin;
scrollbar-color: light-dark(#18162e, #f3c267) transparent;
}
.application.sheet.daggerheart.dh-style.feature .tab.actions .actions-list {
display: flex;
flex-direction: column;
list-style: none;
padding: 0;
margin: 0;
width: 100%;
gap: 5px;
}
.application.sheet.daggerheart.dh-style.feature .tab.actions .actions-list .action-item {
display: grid;
align-items: center;
grid-template-columns: 1fr 4fr 1fr;
cursor: pointer;
}
.application.sheet.daggerheart.dh-style.feature .tab.actions .actions-list .action-item h4 {
font-family: 'Montserrat', sans-serif;
font-weight: lighter;
color: #efe6d8;
}
.application.sheet.daggerheart.dh-style.feature .tab.actions .actions-list .action-item .image {
height: 40px;
width: 40px;
object-fit: cover;
border-radius: 6px;
border: none;
}
.application.sheet.daggerheart.dh-style.feature .tab.actions .actions-list .action-item .controls {
display: flex;
justify-content: center;
gap: 10px;
}
.application.sheet.daggerheart.dh-style.feature .tab.actions .actions-list .action-item .controls a {
text-shadow: none;
}
@font-face {
font-family: 'Cinzel';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/cinzel/v23/8vIU7ww63mVu7gtR-kwKxNvkNOjw-tbnTYo.ttf) format('truetype');
}
@font-face {
font-family: 'Cinzel';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/cinzel/v23/8vIU7ww63mVu7gtR-kwKxNvkNOjw-jHgTYo.ttf) format('truetype');
}
@font-face {
font-family: 'Cinzel Decorative';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/cinzeldecorative/v17/daaHSScvJGqLYhG8nNt8KPPswUAPniZoaelD.ttf) format('truetype');
}
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/montserrat/v29/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew-.ttf) format('truetype');
}
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 600;
font-display: swap;
src: url(https://fonts.gstatic.com/s/montserrat/v29/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCu170w-.ttf) format('truetype');
}
.application.sheet.daggerheart.dh-style h1 {
font-family: 'Cinzel Decorative', serif;
margin: 0;
border: none;
font-weight: normal;
}
.application.sheet.daggerheart.dh-style h2,
.application.sheet.daggerheart.dh-style h3 {
font-family: 'Cinzel', serif;
margin: 0;
border: none;
font-weight: normal;
}
.application.sheet.daggerheart.dh-style h4 {
font-family: 'Montserrat', sans-serif;
font-size: 14px;
border: none;
font-weight: 700;
margin: 0;
text-shadow: none;
color: #f3c267;
font-weight: normal;
}
.application.sheet.daggerheart.dh-style h5 {
font-size: 14px;
color: #f3c267;
margin: 0;
font-weight: normal;
}
.application.sheet.daggerheart.dh-style p,
.application.sheet.daggerheart.dh-style span {
font-family: 'Montserrat', sans-serif;
}
.application.sheet.daggerheart.dh-style small {
font-family: 'Montserrat', sans-serif;
opacity: 0.8;
}
.application.sheet.dh-style .window-header {
background: transparent;
border-bottom: none;
justify-content: end;
}
.application.sheet.dh-style .window-header h1 {
color: light-dark(#18162e, #efe6d8);
font-family: 'Montserrat', sans-serif;
}
.application.sheet.dh-style .window-header button {
background: light-dark(transparent, #0e0d15);
color: light-dark(#18162e, #efe6d8);
border: 1px solid light-dark(#18162e, transparent);
padding: 0;
}
.application.sheet.dh-style .window-header button:hover {
border: 1px solid light-dark(#18162e, #f3c267);
color: light-dark(#18162e, #f3c267);
}
.application.sheet.dh-style:not(.minimized) .window-title,
.application.sheet.dh-style:not(.minimized) .window-icon {
display: none;
opacity: 0;
transition: opacity 0.3s ease;
}
.application.sheet.dh-style.minimized .window-content {
display: none;
opacity: 0;
transition: opacity 0.1s ease;
}
.application.sheet.dh-style:not(.minimized) .window-content {
opacity: 1;
transition: opacity 0.3s ease;
}
.application.sheet.dh-style .window-content {
overflow: initial;
backdrop-filter: none;
padding: 0;
}
.theme-dark .application.sheet.dh-style {
backdrop-filter: blur(4px);
}
.theme-light .application.sheet.dh-style {
background-image: url('../assets/parchments/dh-parchment-light.png');
background-repeat: no-repeat;
background-position: center;
}
.application.sheet.daggerheart.dh-style .window-content {
position: relative;
top: -36px;
}
.application.sheet.daggerheart.dh-style .window-content .tab {
padding: 0 10px;
}
.application.sheet.dh-style {
border: 1px solid light-dark(#18162e, #f3c267);
}
.application.sheet.dh-style input[type='text'],
.application.sheet.dh-style input[type='number'] {
background: light-dark(transparent, transparent);
border-radius: 6px;
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.05);
backdrop-filter: blur(9.5px);
-webkit-backdrop-filter: blur(9.5px);
outline: none;
color: light-dark(#18162e, #f3c267);
border: 1px solid light-dark(#222, #efe6d8);
}
.application.sheet.dh-style input[type='text']:hover[type='text'],
.application.sheet.dh-style input[type='number']:hover[type='text'],
.application.sheet.dh-style input[type='text']:hover[type='number'],
.application.sheet.dh-style input[type='number']:hover[type='number'],
.application.sheet.dh-style input[type='text']:focus[type='text'],
.application.sheet.dh-style input[type='number']:focus[type='text'],
.application.sheet.dh-style input[type='text']:focus[type='number'],
.application.sheet.dh-style input[type='number']:focus[type='number'] {
background: light-dark(rgba(0, 0, 0, 0.05), rgba(24, 22, 46, 0.33));
box-shadow: none;
outline: 2px solid light-dark(#222, #efe6d8);
}
.application.sheet.dh-style input[type='checkbox']:checked::after {
color: light-dark(#18162e, #f3c267);
}
.application.sheet.dh-style input[type='checkbox']::before {
color: light-dark(#f3c267, #18162e);
}
.application.sheet.dh-style button {
background: light-dark(transparent, #f3c267);
border: 1px solid light-dark(#18162e, #18162e);
color: light-dark(#18162e, #18162e);
outline: none;
box-shadow: none;
}
.application.sheet.dh-style button:hover {
background: light-dark(rgba(0, 0, 0, 0.3), #18162e);
color: light-dark(#18162e, #f3c267);
}
.application.sheet.dh-style select {
background: light-dark(transparent, transparent);
color: light-dark(#222, #efe6d8);
font-family: 'Montserrat', sans-serif;
outline: 2px solid transparent;
border: 1px solid light-dark(#222, #efe6d8);
}
.application.sheet.dh-style select:focus,
.application.sheet.dh-style select:hover {
outline: 2px solid light-dark(#222, #efe6d8);
box-shadow: none;
}
.application.sheet.dh-style select option {
color: #efe6d8;
background-color: #18162e;
border-radius: 6px;
}
.application.sheet.dh-style p {
margin: 0;
}
.application.sheet.dh-style ul {
margin: 0;
padding: 0;
list-style: none;
}
.application.sheet.dh-style li {
margin: 0;
}
.application.sheet.dh-style fieldset {
align-items: center;
margin-top: 5px;
border-radius: 6px;
border-color: light-dark(#18162e, #f3c267);
}
.application.sheet.dh-style fieldset.one-column {
display: flex;
flex-direction: column;
align-items: start;
gap: 10px;
min-height: 64px;
}
.application.sheet.dh-style fieldset.two-columns {
display: grid;
grid-template-columns: 1fr 2fr;
gap: 10px;
}
.application.sheet.dh-style fieldset legend {
font-family: 'Montserrat', sans-serif;
font-weight: bold;
color: light-dark(#18162e, #f3c267);
}
.application.sheet.dh-style fieldset legend a {
text-shadow: none;
}
.application.sheet.dh-style fieldset input[type='text'],
.application.sheet.dh-style fieldset input[type='number'] {
color: light-dark(#222, #efe6d8);
font-family: 'Montserrat', sans-serif;
transition: all 0.3s ease;
outline: 2px solid transparent;
}
.application.sheet.dh-style fieldset input[type='text']:focus,
.application.sheet.dh-style fieldset input[type='number']:focus,
.application.sheet.dh-style fieldset input[type='text']:hover,
.application.sheet.dh-style fieldset input[type='number']:hover {
outline: 2px solid light-dark(#222, #efe6d8);
}
.application.sheet.dh-style fieldset .nest-inputs {
display: flex;
align-items: center;
gap: 5px;
}
.application.sheet.dh-style line-div {
display: block;
height: 1px;
width: 100%;
border-bottom: 1px solid light-dark(#18162e, #f3c267);
mask-image: linear-gradient(270deg, transparent 0%, black 50%, transparent 100%);
}
.application.sheet.dh-style .item-description {
opacity: 1;
transform: translateY(0);
transition: opacity 0.3s ease-out, transform 0.3s ease-out;
}
.application.sheet.dh-style .item-description.invisible {
height: 0;
opacity: 0;
overflow: hidden;
transform: translateY(-20px);
transform-origin: top;
}
.sheet.daggerheart.dh-style .tab-navigation {
margin: 5px 0;
height: 40px;
}
.sheet.daggerheart.dh-style .tab-navigation .feature-tab {
border: none;
gap: 5px;
}
.sheet.daggerheart.dh-style .tab-navigation .feature-tab a {
color: light-dark(#18162e, #f3c267);
text-shadow: none;
font-family: 'Montserrat', sans-serif;
}
.application.sheet.daggerheart.dh-style .item-sheet-header {
display: flex;
}
.application.sheet.daggerheart.dh-style .item-sheet-header .profile {
height: 150px;
width: 150px;
object-fit: cover;
border-right: 1px solid light-dark(#18162e, #f3c267);
border-bottom: 1px solid light-dark(#18162e, #f3c267);
box-sizing: border-box;
cursor: pointer;
}
.application.sheet.daggerheart.dh-style .item-sheet-header .item-info {
display: flex;
flex-direction: column;
align-items: center;
gap: 5px;
margin-top: 36px;
text-align: center;
width: 80%;
}
.application.sheet.daggerheart.dh-style .item-sheet-header .item-info .item-name input[type='text'] {
font-size: 32px;
height: 42px;
text-align: center;
width: 90%;
transition: all 0.3s ease;
outline: 2px solid transparent;
border: 1px solid transparent;
}
.application.sheet.daggerheart.dh-style .item-sheet-header .item-info .item-name input[type='text']:hover[type='text'],
.application.sheet.daggerheart.dh-style .item-sheet-header .item-info .item-name input[type='text']:focus[type='text'] {
box-shadow: none;
outline: 2px solid light-dark(#18162e, #f3c267);
}
.application.sheet.daggerheart.dh-style .item-sheet-header .item-info .item-description {
display: flex;
gap: 10px;
}
.application.sheet.daggerheart.dh-style .item-sheet-header .item-info h3 {
font-size: 1rem;
}
#logo {
content: url(../assets/DaggerheartLogo.webp);
height: 50px;
@ -2835,21 +3197,11 @@ div.daggerheart.views.multiclass {
.daggerheart .icon-button.spaced {
margin-left: 4px;
}
.daggerheart .icon-button.active {
filter: drop-shadow(0 0 3px red);
}
.daggerheart .icon-button.active.secondary {
filter: drop-shadow(0 0 3px gold);
}
.daggerheart .icon-button.disabled {
opacity: 0.6;
}
.daggerheart .icon-button:hover:not(.disabled) {
cursor: pointer;
filter: drop-shadow(0 0 3px red);
}
.daggerheart .icon-button:hover:not(.disabled).secondary {
filter: drop-shadow(0 0 3px gold);
}
#players h3 {
display: flex;

24
styles/daggerheart.less Normal file → Executable file
View file

@ -11,6 +11,17 @@
@import './dialog.less';
@import '../node_modules/@yaireo/tagify/dist/tagify.css';
// new styles imports
@import './less/items/feature.less';
@import './less/utils/colors.less';
@import './less/utils/fonts.less';
@import './less/global/sheet.less';
@import './less/global/elements.less';
@import './less/global/tab-navigation.less';
@import './less/global/item-header.less';
#logo {
content: url(../assets/DaggerheartLogo.webp);
height: 50px;
@ -73,25 +84,12 @@
margin-left: @halfMargin;
}
&.active {
filter: drop-shadow(0 0 3px @mainShadow);
&.secondary {
filter: drop-shadow(0 0 3px @secondaryShadow);
}
}
&.disabled {
opacity: 0.6;
}
&:hover:not(.disabled) {
cursor: pointer;
filter: drop-shadow(0 0 3px @mainShadow);
&.secondary {
filter: drop-shadow(0 0 3px @secondaryShadow);
}
}
}

2
styles/item.less Normal file → Executable file
View file

@ -42,7 +42,7 @@
}
.item-sidebar {
border-right: @thinBorder groove darkgray;
// border-right: @thinBorder groove darkgray;
min-width: 160px;
flex: 0;
padding: @fullPadding;

158
styles/less/global/elements.less Executable file
View file

@ -0,0 +1,158 @@
@import '../utils/colors.less';
@import '../utils/fonts.less';
.application.sheet.dh-style {
border: 1px solid light-dark(@dark-blue, @golden);
input[type='text'],
input[type='number'] {
background: light-dark(transparent, transparent);
border-radius: 6px;
box-shadow: 0 4px 30px @soft-shadow;
backdrop-filter: blur(9.5px);
-webkit-backdrop-filter: blur(9.5px);
outline: none;
color: light-dark(@dark-blue, @golden);
border: 1px solid light-dark(@dark, @beige);
&:hover[type='text'],
&:hover[type='number'],
&:focus[type='text'],
&:focus[type='number'] {
background: light-dark(@soft-shadow, @semi-transparent-dark-blue);
box-shadow: none;
outline: 2px solid light-dark(@dark, @beige);
}
}
input[type='checkbox'] {
&:checked::after {
color: light-dark(@dark-blue, @golden);
}
&::before {
color: light-dark(@golden, @dark-blue);
}
}
button {
background: light-dark(transparent, @golden);
border: 1px solid light-dark(@dark-blue, @dark-blue);
color: light-dark(@dark-blue, @dark-blue);
outline: none;
box-shadow: none;
&:hover {
background: light-dark(@light-black, @dark-blue);
color: light-dark(@dark-blue, @golden);
}
}
select {
background: light-dark(transparent, transparent);
color: light-dark(@dark, @beige);
font-family: @font-body;
outline: 2px solid transparent;
border: 1px solid light-dark(@dark, @beige);
&:focus,
&:hover {
outline: 2px solid light-dark(@dark, @beige);
box-shadow: none;
}
& option {
color: @beige;
background-color: @dark-blue;
border-radius: 6px;
}
}
p {
margin: 0;
}
ul {
margin: 0;
padding: 0;
list-style: none;
}
li {
margin: 0;
}
fieldset {
align-items: center;
margin-top: 5px;
border-radius: 6px;
border-color: light-dark(@dark-blue, @golden);
&.one-column {
display: flex;
flex-direction: column;
align-items: start;
gap: 10px;
min-height: 64px;
}
&.two-columns {
display: grid;
grid-template-columns: 1fr 2fr;
gap: 10px;
}
legend {
font-family: @font-body;
font-weight: bold;
color: light-dark(@dark-blue, @golden);
a {
text-shadow: none;
}
}
input[type='text'],
input[type='number'] {
color: light-dark(@dark, @beige);
font-family: @font-body;
transition: all 0.3s ease;
outline: 2px solid transparent;
&:focus,
&:hover {
outline: 2px solid light-dark(@dark, @beige);
}
}
.nest-inputs {
display: flex;
align-items: center;
gap: 5px;
}
}
line-div {
display: block;
height: 1px;
width: 100%;
border-bottom: 1px solid light-dark(@dark-blue, @golden);
mask-image: linear-gradient(270deg, transparent 0%, black 50%, transparent 100%);
}
.item-description {
opacity: 1;
transform: translateY(0);
transition:
opacity 0.3s ease-out,
transform 0.3s ease-out;
}
.item-description.invisible {
height: 0;
opacity: 0;
overflow: hidden;
transform: translateY(-20px);
transform-origin: top;
}
}

View file

@ -0,0 +1,52 @@
@import '../utils/colors.less';
.application.sheet.daggerheart.dh-style {
.item-sheet-header {
display: flex;
.profile {
height: 150px;
width: 150px;
object-fit: cover;
border-right: 1px solid light-dark(@dark-blue, @golden);
border-bottom: 1px solid light-dark(@dark-blue, @golden);
box-sizing: border-box;
cursor: pointer;
}
.item-info {
display: flex;
flex-direction: column;
align-items: center;
gap: 5px;
margin-top: 36px;
text-align: center;
width: 80%;
.item-name input[type='text'] {
font-size: 32px;
height: 42px;
text-align: center;
width: 90%;
transition: all 0.3s ease;
outline: 2px solid transparent;
border: 1px solid transparent;
&:hover[type='text'],
&:focus[type='text'] {
box-shadow: none;
outline: 2px solid light-dark(@dark-blue, @golden);
}
}
.item-description {
display: flex;
gap: 10px;
}
h3 {
font-size: 1rem;
}
}
}
}

81
styles/less/global/sheet.less Executable file
View file

@ -0,0 +1,81 @@
@import '../utils/colors.less';
@import '../utils/fonts.less';
.application.sheet.dh-style .window-header {
background: transparent;
border-bottom: none;
justify-content: end;
h1 {
color: light-dark(@dark-blue, @beige);
font-family: @font-body;
}
button {
background: light-dark(transparent, @deep-black);
color: light-dark(@dark-blue, @beige);
border: 1px solid light-dark(@dark-blue, transparent);
padding: 0;
&:hover {
border: 1px solid light-dark(@dark-blue, @golden);
color: light-dark(@dark-blue, @golden);
}
}
}
.application.sheet.dh-style:not(.minimized) {
.window-title,
.window-icon {
display: none;
opacity: 0;
transition: opacity 0.3s ease;
}
}
.application.sheet.dh-style.minimized {
.window-content {
display: none;
opacity: 0;
transition: opacity 0.1s ease;
}
}
.application.sheet.dh-style:not(.minimized) {
.window-content {
opacity: 1;
transition: opacity 0.3s ease;
}
}
.application.sheet.dh-style .window-content {
overflow: initial;
backdrop-filter: none;
padding: 0;
}
.theme-dark {
.application.sheet.dh-style {
backdrop-filter: blur(4px);
}
}
.theme-light {
.application.sheet.dh-style {
background-image: url('../assets/parchments/dh-parchment-light.png');
background-repeat: no-repeat;
background-position: center;
}
}
// D:\Foundry\v13\data\Data\systems\daggerheart\assets\parchments\dh-parchment-light.png
.application.sheet.daggerheart.dh-style {
.window-content {
position: relative;
top: -36px;
.tab {
padding: 0 10px;
}
}
}

View file

@ -0,0 +1,20 @@
@import '../utils/colors.less';
@import '../utils/fonts.less';
.sheet.daggerheart.dh-style {
.tab-navigation {
margin: 5px 0;
height: 40px;
.feature-tab {
border: none;
gap: 5px;
a {
color: light-dark(@dark-blue, @golden);
text-shadow: none;
font-family: @font-body;
}
}
}
}

62
styles/less/items/feature.less Executable file
View file

@ -0,0 +1,62 @@
@import '../utils/colors.less';
@import '../utils/fonts.less';
.application.sheet.daggerheart.dh-style.feature {
.item-sheet-header {
display: flex;
.profile {
height: 130px;
width: 130px;
}
}
section.tab {
height: 400px;
overflow-y: auto;
scrollbar-width: thin;
scrollbar-color: light-dark(@dark-blue, @golden) transparent;
}
.tab.actions {
.actions-list {
display: flex;
flex-direction: column;
list-style: none;
padding: 0;
margin: 0;
width: 100%;
gap: 5px;
.action-item {
display: grid;
align-items: center;
grid-template-columns: 1fr 4fr 1fr;
cursor: pointer;
h4 {
font-family: @font-body;
font-weight: lighter;
color: @beige;
}
.image {
height: 40px;
width: 40px;
object-fit: cover;
border-radius: 6px;
border: none;
}
.controls {
display: flex;
justify-content: center;
gap: 10px;
a {
text-shadow: none;
}
}
}
}
}
}

22
styles/less/utils/colors.less Executable file
View file

@ -0,0 +1,22 @@
@primary-blue: #1488cc;
@secondary-blue: #2b32b2;
@golden: #f3c267;
@dark-blue: #18162e;
@deep-black: #0e0d15;
@beige: #efe6d8;
@beige-60-opacity: #efe6d860;
@dark-blue: rgb(24, 22, 46);
@semi-transparent-dark-blue: rgba(24, 22, 46, 0.33);
@dark: #222;
@light-black: rgba(0, 0, 0, 0.3);
@soft-shadow: rgba(0, 0, 0, 0.05);
@gradient-hp: linear-gradient(15deg, rgb(70, 20, 10) 0%, rgb(190, 0, 0) 42%, rgb(252, 176, 69) 100%);
@gradient-stress: linear-gradient(15deg, rgb(130, 59, 1) 0%, rgb(252, 142, 69) 65%, rgb(190, 0, 0) 100%);
.theme-dark {
@primary-color: @golden;
}
.theme-light {
@primary-color: @dark-blue;
}

50
styles/less/utils/fonts.less Executable file
View file

@ -0,0 +1,50 @@
@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;700&family=Cinzel+Decorative:wght@700&family=Montserrat:wght@400;600&display=swap');
@font-title: 'Cinzel Decorative', serif;
@font-subtitle: 'Cinzel', serif;
@font-body: 'Montserrat', sans-serif;
.application.sheet.daggerheart.dh-style {
h1 {
font-family: @font-title;
margin: 0;
border: none;
font-weight: normal;
}
h2,
h3 {
font-family: @font-subtitle;
margin: 0;
border: none;
font-weight: normal;
}
h4 {
font-family: @font-body;
font-size: 14px;
border: none;
font-weight: 700;
margin: 0;
text-shadow: none;
color: #f3c267;
font-weight: normal;
}
h5 {
font-size: 14px;
color: #f3c267;
margin: 0;
font-weight: normal;
}
p,
span {
font-family: @font-body;
}
small {
font-family: @font-body;
opacity: 0.8;
}
}