From e649c5ae9c0e604f704730660e76560bf80db978 Mon Sep 17 00:00:00 2001 From: Kowalski Date: Sat, 17 Oct 2026 11:10:58 +0200 Subject: [PATCH] GUI a drobnosti --- app/Model/Sdf/SdfKufrikImporter.php | 2 +- app/UI/@layout.latte | 2 +- app/UI/Firma/FirmaPresenter.php | 5 +- app/UI/Firma/edit.latte | 5 - www/css/layout.css | 338 +++++++++++++++++++++++++--- 5 files changed, 308 insertions(+), 44 deletions(-) diff --git a/app/Model/Sdf/SdfKufrikImporter.php b/app/Model/Sdf/SdfKufrikImporter.php index 4c9bbb7..e14b6a3 100644 --- a/app/Model/Sdf/SdfKufrikImporter.php +++ b/app/Model/Sdf/SdfKufrikImporter.php @@ -118,7 +118,7 @@ class SdfKufrikImporter 'NAZEV' => $this->clip($nazev, 255), 'IC' => $this->clip($uzivatel['IC'] ?? null, 8), 'DIC' => $this->clip($uzivatel['DIC'] ?? null, 12), - 'PLATCE_DPH' => !empty($uzivatel['DIC']) ? 1 : 0, + 'PLATCE_DPH' => 0, 'TELEFON' => $this->clip($uzivatel['TELEFON'] ?? null, 20), 'EMAIL' => $this->clip($uzivatel['EMAIL'] ?? null, 100), 'ULICE' => $this->clip($uzivatel['ULICE'] ?? null, 100), diff --git a/app/UI/@layout.latte b/app/UI/@layout.latte index f2ff34a..2926b92 100644 --- a/app/UI/@layout.latte +++ b/app/UI/@layout.latte @@ -17,7 +17,7 @@ {* naše vlastní styly *} - + diff --git a/app/UI/Firma/FirmaPresenter.php b/app/UI/Firma/FirmaPresenter.php index f05887b..c7d0521 100644 --- a/app/UI/Firma/FirmaPresenter.php +++ b/app/UI/Firma/FirmaPresenter.php @@ -38,7 +38,6 @@ class FirmaPresenter extends BasePresenter 'nazev' => $firma->NAZEV, 'ic' => $firma->IC, 'dic' => $firma->DIC, - 'platce_dph' => (bool) $firma->PLATCE_DPH, 'telefon' => $firma->TELEFON, 'email' => $firma->EMAIL, 'ulice' => $firma->ULICE, @@ -65,8 +64,6 @@ class FirmaPresenter extends BasePresenter $form->addText('dic', 'DIČ:') ->setMaxLength(12); - $form->addCheckbox('platce_dph', 'Jsem plátce DPH'); - // Kontakty $form->addText('telefon', 'Telefon:'); $form->addEmail('email', 'E-mail:'); @@ -100,7 +97,7 @@ class FirmaPresenter extends BasePresenter 'NAZEV' => $data->nazev, 'IC' => $data->ic, 'DIC' => $data->dic, - 'PLATCE_DPH' => $data->platce_dph ? 1 : 0, + 'PLATCE_DPH' => 0, 'TELEFON' => $data->telefon, 'EMAIL' => $data->email, 'ULICE' => $data->ulice, diff --git a/app/UI/Firma/edit.latte b/app/UI/Firma/edit.latte index 318184a..1cbf839 100644 --- a/app/UI/Firma/edit.latte +++ b/app/UI/Firma/edit.latte @@ -36,11 +36,6 @@ -
- - -
-
Sídlo a kontakty
diff --git a/www/css/layout.css b/www/css/layout.css index cc20bec..a25cca7 100644 --- a/www/css/layout.css +++ b/www/css/layout.css @@ -1,15 +1,26 @@ /* --- 1. GLOBÁLNÍ PROMĚNNÉ BARVY & BASE --- */ :root { - --app-bg: #f8fafc; /* Jemný šedo-modrý podklad */ - --header-bg: #1e293b; /* Moderní tmavě břidlicová (Slate 800) místo sytě modré */ - --header-active: #334155; /* Světlejší břidlicová pro aktivní záložku */ - --primary-accent: #3b82f6; /* Moderní soft modrá */ - --text-main: #0f172a; - --text-muted: #64748b; - --border-color: #e2e8f0; /* Velmi velice jemná hraniční čára */ + --app-bg: #eef3fa; + --header-bg: #1f4f8f; + --header-active: #163e73; + --primary-accent: #2f6fce; + --primary-accent-hover: #245db3; + --primary-soft: #e3eefc; + --primary-soft-border: #b7d0f3; + --text-main: #1c2b42; + --text-muted: #5c6e86; + --border-color: #dbe4f0; --card-bg: #ffffff; - --radius-sm: 0.375rem; - --radius-md: 0.5rem; + --radius-sm: 0.5rem; + --radius-md: 0.75rem; + --success: #14915f; + --success-hover: #0f7a4f; + --success-soft: #d9f5e8; + --warning-soft: #ffe8bf; + --warning-text: #b86e00; + --danger: #e04b4b; + --danger-hover: #c93737; + --danger-soft: #fde2e2; } html, body { @@ -46,7 +57,7 @@ body { } .app-header .nav-link { - color: #94a3b8; /* Soft šedá pro neaktivní */ + color: #c5d0de; border: none !important; padding: 0.45rem 0.85rem; font-weight: 500; @@ -74,13 +85,15 @@ body { } .user-panel .btn-outline-light { - border-color: #475569; - color: #cbd5e1; + border-color: #5d7390; + color: #e4ebf4; + border-radius: 999px; + padding-inline: 0.85rem; } .user-panel .btn-outline-light:hover { - background-color: #334155; - border-color: #334155; + background-color: rgba(255, 255, 255, 0.1); + border-color: #c5d4e6; color: #fff; } @@ -136,26 +149,30 @@ body { margin-bottom: 0.15rem; } -/* Speciální úpravy barev pro primární tlačítka ( soft tlačítka ) */ .btn-action.btn-success { - background-color: #10b981; /* Emerald green místo zářivé zelené */ - border-color: #10b981; + background-color: var(--success); + border-color: var(--success); color: #fff; } .btn-action.btn-success:hover { - background-color: #059669; - border-color: #059669; + background-color: var(--success-hover); + border-color: var(--success-hover); + color: #fff; } -.btn-action.btn-outline-primary { - color: #2563eb; - border-color: #bfdbfe; - background-color: #eff6ff; +.btn-action.btn-outline-primary, +.btn-action.btn-primary, +.btn-action.btn-primary.active { + color: #1f5eae; + border-color: var(--primary-soft-border); + background-color: var(--primary-soft); } -.btn-action.btn-outline-primary:hover { - background-color: #2563eb; - border-color: #2563eb; - color: #fff; +.btn-action.btn-outline-primary:hover, +.btn-action.btn-primary:hover, +.btn-action.btn-primary.active { + background-color: #d3e4fa; + border-color: #8eb4e8; + color: #184e94; } /* Oddělovač */ @@ -276,7 +293,7 @@ body { .login-form .form-control:focus { outline: none; border-color: var(--primary-accent); - box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15); + box-shadow: 0 0 0 3px rgba(109, 144, 196, 0.22); } .login-form .btn-primary { @@ -294,8 +311,8 @@ body { } .login-form .btn-primary:hover { - background-color: #2563eb; - border-color: #2563eb; + background-color: var(--primary-accent-hover); + border-color: var(--primary-accent-hover); transform: translateY(-1px); } @@ -323,7 +340,262 @@ body { color: #991b1b; } .alert-success { - background-color: #ecfdf5; - border: 1px solid #a7f3d0; - color: #065f46; + background-color: var(--success-soft); + border: 1px solid #c9e6da; + color: #2f6b58; +} + +/* --- 7. JEMNĚJŠÍ PALETA NAD BOOTSTRAPEM --- */ +a { + color: #1f62c0; +} +a:hover { + color: #184e9c; +} + +.text-primary { color: #1f62c0 !important; } +.text-success { color: #0e8a56 !important; } +.text-warning { color: var(--warning-text) !important; } +.text-danger { color: #d63c3c !important; } +.text-info { color: #0e7ea8 !important; } + +.bg-primary { background-color: #7fa0cb !important; } +.border-primary { border-color: #8aabd4 !important; } +.border-success { border-color: #b7dccb !important; } +.border-warning { border-color: #ead7b0 !important; } +.border-danger { border-color: #e4c4c4 !important; } + +/* Souhrnné karty — sytý podklad, ať nepůsobí vybledle */ +.card.border-start { + border-width: 1px 1px 1px 6px !important; + border-style: solid !important; + box-shadow: 0 1px 3px rgba(20, 50, 100, 0.08); +} +.card.border-start.border-primary { + border-color: #c5daf6 !important; + border-left-color: #1f62c9 !important; + background-color: #d7e7fb !important; +} +.card.border-start.border-warning { + border-color: #f6ddaa !important; + border-left-color: #e39b00 !important; + background-color: #ffe7b8 !important; +} +.card.border-start.border-danger { + border-color: #f6c9c9 !important; + border-left-color: #e04545 !important; + background-color: #fcd6d6 !important; +} +.card.border-start.border-success { + border-color: #b7e8d0 !important; + border-left-color: #12945f !important; + background-color: #d4f3e4 !important; +} +.card.border-start .text-primary { color: #154eaa !important; } +.card.border-start .text-warning { color: #9a5c00 !important; } +.card.border-start .text-danger { color: #c42828 !important; } +.card.border-start .text-success { color: #0c7a4c !important; } +.border-info { border-color: #c5dceb !important; } +.border-secondary { border-color: #d5dee8 !important; } + +.bg-success-subtle { background-color: var(--success-soft) !important; } +.bg-secondary-subtle { background-color: #f1f4f8 !important; } + +.form-control:focus, +.form-select:focus { + border-color: #a9c0df; + box-shadow: 0 0 0 0.2rem rgba(109, 144, 196, 0.18); +} + +/* Tlačítka */ +.btn { + --bs-btn-border-radius: 0.5rem; + font-weight: 500; + letter-spacing: 0.01em; + box-shadow: none; + transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease; +} + +.btn:focus-visible { + box-shadow: 0 0 0 0.2rem rgba(109, 144, 196, 0.28); +} + +.btn-primary { + --bs-btn-color: #fff; + --bs-btn-bg: var(--primary-accent); + --bs-btn-border-color: var(--primary-accent); + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: var(--primary-accent-hover); + --bs-btn-hover-border-color: var(--primary-accent-hover); + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #1d4f96; + --bs-btn-active-border-color: #1d4f96; + --bs-btn-disabled-bg: #b7c8e0; + --bs-btn-disabled-border-color: #b7c8e0; +} + +.btn-outline-primary { + --bs-btn-color: #1f5eae; + --bs-btn-border-color: #b7d0f3; + --bs-btn-bg: var(--primary-soft); + --bs-btn-hover-color: #184e94; + --bs-btn-hover-bg: #d3e4fa; + --bs-btn-hover-border-color: #8eb4e8; + --bs-btn-active-color: #184e94; + --bs-btn-active-bg: #c5daf6; + --bs-btn-active-border-color: #8eb4e8; +} + +.btn-success { + --bs-btn-color: #fff; + --bs-btn-bg: var(--success); + --bs-btn-border-color: var(--success); + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: var(--success-hover); + --bs-btn-hover-border-color: var(--success-hover); + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #437c68; + --bs-btn-active-border-color: #437c68; +} + +.btn-outline-success { + --bs-btn-color: #0c7a4c; + --bs-btn-border-color: #9ed9bc; + --bs-btn-bg: var(--success-soft); + --bs-btn-hover-color: #08663e; + --bs-btn-hover-bg: #c3edd8; + --bs-btn-hover-border-color: #6ec99e; + --bs-btn-active-color: #08663e; + --bs-btn-active-bg: #b4e6ce; + --bs-btn-active-border-color: #6ec99e; +} + +.btn-outline-secondary { + --bs-btn-color: #5c6d82; + --bs-btn-border-color: #d7e0ea; + --bs-btn-bg: #fff; + --bs-btn-hover-color: #3e5168; + --bs-btn-hover-bg: #f4f7fb; + --bs-btn-hover-border-color: #c5d1de; + --bs-btn-active-color: #3e5168; + --bs-btn-active-bg: #eaf0f6; + --bs-btn-active-border-color: #c5d1de; +} + +.btn-outline-danger { + --bs-btn-color: #c43737; + --bs-btn-border-color: #f0b8b8; + --bs-btn-bg: #fff; + --bs-btn-hover-color: #a82828; + --bs-btn-hover-bg: var(--danger-soft); + --bs-btn-hover-border-color: #e89090; + --bs-btn-active-color: #a82828; + --bs-btn-active-bg: #f8d0d0; + --bs-btn-active-border-color: #e89090; +} + +.btn-outline-dark { + --bs-btn-color: #4a5b70; + --bs-btn-border-color: #d5dee8; + --bs-btn-hover-bg: #f3f6fa; + --bs-btn-hover-color: #2c3d55; + --bs-btn-hover-border-color: #c3d0de; + --bs-btn-active-bg: #e8eef5; + --bs-btn-active-color: #2c3d55; +} + +.btn-outline-info { + --bs-btn-color: #4d7a9a; + --bs-btn-border-color: #cfe0ec; + --bs-btn-bg: #f4f9fc; + --bs-btn-hover-color: #3d6784; + --bs-btn-hover-bg: #e7f2f8; + --bs-btn-hover-border-color: #bdd4e4; + --bs-btn-active-color: #3d6784; + --bs-btn-active-bg: #dceaf3; +} + +.btn-danger { + --bs-btn-color: #fff; + --bs-btn-bg: var(--danger); + --bs-btn-border-color: var(--danger); + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: var(--danger-hover); + --bs-btn-hover-border-color: var(--danger-hover); +} + +/* Ikonová tlačítka v tabulkách */ +.btn-group-sm > .btn, +.btn-sm { + --bs-btn-border-radius: 0.45rem; +} + +/* Odznaky — jemný podklad místo syté výplně */ +.badge { + font-weight: 600; + letter-spacing: 0.015em; + border-radius: 999px; + padding: 0.4em 0.72em; + border: 1px solid transparent; +} + +.badge.bg-success { + background-color: #c8f0dc !important; + color: #087248 !important; + border-color: #7dcea8; +} + +.badge.bg-warning { + background-color: #ffd98a !important; + color: #8a5200 !important; + border-color: #f0b84a; +} + +.badge.bg-info { + background-color: #c9ecf8 !important; + color: #0b6e96 !important; + border-color: #7ecae4; +} + +.badge.bg-primary { + background-color: #d4e6fb !important; + color: #1a56ad !important; + border-color: #9ec2f0; +} + +.badge.bg-danger { + background-color: var(--danger-soft) !important; + color: #8f4f4f !important; + border-color: #ead4d4; +} + +.badge.bg-secondary { + background-color: #eef2f6 !important; + color: #5c6d82 !important; + border-color: #d7e0ea; +} + +.badge.bg-dark { + background-color: #e7edf4 !important; + color: #3d5270 !important; + border-color: #cdd8e6; +} + +.badge.bg-light { + background-color: #f7f9fc !important; + color: #5c6d82 !important; + border-color: #e1e8f0; +} + +.table { + --bs-table-hover-bg: #f6f9fc; +} + +.table thead th { + color: #5c6d82; + font-weight: 600; + font-size: 0.78rem; + letter-spacing: 0.02em; + text-transform: uppercase; + border-bottom-color: var(--border-color); } \ No newline at end of file