// Android Material 3 screens — batch 4: Addresses, Lab tests, Doctor consult, Reminders, Notifications, Help chat const Aroboto4 = { fontFamily: 'Roboto, "Roboto Flex", system-ui, sans-serif' }; // ═════════════════════════════════════════════════════════════ // MA-15) ADDRESSES // ═════════════════════════════════════════════════════════════ function MdScreenAddresses() { const addrs = [ { label: 'Home', sub: 'Apt 4B, Maple Residency, 100ft Road, Indiranagar, Bengaluru 560038', Icon: IconHome, def: true, hue: 'blue' }, { label: 'Work', sub: '5th Floor, Prestige Tech Park, Marathahalli, Bengaluru 560103', Icon: IconBox, def: false, hue: 'mint' }, { label: 'Mom\u2019s place', sub: 'Plot 12, Sector 14, Whitefield, Bengaluru 560066', Icon: IconHeart, def: false, hue: 'rose' }, ]; const palettes = { blue: { bg: M.primaryContainer, fg: M.onPrimaryContainer }, mint: { bg: '#D6F5EA', fg: '#0F5A48' }, rose: { bg: '#FFE4E4', fg: '#7A1C1F' } }; return (
{/* Map */}
Use current
{addrs.map((a, i) => { const p = palettes[a.hue]; return (
{a.label} {a.def && Default}
{a.sub}
Edit {!a.def && Set default} Delete
); })}
Add new address
Home, work, or anywhere else
); } // ═════════════════════════════════════════════════════════════ // MA-16) LAB TESTS // ═════════════════════════════════════════════════════════════ function MdScreenLabTests() { const tests = [ { name: 'Complete blood count (CBC)', sub: '24 parameters · No fasting', price: 320, mrp: 480, hue: 'rose', tag: 'POPULAR' }, { name: 'HbA1c (Diabetes)', sub: '3-month sugar avg · Fasting', price: 480, mrp: 650, hue: 'blue', tag: null }, { name: 'Vitamin D 25-OH', sub: 'Deficiency screening', price: 1080, mrp: 1400, hue: 'amber', tag: null }, { name: 'Thyroid T3 T4 TSH', sub: '3 tests · Morning sample', price: 540, mrp: 720, hue: 'mint', tag: null }, ]; const palettes = { blue: { bg: M.primaryContainer, fg: M.onPrimaryContainer }, mint: { bg: '#D6F5EA', fg: '#0F5A48' }, amber: { bg: '#FFEFD1', fg: '#7A4500' }, rose: { bg: '#FFE4E4', fg: '#7A1C1F' } }; return (
{/* Hero */}
Lab tests
Home sample collection,
NABL-accredited labs
⚡ Reports in 12 hrs• Free pickup
PopularDiabetesHeartThyroidFull body
{tests.map((t, i) => { const p = palettes[t.hue]; return (
{t.name} {t.tag && {t.tag}}
{t.sub}
₹{t.price} ₹{t.mrp}
Book
); })}
Full body checkup · 62 tests
Recommended for ages 30+ annually
₹1,499
₹2,800
); } // ═════════════════════════════════════════════════════════════ // MA-17) DOCTOR CONSULT // ═════════════════════════════════════════════════════════════ function MdScreenDoctorConsult() { const specs = [ { l: 'General', Icon: IconUser, hue: 'blue' }, { l: 'Skin', Icon: IconHeart, hue: 'rose' }, { l: 'Pediatrics', Icon: IconShield, hue: 'mint' }, { l: 'Mental', Icon: IconStar, hue: 'amber' }, ]; const docs = [ { name: 'Dr. Priya Mehta', spec: 'General physician · 12 yrs', rating: '4.9', lang: 'EN · HI · KN', price: 199, available: 'In 4 min', hue: 'blue' }, { name: 'Dr. Rohan Iyer', spec: 'Dermatologist · 8 yrs', rating: '4.8', lang: 'EN · HI', price: 349, available: 'In 12 min', hue: 'rose' }, { name: 'Dr. Anjali Rao', spec: 'Pediatrician · 15 yrs', rating: '4.9', lang: 'EN · HI · TA', price: 299, available: 'Tomorrow', hue: 'mint' }, ]; const palettes = { blue: { bg: M.primaryContainer, fg: M.onPrimaryContainer }, mint: { bg: '#D6F5EA', fg: '#0F5A48' }, amber: { bg: '#FFEFD1', fg: '#7A4500' }, rose: { bg: '#FFE4E4', fg: '#7A1C1F' } }; return (
{/* Active consult */}
PM
Dr. Priya replied to your chat
2 min ago · Follow-up
Open
{specs.map(s => { const p = palettes[s.hue]; return (
{s.l}
); })}
{docs.map((d, i) => { const p = palettes[d.hue]; return (
{d.name.split(' ').slice(1).map(s => s[0]).join('')}
{d.name}
{d.spec}
{d.rating}
{d.lang}
₹{d.price}
● {d.available}
Chat Video
); })}
); } // ═════════════════════════════════════════════════════════════ // MA-18) MEDICINE REMINDERS // ═════════════════════════════════════════════════════════════ function MdScreenReminders() { 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: '06:30 PM', label: 'Evening · 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 (
{/* Adherence ring */}
60%
TODAY
3 of 5 doses taken
2 doses due at 6:30 PM
14-day streak · keep going!
{schedule.map((slot, si) => (
m.due) ? M.primary : M.onSurface }}>{slot.time}
{slot.label}
{slot.meds.some(m => m.due) && NOW}
{slot.meds.map((m, mi) => (
{m.name}
{m.dose}
{m.taken ? (
) : ( Mark taken )}
))}
))}
); } // ═════════════════════════════════════════════════════════════ // MA-19) NOTIFICATIONS // ═════════════════════════════════════════════════════════════ function MdScreenNotifications() { const notifs = [ { group: 'Today', items: [ { title: 'Your order is being packed', sub: '#JN-2841-09 · est 6:40 PM', time: '5:55 PM', unread: true, Icon: IconBox, hue: 'blue' }, { title: 'Rx verified by Dr. Mehta', sub: '"Refill safe to dispense."', time: '5:48 PM', unread: true, Icon: IconRx, hue: 'mint' }, { title: '6:30 PM — Time for Pan-D', sub: '1 capsule before dinner', time: '6:30 PM', unread: false, Icon: IconClock, hue: 'amber' }, ]}, { group: 'Yesterday', items: [ { title: '20% off on vitamins', sub: 'Use VIT20 · ends Sunday', time: '11:24 AM', unread: false, Icon: IconStar, hue: 'amber' }, { title: 'Time to refill Metformin SR', sub: '3 days of stock left', time: '9:00 AM', unread: false, Icon: IconRx, hue: 'blue' }, ]}, ]; const palettes = { blue: { bg: M.primaryContainer, fg: M.onPrimaryContainer }, mint: { bg: '#D6F5EA', fg: '#0F5A48' }, amber: { bg: '#FFEFD1', fg: '#7A4500' }, rose: { bg: '#FFE4E4', fg: '#7A1C1F' } }; return (
AllOrdersRemindersOffers
{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}
); })}
))}
); } // ═════════════════════════════════════════════════════════════ // MA-20) HELP & CHAT // ═════════════════════════════════════════════════════════════ function MdScreenHelpChat() { return (
{/* App bar */}
J
Janaushadhi Care
● Replies in seconds
{/* Chat */}
Today, 5:42 PM
J
Hi Aarav! How can we help today?
{['Track my order', 'Rx not verified', 'Refund status'].map((q, i) => (
{q}
))}
Where is my order #JN-2841-09?
J
It's being packed and will be on its way in ~10 minutes.
#JN-2841-09
Packing · ETA 6:40 PM
Track live
{/* Composer */}
Type a message…
); } Object.assign(window, { MdScreenAddresses, MdScreenLabTests, MdScreenDoctorConsult, MdScreenReminders, MdScreenNotifications, MdScreenHelpChat });