Merge branch 'main' into feature/granular-action-outcomes

This commit is contained in:
WBHarry 2026-06-30 20:49:37 +02:00
commit 2e9dede678
207 changed files with 2666 additions and 1798 deletions

View file

@ -0,0 +1 @@
@import "./action-list.less";

View file

@ -0,0 +1 @@
@import "./sheet.less";

View file

@ -0,0 +1 @@
@import "./sheet.less";

View file

@ -0,0 +1,4 @@
@import "./sheet.less";
@import "./creation-action-footer.less";
@import "./selections-container.less";
@import "./tab-navigation.less";

View file

@ -0,0 +1 @@
@import './sheet.less';

View file

@ -0,0 +1 @@
@import './sheet.less';

View file

@ -0,0 +1,2 @@
@import './sheets.less';
@import './damage-reduction-container.less';

View file

@ -0,0 +1 @@
@import './sheet.less';

View file

@ -0,0 +1 @@
@import './death-move-container.less';

View file

@ -0,0 +1 @@
@import './roll-selection.less';

View file

@ -0,0 +1 @@
@import './downtime-container.less';

View file

@ -1,44 +0,0 @@
h1 {
color: @color-text-emphatic;
font: 700 var(--font-size-24) var(--dh-font-subtitle);
text-align: center;
}
header {
--bar-color: light-dark(@dark-blue, @golden);
color: light-dark(@dark, @beige);
display: flex;
justify-content: center;
align-items: center;
&:not(:first-child) {
margin-top: var(--spacer-8);
}
span {
padding: 0 10px;
}
&:before {
content: ' ';
flex: 1;
height: 1px;
background: linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, var(--bar-color) 100%);
}
&:after {
content: ' ';
flex: 1;
height: 1px;
background: linear-gradient(90deg, var(--bar-color) 0%, rgba(0, 0, 0, 0) 100%);
}
}
img.portrait {
border-radius: 50%;
border: none;
object-fit: cover;
object-position: center top;
width: 2.5rem;
height: 2.5rem;
}

View file

@ -1,8 +1,3 @@
.daggerheart.dialog.dh-style.views.group-roll-dialog {
.window-content {
@import "./_common.less";
}
}
@import "./initialization.less";
@import "./main.less";
@import './sheet.less';
@import './initialization.less';
@import './main.less';

View file

@ -0,0 +1,48 @@
.daggerheart.dialog.dh-style.views.group-roll-dialog {
.window-content {
h1 {
color: @color-text-emphatic;
font: 700 var(--font-size-24) var(--dh-font-subtitle);
text-align: center;
}
header {
--bar-color: light-dark(@dark-blue, @golden);
color: light-dark(@dark, @beige);
display: flex;
justify-content: center;
align-items: center;
&:not(:first-child) {
margin-top: var(--spacer-8);
}
span {
padding: 0 10px;
}
&:before {
content: ' ';
flex: 1;
height: 1px;
background: linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, var(--bar-color) 100%);
}
&:after {
content: ' ';
flex: 1;
height: 1px;
background: linear-gradient(90deg, var(--bar-color) 0%, rgba(0, 0, 0, 0) 100%);
}
}
img.portrait {
border-radius: 50%;
border: none;
object-fit: cover;
object-position: center top;
width: 2.5rem;
height: 2.5rem;
}
}
}

View file

@ -0,0 +1 @@
@import './sheet.less';

View file

@ -1,42 +1,20 @@
@import './attribution/sheet.less';
@import './level-up/index.less';
@import './resource-dice/sheet.less';
@import './actions/action-list.less';
@import './damage-selection/sheet.less';
@import './downtime/downtime-container.less';
@import './death-move/death-move-container.less';
@import './beastform/sheet.less';
@import './character-creation/creation-action-footer.less';
@import './character-creation/selections-container.less';
@import './character-creation/sheet.less';
@import './character-creation/tab-navigation.less';
@import './dice-roll/roll-selection.less';
@import './damage-reduction/damage-reduction-container.less';
@import './damage-reduction/sheets.less';
@import './multiclass-choice/sheet.less';
@import './tag-team-dialog/initialization.less';
@import './tag-team-dialog/sheet.less';
@import './actions/index.less';
@import './attribution/index.less';
@import './beastform/index.less';
@import './character-creation/index.less';
@import './character-reset/index.less';
@import './compendiumBrowserPackDialog/index.less';
@import './damage-reduction/index.less';
@import './damage-selection/index.less';
@import './death-move/index.less';
@import './dice-roll/index.less';
@import './downtime/index.less';
@import './group-roll-dialog/index.less';
@import './image-select/sheet.less';
@import './item-transfer/sheet.less';
@import './settings/change-currency-icon.less';
@import './risk-it-all/sheet.less';
@import './character-reset/sheet.less';
@import './compendiumBrowserPackDialog/sheet.less';
@import './level-up/index.less';
@import './resource-dice/index.less';
@import './multiclass-choice/index.less';
@import './tag-team-dialog/index.less';
@import './image-select/index.less';
@import './item-transfer/index.less';
@import './settings/index.less';
@import './risk-it-all/index.less';

