// Screens 20-22: Reminders, Notifications, Help & chat // ═════════════════════════════════════════════════════════════ // 20) MEDICINE REMINDERS / SCHEDULE // ═════════════════════════════════════════════════════════════ function ScreenReminders() { const schedule = [ { time: '08:00 AM', label: 'Morning · After breakfast', meds: [ { name: 'Metformin SR 500mg', dose: '1 tab', hue: 'blue', taken: true }, { name: 'Atorvastatin 10mg', dose: '1 tab', hue: 'mint', taken: true }, ]}, { time: '01:30 PM', label: 'Lunch', meds: [ { name: 'Metformin SR 500mg', dose: '1 tab', hue: 'blue', taken: true }, ]}, { time: '06:30 PM', label: 'Evening · 30 min before dinner', meds: [ { name: 'Pan-D', dose: '1 cap', hue: 'mint', taken: false, due: true }, { name: 'Vitamin D3 60K', dose: '1 cap · weekly', hue: 'amber', taken: false, due: true }, ]}, { time: '10:00 PM', label: 'Bedtime', meds: [ { name: 'Metformin SR 500mg', dose: '1 tab', hue: 'blue', taken: false }, ]}, ]; return (
Medicine reminders
Today, Wed 28 May
{/* Adherence ring */}
{/* SVG ring */}
60%
TODAY
3 of 5 doses taken
2 doses due at 6:30 PM
14-day streak · keep going!
{/* Week strip */}
{[ { d: 'M', n: 26, p: 100, today: false }, { d: 'T', n: 27, p: 80, today: false }, { d: 'W', n: 28, p: 60, today: true }, { d: 'T', n: 29, p: 0, today: false, future: true }, { d: 'F', n: 30, p: 0, today: false, future: true }, { d: 'S', n: 31, p: 0, today: false, future: true }, { d: 'S', n: 1, p: 0, today: false, future: true }, ].map((day, i) => (
{day.d}
{day.n}
{!day.future && (
)}
))}
{/* Schedule */}
{schedule.map((slot, si) => (
m.due) ? C.blue600 : C.ink700 }}>{slot.time}
{slot.label}
{slot.meds.some(m => m.due) && NOW}
{slot.meds.map((m, mi) => (
{m.name}
{m.dose}
{m.taken ? (
) : ( )}
))}
))}
); } // ═════════════════════════════════════════════════════════════ // 21) NOTIFICATIONS // ═════════════════════════════════════════════════════════════ function ScreenNotifications() { const notifs = [ { group: 'Today', items: [ { kind: 'order', title: 'Your order is being packed', sub: '#JN-2841-09 · 3 items · est 6:40 PM', time: '5:55 PM', unread: true, Icon: IconBox, hue: 'blue' }, { kind: 'rx', title: 'Rx verified by Dr. Mehta', sub: '"Looks good. Refill safe to dispense."', time: '5:48 PM', unread: true, Icon: IconRx, hue: 'mint' }, { kind: 'reminder', title: '6:30 PM — Time for Pan-D', sub: '1 capsule, 30 min before dinner', time: '6:30 PM', unread: false, Icon: IconClock, hue: 'amber' }, ]}, { group: 'Yesterday', items: [ { kind: 'offer', title: '20% off on vitamins this week', sub: 'Use code VIT20 · ends Sunday', time: '11:24 AM', unread: false, Icon: IconStar, hue: 'amber' }, { kind: 'refill', title: 'Time to refill Metformin SR', sub: '3 days of stock left', time: '9:00 AM', unread: false, Icon: IconRx, hue: 'blue' }, ]}, { group: 'This week', items: [ { kind: 'doctor', title: 'Dr. Priya replied to your follow-up', sub: '"Continue current dosage..."', time: 'Mon, 3:12 PM', unread: false, Icon: IconUser, hue: 'rose' }, ]}, ]; const palettes = { blue: { bg: C.blue50, fg: C.blue600 }, mint: { bg: C.mint100, fg: C.mint500 }, amber:{ bg: C.amber100, fg: C.amber500 }, rose: { bg: C.rose100, fg: C.rose500 }, }; return (
Notifications
2 unread
Mark all read
{/* Filter row */}
{['All', 'Orders', 'Reminders', 'Offers'].map((f, i) => (
{f}
))}
{/* Groups */}
{notifs.map((g, gi) => (
{g.group.toUpperCase()}
{g.items.map((n, ni, a) => { const p = palettes[n.hue]; return (
{n.unread &&
}
{n.title}
{n.sub}
{n.time}
); })}
))}
); } // ═════════════════════════════════════════════════════════════ // 22) HELP & SUPPORT (Chat) // ═════════════════════════════════════════════════════════════ function ScreenHelpChat() { return (
{/* App bar */}
J
Janaushadhi Care
● Replies in seconds
{/* Chat area */}
{/* Day chip */}
Today, 5:42 PM
{/* Bot — greeting */}
J
Hi Aarav! How can we help today?
{/* Bot — quick reply chips */}
{['Track my order', 'Rx not verified', 'Wrong item received', 'Refund status', 'Other'].map((q, i) => (
{q}
))}
{/* User msg */}
Where is my order #JN-2841-09?
{/* Bot reply with card */}
J
Your order is being packed at our Indiranagar store and will be on its way in ~10 minutes.
#JN-2841-09
Packing now · ETA 6:40 PM
{/* Typing */}
J
{[0,1,2].map(i => (
))}
{/* Composer */}
Type a message…
); } Object.assign(window, { ScreenReminders, ScreenNotifications, ScreenHelpChat });