Fixes
Fixed an issue where media manager only shows files uploaded in specific sections. Fixed an issue with icon picker names. Removed jumbo rounding and a few other style tweaks.
This commit is contained in:
74 files changed
+1622
-195
No files matched your search
+51
-2
@@ -1143,14 +1143,49 @@ model AppointmentService {
|
||||
// count"; every stamp add/remove/redemption is its own row).
|
||||
// ─────────────────────────────────────────────────────────────────────────
|
||||
|
||||
/// Phase 10 — a small, curated set of card fonts with zero extra network
|
||||
/// cost (Tailwind's own built-in generic font-family stacks), not an
|
||||
/// arbitrary CSS font-family string — see loyalty-config-form.tsx's
|
||||
/// IconPicker-style font Select.
|
||||
enum LoyaltyCardFont {
|
||||
SANS
|
||||
SERIF
|
||||
MONO
|
||||
}
|
||||
|
||||
/// Phase 10 — an enum, not a free number, so a bad value can never break
|
||||
/// card layout.
|
||||
enum LoyaltyCardTextSize {
|
||||
SM
|
||||
MD
|
||||
LG
|
||||
}
|
||||
|
||||
/// Phase 10 — resolves the "stamps required" ambiguity the brief called
|
||||
/// out: does the reward unlock only once every stamp position is filled,
|
||||
/// or is the final position itself the reward (earned one stamp early)?
|
||||
/// See resolveRewardThreshold() in src/services/loyalty/loyalty.service.ts
|
||||
/// — the one place this is interpreted; automatic stamps, manual stamps,
|
||||
/// the customer card, and progress text all read through it, so none of
|
||||
/// them can disagree with each other.
|
||||
enum RewardPositionMode {
|
||||
AFTER_ALL_STAMPS
|
||||
FINAL_SLOT_IS_REWARD
|
||||
}
|
||||
|
||||
model LoyaltyProgramme {
|
||||
id String @id @default(cuid())
|
||||
|
||||
businessId String @unique
|
||||
business Business @relation(fields: [businessId], references: [id], onDelete: Cascade)
|
||||
|
||||
isEnabled Boolean @default(false)
|
||||
stampsRequired Int @default(10)
|
||||
isEnabled Boolean @default(false)
|
||||
/// Capped at 10 (see the CHECK constraint added in migration
|
||||
/// 20260805000000_phase10_loyalty_card_and_permission_fixes) — enforced
|
||||
/// identically in validateProgrammeConfig, the owner form, and here.
|
||||
stampsRequired Int @default(10)
|
||||
/// See RewardPositionMode's own doc comment.
|
||||
rewardPosition RewardPositionMode @default(AFTER_ALL_STAMPS)
|
||||
|
||||
rewardType RewardType @default(PERCENTAGE)
|
||||
/// Percentage points or a fixed-amount value depending on rewardType;
|
||||
@@ -1179,6 +1214,20 @@ model LoyaltyProgramme {
|
||||
stampIcon String?
|
||||
termsLine String?
|
||||
|
||||
/// Phase 10 — free text shown in the card's top-right area, above the
|
||||
/// member number. Separate from the member number itself (always
|
||||
/// shown, has its own colour below) — null/empty means nothing renders
|
||||
/// there beyond the member number, same as today.
|
||||
cardTopRightText String?
|
||||
/// Card-wide — applies to all card text, not just the top-right text.
|
||||
/// See LoyaltyCardFont's doc comment for why this is card-wide rather
|
||||
/// than a control per element.
|
||||
cardFont LoyaltyCardFont @default(SANS)
|
||||
cardTopRightTextSize LoyaltyCardTextSize @default(MD)
|
||||
cardTopRightTextColor String?
|
||||
cardBorderColor String?
|
||||
cardMemberNumberColor String?
|
||||
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
/// An empty eligibleServices/eligibleStaff list means "all services /
|
||||
|
||||
Reference in new issue
Block a user