From cd96bdfc6a5f3b77c0de9da73ede881882857afa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reinhard=20X=2E=20F=C3=BCrst?= Date: Sun, 23 Aug 2026 18:41:32 +0200 Subject: [PATCH 1/2] Formular und Liste responsiv gestaltet Co-Authored-By: Claude Sonnet 5 --- app/page.tsx | 7 +- components/AusgabenForm.tsx | 238 +++++++++++++++++---------------- components/AusgabenList.tsx | 46 ++++++- components/MonatsStatistik.tsx | 6 +- components/TabLayout.tsx | 6 +- 5 files changed, 174 insertions(+), 129 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index 3920083..cb2366b 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -8,6 +8,7 @@ import TabLayout from '@/components/TabLayout'; import { AusgabenEntry } from '@/types/ausgaben'; const MAX_ENTRIES = 15; +const MOBILE_ENTRIES = 5; export default function Home() { const [activeTab, setActiveTab] = useState(0); // 0 = Haushalt, 1 = Privat @@ -69,11 +70,13 @@ export default function Home() {
-

Letzte {MAX_ENTRIES} Einträge

+

+ Letzte {MOBILE_ENTRIES}{MAX_ENTRIES} Einträge +

{isLoading ? (
Lade Daten...
) : ( - + )}
diff --git a/components/AusgabenForm.tsx b/components/AusgabenForm.tsx index b71c2a8..d5ffade 100644 --- a/components/AusgabenForm.tsx +++ b/components/AusgabenForm.tsx @@ -204,131 +204,133 @@ export default function AusgabenForm({ onSuccess, selectedEntry, typ }: Ausgaben setEditId(null); }; + const fieldInputClass = "w-full min-w-0 px-2 py-1 text-sm rounded border-2 border-gray-400 bg-white focus:border-blue-500 focus:outline-none"; + return ( -
+
{editId && (
ℹ️ Bearbeitungsmodus: Sie bearbeiten einen bestehenden Eintrag.
)} - +
- - - - - - - - - - - - - - - - - - - - - - - -
DatumWoWasKat.WievielWie
- handleDateChange(e.target.value)} - className="w-full px-2 py-1 text-base rounded border-2 border-gray-400 bg-white focus:border-blue-500 focus:outline-none" - required - /> - - setFormData({ ...formData, Wo: e.target.value })} - className="w-full px-2 py-1 text-base rounded border-2 border-gray-400 bg-white focus:border-blue-500 focus:outline-none" - placeholder="Geschäft/Ort" - list="wo-suggestions" - required - /> - - {autoCompleteWo.map((wo, index) => ( - - setFormData({ ...formData, Was: e.target.value })} - className="w-full px-2 py-1 text-base rounded border-2 border-gray-400 bg-white focus:border-blue-500 focus:outline-none" - placeholder="Beschreibung" - list="was-suggestions" - required - /> - - {autoCompleteWas.map((was, index) => ( - - -
- - {katDropdownOpen && ( -
    - {categories.map((cat) => ( -
  • { - setFormData({ ...formData, Kat: cat.value }); - setKatDropdownOpen(false); - }} - > - {cat.value} - {cat.label} -
  • - ))} -
- )} -
-
- { - const val = e.target.value.replace(/[^0-9.,]/g, '').replace(',', '.'); - setFormData({ ...formData, Wieviel: val }); - }} - className="w-full px-2 py-1 text-base rounded border-2 border-gray-400 bg-white focus:border-blue-500 focus:outline-none" - placeholder="0.00" - required - /> - - -
+ + )} +
+
+ +
+ + { + const val = e.target.value.replace(/[^0-9.,]/g, '').replace(',', '.'); + setFormData({ ...formData, Wieviel: val }); + }} + className={fieldInputClass} + placeholder="0.00" + required + /> +
+ +
+ + +
+ + + + {autoCompleteWo.map((wo, index) => ( + + + {autoCompleteWas.map((was, index) => ( + {/* Wochentag */}
@@ -336,7 +338,7 @@ export default function AusgabenForm({ onSuccess, selectedEntry, typ }: Ausgaben
{/* Buttons */} -
+
+ +
+
+
+ Wo: {entry.Wo} + Was: {entry.Was} + Kat: {entry.Kat} + Wie: {entry.Wie} +
+ + )) + )} + {/* Bestätigungs-Modal */} {confirmId !== null && (
-
+

Eintrag wirklich löschen?