feat(vad-ska-vi-ata): identisk vy i alla flikar + enhetliga rutor
Alla kategori-flikar anvander nu SAMMA rekommendations-motor (what-to-eat) som 'Rekommenderat', sa vyn blir identisk overallt: - sok fungerar i alla flikar, %-hemma och stjarnor visas, samma kort-layout, och samma paginering med 'Visa fler' (5 at gangen). - Backend: what-to-eat tar nu valfri ?tag= (Baka-fliken filtrerar pa 'baking' i stallet for maltidstyp; mealType styr bara poangsattningen). - Enhetliga chip-rutor: Button far en style-prop, flikarna ligger i 2 kolumner med lika bred ruta (48%), centrerad text som krymper vid behov. - 'Toppval' visas bara pa forsta sidan. 'Alla recept & sok' kvar som lank. Full typecheck 20/20.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { z } from "zod";
|
||||
import { MEAL_TYPES } from "@app/shared-types";
|
||||
import { MEAL_TYPES, RECIPE_TAGS } from "@app/shared-types";
|
||||
|
||||
/**
|
||||
* "Vad ska vi äta?" (spec §18) + "Jag är sugen på" (spec §19).
|
||||
@@ -7,6 +7,9 @@ import { MEAL_TYPES } from "@app/shared-types";
|
||||
*/
|
||||
export const whatToEatQuerySchema = z.object({
|
||||
mealType: z.enum(MEAL_TYPES).default("dinner"),
|
||||
/** Filtrera kandidater på en recept-tagg (t.ex. "baking" för Baka-fliken)
|
||||
* i stället för måltidstyp. mealType används fortfarande för poängsättning. */
|
||||
tag: z.enum(RECIPE_TAGS).optional(),
|
||||
persons: z.coerce.number().int().min(1).max(20).optional(),
|
||||
maxMinutes: z.coerce.number().int().min(5).max(600).optional(),
|
||||
maxCostMinorPerPortion: z.coerce.number().int().min(0).max(100_000).optional(),
|
||||
|
||||
Reference in New Issue
Block a user