Initial data model migration

This commit is contained in:
2026-01-06 22:56:57 +01:00
parent 05ca6e1763
commit 001f0cffa8
142 changed files with 6474 additions and 413 deletions

8
less/actor-sheet.less Normal file
View File

@@ -0,0 +1,8 @@
// Actor sheet styles
.actor-sheet {
min-width: 720px;
min-height: 680px;
}
// Placeholder - to be expanded based on actor-sheet.html

90
less/base.less Normal file
View File

@@ -0,0 +1,90 @@
// Base styles
* {
scrollbar-color: initial;
}
.hawkmoon {
font-family: @font-family-base;
}
// Utility classes
.flexrow {
.flex-row();
gap: @spacing-base;
}
.flexcol {
.flex-column();
gap: @spacing-base;
}
// Item lists
.item-list {
list-style: none;
margin: 0;
padding: 0;
.item {
padding: @spacing-small @spacing-base;
border-bottom: 1px solid lighten(@color-border, 20%);
&:hover {
background: lighten(@color-secondary, 65%);
}
}
}
.alternate-list {
.item:nth-child(even) {
background: lighten(@color-secondary, 70%);
}
}
// Form elements
input[type="text"],
input[type="number"],
textarea,
select {
.input-base();
}
button {
.button-base();
}
// Labels
label {
.label-base();
}
.generic-label {
.label-base();
margin: 0 @spacing-base;
}
// Field sizes
.item-field-label-short {
flex: 0 0 40px;
}
.item-field-label-medium {
flex: 0 0 80px;
}
.item-field-label-long {
flex: 0 0 120px;
}
.item-field-label-very-long {
flex: 0 0 150px;
}
// Padd classes
.padd-right {
padding-right: @spacing-medium;
}
.padd-left {
padding-left: @spacing-medium;
}

8
less/cellule-sheet.less Normal file
View File

@@ -0,0 +1,8 @@
// Cellule sheet styles
.cellule-sheet {
min-width: 720px;
min-height: 680px;
}
// Placeholder - to be expanded based on cellule-sheet.html

23
less/chat.less Normal file
View File

@@ -0,0 +1,23 @@
// Chat message styles
.chat-message {
.message-header {
.flex-row();
gap: @spacing-base;
margin-bottom: @spacing-small;
}
.dice-roll {
.flex-center();
padding: @spacing-base;
background: lighten(@color-secondary, 70%);
border-radius: @input-border-radius;
.dice-total {
font-size: 1.2rem;
font-weight: bold;
}
}
}
// Placeholder - to be expanded based on chat templates

3
less/combat.less Normal file
View File

@@ -0,0 +1,3 @@
// Combat styles
// Placeholder - combat tracker styles

8
less/creature-sheet.less Normal file
View File

@@ -0,0 +1,8 @@
// Creature sheet styles
.creature-sheet {
min-width: 720px;
min-height: 680px;
}
// Placeholder - to be expanded based on creature-sheet.html

17
less/dialogs.less Normal file
View File

@@ -0,0 +1,17 @@
// Dialog styles
.dialog {
.dialog-buttons {
.flex-row();
justify-content: flex-end;
gap: @spacing-base;
padding-top: @spacing-medium;
border-top: 1px solid @color-border;
button {
min-width: 80px;
}
}
}
// Placeholder - to be expanded based on roll-dialog-generic.html

13
less/fonts.less Normal file
View File

@@ -0,0 +1,13 @@
// Font definitions
@font-face {
font-family: "Pfeffer";
src: url("../assets/fonts/pfeffer-simpelgotisch.regular2.otf")
format("opentype");
}
@font-face {
font-family: "Montserrat";
src: url("../assets/fonts/Montserrat-Medium.woff") format("woff");
font-weight: normal;
}

27
less/forms.less Normal file
View File

@@ -0,0 +1,27 @@
// Form elements specific styles
form {
input[type="checkbox"] {
width: auto;
margin: 0 @spacing-base;
}
input[disabled],
select[disabled],
textarea[disabled] {
opacity: 0.6;
cursor: not-allowed;
background: lighten(@color-border, 25%);
}
}
.editor {
min-height: 100px;
border: @input-border;
border-radius: @input-border-radius;
padding: @spacing-base;
.editor-content {
min-height: 80px;
}
}

4
less/hawkmoon.less Normal file
View File

@@ -0,0 +1,4 @@
// Main LESS file for Hawkmoon system
// Temporarily importing the full converted simple.css while we refactor
@import "simple-converted";

3
less/hud.less Normal file
View File

@@ -0,0 +1,3 @@
// HUD styles
// Placeholder - to be expanded based on hud-adversites.html

109
less/item-sheets.less Normal file
View File

@@ -0,0 +1,109 @@
// Item sheets styles
.item-sheet {
min-width: 500px;
min-height: 400px;
.sheet-header {
.flex-row();
gap: @spacing-medium;
padding: @spacing-medium;
background: lighten(@color-secondary, 65%);
border-bottom: 2px solid @color-primary;
img.item-sheet-img {
flex: 0 0 48px;
width: 48px;
height: 48px;
object-fit: cover;
border: 2px solid @color-border;
border-radius: @input-border-radius;
cursor: pointer;
&:hover {
border-color: @color-primary;
}
}
.header-fields {
flex: 1;
h1 {
margin: 0 0 @spacing-base 0;
font-size: 1.2rem;
font-weight: bold;
border: none;
input {
font-size: 1.2rem;
font-weight: bold;
border: none;
background: transparent;
&:focus {
background: white;
border: @input-border;
}
}
}
}
.header-actions {
.flex-row();
gap: @spacing-base;
button {
padding: @spacing-small @spacing-base;
font-size: @font-size-small;
}
}
}
.sheet-body {
padding: @spacing-medium;
}
// Predilections section
.predilections-list {
.predilection-item {
padding: @spacing-base;
margin-bottom: @spacing-small;
border: 1px solid lighten(@color-border, 15%);
border-radius: @input-border-radius;
.predilection-header {
.flex-row();
margin-bottom: @spacing-small;
input[type="text"] {
flex: 1;
}
input[type="checkbox"] {
margin: 0 @spacing-small;
}
}
.predilection-description {
textarea {
width: 100%;
min-height: 40px;
}
}
}
}
// Automation section
.automation-item {
padding: @spacing-base;
margin-bottom: @spacing-small;
background: lighten(@color-secondary, 70%);
border-radius: @input-border-radius;
hr {
margin: @spacing-small 0;
border: none;
border-top: 1px solid @color-border;
}
}
}

