Templates
Production-ready screens
Copy a screen, paste it into your app, ship it. Every template is real components — themed by one brandprint, RTL-ready, light/dark.
Onboarding
Welcome / Sign in
The very first screen: an ambient, gently-looping backdrop, the brand lockup, a bold mixed-weight promise, and the animated <npt-cta> primary action (a slow sheen sweep + nudging arrow) over a secondary "log in". Everything re-skins with the brand and pauses under reduced-motion.
Banking that
moves with you.
One account, every currency — send, spend and save across borders, beautifully.
<!-- Ambient backdrop + animated call to action --> <div class="welcome"> <!-- brand lockup + bold promise --> <npt-cta arrow>Get started</npt-cta> <npt-cta variant="tonal">I already have an account</npt-cta> </div>
Get started
The first screen: an <npt-onboarding> hero — media, a mixed-weight headline, progress dots and a primary call to action — paired with a home screen on the new floating <npt-dock> with a selected card.
Your cards · tap to select
<npt-onboarding eyebrow="Neptune Odyssey" steps="3" active-step="0" supporting="Open an account in minutes."> <div slot="media"><!-- image / illustration --></div> <span slot="headline">Your money, <b>everywhere you are.</b></span> <npt-button slot="cta" variant="filled">Get started</npt-button> </npt-onboarding> <!-- Floating bottom navigation --> <npt-dock> <npt-dock-item label="Home" active><npt-icon name="home"></npt-icon></npt-dock-item> <npt-dock-item label="Cards"><npt-icon name="card"></npt-icon></npt-dock-item> <npt-dock-item label="Pay"><npt-icon name="qr-code"></npt-icon></npt-dock-item> <npt-dock-item label="Profile"><npt-icon name="user"></npt-icon></npt-dock-item> </npt-dock> <!-- Selected card --> <npt-card-art selected scheme="Visa" holder="LINA ATIYA" last4="4821" expiry="08/27"></npt-card-art>
Auth / Login
Brand lockup, a phone or IBAN field, then a one-time-code step — login flowing into OTP verification.
Welcome back
Sign in to your account
Enter the 6-digit code sent to your phone
<!-- Auth / Login → OTP --> <div class="scr-lockup"> <span class="scr-mark">N</span> <div><h1>Welcome back</h1><p>Sign in to your account</p></div> </div> <npt-text-field label="Mobile number" value="+218 91 234 5678" placeholder="+218 .."></npt-text-field> <npt-iban-field label="IBAN (optional)" country="LY" value="LY83002048000020100120361"></npt-iban-field> <npt-button variant="filled">Send code</npt-button> <npt-divider></npt-divider> <p>Enter the 6-digit code sent to your phone</p> <npt-otp-input length="6" value="3915"></npt-otp-input> <npt-button variant="filled">Verify & continue</npt-button> <npt-button variant="text">Resend code</npt-button>
KYC / Onboarding
Identity capture and liveness placeholders, the account-tier limit meter, a progress stepper and a primary CTA.
Verify your identity
We need a clear photo of your ID and a quick selfie.
National ID / passport
Liveness selfie
<!-- KYC / Onboarding --> <npt-stepper steps="Identity,Selfie,Review" active="1"></npt-stepper> <h1>Verify your identity</h1> <p>We need a clear photo of your ID and a quick selfie.</p> <div class="scr-capture"> <npt-icon name="card-add" size="30"></npt-icon> <span>Tap to capture the front of your ID</span> <npt-status-chip status="success">Front captured</npt-status-chip> </div> <div class="scr-capture selfie"> <npt-icon name="face-id" size="30"></npt-icon> <span>Center your face</span> </div> <npt-limit-meter label="Account tier" value="40" amount="Tier 2 of 3"></npt-limit-meter> <npt-alert tone="info" title="Why we ask">Your documents are encrypted…</npt-alert> <npt-button variant="filled">Continue</npt-button>
Banking app
Retail dashboard
The home screen: app bar, a hero balance, quick actions, two metric tiles with a sparkline, a transactions list and bottom navigation.
<!-- Retail dashboard (mobile) -->
<npt-app-bar title="Good morning, Sami">
<npt-icon-button slot="leading" label="Profile">
<npt-avatar initials="SA" size="sm" label="Sami"></npt-avatar>
</npt-icon-button>
<npt-icon-button slot="trailing" variant="tonal" label="Search">
<npt-icon name="qr-code" size="20"></npt-icon>
</npt-icon-button>
</npt-app-bar>
<npt-balance-card hero label="Available balance" amount="12,480.50" currency="LYD" account="•••• 4821"></npt-balance-card>
<npt-quick-actions style="--npt-quick-actions-cols:4">
<npt-quick-action label="Send"><npt-icon slot="icon" name="arrow-right" size="24"></npt-icon></npt-quick-action>
<npt-quick-action label="Top up"><npt-icon slot="icon" name="cash-stack" size="24"></npt-icon></npt-quick-action>
<npt-quick-action label="Pay"><npt-icon slot="icon" name="qr-code" size="24"></npt-icon></npt-quick-action>
<npt-quick-action label="Swap"><npt-icon slot="icon" name="swap-exchange" size="24"></npt-icon></npt-quick-action>
</npt-quick-actions>
<npt-stat-card label="Spending" value="1,940" unit="LYD" delta="-8.2%">
<npt-sparkline slot="chart" points="8,6,7,5,6,4,3"></npt-sparkline>
</npt-stat-card>
<npt-transaction-row title="Salary" subtitle="Today · Transfer" amount="+3,200.00" currency="LYD" credit></npt-transaction-row>
<npt-transaction-row title="Coffee Bar" subtitle="Yesterday · Card" amount="-4.50" currency="LYD"></npt-transaction-row>
<npt-nav-bar>
<npt-nav-item label="Home" active><npt-icon name="chart-line" size="22"></npt-icon></npt-nav-item>
<npt-nav-item label="Cards"><npt-icon name="card-add" size="22"></npt-icon></npt-nav-item>
<npt-nav-item label="Pay"><npt-icon name="qr-code" size="22"></npt-icon></npt-nav-item>
<npt-nav-item label="More"><npt-icon name="more-horizontal" size="22"></npt-icon></npt-nav-item>
</npt-nav-bar>Cards
A swipeable card carousel (the selected card carries an accent ring), freeze/limits controls, a spend meter, the saved-cards list with scheme brand marks, and an add-card tile.
Saved cards
<!-- Cards -->
<npt-card-art variant="virtual" holder="SAMI A. NOURI" last4="4821" expiry="08/29" scheme="VISA">
<span slot="brand"><npt-brand-mark name="visa" height="22"></npt-brand-mark></span>
</npt-card-art>
<npt-card-controls></npt-card-controls>
<npt-limit-meter label="Monthly card spend" value="62" amount="620 / 1,000 LYD"></npt-limit-meter>
<npt-card-row interactive label="Everyday Visa" last4="4821" scheme="VISA">
<span slot="brand"><npt-brand-mark name="visa" height="20"></npt-brand-mark></span>
</npt-card-row>
<npt-card-row interactive label="Savings Mastercard" last4="2207" scheme="MASTERCARD">
<span slot="brand"><npt-brand-mark name="mastercard" height="20"></npt-brand-mark></span>
</npt-card-row>
<npt-add-card>Add a new card</npt-add-card>
<!-- Or build the brand mark in JS: -->
<script>el.innerHTML = Neptune.brandMarkSvg("visa", { height: 20 });</script>Transfer flow
Three stages — Amount, Review, Done — with the amount input, a method row and beneficiary tile, the review summary with a total, and a success hero.
You send
To
Method
Review & confirm
<!-- Transfer flow: Amount → Review → Done -->
<!-- 1 · Amount -->
<npt-stepper steps="Amount,Review,Done" active="0"></npt-stepper>
<npt-amount-input currency="LYD" value="1250.00"></npt-amount-input>
<npt-beneficiary-tile name="Mona Karim" account="•••• 4821" favorite></npt-beneficiary-tile>
<npt-method-row title="Instant transfer" subtitle="Arrives in seconds" recommended>
<span slot="icon"><npt-icon name="swap-exchange" size="18"></npt-icon></span>
</npt-method-row>
<!-- 2 · Review -->
<npt-stepper steps="Amount,Review,Done" active="1"></npt-stepper>
<npt-transfer-review
rows='[{"label":"To","value":"Mona Karim"},{"label":"Amount","value":"1,250.00 LYD"},{"label":"Fee","value":"0.00 LYD"}]'
total="1,250.00" currency="LYD" total-label="Total to pay"></npt-transfer-review>
<!-- 3 · Done -->
<npt-stepper steps="Amount,Review,Done" active="2"></npt-stepper>
<npt-success title="Transfer sent" message="1,250.00 LYD is on its way to Mona Karim.">
<npt-button slot="actions" variant="filled">Done</npt-button>
<npt-button slot="actions" variant="text">View receipt</npt-button>
</npt-success>Wallet home
A payment-led wallet: balance, Add money / Send / Request actions, recent merchants, a scan-to-pay panel and a reward voucher.
Recent
<!-- Wallet home (payment-led) --> <npt-balance-card hero label="Wallet balance" amount="845.20" currency="LYD"></npt-balance-card> <npt-quick-actions style="--npt-quick-actions-cols:3"> <npt-quick-action label="Add money"><npt-icon slot="icon" name="cash-stack" size="24"></npt-icon></npt-quick-action> <npt-quick-action label="Send"><npt-icon slot="icon" name="arrow-right" size="24"></npt-icon></npt-quick-action> <npt-quick-action label="Request"><npt-icon slot="icon" name="arrow-left" size="24"></npt-icon></npt-quick-action> </npt-quick-actions> <npt-merchant-row name="Corner Grocery" category="Groceries" amount="-42.00" currency="LYD" time="14:32"></npt-merchant-row> <npt-merchant-row name="Refund · Marketplace" category="Shopping" amount="+18.00" currency="LYD" time="Yest." pending></npt-merchant-row> <npt-qr-pay amount="42.00" currency="LYD" merchant="Scan a merchant code to pay"> <span slot="qr"><npt-icon name="qr-code" size="120"></npt-icon></span> <npt-button slot="action" variant="filled">Scan to pay</npt-button> </npt-qr-pay> <npt-voucher-card title="Cashback reward" value="−5%" code="WALLET5" expiry="Exp 31 Dec"> 5% back on your next 3 wallet payments. </npt-voucher-card>
Corporate
Corporate approvals (web)
A desktop console: side navigation, a page header, the maker-checker approvals queue, a bulk-payment batch with required approvals, and an audit trail.
Pending batch
Audit trail
<!-- Corporate approvals (web) -->
<npt-side-nav>
<npt-side-nav-item label="Approvals" active>
<span slot="icon"><npt-icon name="success-check" size="20"></npt-icon></span>
<npt-badge slot="leading" tone="primary">3</npt-badge>
</npt-side-nav-item>
<npt-side-nav-item label="Payments">…</npt-side-nav-item>
</npt-side-nav>
<npt-page-header title="Approvals" subtitle="Maker-checker queue · 3 awaiting your decision">
<npt-button slot="actions" variant="tonal">Filters</npt-button>
<npt-button slot="actions" variant="filled">Approve all</npt-button>
</npt-page-header>
<npt-approval-item title="Vendor payment — Atlas Supplies" amount="48,200.00" currency="LYD"
maker="Made by Omar F." status="pending"></npt-approval-item>
<npt-batch-card filename="payroll-jun.csv" totalamount="1,204,800.00" currency="LYD"
payeecount="312" requiredapprovals="2" validated="308" warnings="3" errors="1">
<npt-button slot="action" variant="filled">Submit batch</npt-button>
</npt-batch-card>
<npt-audit-row actor="Layla B." action="approved payment" target="#PAY-3192" time="14:02"></npt-audit-row>