UI/UX Change: Re-specifying Event Detail Screen to Branch Promotion
Last Updated: 16/07/2026
Type: UI/UX & Functional Change β Event Detail Page
Screen: Event/Promotion Detail Screen (EventDetailScreen)
Severity: π΄ High β Refactoring event/workshop concepts into local branch promotion concepts
Feedback Screenshot:
1. Overview & Business Rationaleβ
The Event tab in the app was previously designed as a workshop/seminar registration portal (where users register to join events, buy tickets, or redeem points for entry).
However, for the current MVP launch:
- The app does not support point-to-ticket redemption yet.
- Events are actually Branch Promotions & Spa Offers (Ζ―u ΔΓ£i chi nhΓ‘nh) rather than physical workshops.
Decisions:β
- Hide "Register Now" (ΔΔng kΓ½ ngay) Button: Remove/hide the bottom sticky action button since registration flows are not active in this release.
- Remove "Free" (Miα»
n phΓ) Tag: Remove the price/ticket status indicator tag (
G Miα» n phΓ) since promotions are discount-based and not ticket-based. - Redefine Status States:
- Change status label
"Δang mα»"(Open) β"Δang hoαΊ‘t Δα»ng"(Active) - Change status label
"ΔΓ£ ΔΓ³ng"(Closed) β"ΔΓ£ kαΊΏt thΓΊc"(Ended)
- Change status label
- Simplify Timeframe Display: Show a calendar range (Start Date - End Date) rather than workshop hours (e.g.
09:00 - 20:00 β’ 14/03/2026β14/03/2026 - 31/03/2026).
2. UI Adjustments & Mappingsβ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β [ Banner Image ] β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β [Δang hoαΊ‘t Δα»ng] β Status badge β
β β
β Weekend Getaway - Healing World 210K β
β β
β π
14/03/2026 - 31/03/2026 β Start to End date β
β π Golden Lotus Healing World Thao Dien β
β (Remove "Free" tag completely) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Promotion Content β β
β β β β
β β Details of the weekend wellness package... β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
(Bottom Sticky Button "ΔΔng kΓ½ ngay" is HIDDEN/REMOVED)
3. Style & Layout Adjustments (React Native)β
3.1 Hiding the Registration Buttonβ
Modify the layout return statement in EventDetailScreen.tsx:
// β Before
return (
<View style={styles.container}>
<ScrollView style={styles.scroll}>
{/* Event Details */}
</ScrollView>
<TouchableOpacity style={styles.stickyButton} onPress={handleRegister}>
<Text style={styles.buttonText}>ΔΔng kΓ½ ngay</Text>
</TouchableOpacity>
</View>
);
// β
After: Hide / Remove the sticky button
return (
<View style={styles.container}>
<ScrollView
style={styles.scroll}
contentContainerStyle={{ paddingBottom: 32 }} // Normal padding instead of button height padding
>
{/* Event Details */}
</ScrollView>
</View>
);
3.2 Removing the Ticket Price Tagβ
// β Before
<View style={styles.metaRow}>
<Icon name="tag" />
<Text style={styles.priceTag}>Miα»
n phΓ</Text>
</View>
// β
After
// Completely remove the price tag row component.
3.3 Dynamic Status Badgesβ
Map the backend status payload keys to the new Vietnamese statuses:
const getStatusLabel = (status: 'open' | 'closed' | 'active' | 'ended') => {
switch (status) {
case 'open':
case 'active':
return { text: 'Δang hoαΊ‘t Δα»ng', color: '#4CAF50' };
case 'closed':
case 'ended':
return { text: 'ΔΓ£ kαΊΏt thΓΊc', color: '#9E9E9E' };
default:
return { text: 'Δang hoαΊ‘t Δα»ng', color: '#4CAF50' };
}
};
4. CMS Fields Mapping (For Admins)β
In the CMS article/event creation panel:
| Field | Purpose in Promotion context |
|---|---|
| TiΓͺu Δα» | Name of the promotion package (e.g. "Ζ―u ΔΓ£i HSSV Healing World 90K") |
| BαΊt tα»« (Start Date) | Start date of the discount period |
| TαΊ―t sau (End Date) | Expiration date of the discount period |
| Chi nhΓ‘nh (Branch) | Target branch where this promotion is valid |
| Nα»i dung (Body) | Detailed terms, checklists, and instructions for the offer |
Technical Checklistβ
- Locate the event detail view file (
EventDetailScreen.tsx). - Remove the bottom sticky button container (
stickyButtonand<Text>ΔΔng kΓ½ ngay</Text>). - Remove the ticket price tag element containing
"Miα» n phΓ"or pricing properties. - Update the status badge translation mapping:
- Maps
open/activestatus to"Δang hoαΊ‘t Δα»ng"(Active). - Maps
closed/endedstatus to"ΔΓ£ kαΊΏt thΓΊc"(Ended).
- Maps
- Update the date field display: render the range
startDatetoendDateinstead of individual event start times. - Confirm layout spacing: verify the ScrollView padding matches the new viewport after button removal.