View file

@ -0,0 +1 @@
@import './sheet.less';

View file

@ -0,0 +1 @@
@import './sheet.less';

View file

@ -0,0 +1 @@
@import './sheet.less';

View file

@ -0,0 +1 @@
@import './sheet.less';

View file

@ -0,0 +1 @@
@import './change-currency-icon.less';

View file

@ -0,0 +1,2 @@
@import './sheet.less';
@import './initialization.less';

View file

@ -88,9 +88,21 @@
grid-template-columns: 1fr 1fr;
gap: 8px;
&.inactive {
.inactive {
opacity: 0.4;
}
.initiator-cost-fields {
display: flex;
flex-direction: column;
align-items: flex-start;
.initiator-cost-inputs {
display: grid;
grid-template-columns: auto 1fr;
align-items: center;
}
}
}
footer {

View file

@ -12,6 +12,9 @@
}
.daggerheart.dh-style {
/** Not an actual scrollbar width (it can't be configured on all browsers) but actually a compensation value for scrollbar gutter purposes */
--scrollbar-width: 10px;
* {
scrollbar-width: thin;
scrollbar-color: light-dark(@dark-blue, @golden) transparent;

View file

@ -43,16 +43,19 @@
}
}
.item-main {
border-radius: 5px;
padding: 2px;
margin: -2px;
}
&:hover {
.inventory-item-header .item-label .item-name .expanded-icon {
margin-left: 10px;
display: inline-block;
}
&:has(.inventory-item-content.extensible) {
.inventory-item-header,
.inventory-item-content {
background: light-dark(@dark-blue-40, @golden-40);
}
.item-main {
background: light-dark(@dark-blue-40, @golden-40);
}
&:has(.inventory-item-content.extended) {
.inventory-item-header .item-label .item-name .expanded-icon {
@ -60,19 +63,6 @@
}
}
}
&:has(.inventory-item-content.extensible) {
.inventory-item-header {
border-radius: 5px 5px 0 0;
}
.inventory-item-content {
border-radius: 0 0 5px 5px;
}
}
&:not(:has(.inventory-item-content.extensible)) .inventory-item-header {
border-radius: 5px;
}
}
.inventory-item-header,
@ -171,7 +161,7 @@
grid-template-rows: 1fr;
padding-top: 4px;
}
.invetory-description {
.inventory-description {
overflow: hidden;
h1 {

View file

@ -1,8 +1,11 @@
@import '../utils/colors.less';
@import '../utils/fonts.less';
@import '../utils/mixin.less';
.application.daggerheart {
prose-mirror {
--menu-padding: 4px 0px;
--menu-height: calc(var(--menu-button-height) + 8px);
height: 100% !important;
width: 100%;
@ -10,6 +13,7 @@
background-color: transparent;
}
.editor-content {
.with-scroll-shadows();
h1 {
font-size: var(--font-size-32);
}
@ -40,7 +44,7 @@
ul {
list-style: disc;
}
}
}
// Fixes centering and makes it not render over scrollbar
&:hover button.toggle:enabled {
display: flex;

View file

@ -1 +1 @@
@import './token-hud/token-hud.less';
@import './token-hud/index.less';

View file

@ -0,0 +1 @@
@import './token-hud.less';

View file

@ -0,0 +1,3 @@
@import './sheet.less';
@import './experiences.less';
@import './features.less';

View file

@ -0,0 +1 @@
@import './sheet.less';

View file

@ -0,0 +1,2 @@
@import './adversaries.less';
@import './features.less';

View file

@ -1,8 +1,4 @@
@import './header.less';
@import './adversary-settings/sheet.less';
@import './adversary-settings/experiences.less';
@import './adversary-settings/features.less';
@import './character-settings/sheet.less';
@import './environment-settings/features.less';
@import './environment-settings/adversaries.less';
@import './adversary-settings/index.less';
@import './character-settings/index.less';
@import './environment-settings/index.less';

View file

@ -0,0 +1 @@
@import './actions.less';

View file

@ -0,0 +1 @@
@import './activeEffects.less';

View file

@ -37,6 +37,10 @@
color: @color-text-subtle;
}
.window-header > .attribution-header-label {
margin-right: var(--spacer-4);
}
.tab.inventory {
.gold-section {
display: grid;
@ -50,6 +54,37 @@
}
}
.tab.notes.active {
padding: 0;
margin: 0;
margin-top: -10px; // will be removed once tab-navigation bottom margin is removed on all actor sheets
scrollbar-gutter: unset;
// Add padding around top level level prosemirrors used for note tabs
> prose-mirror {
@right-padding: calc(16px - var(--scrollbar-width));
.editor-content {
scrollbar-gutter: stable;
padding-right: @right-padding;
}
&.inactive {
button.toggle {
top: 16px;
}
.editor-content {
padding: 16px @right-padding 4px 16px;
}
}
&.active {
padding: 8px 0 4px 16px;
}
}
.artist-attribution {
padding-left: 16px;
}
}
.search-section {
display: flex;
gap: 10px;

View file

@ -3,16 +3,21 @@
.application.sheet.daggerheart.actor.dh-style.adversary {
.adversary-header-sheet {
padding: 0 15px;
padding-top: var(--header-height);
width: 100%;
> *:not(line-div, .tab-navigation) {
padding-left: 15px;
padding-right: 15px;
}
.name-row {
display: flex;
gap: 5px;
align-items: center;
justify-content: space-between;
padding: 8px 0;
padding-top: var(--spacer-4);
padding-bottom: var(--spacer-4);
flex: 1;
h1 {
@ -34,8 +39,8 @@
.tags {
display: flex;
gap: 10px;
padding-bottom: 8px;
gap: 8px;
padding-bottom: var(--spacer-12);
.tag {
display: flex;
@ -44,8 +49,7 @@
justify-content: center;
align-items: center;
padding: 3px 5px;
font-size: var(--font-size-12);
font: @font-body;
font: var(--font-size-12) @font-body;
background: light-dark(@dark-15, @beige-15);
border: 1px solid light-dark(@dark, @beige);
@ -64,8 +68,16 @@
.adversary-info {
display: flex;
flex-direction: column;
gap: 12px;
padding: 16px 0;
gap: var(--spacer-8);
padding-top: var(--spacer-12);
padding-bottom: var(--spacer-12);
}
.tab-navigation {
margin-top: 0;
button[data-action="openSettings"] {
margin-right: 12px;
}
}
}
}

View file

@ -0,0 +1,7 @@
@import './actor-sheet-shared.less';
@import './adversary/index.less';
@import './character/index.less';
@import './companion/index.less';
@import './environment/index.less';
@import './npc/index.less';
@import './party/index.less';

View file

@ -1,22 +1,5 @@
@import './actions/actions.less';
@import './actors/actor-sheet-shared.less';
@import './actors/adversary/index.less';
@import './actors/character/index.less';
@import './actors/companion/index.less';
@import './actors/environment/index.less';
@import './actors/npc/index.less';
@import './actors/party/index.less';
@import './items/beastform.less';
@import './items/class.less';
@import './items/domain-card.less';
@import './items/feature.less';
@import './items/heritage.less';
@import './items/item-sheet-shared.less';
@import './rollTables/sheet.less';
@import './actions/actions.less';
@import './activeEffects/activeEffects.less';
@import './activeEffects/index.less';
@import './actions/index.less';
@import './actors/index.less';
@import './items/index.less';
@import './rollTables/index.less';

View file

@ -0,0 +1,6 @@
@import './beastform.less';
@import './class.less';
@import './domain-card.less';
@import './feature.less';
@import './heritage.less';
@import './item-sheet-shared.less';

View file

@ -0,0 +1 @@
@import './sheet.less';

View file

@ -0,0 +1,10 @@
@import './sheet.less';
@import './ability-use.less';
@import './action.less';
@import './chat.less';
@import './damage-summary.less';
@import './deathmoves.less';
@import './downtime.less';
@import './effect-summary.less';
@import './group-roll.less';
@import './refresh-message.less';

View file

@ -0,0 +1,5 @@
@import './combat-sidebar.less';
@import './combatant-controls.less';
@import './encounter-controls.less';
@import './spotlight-control.less';
@import './token-actions.less';

View file

@ -18,11 +18,10 @@
border: 0;
box-shadow: none;
color: @color-text-primary;
width: 300px;
width: 18.75rem;
pointer-events: all;
align-self: flex-end;
transition: 0.3s right ease-in-out;
display: flex;
flex-direction: column;
@ -36,7 +35,7 @@
transition: opacity var(--ui-fade-duration);
}
:not(.performance-low, .noblur) {
&:not(.performance-low, .noblur) {
backdrop-filter: blur(5px);
}
@ -49,8 +48,7 @@
}
&.icon-only {
width: 180px;
min-width: 180px;
width: 12rem;
}
.countdowns-header,
@ -66,12 +64,31 @@
padding: 0 0.5rem;
overflow: hidden;
font-size: var(--font-size-13);
.window-title {
font-family: @font-body;
flex: 1;
}
.header-control + .header-control {
margin-left: 8px;
.header-type-toggles {
flex: 1;
display: flex;
align-items: center;
gap: 4px;
.header-type {
flex: 1;
border: 1px solid @beige;
border-radius: 12px;
padding: 2px 4px;
text-align: center;
background-color: @dark-blue;
color: @beige;
&.inactive {
opacity: 0.4;
}
}
}
}
@ -83,9 +100,23 @@
overflow: auto;
max-height: 312px;
.countdown-category-container {
display: flex;
flex-direction: column;
gap: 8px;
&.hidden {
display: none;
}
}
.countdown-container {
display: flex;
width: 100%;
border-radius: 6px;
background: linear-gradient(-45deg, transparent 30%, light-dark(@dark-blue-40, @golden-40) 35%, transparent 40%);
background-size: 300%;
background-position-x: 100%;
&.icon-only {
gap: 8px;
@ -106,10 +137,11 @@
display: flex;
align-items: center;
gap: 16px;
border-radius: 6px;
img {
width: 44px;
height: 44px;
width: 2.75rem;
height: 2.75rem;
border-radius: 6px;
}
@ -127,7 +159,7 @@
.countdown-tool-controls {
display: flex;
align-items: center;
gap: 16px;
gap: var(--spacer-12);
}
.progress-tag {

View file

@ -0,0 +1,3 @@
@import './sheet.less';
@import './countdown-edit.less';
@import './countdown.less';

View file

@ -0,0 +1 @@
@import './sheet.less';

View file

@ -0,0 +1,34 @@
@import '../../utils/mixin.less';
#pause.dh-style {
animation: none;
img {
width: 125px;
height: 125px;
}
figcaption {
--base-shadow: drop-shadow(2px 2px 2px black);
position: absolute;
margin-top: 24px;
animation: pause-pulse 3s ease-in-out infinite;
font-size: var(--font-size-30);
letter-spacing: 0.18em;
filter: var(--base-shadow);
}
@keyframes pause-pulse {
0% {
filter: var(--base-shadow) drop-shadow(0 0 5px @secondary-blue);
}
50% {
filter: var(--base-shadow) drop-shadow(0 0 5px @golden-secondary);
}
100% {
filter: var(--base-shadow) drop-shadow(0 0 5px @secondary-blue);
}
}
}

View file

@ -0,0 +1 @@
@import './game-pause.less';

View file

@ -1,40 +1,12 @@
@import './chat/ability-use.less';
@import './chat/action.less';
@import './chat/chat.less';
@import './chat/damage-summary.less';
@import './chat/downtime.less';
@import './chat/effect-summary.less';
@import './chat/group-roll.less';
@import './chat/refresh-message.less';
@import './chat/deathmoves.less';
@import './chat/sheet.less';
@import './combat-sidebar/combat-sidebar.less';
@import './combat-sidebar/combatant-controls.less';
@import './combat-sidebar/encounter-controls.less';
@import './combat-sidebar/spotlight-control.less';
@import './combat-sidebar/token-actions.less';
@import './item-browser/item-browser.less';
@import './countdown/countdown.less';
@import './countdown/countdown-edit.less';
@import './countdown/sheet.less';
@import './ownership-selection/ownership-selection.less';
@import './resources/resources.less';
@import './settings/settings.less';
@import './settings/homebrew-settings/domains.less';
@import './settings/homebrew-settings/types.less';
@import './settings/homebrew-settings/resources.less';
@import './settings/appearance-settings/diceSoNice.less';
@import './sidebar/tabs.less';
@import './sidebar/daggerheartMenu.less';
@import './scene-config/scene-config.less';
@import './effects-display/sheet.less';
@import './scene-navigation/scene-navigation.less';
@import './chat/index.less';
@import './combat-sidebar/index.less';
@import './countdown/index.less';
@import './effects-display/index.less';
@import './game-pause/index.less';
@import './item-browser/index.less';
@import './ownership-selection/index.less';
@import './resources/index.less';
@import './scene-config/index.less';
@import './scene-navigation/index.less';
@import './settings/index.less';
@import './sidebar/index.less';

View file

@ -0,0 +1 @@
@import './item-browser.less';

View file

@ -0,0 +1 @@
@import './ownership-selection.less';

View file

@ -0,0 +1 @@
@import './resources.less';

View file

@ -0,0 +1 @@
@import './scene-config.less';

View file

@ -0,0 +1 @@
@import './scene-navigation.less';

View file

@ -0,0 +1 @@
@import './diceSoNice.less';

View file

@ -0,0 +1,3 @@
@import './domains.less';
@import './resources.less';
@import './types.less';

View file

@ -0,0 +1,3 @@
@import './settings.less';
@import './appearance-settings/index.less';
@import './homebrew-settings/index.less';

View file

@ -201,6 +201,23 @@
}
}
.currency-rows {
display: grid;
grid-template-columns: auto 1fr 1fr auto;
gap: 4px;
align-items: center;
width: 100%;
.currency-header-label {
text-align: center;
font-size: var(--font-size-14);
}
input[type='checkbox'] {
justify-self: center;
}
}
.settings-hint {
width: 100%;
display: flex;

View file

@ -0,0 +1,2 @@
@import './daggerheartMenu.less';
@import './tabs.less';

View file

@ -1,25 +1,22 @@
@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;700&family=Cinzel+Decorative:wght@700&family=Montserrat:wght@400;600&display=swap');
@import './mixin.less';
:root {
--dh-font-title: 'Cinzel Decorative';
--dh-font-subtitle: 'Cinzel';
--dh-font-body: 'Montserrat';
/* Include missing font sizes */
--font-size-8: 0.5rem;
--font-size-9: 0.5625rem;
--font-size-22: 1.375rem;
}
@font-title: ~"var(--dh-font-title, 'Cinzel Decorative'), serif";
@font-subtitle: ~"var(--dh-font-subtitle, 'Cinzel'), serif";
@font-body: ~"var(--dh-font-body, 'Montserrat'), sans-serif";
.dh-style {
.dh-typography();
}
.dh-style fieldset {
.dh-typography();
}
@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;700&family=Cinzel+Decorative:wght@700&family=Montserrat:wght@400;600&display=swap');
@import './mixin.less';
:root {
--dh-font-title: 'Cinzel Decorative';
--dh-font-subtitle: 'Cinzel';
--dh-font-body: 'Montserrat';
/* Include missing font sizes */
--font-size-8: 0.5rem;
--font-size-9: 0.5625rem;
--font-size-22: 1.375rem;
--font-size-30: 1.875rem;
}
@font-title: ~"var(--dh-font-title, 'Cinzel Decorative'), serif";
@font-subtitle: ~"var(--dh-font-subtitle, 'Cinzel'), serif";
@font-body: ~"var(--dh-font-body, 'Montserrat'), sans-serif";
.dh-style {
.dh-typography();
}

View file

@ -0,0 +1,4 @@
@import './colors.less';
@import './fonts.less';
@import './mixin.less';
@import './spacing.less';

View file

@ -49,16 +49,15 @@
* Apply default typography styles.
*/
.dh-typography() {
--font-body: @font-body;
font-family: @font-body;
h1 {
--dh-input-color-text: @color-text-emphatic;
font-family: @font-title;
margin: 0;
border: none;
font-weight: normal;
input[type='text'],
.input[contenteditable] {
font-family: @font-title;
}
}
h2,
@ -86,22 +85,17 @@
font-weight: normal;
}
p,
span,
textarea,
label,
select,
// todo: determine if we can remove these or replace with font-family: inherit
multi-select .tags .tag,
table,
fieldset legend,
input[type='text'],
input[type='number'],
input[type='search'],
.tagify__dropdown,
li {
.tagify__dropdown {
font-family: @font-body;
}
textarea {
font-family: inherit;
}
button span {
font-weight: bold;
}

View file

@ -0,0 +1 @@
@import './autocomplete.less';

View file

@ -1,10 +1,2 @@
@import './tooltip/sheet.less';
@import './tooltip/tooltip.less';
@import './tooltip/armorManagement.less';
@import './tooltip/battlepoints.less';
@import './tooltip/bordered-tooltip.less';
@import './tooltip/domain-cards.less';
@import './autocomplete/autocomplete.less';
@import './tooltip/resource-management.less';
@import './autocomplete/index.less';
@import './tooltip/index.less';

View file

@ -0,0 +1,7 @@
@import './sheet.less';
@import './armorManagement.less';
@import './battlepoints.less';
@import './bordered-tooltip.less';
@import './domain-cards.less';
@import './resource-management.less';
@import './tooltip.less';