diff --git a/frontend/src/Components/UserSelector.svelte b/frontend/src/Components/UserSelector.svelte index af9c733..4d14a96 100644 --- a/frontend/src/Components/UserSelector.svelte +++ b/frontend/src/Components/UserSelector.svelte @@ -8,7 +8,7 @@ let error = $state(null); let { getCandidates = async text => {}, - heading = t('add_user'), + heading = t('add_object',{object:t('user')}), users = $bindable({}) } = $props(); diff --git a/web/src/main/resources/web/css/bloodshed.css b/web/src/main/resources/web/css/bloodshed.css index 4a21fa8..8de15f5 100644 --- a/web/src/main/resources/web/css/bloodshed.css +++ b/web/src/main/resources/web/css/bloodshed.css @@ -1,14 +1,23 @@ +@font-face { + font-family: "awesome"; + src: url("/fontawesome-webfont.woff"); +} + a { color: red; + text-decoration: none; } body { + font-family: sans; background: black; color: red; + margin: 0 0 40px 0; } fieldset { border: 1px solid red; border-radius: 4px; + position: relative; } input{ @@ -21,17 +30,263 @@ input{ } button{ - background: red; + color: yellow; + background: #730000; border-radius: 5px; padding: 5px 7px; border-width: 2px; border-style: solid; - border-color: yellow red red yellow; + border-color: orange brown brown orange; +} + +button:disabled{ + color: coral; } + footer { - position: absolute; + position: fixed; bottom: 0; width: 100%; text-align: center; margin: 5px; -} \ No newline at end of file +} + +nav { + position: sticky; + z-index: 100; + top: 0; + background: #26220c; + padding: 5px; + margin: 0 0 10px 0; + border-bottom: 1px solid orange; +} + +.error { + background: red; + color: black; + padding: 5px; + border-radius: 6px; +} + +fieldset[tabindex="0"]{ + max-height: 55px; + overflow: hidden; +} + +fieldset[tabindex="0"]:focus-within{ + max-height: unset; +} +td, tr{ + vertical-align: baseline; +} +.customer, +.sender, +.invoice_meta{ + float: left; +} + +.clear{ + clear: both; +} +.position_selector{ + background: rgba(0,0,0,0.7); + backdrop-filter: blur(3px); +} +.task.cancelled > a { + text-decoration: line-through; + color: gray; +} +.task.started > a { + color: chartreuse; +} +.task.pending > a { + color: gray; +} +.task.complete > a { + color: forestgreen; +} +.task.complete > a:before { + content: "✓ "; +} + +.task.open > a { + color: orange; +} + +.symbol { + font-family: awesome; + font-size: 20px; + font-weight: normal; +} + +.settings { + position: fixed; + background: black; + top: 60px; + left: 10px; + right: 10px; + padding: 10px; + border: 1px solid orange; + border-radius: 5px; +} + +.project:not(.list) .name, +.task .name{ + font-size: 32px; + font-weight: bold; +} + +.symbol{ + padding: 1px; +} + +li.task > button{ + display: none; +} + +li.task{ + padding: 5px 0; +} + +li.task:hover > button{ + display: initial; +} +textarea{ + color: #ffc586; + background: black; + font-weight: bold; +} + +.kanban .add_task, +.kanban .box, +.kanban .head, +.kanban .user{ + border-radius: 5px; + margin: 2px; + min-height: 50px; + color: black; + padding: 2px; +} +.kanban .box{ + background: #759eff; + position: relative; +} +.kanban .box .title{ + display: inline-block; + padding-bottom: 15px; +} +.kanban .add_task, +.kanban .head, +.kanban .user{ + background: black; + border: 1px solid orange; + color: orange; + text-align: center; +} +.kanban .highlight{ + background: #4b3000; +} +.kanban .estimate{ + border: 0 none; + position: absolute; + top: 0; + right: 0; + font-weight: bold; + font-size: 0.6em; +} +.kanban .due_date{ + position: absolute; + font-weight: bold; + font-size: 0.6em; + bottom: 0; + right: 0; +} + +.kanban .tags { + position: absolute; + left: 0; + bottom: 0; + font-size: 0.6em; +} +.kanban .user, +.kanban .head { + position: sticky; + top: 50px; + z-index: 20; +} + +.kanban .filter{ + position: absolute; + top: 60px; + right: 20px; +} +.kanban .state_10 .box, +.kanban .state_100 .box{ + background: #573800; +} +.kanban .state_20 .box{ + background: orange; +} +.kanban .state_40 .box{ + background: khaki; +} +.kanban .state_60 .box{ + background: #d3ff00; +} +.project th, +.task th{ + text-align: right; + padding-right: 10px; +} + +.project th button, +.task th button{ + display: block; + margin: 5px 0 5px auto; +} + +.taglist .editor > span{ + display: inline-block; + min-width: 150px; + min-height: 1.3em; +} + +.taglist .tag{ + border: 1px solid red; + border-radius: 5px; + padding: 5px; +} + +.taglist .tag button{ + background: transparent; + color: red; + border: 0 none; +} + +fieldset.bookmark{ + position: relative; +} + +legend.date, +legend.time{ + position: absolute; + right: 10px; + background: black; +} +legend.date{ + top: -17px; +} +legend.time{ + top: -25px; +} + +legend{ + max-width: 75vw; +} + +.companies .edit > * { + display: inline-block; + width: 46vw; + vertical-align: top; +} + diff --git a/web/src/main/resources/web/css/default.css b/web/src/main/resources/web/css/default.css index 1eec0f6..0af1d7e 100644 --- a/web/src/main/resources/web/css/default.css +++ b/web/src/main/resources/web/css/default.css @@ -147,7 +147,7 @@ li.task:hover > button{ textarea{ color: white; background: #333; - font-weight: black; + font-weight: bold; } .kanban .add_task, @@ -264,7 +264,7 @@ legend.date, legend.time{ position: absolute; right: 10px; - background: white; + background: black; } legend.date{ top: -17px; diff --git a/web/src/main/resources/web/css/winter.css b/web/src/main/resources/web/css/winter.css index 3b6b95b..b68f53a 100644 --- a/web/src/main/resources/web/css/winter.css +++ b/web/src/main/resources/web/css/winter.css @@ -147,7 +147,7 @@ li.task:hover > button{ textarea{ color: blue; background: lightcyan;; - font-weight: black; + font-weight: bold; } .kanban .add_task,