feat(mobile): välj religiös kosthållning (halal m.fl.) i onboarding – filtrerar fläsk (MIKRO 62)
CI / Typecheck, test & build (push) Failing after 42s

This commit is contained in:
Sven (AAMOS AI)
2026-08-14 20:53:35 +07:00
parent e6216bf735
commit f102288676
2 changed files with 23 additions and 0 deletions
+17
View File
@@ -42,6 +42,8 @@ const GOALS = [
const DIETS = ["omnivore", "flexitarian", "pescatarian", "vegetarian", "vegan"] as const; const DIETS = ["omnivore", "flexitarian", "pescatarian", "vegetarian", "vegan"] as const;
const RELIGIOUS = ["none", "halal", "kosher", "hindu_no_beef", "buddhist_vegetarian"] as const;
const ALLERGENS = [ const ALLERGENS = [
"gluten", "gluten",
"milk", "milk",
@@ -75,6 +77,7 @@ export default function OnboardingScreen() {
// Step B state // Step B state
const [diet, setDiet] = useState<string>("omnivore"); const [diet, setDiet] = useState<string>("omnivore");
const [religiousRule, setReligiousRule] = useState<string>("none");
const [allergens, setAllergens] = useState<string[]>([]); const [allergens, setAllergens] = useState<string[]>([]);
const [householdKind, setHouseholdKind] = useState<"create" | "join" | "skip">("create"); const [householdKind, setHouseholdKind] = useState<"create" | "join" | "skip">("create");
const [householdName, setHouseholdName] = useState(t("onboarding.householdDefaultName")); const [householdName, setHouseholdName] = useState(t("onboarding.householdDefaultName"));
@@ -136,6 +139,7 @@ export default function OnboardingScreen() {
preferences: { preferences: {
dietPattern: diet, dietPattern: diet,
allergens, allergens,
religiousRule,
}, },
householdChoice: householdChoice:
householdKind === "create" householdKind === "create"
@@ -280,6 +284,19 @@ export default function OnboardingScreen() {
</Row> </Row>
<Spacer size={spacing.sm} /> <Spacer size={spacing.sm} />
<Spacer size={spacing.sm} />
<Heading>{t("onboarding.religious")}</Heading>
<Row>
{RELIGIOUS.map((id) => (
<Chip
key={id}
label={t(`onboarding.religious.${id}` as never)}
selected={religiousRule === id}
onPress={() => setReligiousRule(id)}
/>
))}
</Row>
<Heading>{t("onboarding.allergies")}</Heading> <Heading>{t("onboarding.allergies")}</Heading>
<Row> <Row>
{ALLERGENS.map((id) => ( {ALLERGENS.map((id) => (
+6
View File
@@ -174,6 +174,12 @@
"onboarding.birthYearPlaceholder": "Födelseår", "onboarding.birthYearPlaceholder": "Födelseår",
"onboarding.bodyTitle": "För personliga kalorimål (frivilligt)", "onboarding.bodyTitle": "För personliga kalorimål (frivilligt)",
"onboarding.diet": "Hur äter du?", "onboarding.diet": "Hur äter du?",
"onboarding.religious": "Religiös kosthållning",
"onboarding.religious.none": "Ingen",
"onboarding.religious.halal": "Halal (inget fläsk)",
"onboarding.religious.kosher": "Kosher",
"onboarding.religious.hindu_no_beef": "Inget nötkött",
"onboarding.religious.buddhist_vegetarian": "Buddhistisk vegetarisk",
"onboarding.diet.flexitarian": "Flexitarian", "onboarding.diet.flexitarian": "Flexitarian",
"onboarding.diet.omnivore": "Allätare", "onboarding.diet.omnivore": "Allätare",
"onboarding.diet.pescatarian": "Pescetarian", "onboarding.diet.pescatarian": "Pescetarian",