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.
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.
ICPInternet ComputerICP · NNS
128.4062
ICP
CHATOpenChatCHAT · ICRC-1
5,200.00
CHAT
DKPDragginzDKP · 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.
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.
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.
Main asset shown large. Click a thumbnail to view it — assets are read-only.
Little Leaf #014
Little Leaf Guardians RareScore 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).
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.
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.
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.