Toko · Wallet · consistency reference

My Tokens — Wallet.

The end-user wallet, centred on My Tokens: everything owned by the connected principal. Three surfaces live under one page as tabs — Tokens (owned NFT holdings, singles and stacks), Balances (ICRC-1 and NNS fungibles, view-only in v1), and Activity (transaction history). Selecting a holding opens a read-only detail with the shipped owner actions — Transfer and Burn. Later-phase features live in their own galleries (scoped out 2026-07-21): stack management in stacking · splitting · merging, physical redemption (RWA collections only) in redemption. Planned secondary sale / auction listing and offers/bids remain out of scope here ("coming soon"), matching the current app. Source: Design Documentation/wallet.md.

Surfaces: Tokens · Balances · Activity · Detail · Transfer · Burn · States & guards
01My Tokens · Tokens tab (populated)The default wallet view, using the style-guide token card: the artwork sits inside an 8px solid-colour rarity frame (common grey, uncommon green, rare blue, epic violet, legendary gold), and the meta is identity-only — name, issue number, and edition/supply. Stacks of identical copies show a ×N badge on the art; singles show none. Selecting a card opens the read-only minted-token viewer (frame 07). Controls are search + an asset filter (All / Singles / Stacks) + sort + a grid/list view toggle, all on the grey. The white list bar is the only chrome at the bottom, mirroring the breadcrumb at the top.
My Tokens
k1m9…7uvw
Wallet

My Tokens.

Everything owned by your connected principal — tokens, balances, and activity.

Little Leaf

#014
Edition14/500
×12

Swampie

#221
Open edition

Little Leaf

#097
Edition97/500

Sun Sprite

#003
Edition3/250
×4

Swampie

#221
Open edition

Reef Pip

#058
Edition58/999

Little Leaf

#140
Edition140/500

Ember Fox

#011
Edition11/100

Sun Sprite

#042
Edition42/250

Little Leaf

#061
Edition61/500
Showing 1–10 of 42
…
02My Tokens · Balances tabFungible balances owned by the principal — ICRC-1 tokens and NNS (ICP). Each row shows symbol/name, a ledger-type tag, and the wallet balance with tabular alignment. Balances are view-only in v1 (send/swap is out of scope), so there are no row actions — that scope decision is documentation, hence it lives here in the caption, not as a banner in the surface.
My Tokens
k1m9…7uvw
Wallet

My Tokens.

Everything owned by your connected principal — tokens, balances, and activity.
ICP Internet ComputerICP · NNS
128.4062
ICP
CHAT OpenChatCHAT · ICRC-1
5,200.00
CHAT
DKP DragginzDKP · ICRC-1
1,250.0000
DKP
03My Tokens · Activity tab (transaction history)Recent transfers for token holdings (token-item and stack-related transfers) and currencies (ICRC-1 and NNS), newest first, paginated like every other list. The filter switches between All / Holdings / Currencies. Each row reads as event type (received / sent / mint / burn), the asset, the counterparty (truncated principal), a timestamp, and the amount/quantity. A transaction reference is shown when the ledger provides one.
My Tokens
k1m9…7uvw
Wallet

My Tokens.

Everything owned by your connected principal — tokens, balances, and activity.
Received · Little Leaf #014
from v8x2…91kp · 22 Jun 2026, 14:02 · tx 0x9f…3a
+1
NFT
Claimed · Swampie #221 ×12
from vendor Swamp Drop · 21 Jun 2026, 09:48 · tx 0x71…0c
+12
stack
Sent · 25.0000 ICP
to a3f0…77bc · 20 Jun 2026, 18:31 · tx 0x12…ee
−25.0000
ICP
Received · 5,200.00 CHAT
from 9pq4…1m2n · 19 Jun 2026, 11:09 · tx 0x88…41
+5,200.00
CHAT
Burn · Reef Pip #002
permanent · 17 Jun 2026, 08:15 · tx 0x4d…b9
−1
NFT
Showing 1–5 of 318
…
04Empty walletNo holdings and no balances for this principal. Rather than a dead end, the empty state turns into the two ways to acquire a first token — the centred empty-state hero (style-guide no_tokens.jpg, 920px max) over two acquisition-path CTA cards: Launchpad (claim fresh from a live drop) and the Marketplace (buy from another collector), each echoing that surface's own voice. The empty state owns the illustration; it never appears in the list bar or dense data views.
My Tokens
k1m9…7uvw
Wallet

My Tokens.

Everything owned by your connected principal — tokens, balances, and activity.
No tokens yet
No tokens yet

Nothing is held by this principal. There are two ways to get your first token — claim one fresh from a live drop, or pick one up from another collector. It'll appear here the moment ownership transfers.

Launchpad

Where the drops happen.

Discover and claim live & upcoming drops — the fastest way to get in on a new release, with transparent rules on every drop.

Explore the Launchpad
Marketplace

Trade after the drop.

Buy collection items listed by other collectors once a launch is over — discover, compare and buy with full activity in context.

Browse the marketplace
05LoadingHoldings resolving from ledger queries. Skeleton cards hold the grid's shape so layout doesn't jump when data lands. Balances and Activity use the same skeleton treatment within their panels for consistency.
My Tokens
k1m9…7uvw
Wallet

My Tokens.

Everything owned by your connected principal — tokens, balances, and activity.
06Unauthenticated — browse free, sign in to collectThe wallet needs a principal to resolve holdings, but the unauthenticated state isn't a dead end. It makes clear that browsing the Launchpad and marketplace is open to everyone — signing in is only needed to claim, buy, or see tokens you already own. A character welcome plus a prominent Connect, with the two no-sign-in browse paths beneath. Connecting authenticates and routes straight back to the wallet.
My Tokens