47
less/items.less Normal file
View File

@@ -0,0 +1,47 @@
// Item-related styles
.item-control {
flex: 0 0 24px;
height: 24px;
line-height: 24px;
text-align: center;
cursor: pointer;
border: none;
background: transparent;
i {
font-size: @font-size-base;
}
&:hover {
color: @color-primary;
}
}
.item-image {
flex: 0 0 36px;
height: 36px;
cursor: pointer;
img {
width: 100%;
height: 100%;
object-fit: cover;
border: 1px solid @color-border;
border-radius: @input-border-radius;
}
}
.item-name {
flex: 1;
cursor: pointer;
&:hover {
color: @color-primary;
}
}
.item-value {
flex: 0 0 60px;
text-align: center;
}

58
less/mixins.less Normal file
View File

@@ -0,0 +1,58 @@
// Mixins for Hawkmoon system
// Flexbox helpers
.flex-row {
display: flex;
flex-direction: row;
align-items: center;
}
.flex-column {
display: flex;
flex-direction: column;
}
.flex-center {
display: flex;
justify-content: center;
align-items: center;
}
// Common input styling
.input-base {
padding: @input-padding;
border: @input-border;
border-radius: @input-border-radius;
font-size: @font-size-base;
&:focus {
outline: none;
border-color: @color-primary;
}
}
// Button styling
.button-base {
padding: @button-padding;
border: @input-border;
border-radius: @button-border-radius;
background: @color-background;
cursor: pointer;
font-family: @font-family-base;
&:hover {
background: lighten(@color-secondary, 60%);
}
&:active {
background: lighten(@color-secondary, 50%);
}
}
// Label styling
.label-base {
font-family: @font-family-base;
font-size: @font-size-base;
font-weight: 700;
color: @color-text-dark;
}

1665
less/simple-converted.less Normal file

File diff suppressed because it is too large Load Diff

39
less/tabs.less Normal file
View File

@@ -0,0 +1,39 @@
// Tabs navigation
.tabs {
.flex-row();
gap: 0;
border-bottom: 2px solid @color-border;
margin-bottom: @spacing-medium;
.item {
padding: @spacing-base @spacing-large;
font-family: @font-family-base;
font-size: @font-size-large;
font-weight: 700;
color: @color-secondary;
cursor: pointer;
border: none;
border-bottom: 3px solid transparent;
background: transparent;
transition: all 0.2s;
&:hover {
color: @color-primary;
background: lighten(@color-secondary, 70%);
}
&.active {
color: @color-primary;
border-bottom-color: @color-primary;
}
}
}
.tab {
display: none;
&.active {
display: block;
}
}

36
less/variables.less Normal file
View File

@@ -0,0 +1,36 @@
// Variables for Hawkmoon system
// =================== Fonts ===================
@font-family-base: Montserrat;
@font-family-decorative: Pfeffer;
// =================== Colors ===================
@color-primary: #4a0404;
@color-secondary: #403f3e;
@color-text-light: #f5f5f5;
@color-text-dark: #464331c4;
@color-border: #7a7971;
@color-background: #fff;
// =================== Sizes ===================
@font-size-small: 0.8rem;
@font-size-base: 0.9rem;
@font-size-medium: 0.95rem;
@font-size-large: 1rem;
@spacing-small: 2px;
@spacing-base: 4px;
@spacing-medium: 8px;
@spacing-large: 12px;
// =================== Form Elements ===================
@input-padding: 2px 4px;
@input-border-radius: 3px;
@input-border: 1px solid @color-border;
// =================== Buttons ===================
@button-padding: 4px 8px;
@button-border-radius: 3px;
// =================== Windows ===================
@window-header-height: 28px;

70
less/windows.less Normal file
View File

@@ -0,0 +1,70 @@
// Window and sheet styles
.window-app {
.window-header {
font-family: @font-family-base;
.window-title {
font-size: @font-size-medium;
font-weight: normal;
color: @color-text-light;
}
}
.window-content {
background: @color-background;
padding: @spacing-medium;
}
}
// Sheet sections
.sheet-header {
.flex-row();
padding: @spacing-medium;
border-bottom: 2px solid @color-primary;
margin-bottom: @spacing-medium;
img.profile-img {
flex: 0 0 100px;
height: 100px;
object-fit: cover;
border: 2px solid @color-border;
border-radius: @input-border-radius;
cursor: pointer;
&:hover {
border-color: @color-primary;
}
}
.header-fields {
flex: 1;
padding-left: @spacing-medium;
}
}
.sheet-body {
overflow-y: auto;
section {
margin-bottom: @spacing-large;
}
}
// Edit/Play mode toggle
.sheet-mode-toggle {
position: absolute;
top: @spacing-base;
right: 80px;
z-index: 10;
button {
padding: @spacing-small @spacing-base;
font-size: @font-size-small;
&.active {
background: @color-primary;
color: @color-text-light;
}
}
}