From 553a486556ff7f9f1b777053c0129303494d6ed5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kinga=20=C5=BBmuda?= Date: Wed, 15 Apr 2026 10:00:28 +0200 Subject: [PATCH] feat: add sesame allergen --- app/components/menu/dish/dish_info_box.tsx | 8 +++- app/components/menu/menu_translations.ts | 1 + app/i18n.ts | 2 + app/interfaces.tsx | 4 +- package-lock.json | 48 ++++++++-------------- package.json | 2 +- 6 files changed, 28 insertions(+), 37 deletions(-) diff --git a/app/components/menu/dish/dish_info_box.tsx b/app/components/menu/dish/dish_info_box.tsx index 33a9b9a..8469a30 100644 --- a/app/components/menu/dish/dish_info_box.tsx +++ b/app/components/menu/dish/dish_info_box.tsx @@ -1,5 +1,5 @@ import type { Dish } from '~/interfaces'; -import { Beef, Milk, Nut, Wheat } from 'lucide-react'; +import { Beef, Milk, Nut, Wheat, CirclePile } from 'lucide-react'; import type { ComponentType } from 'react'; const ALLERGEN_ICON_MAP: Record; label: string }> = @@ -8,11 +8,15 @@ const ALLERGEN_ICON_MAP: Record LACTOSE: { icon: Milk, label: 'Lactose' }, MEAT: { icon: Beef, label: 'Meat' }, NUTS: { icon: Nut, label: 'Nuts' }, + SESAME: { icon: CirclePile, label: 'Sesame' }, }; export function DishInfo({ dish }: { dish: Dish }) { const allergenIcons = (dish.allergens ?? []) - .map(allergen => ALLERGEN_ICON_MAP[allergen]) + .map(allergen => { + const key = allergen.toUpperCase(); + return ALLERGEN_ICON_MAP[key]; + }) .filter(Boolean); return ( diff --git a/app/components/menu/menu_translations.ts b/app/components/menu/menu_translations.ts index 8062611..f925a43 100644 --- a/app/components/menu/menu_translations.ts +++ b/app/components/menu/menu_translations.ts @@ -5,6 +5,7 @@ const ALLERGEN_KEY_MAP: Record = { LACTOSE: 'menuForm.allergenLactose', MEAT: 'menuForm.allergenMeat', NUTS: 'menuForm.allergenNuts', + SESAME: 'menuForm.allergenSesame', }; const CATEGORY_KEY_MAP: Record = { diff --git a/app/i18n.ts b/app/i18n.ts index 6678fc6..1451ff9 100644 --- a/app/i18n.ts +++ b/app/i18n.ts @@ -168,6 +168,7 @@ const resources = { allergenLactose: 'Lactose', allergenMeat: 'Meat', allergenNuts: 'Nuts', + allergenSesame: 'Sesame', addDish: 'Add Dish', submitMenu: 'Submit Menu', submitDraftMenu: 'Save draft for later', @@ -425,6 +426,7 @@ const resources = { allergenLactose: 'Laktoza', allergenMeat: 'Mięso', allergenNuts: 'Orzechy', + allergenSesame: 'Sezam', addDish: 'Dodaj danie', submitMenu: 'Publikuj menu', submitDraftMenu: 'Zapisz na później', diff --git a/app/interfaces.tsx b/app/interfaces.tsx index 0004c7a..ba361f0 100644 --- a/app/interfaces.tsx +++ b/app/interfaces.tsx @@ -30,9 +30,9 @@ export interface Restaurant { openNow: boolean; } -export type Allergen = 'NUTS' | 'GLUTEN' | 'MEAT' | 'LACTOSE'; +export type Allergen = 'NUTS' | 'GLUTEN' | 'MEAT' | 'LACTOSE' | 'SESAME'; -export const MENU_ALLERGENS: Allergen[] = ['GLUTEN', 'LACTOSE', 'MEAT', 'NUTS']; +export const MENU_ALLERGENS: Allergen[] = ['GLUTEN', 'LACTOSE', 'MEAT', 'NUTS', 'SESAME']; export interface DailyMenu { id: string; diff --git a/package-lock.json b/package-lock.json index d537249..9c02f15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,7 +26,7 @@ "i18next": "^25.10.4", "isbot": "^5.1.31", "keycloak-js": "^26.2.1", - "lucide-react": "^0.553.0", + "lucide-react": "^1.8.0", "react": "^19.1.1", "react-dom": "^19.1.1", "react-i18next": "^16.6.6", @@ -166,7 +166,6 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -1115,7 +1114,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -1159,7 +1157,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -3023,7 +3020,6 @@ "resolved": "https://registry.npmjs.org/@react-router/serve/-/serve-7.9.5.tgz", "integrity": "sha512-sww8oDNqz8SgaXEQ3maqTuMlibCMpmWvLE0s5zyEyOQb1G99clYMcXceQ2HNU2jtXJkp+P5XI1CngpGpngyTnw==", "license": "MIT", - "peer": true, "dependencies": { "@mjackson/node-fetch-server": "^0.2.0", "@react-router/express": "7.9.5", @@ -3745,7 +3741,8 @@ "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/chai": { "version": "5.2.3", @@ -3813,7 +3810,6 @@ "integrity": "sha512-xpr/lmLPQEj+TUnHmR+Ab91/glhJvsqcjB+yY0Ix9GO70H6Lb4FHH5GeqdOE5btAx7eIMwuHkp4H2MSkLcqWbA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -3824,7 +3820,6 @@ "integrity": "sha512-k5dJVszUiNr1DSe8Cs+knKR6IrqhqdhpUwzqhkS8ecQTSf3THNtbfIp/umqHMpX2bv+9dkx3fwDv/86LcSfvSg==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -3835,7 +3830,6 @@ "integrity": "sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==", "devOptional": true, "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "^19.2.0" } @@ -4000,7 +3994,6 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4492,7 +4485,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", @@ -4997,7 +4989,6 @@ "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -5349,7 +5340,8 @@ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/dot-prop": { "version": "5.3.0", @@ -5402,8 +5394,7 @@ "version": "8.6.0", "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/embla-carousel-react": { "version": "8.6.0", @@ -5768,7 +5759,6 @@ "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -6027,7 +6017,6 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "license": "MIT", - "peer": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -6850,7 +6839,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.29.2" }, @@ -7671,7 +7659,6 @@ "resolved": "https://registry.npmjs.org/keycloak-js/-/keycloak-js-26.2.1.tgz", "integrity": "sha512-bZt6fQj/TLBAmivXSxSlqAJxBx/knNZDQGJIW4ensGYGN4N6tUKV8Zj3Y7/LOV8eIpvWsvqV70fbACihK8Ze0Q==", "license": "Apache-2.0", - "peer": true, "workspaces": [ "test" ] @@ -8252,9 +8239,9 @@ } }, "node_modules/lucide-react": { - "version": "0.553.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.553.0.tgz", - "integrity": "sha512-BRgX5zrWmNy/lkVAe0dXBgd7XQdZ3HTf+Hwe3c9WK6dqgnj9h+hxV+MDncM88xDWlCq27+TKvHGE70ViODNILw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.8.0.tgz", + "integrity": "sha512-WuvlsjngSk7TnTBJ1hsCy3ql9V9VOdcPkd3PKcSmM34vJD8KG6molxz7m7zbYFgICwsanQWmJ13JlYs4Zp7Arw==", "license": "ISC", "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" @@ -8266,6 +8253,7 @@ "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "lz-string": "bin/bin.js" } @@ -9027,7 +9015,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -9078,7 +9065,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -9127,6 +9113,7 @@ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -9142,6 +9129,7 @@ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -9152,6 +9140,7 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=10" }, @@ -9164,7 +9153,8 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/proc-log": { "version": "3.0.0", @@ -9276,7 +9266,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -9286,7 +9275,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -9404,7 +9392,6 @@ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.9.5.tgz", "integrity": "sha512-JmxqrnBZ6E9hWmf02jzNn9Jm3UqyeimyiwzD69NjxGySG6lIz/1LVPsoTCwN7NBX2XjCEa1LIX5EMz1j2b6u6A==", "license": "MIT", - "peer": true, "dependencies": { "cookie": "^1.0.1", "set-cookie-parser": "^2.6.0" @@ -10500,8 +10487,7 @@ "version": "4.1.17", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz", "integrity": "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/tailwindcss-animate": { "version": "1.0.7", @@ -10805,7 +10791,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11015,7 +11000,6 @@ "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", diff --git a/package.json b/package.json index b60804e..c556ce7 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "i18next": "^25.10.4", "isbot": "^5.1.31", "keycloak-js": "^26.2.1", - "lucide-react": "^0.553.0", + "lucide-react": "^1.8.0", "react": "^19.1.1", "react-dom": "^19.1.1", "react-i18next": "^16.6.6",