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, Burn, and stack management (split, unstack, merge, combine, compact). 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 · Stack actions · 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 across NFTs and fungibles, newest first, paginated like every other list. The filter switches between All / NFTs / Fungible. 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
Mint · 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 — a character moment over two acquisition-path CTA cards: Launchpad (claim fresh from a live drop) and the secondary marketplace (buy from another collector), each echoing that surface's own voice. The empty state owns the character 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

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
Secondary 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. 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 12.
My Tokens/Little Leaf #014
k1m9…7uvw

Main asset shown large. Click a thumbnail to view it — assets are read-only.

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
08Token detail — stack holding (owned)A stack of identical minted copies held as one holding. Same read-only detail, with the holding line showing the quantity (×12). A Stack actions button sits alongside Transfer and Burn and opens split / unstack / merge for this stack (frame 13); combining separate holdings and compacting all stacks happen from the grid's select mode (frame 14).
My Tokens/Swampie #221
k1m9…7uvw

Swampie #221

Swampies Common
Stack · ×12
Token IDswmp-221
Ledger canister2ouva…cai
HoldingStack · 12 copies
Acquired21 Jun 2026 · mint
Description

Swampies are the bog's sleepy locals — happiest half-sunk under a lily pad with one eye open. This one comes as a stack of identical copies. Creator-written flavour travels with every copy.

Attributes
Body
Bog Green
Hat
Lily Pad
Mood
Sleepy
09Transfer — 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.
10Transfer — 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.
11Burn — 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.
12Detail 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
13Stack actions — split · unstack · mergeOn a stackable holding, the Stack actions button opens this modal. Split peels an amount into a new stack; Unstack turns copies into individual single holdings (one or all); Merge folds two stacks of the same token held by the same principal into one. Listed/locked holdings are blocked until the listing is cancelled. Combining separate holdings and compacting live in the grid (frame 14).

Stack actions · Swampie #221

✕
×12
Swampie #221
Stackable · 12 in this stack

Split stack

✕
Creates a new stack of 4; this stack keeps 8.
This stack12 → 8
New stack×4

Unstack

✕

Turns stacked copies into individual single holdings you can transfer or burn one by one.

This stack12 → 11
New singles×1

Merge stacks

✕

You hold 2 stacks of Swampie #221 — fold them into one.

Stack A×12
Stack B×4
After merge×16
14Combine & compact — grid multi-selectFrom the Tokens grid, select mode reveals corner checkboxes. Tick identical, unlocked holdings of the same token to Combine them into one stack, or Compact stacks to fold every eligible stack of that token at once (the V1 interaction; drag-stack-onto-stack does the same merge directly). Only identical, unlocked copies combine — mixed or listed selections are rejected with a clear reason.
My Tokens
k1m9…7uvw
Wallet · select

My Tokens.

Combine identical copies into a stack, or compact all eligible stacks of a token.
4 selected Swampie #221 · identical & unlocked
×12

Swampie

#221
Stack of 12
×4

Swampie

#221
Stack of 4

Swampie

#221
Single

Swampie

#221
Single

Little Leaf

#014
Edition14/500

Sun Sprite

#003
Edition3/250
Only identical, unlocked copies of the same token can be combined. Tokens listed for sale must have the listing cancelled first. Greyed checkboxes here are eligible but unticked.