Replace entire repo content with updated code from /root/shahikitchen-website/

This commit is contained in:
root
2026-06-30 12:19:55 +00:00
parent 50e3a34895
commit c8b7dc95e4
26 changed files with 1153 additions and 161 deletions
+58
View File
@@ -0,0 +1,58 @@
import type { Language } from '@/domain/language/entities';
import type { MenuItem } from '@/domain/menu/entities';
import type { OrderLine } from '@/domain/shared/order-line';
import { getMenuItemById } from '@/infrastructure/menu/static-menu-data';
import { getCategoryName as resolveCategoryName } from '@/presentation/i18n/menu/category-names';
import { getMenuItemName as resolveItemName } from '@/presentation/i18n/menu/item-names';
import type { TranslationBundle } from '@/presentation/i18n/translations';
type MenuTextBundle = TranslationBundle & {
menuDescriptions?: Record<string, string>;
};
export function getMenuItemName(
lang: Language,
item: Pick<MenuItem, 'id' | 'name'>,
): string {
return resolveItemName(lang, item.id, item.name);
}
export function getMenuItemDescription(
lang: Language,
t: TranslationBundle,
item: Pick<MenuItem, 'id' | 'description'>,
): string {
const bundle = t as MenuTextBundle;
return (
bundle.menuDescriptions?.[item.id] ??
(lang === 'en' ? item.description : undefined) ??
item.description ??
''
);
}
export function getCategoryName(
lang: Language,
categoryId: string,
fallback: string,
): string {
return resolveCategoryName(lang, categoryId, fallback);
}
export function localizeMenuItem(
lang: Language,
t: TranslationBundle,
item: MenuItem,
): MenuItem {
return {
...item,
name: getMenuItemName(lang, item),
description: getMenuItemDescription(lang, t, item),
};
}
export function localizeOrderLineName(lang: Language, line: OrderLine): string {
const menuItem = getMenuItemById(line.id);
if (!menuItem) return line.name;
return getMenuItemName(lang, menuItem);
}