// Aloha Smart System v3 — simplified home (09-30-2026) // Built on the live v2 site: same colors (COLORS_V2), logo (LogoA), FAQ data, // partner strip. Loads AFTER aloha-v2-landing.jsx and reuses its globals. // Order: Hero → What we fix → Real stores → Everything we install → Free visit → FAQ → Footer function useIsMobileV3() { const [m, setM] = React.useState(typeof window !== 'undefined' && window.innerWidth <= 768); React.useEffect(() => { const fn = () => setM(window.innerWidth <= 768); window.addEventListener('resize', fn); return () => window.removeEventListener('resize', fn); }, []); return m; } const V3 = { wrap: { maxWidth: 1200, margin: '0 auto', padding: '0 32px' }, kicker: { fontSize: 12, fontWeight: 600, letterSpacing: '0.16em', textTransform: 'uppercase', color: COLORS_V2.ink50, marginBottom: 14, }, h2: { fontSize: 'clamp(34px, 4.4vw, 56px)', lineHeight: 1.04, letterSpacing: '-0.03em', fontWeight: 700, margin: 0, color: COLORS_V2.ink, }, }; function NavV3() { const [scrolled, setScrolled] = React.useState(false); React.useEffect(() => { const fn = () => setScrolled(window.scrollY > 8); window.addEventListener('scroll', fn, { passive: true }); return () => window.removeEventListener('scroll', fn); }, []); const link = { color: COLORS_V2.ink70 }; return ( ); } const FRAME_V3 = { margin: 0, position: 'relative', borderRadius: 20, overflow: 'hidden', background: COLORS_V2.ink, boxShadow: '0 20px 50px rgba(14,26,36,0.14), 0 0 0 1px rgba(14,26,36,0.06)', }; function CaptionV3({ label, sub }) { return (
{label} {sub && {sub}}
); } function PhotoV3({ src, alt, label, sub, height, position }) { return (
{alt} {label && }
); } // First screen = concept C (10-07-2026): words left, real stores right. // Sizes and positions live in index.html (.v3-hero-grid / .v3-art* / .v3-dev*) // so the old phone rules in styles/aloha.css, which match inline // "position: absolute" and "display: grid", can't move them around. function DeviceV3({ kind, src, alt }) { return (
{alt}
); } function HeroArtV3() { return (
Sura Hawaii, Korean restaurant in Honolulu
SURA HAWAIITable ordering
SOUL CHICKENKiosk + order-ready TV
); } function HeroV3() { const isMobile = useIsMobileV3(); return (
Honolulu · Clover-authorized

Less labor.
More orders.
One local team
for all of it.

Kiosks, table ordering, commission-free delivery, time clock, and card processing — on the register you already have.

Book a free store visit {ALOHA_BRAND.phone}
Works with Clover and Square. No need to replace your register.
); } const V3_FIXES = [ { img: 'assets/photos/kiosk-ordering.jpg', pos: 'center 35%', alt: 'Guest ordering at a self-order kiosk', problem: 'Labor keeps going up.', answer: 'Guests order at a kiosk or right from the table. Your crew cooks and serves.', links: [ ['Smart Kiosk', 'products/kiosk'], ['Table Order', 'products/table-order'], ['ServeBoard', 'https://serveboard.app'], ], }, { img: 'assets/photos/hula-delivery-screen.jpg', pos: 'center', alt: 'Hula Delivery ordering screen', problem: 'Delivery apps take up to 30%.', answer: 'Your own pickup and delivery with Hula Delivery. No commission, menu prices.', links: [ ['Hula Delivery', 'https://huladelivery.com'], ['Delivery Hub', 'products/delivery-hub'], ], }, { img: 'assets/photos/clokr-clock-in.jpg', pos: 'center', alt: 'Clokr clock-in screen', problem: 'Timesheets take hours.', answer: 'Staff clock in with Clokr. Hours add up for payroll, overtime included.', links: [['Clokr', 'https://clokr.co']], }, { img: 'assets/photos/clover-station.jpg', pos: 'center', alt: 'Clover Station register', problem: 'Card fees and a 1-800 number.', answer: 'Card processing with a local team you can call. Online payments with Brijee.', links: [ ['Talk to us', '#contact'], ['Brijee', 'https://brijee.com'], ], }, ]; function FixesV3() { const isMobile = useIsMobileV3(); return (
What we fix

The problems every owner knows.

{V3_FIXES.map(f => ( ))}
); } // Soul Chicken's calling system: the order-status TV that hangs above the // counter (Ready / Preparing numbers) large, with the menu TV that also shows // the ready number set beside it. Positions live in index.html (.v3-tvstage*). function TvStageV3({ alt, height }) { return (
Order status TV at Soul Chicken: Ready and Preparing numbers
{alt}
); } function StoresV3() { const isMobile = useIsMobileV3(); const stores = [ { img: 'assets/photos/sura-hawaii-blue-hour.jpg', pos: 'center', name: 'Sura Hawaii', logo: 'assets/logos/sura-hawaii-logo.png', logoWide: true, alt: 'Sura Hawaii, Korean restaurant in Honolulu', line: 'Tablets at every table send orders straight to the kitchen. Servers stay on the floor.', tags: ['Table ordering', 'Card processing'], }, { tv: true, name: 'Soul Chicken', logo: 'assets/logos/soul-chicken-logo.png', alt: 'Order-ready number on the TV at Soul Chicken', line: 'Menu on Clover, payments on Square — both feed one order screen. Online orders print in the same kitchen.', tags: ['Kiosk', 'TV calling', 'Hula Delivery', 'Clokr'], }, ]; return (
Our stores

Running today in Honolulu.

{stores.map(s => (
{s.tv ? : }
{`${s.name}

{s.name}

{s.line}

{s.tags.map(t => ( {t} ))}
))}
); } const V3_PRODUCTS = [ ['Smart Kiosk', 'Self-order at the counter.', 'products/kiosk'], ['Table Order (Z-ORDER)', 'Order from the table. Works with Clover, Square, and Toast.', 'products/table-order'], ['ServeBoard', 'Your TV calls the order. Staff tap Ready on a phone.', 'https://serveboard.app'], ['Food Court', 'One kiosk for the whole food court.', 'products/food-court-master'], ['Hula Delivery', 'Your own pickup and delivery. No commission.', 'https://huladelivery.com'], ['Delivery Hub', 'DoorDash, Uber Eats, and Grubhub on one screen.', 'products/delivery-hub'], ['Clokr', 'Time clock and schedules. Hours ready for payroll.', 'https://clokr.co'], ['Brijee', 'Payment links, QR codes, and online checkout.', 'https://brijee.com'], ['Inventory Master', 'Inventory that puts expiring stock on sale.', 'products/inventory-master'], ['Musubi Display Network', 'Menus and promos on your TVs.', 'products/display-network'], ['Card processing', 'Clover terminals, installed and supported locally.', '#contact'], ]; function ProductsV3() { const isMobile = useIsMobileV3(); return (
Products

Everything we install.

{V3_PRODUCTS.map(([name, line, href]) => { const ext = href.startsWith('http'); return ( {name} {line} ); })}
); } function VisitV3() { const isMobile = useIsMobileV3(); const [status, setStatus] = React.useState('idle'); const [errorMsg, setErrorMsg] = React.useState(''); async function handleSubmit(e) { e.preventDefault(); setStatus('submitting'); setErrorMsg(''); const formData = new FormData(e.currentTarget); try { const res = await fetch('https://api.web3forms.com/submit', { method: 'POST', headers: { Accept: 'application/json' }, body: formData, }); const data = await res.json(); if (data.success) { setStatus('success'); e.target.reset(); } else { setStatus('error'); setErrorMsg(data.message || 'Something went wrong.'); } } catch (err) { setStatus('error'); setErrorMsg('Network error.'); } } const input = { width: '100%', background: 'rgba(255,255,255,0.06)', border: '1px solid rgba(255,255,255,0.18)', borderRadius: 10, padding: '14px 16px', fontSize: 15, color: 'white', fontFamily: 'inherit', outline: 'none', }; const label = { display: 'block', fontSize: 12, fontWeight: 600, letterSpacing: '0.06em', textTransform: 'uppercase', color: 'rgba(255,255,255,0.6)', marginBottom: 8, }; return (
Free store visit

We’ll come see your store.
And show you where the hours go.

The first visit is free. No obligation.

Growing, or running more than one location? We’ll plan the whole setup with you.

{ALOHA_BRAND.phone} {ALOHA_BRAND.email}
On-site across O‘ahu. Remote support for the neighbor islands.
{status === 'success' ? (
✓
Mahalo — we got it.

We’ll call you to set a time.

) : (