// HIFA OIL Loyalty — screens: Nearby, Catalog, Profile, Settings, Menu
// ── shared: toggle, list row, tile ────────────────────────────
function Toggle({ on, onChange }) {
return (
onChange(!on)} style={{ width: 48, height: 28, borderRadius: 999, flexShrink: 0,
background: on ? 'var(--hifa-gold)' : 'var(--surface-3)', padding: 3, cursor: 'pointer',
transition: 'background .2s' }}>
);
}
function Row({ icon, title, detail, trailing, onClick, danger, last }) {
return (
{icon && (
)}
{title}
{detail && {detail}}
{trailing !== undefined ? trailing : }
);
}
function Group({ children }) {
return {children}
;
}
// ── Nearby (U blizini) ────────────────────────────────────────
function NearbyScreen() {
return (
{/* faux map */}
{[{ x: '32%', y: '44%', big: true }, { x: '62%', y: '30%' }, { x: '74%', y: '64%' }].map((p, i) => (
))}
Pumpe u blizini
{HIFA.stations.map((s, i) => (
{s.name}
{s.hours}
{s.services.map(sv => )}
{s.distance} · {s.time}
Ruta
))}
);
}
// ── Catalog (Katalog) ─────────────────────────────────────────
function CatalogScreen() {
return (
Akcijski katalog
Juni 2026.
Zamijenite litre za nagrade i HIFA proizvode.
{HIFA.catalog.map((c, i) => (
))}
);
}
// ── Profile (Moj profil) ──────────────────────────────────────
function ProfileScreen({ onTab }) {
const u = HIFA.user;
const tiles = [
{ label: 'Gorivo', sub: fmtL(u.fuel) + ' L', icon: 'fuel', primary: true },
{ label: 'Potražite naše', sub: 'benzinske pumpe', icon: 'map-pin', tab: 'nearby' },
{ label: 'Ostavite', sub: 'Vaš dojam', icon: 'star' },
{ label: 'Pogledajte', sub: 'pogodnosti', icon: 'badge-percent' },
];
return (
{/* balance + ring */}
{/* tiers */}
{HIFA.tiers.map((t, i) => {
const p = typeof t.max === 'number' ? (t.val / t.max) * 100 : (t.val > 0 ? 100 : 0);
return (
{fmtL(t.val)}
{t.max}
{t.name}
);
})}
{/* tiles */}
{tiles.map((t, i) => (
t.tab && onTab(t.tab)} style={{ borderRadius: 'var(--r-tile)', padding: 18, minHeight: 124,
display: 'flex', flexDirection: 'column', justifyContent: 'space-between',
background: t.primary ? 'var(--hifa-gold-grad)' : 'var(--surface)',
border: t.primary ? 'none' : '1px solid var(--border)',
boxShadow: t.primary ? 'var(--shadow-gold)' : 'var(--shadow-card)' }}>
))}
);
}
// ── Menu drawer content ───────────────────────────────────────
function MenuContent({ onClose, onLogout, onNav }) {
const u = HIFA.user;
const items = [
{ icon: 'newspaper', title: 'Novosti', sub: 'Pogledajte posljednje dodane vijesti' },
{ icon: 'fuel', title: 'Benzinske pumpe', sub: 'Spisak lokacija naših pumpi', tab: 'nearby' },
{ icon: 'spray-can', title: 'Autopraonice', sub: 'Lokacije naših autopraonica' },
{ icon: 'newspaper', title: 'Akcijski katalog', sub: 'Katalog za tekući mjesec', tab: 'catalog' },
{ icon: 'badge-percent', title: 'Pogodnosti kod partnera', sub: 'Akcije kod naših partnera' },
{ icon: 'circle-help', title: 'FAQ', sub: 'Najčešće postavljana pitanja' },
{ icon: 'star', title: 'Ocijenite nas', sub: 'Ostavite ocjenu u trgovini' },
{ icon: 'settings', title: 'Postavke aplikacije', sub: 'Profil i postavke', tab: 'settings' },
];
return (
{/* gold header */}
{fmtL(u.fuel)} / {u.fuelMax}
{/* items */}
{items.map((it, i) => (
it.tab ? onNav(it.tab) : onClose()} style={{ display: 'flex', alignItems: 'center', gap: 14, padding: '13px 22px' }}>
))}
{/* footer */}
);
}
Object.assign(window, { Toggle, Row, Group, NearbyScreen, CatalogScreen, ProfileScreen, MenuContent });