feat(shopping): custom categories - add, rename, delete and reorder (#26)

- New DB table shopping_categories (migration v5) seeds 9 default
  categories with Lucide icons and sort_order
- Backend CRUD routes: GET/POST/PUT/DELETE /shopping/categories
  plus PATCH /shopping/categories/reorder
- Category validation now uses DB instead of hardcoded constant;
  items of deleted category are moved to the next available one
- Frontend shopping page loads categories from API, dropdown and
  grouping reflect custom order dynamically
- Settings -> Shopping section: list categories with up/down buttons,
  click-to-rename, delete with confirmation; add new categories inline
- i18n keys added in de/en/sv/it
This commit is contained in:
Ulas
2026-04-05 17:24:06 +02:00
parent 517e4454d0
commit 2dc8984c3e
11 changed files with 545 additions and 56 deletions
+13
View File
@@ -455,6 +455,19 @@
"settings": {
"title": "Einstellungen",
"sectionDesign": "Design",
"sectionShopping": "Einkauf",
"shoppingCategoriesLabel": "Einkaufskategorien",
"shoppingCategoriesHint": "Kategorien hinzufügen, umbenennen, löschen oder sortieren.",
"shoppingCategoryPlaceholder": "Neue Kategorie…",
"shoppingCategoryRenameHint": "Klicken zum Umbenennen",
"shoppingCategoryRenamePrompt": "Neuer Kategoriename:",
"shoppingCategoryMoveUp": "Kategorie nach oben",
"shoppingCategoryMoveDown": "Kategorie nach unten",
"shoppingCategoryDelete": "Kategorie löschen",
"shoppingCategoryDeleteConfirm": "Kategorie \"{{name}}\" löschen? Vorhandene Artikel werden der nächsten Kategorie zugeordnet.",
"shoppingCategoryAdded": "Kategorie hinzugefügt.",
"shoppingCategoryRenamed": "Kategorie umbenannt.",
"shoppingCategoryDeleted": "Kategorie gelöscht.",
"sectionAccount": "Mein Konto",
"sectionCalendarSync": "Kalender-Synchronisation",
"sectionFamily": "Familienmitglieder",