// Winkz Designs 2026, PORTFOLIO (filterable animated mockup gallery) (function () { const { useState, useEffect } = React; const { Icon, Reveal, Eyebrow, Section, Grad, Marquee } = window; const { EcommerceMock, PlumbingMock, CFOMock, CRMDashboard, CRMMock, ChatMock, DashboardMock, VoiceAgentMock, CommandCenter } = window; const { Evermart, ClaritySite, Osteria, Vantage, Forge, LumenLaw, SPCR } = window; const GRAD = 'linear-gradient(120deg,#F23BFE,#79BAFF,#2DE3EA)'; /* One uniform browser frame for every screenshot thumbnail: traffic lights always, domain pill only when the site is actually visitable. */ const Shot = (id, src, label, domain) => function ShotMock() { return (
{domain ? (
{domain}
) : (
)}
{src ? : }
); }; const PineappleShot = Shot('shot-valuablepineapple', 'assets/portfolio/valuablepineapple.png', 'Drop a screenshot', 'valuablepineapple.com'); const IcarianShot = Shot('shot-icarian', 'assets/portfolio/icarian.png', 'Drop a screenshot', 'icarianventures.com'); const SummitShot = Shot('shot-summitslate', 'assets/portfolio/c-summit-slate.png', 'Drop a screenshot'); const NorthbendShot = Shot('shot-northbend', 'assets/portfolio/c-northbend-dental.png', 'Drop a screenshot'); const HarlanShot = Shot('shot-harlanvoss', 'assets/portfolio/c-harlan-voss.png', 'Drop a screenshot'); const FiveHourShot = Shot('shot-5hourseller', 'assets/portfolio/c-5hourseller.png', 'Drop a screenshot', '5hourseller.com'); const OsteriaShot = Shot('shot-osteria', 'assets/portfolio/c-osteria-nove.png', 'Drop a screenshot'); const EvermartShot = Shot('shot-evermart', 'assets/portfolio/c-evermart.png', 'Drop a screenshot'); const SitelineShot = Shot('shot-siteline', 'assets/portfolio/t-siteline.png', 'Drop a screenshot'); const ChairtimeShot = Shot('shot-chairtime', 'assets/portfolio/t-chairtime.png', 'Drop a screenshot'); const LoadpointShot = Shot('shot-loadpoint', 'assets/portfolio/t-loadpoint.png', 'Drop a screenshot'); const CasefileShot = Shot('shot-casefile', 'assets/portfolio/t-casefile.png', 'Drop a screenshot'); const PROJECTS = [ ['The Valuable Pineapple', 'E-commerce brand partnerships', 'Websites', PineappleShot, ['Website', 'Brand', 'E-commerce'], 'https://valuablepineapple.com/', 'assets/portfolio/valuablepineapple.png'], ['Icarian Ventures', 'Brand growth partner', 'Websites', IcarianShot, ['Website', 'Brand', 'AI SEO'], 'https://icarianventures.com/', 'assets/portfolio/icarian.png'], ['SPCR Group', 'Amazon growth partner', 'Websites', SPCR, ['Website', 'Brand', 'Ecommerce'], 'https://www.spcrgroup.co.uk/'], ['Clarity HCM', 'Payroll, HR & benefits platform', 'Websites', ClaritySite, ['Website', 'Brand', 'AI'], 'https://clarity-hcm.com/'], ['5 Hour Seller', 'High-converting VSL', 'Websites', FiveHourShot, ['Website', 'VSL', 'Conversion'], 'https://5hourseller.com/'], ['Summit & Slate', 'Design-build home remodeling', 'Websites', SummitShot, ['Website', 'Brand', 'Lead gen'], null, 'assets/portfolio/summit-slate.png'], ['Northbend Dental', 'Family & cosmetic dentistry', 'Websites', NorthbendShot, ['Website', 'Booking', 'AI SEO'], null, 'assets/portfolio/northbend-dental.png'], ['Harlan & Voss', 'Boutique litigation firm', 'Websites', HarlanShot, ['Website', 'Brand', 'AI SEO'], null, 'assets/portfolio/harlan-voss.png'], ['Osteria Nove', 'Restaurant & wine bar', 'Websites', OsteriaShot, ['Website', 'Booking', 'Brand'], null, 'assets/portfolio/osteria-nove.png'], ['Evermart', 'E-commerce marketplace', 'Websites', EvermartShot, ['Website', 'E-commerce', 'Brand'], null, 'assets/portfolio/evermart.png'], ['Siteline', 'Runs a builder’s jobs, schedule and change orders in one place.', 'Software', SitelineShot, ['Custom software', 'Scheduling', 'Dashboards'], null, 'assets/portfolio/siteline.png'], ['Chairtime', 'Books the chair, fills the gaps and flags no-shows before they happen.', 'Software', ChairtimeShot, ['Booking', 'AI', 'Payments'], null, 'assets/portfolio/chairtime.png'], ['Loadpoint', 'Dispatches every load and tracks the fleet from pickup to invoice.', 'Software', LoadpointShot, ['Custom software', 'Logistics', 'Dashboards'], null, 'assets/portfolio/loadpoint.png'], ['Casefile', 'Keeps matters, deadlines and unbilled hours straight for a small firm.', 'Software', CasefileShot, ['Custom software', 'Billing', 'Internal tool'], null, 'assets/portfolio/casefile.png'], ['Northstar Finance', 'Finance dashboard', 'Software', CFOMock, ['Custom software', 'Dashboards']], ['Relay', 'Custom CRM dashboard', 'Software', CRMDashboard, ['Custom CRM', 'Dashboards']], ['Command Center', 'Distribution CRM & sourcing', 'Software', CommandCenter, ['Custom CRM', 'Dashboards', 'Internal tool']], ['Pipeline', 'Sales CRM', 'Software', CRMMock, ['Custom CRM', 'Integrations']], ['Groundwork', 'Growth analytics', 'Software', DashboardMock, ['Dashboards', 'AI SEO']], ['Ansa', 'AI support assistant', 'AI', ChatMock, ['AI chat', 'Support']], ['Atlas Voice', 'AI voice agent', 'AI', VoiceAgentMock, ['AI voice', 'Booking']], ]; const FILTERS = ['All', 'Websites', 'Software', 'AI']; function ProjectCard({ p, delay }) { const [name, tag, cat, M, chips, url, img] = p; const [h, setH] = useState(false); const [zoom, setZoom] = useState(false); useEffect(() => { if (!zoom) return; const esc = (e) => e.key === 'Escape' && setZoom(false); window.addEventListener('keydown', esc); return () => window.removeEventListener('keydown', esc); }, [zoom]); return (
setH(true)} onMouseLeave={() => setH(false)} onClick={() => url && window.open(url, '_blank', 'noopener')} style={{ borderRadius: 16, overflow: 'hidden', border: '1px solid ' + (h ? 'rgba(45,227,234,0.4)' : 'rgba(255,255,255,0.1)'), background: '#0A0A0D', boxShadow: h ? '0 30px 70px -34px rgba(45,227,234,0.4)' : '0 20px 50px -34px rgba(0,0,0,0.8)', transform: h ? 'translateY(-6px)' : 'none', transition: 'all .4s cubic-bezier(.16,1,.3,1)', cursor: url ? 'pointer' : 'default' }}>
{cat.toUpperCase()}
{img && ( )} {url &&
VIEW SITE
}

{name}

{tag}

{chips.map((c, i) => {c})}
{url ? ( e.stopPropagation()} style={{ display: 'inline-flex', alignItems: 'center', gap: 8, padding: '10px 18px', borderRadius: 10, background: GRAD, color: '#08080A', fontFamily: 'var(--font-body)', fontWeight: 700, fontSize: 13.5, boxShadow: h ? '0 14px 30px -14px rgba(242,59,254,0.7)' : 'none', transition: 'box-shadow .3s' }}>Check it out ) : ( Case study on request )}
{zoom && img ? ReactDOM.createPortal(
{ e.stopPropagation(); setZoom(false); }} style={{ position: 'fixed', inset: 0, zIndex: 200, background: 'rgba(6,6,8,0.88)', backdropFilter: 'blur(10px)', display: 'grid', placeItems: 'center', padding: 32, cursor: 'zoom-out' }}>
e.stopPropagation()} style={{ maxWidth: 'min(1400px, 94vw)', width: '100%', cursor: 'default' }}>
{name}
{tag}
{name}
, document.body) : null}
); } function PortfolioPage({ onNavigate }) { const [filter, setFilter] = useState('All'); const list = filter === 'All' ? PROJECTS : PROJECTS.filter(p => p[2] === filter); const marqueeItems = PROJECTS.map((p, i) => { const M = p[3]; return (
); }); return (
Selected work

Real systems, live in the wild.

Sites, software and AI we've shipped across industries. Concepts shown here, swap in live client work anytime.

{FILTERS.map(f => { const on = filter === f; return ( ); })}
{list.map((p, i) => )}

Yours could be next.

Tell us what you need and we'll show you exactly how it comes together.

); } window.PortfolioPage = PortfolioPage; })();