Merged in feat/LOY-55-Filter-Modal (pull request #1509)

feat(LOY-55): Add FilterRewardsModal

* feat(LOY-55): Add rewards filtering functionality

- Implement dynamic rewards filtering by category and membership level
- Create FilterRewardsModal component for filtering rewards
- Add useFilteredRewards hook to handle filtering logic
- Update rewards schema and constants to support new filtering features
- Remove hardcoded page size and replace with constant

* fix(LOY-55): reuse existing tier to friend map

* refactor(LOY-55): fix checkbox onChange type safety

* refactor(LOY-55): Improve rewards filtering type safety and validation

* refactor(LOY-55): Update filter modal border color using design token


Approved-by: Christian Andolf
This commit is contained in:
Chuma Mcphoy (We Ahead)
2025-03-12 13:29:35 +00:00
parent 2e887aaff8
commit 1ef6fd02c1
12 changed files with 594 additions and 12 deletions
@@ -25,7 +25,6 @@ export type ContentProps = {
export interface CurrentRewardsClientProps {
rewards: (Reward | RewardWithRedeem)[]
pageSize: number
showRedeem: boolean
membershipNumber?: string | null
}
@@ -1,6 +1,8 @@
import type { IconProps } from "@/types/components/icon"
import type { MembershipLevelEnum } from "@/constants/membershipLevels"
import type {
RESTAURANT_REWARD_IDS,
REWARD_CATEGORIES,
REWARD_IDS,
REWARD_TYPES,
} from "@/constants/rewards"
@@ -15,3 +17,14 @@ export type RewardId = (typeof REWARD_IDS)[keyof typeof REWARD_IDS]
export type RestaurantRewardId = (typeof RESTAURANT_REWARD_IDS)[number]
export type RewardType = (typeof REWARD_TYPES)[number]
export type RewardCategory = (typeof REWARD_CATEGORIES)[number]
export interface FilterRewardsModalProps {
selectedCategories: RewardCategory[]
selectedLevels: MembershipLevelEnum[]
onCategoriesChange: (categories: RewardCategory[]) => void
onLevelsChange: (levels: MembershipLevelEnum[]) => void
availableTierLevels: MembershipLevelEnum[]
availableCategories: RewardCategory[]
}