import { CATEGORIES } from "./categories"; import { getTaxRateForCategory } from "./tax-rates"; import type { ChildCategory, ParentCategory } from "./types"; // Get all categories flattened into a single array export function getFlatCategories(): ChildCategory[] { const flatCategories: ChildCategory[] = []; for (const parent of CATEGORIES) { flatCategories.push({ name: parent.name, slug: parent.slug, color: parent.color, system: parent.system, parentSlug: "", }); flatCategories.push(...parent.children); } return flatCategories; } // Get category by slug export function getCategoryBySlug( slug: string, ): ChildCategory | ParentCategory | null { const parent = CATEGORIES.find((cat) => cat.slug === slug); if (parent) return parent; for (const parent of CATEGORIES) { const child = parent.children.find((child) => child.slug === slug); if (child) return child; } return null; } // Get parent category for a given child slug export function getParentCategory(childSlug: string): ParentCategory | null { for (const parent of CATEGORIES) { if (parent.children.some((child) => child.slug === childSlug)) { return parent; } } return null; } // Get category with tax rate for a specific country export function getCategoryWithTaxRate( categorySlug: string, countryCode: string, ): ((ChildCategory | ParentCategory) & { taxRate: number }) | null { const category = getCategoryBySlug(categorySlug); if (!category) return null; const taxRate = getTaxRateForCategory(countryCode, categorySlug); return { ...category, taxRate, }; } // Export the main categories for easy access export { CATEGORIES } from "./categories";