Browse freely — sign in to collect

Anyone can explore drops and the marketplace without an account. Connect your identity when you're ready to claim, buy, or see the tokens you already own.

Connect identity
Launchpad · no sign-in

See what's dropping.

Explore live and upcoming drops freely. You only sign in at the moment you claim.

Explore the Launchpad
Marketplace · no sign-in

Window-shop the market.

Browse collector listings and activity freely. Sign in only when you want to buy.

Browse the marketplace
07Token detail — single holding (owned)The minted-token viewer: this is the same read-only component as the creator-side "Single minted copy" view (manage-minted gallery, frame 03) and the Live definition view — reused here with the wallet's owner actions. Media gallery with clickable thumbnails (asset shown large, read-only), identity (collection, token id, ledger), rarity/score, attributes, and claim provenance. A Market history snippet follows Provenance — the same per-token activity[] feed the public marketplace token page already renders (one implementation, not a second feed), showing the last few events in the wallet's normalized vocabulary (Listed, Sold, Claimed, and now Expired/Cancelled for a listing that lapsed or was pulled rather than sold). It's a compact snippet, not the full history — "View full history" links out to the public token page, which stays the one place the complete feed renders. Footer actions are the two shipped owner actions — Transfer and Burn. Detail must resolve against the active principal's holdings; a link to a token you don't own lands on the guard in frame 11.
My Tokens/Little Leaf #014
k1m9…7uvw

Little Leaf #014

Little Leaf Guardians Rare Score 812
Owned
Token IDleaf-014
Ledger canisterrrkah…fqaaq
HoldingSingle (1 of 1)
Acquired22 Jun 2026 · claim
Description

A Little Leaf Guardian roused from the deep moss after the first spring rain. Keepers of the forest floor, they trade in dewdrops and quiet favours. Flavour and lore are written by the creator and travel with the token wherever it goes.

Attributes
Body
Mossback
Eyes
Dewdrop
Crown
Fern Sprout
Aura
Verdant
Provenance
Claimed fromLeaf Drop · vendor
Original minttx 0x9f…3a
Market history
Listing16.0 ICPk1m9…7uvw3h
Expired14.0 ICPk1m9…7uvw6d
Claimed9.0 ICPk1m9…7uvw22d
View full history →
List for sale
08Transfer — modal & inline validationTransfer asks for a recipient principal and confirms in one modal. Validation is inline at the field: a malformed principal and a self-transfer are both rejected before the destructive confirm is reachable. The asset being moved is shown so there's no ambiguity about which holding leaves the wallet.

Transfer token

✕
Little Leaf #014
Little Leaf Guardians · single
Ownership moves immediately on confirm. There's no undo.

Transfer token

✕
Little Leaf #014
Little Leaf Guardians · single
Recipient principal is invalid.

Transfer token

✕
Little Leaf #014
Little Leaf Guardians · single
You can't transfer a token to yourself.
09Transfer — success & stale-state conflictOn success the token leaves the wallet list and the modal confirms. If ownership or listing state changed between page load and confirm, the mutation fails safely (pre-submit revalidation) rather than acting on stale state — the wallet is refreshed and the user retries. Submits are single-flight: the confirm button disables while a transfer is in flight.

Transfer complete

✕
Token transferred successfully. Little Leaf #014 has moved to b7n2…cai and is no longer in your wallet.

Transfer token

✕
Transfer failed because the token state changed. Refresh and try again.
10Burn — destructive confirmBurn is permanent and unrecoverable, so it's an explicit destructive confirm with a typed acknowledgement. The ledger keeps a Burned record for audit, but the holding leaves the wallet for good. The primary action is styled as danger and stays disabled until the confirm phrase is typed.

Burn token

✕
Little Leaf #014
Little Leaf Guardians · single
Burning is permanent. This token can't be recovered. A Burned record stays in the ledger for audit, but the token is gone from your wallet.
11Detail guards & error statesThe safe fallbacks for a detail route: an invalid or untrusted token link, a link to a token the active principal doesn't own, and a stale link to a token that's since been burned. Each is a calm dead-end with a single route back to the wallet — never a broken or half-rendered detail. Shown together here as a reference set on grey.

Invalid token link

This token link is invalid or the canister isn't recognised. Nothing to show.
Back to My Tokens

Not your token

This token isn't held by your principal, so its wallet detail isn't available to you.
Back to My Tokens

Token burned

This token was burned and is no longer a holding. The ledger keeps the Burned record for history.
Back to My Tokens
12Listing expired — token already unlockedListing expiry is passive: the expiry timestamp is authoritative and nothing runs at the expiry moment. The instant a listing lapses, the wallet computes the token as unlocked — every action is available again and there is no stuck state. A quiet note records that the listing ended unsold; nothing was charged. (One shared eligibility check evaluates sale-lock + expiry everywhere — never duplicated per surface.)

Little Leaf #014

✕
Little Leaf #014
Little Leaf Guardians · Rare
Your listing expired unsold on 14 Jul, 18:00 — the token is back in your wallet and fully unlocked. You were charged nothing (no sale, no fee).
13Listed stack — selling in partsA listed stack sells per unit: buyers take any quantity, and the wallet card tracks the remainder. The stack stays sale-locked while listed (no split/merge/transfer/burn — cancel first); each partial sale pays out as it settles (royalties + referral taken from that sale's amount). When the last unit sells the listing closes; an unsold remainder returns at expiry.

Swampie #221 · listed

✕
×5
Swampie #221
Swamp Things · Common · Stack
7 of 12 sold · 5 left at 2.5 ICP each. Proceeds so far: 16.10 ICP (after royalties + referral). Listing ends 14 Jul, 18:00 — anything unsold returns here.