Screens: member area and public pages
S16. Member area home and tabs (/member, /member/:tab) ← R1 (home), R26 (card), R16 (account)
Section titled “S16. Member area home and tabs (/member, /member/:tab) ← R1 (home), R26 (card), R16 (account)”Layout: L1 AppShell variant="member" compactNav="bottom-tabs". Home = L2
DashboardLayout (rail = notices). Loans, Bookings, Events, Payments and Inbox = L3
ListLayout. Account = L5 SettingsLayout. The signed-out or not-a-member home = L9
PublicLayout + PublicDetailLayout (the join card as actionCard). The member card full view
= L9 width="narrow" with the ticket (P27).
Desktop: member sidebar (logo, space switcher card = makerspace + membership status, nav: Home · Loans · Bookings · Events · Payments · Inbox · Account, bottom: user chip / Sign out)Mobile: top bar + bottom tabs: Home · Loans · Bookings · Events · More (Payments, Inbox, Account)
Hi Meera [■ Start visit ]* ← presence, when module onFab Lab Kochi · Member since March 2026 (Active)┌ ! Accept the updated waiver (v3) to keep borrowing. Read and accept → ┐┌On loan 2┐┌Due this week 1┐┌Bookings 1┐┌Payments due ₹500┐Coming up Notices┌OCT┐ Return Multimeter Due Fri (Renew) • Your request #1042 was accepted┌OCT┐ Woodshop bench 10:00–12:00 (Confirmed) • Booking confirmedYour member card ▸ (ticket card with QR — opens the full card)* “Start visit” / “End visit” maps to the presence session today (“Start 2-hour presence”).
- Navigation is the existing
memberTabs(modules). Keeprole=tablistsemantics on the nav, or convert to links (PLAN Phase 4 decision). Keep the#main-contenttarget. - Callout priority: waiver acceptance needed, then a payment due, then an overdue loan, then application status (“Your application is waiting for 2 vouches”).
- Not a member / signed out: the home becomes the join page. A R23-style card (“Join Fab Lab
Kochi”: policy summary,
AdmissionJoin/JoinMembershipCtaas the primary, “Have an account? Sign in”) beside a description of what membership gives.InvitationRequestFormandMemberClaimRedemptionare secondary links. - Loans tab: “On loan” rows (due chip, item, Renew if allowed) and a “History” section
(
MemberHistory). Payments: dues stat cards plusMemberPaymentRowswith an inline “Pay” primary pill per row; archived payments as a link row at the bottom. Inbox:MemberNoticesandMemberNotifications; empty “No notices need your attention.” Account: the R16 settings rows (profile, two-step sign-in link,MemberCertifications, referrals, directory listing) and the member card. - Member card (
MemberCardPanel) = the R26 ticket: a makerspace header band, a name / member since / role grid, a perforation, the QR, the caption “Show this at the desk. It only holds a private member link.” (verify that statement against the card payload before using it), and “Add to wallet” / “Save card” where supported. Offline note when cached. - Restoring state: a full-page skeleton of the shell, not “Restoring session…” text.
S17. Public catalogue (/m/:slug) ← R18 (sticky right card) + P10 chips
Section titled “S17. Public catalogue (/m/:slug) ← R18 (sticky right card) + P10 chips”Layout: L9 PublicLayout width="wide". The slots are filled as follows: aside =
ActionCard (the request cart: form = purpose and contact fields, primary = “Send request —
n items”, mobileBar); children = the header block, search, the category chips and the product
grid (an L3-style body without the app shell).
[logo] Fab Lab Kochi Catalogue Events Machines Book a space ( Sign in )──────────────────────────────────────────────────────────────────────────────────────────Borrow tools from Fab Lab Kochi ┌ Your request ─────────────────┐ 340w sticky248 tools and kits · members borrow free │ 2 items │[ Search tools, machines, kits, materials ⌕ ] │ Arduino Uno − 1 + │(All)(Electronics)(Woodwork)(Textiles)(3D printing)… │ Multimeter − 1 + │Sort: Name ▾ │ What's it for? [ ] │┌card┐┌card┐┌card┐ │ [■ Send request — 2 items ] ││img │ │img │ │img │ name, availability pill (word), │ Staff review every request ││ │ │ │ │ │ "Add" stepper │ before anything is handed over.│└────┘ └────┘ └────┘ │ ( Borrow | Scan a tool ) seg. │‹ Prev Page 2 of 11 Next › └────────────────────────────────┘footer: [logo] Powered by space works · Privacy · Terms- Shared
PublicShell(PLAN §3.4): a R18 48 px header with the makerspace brand, then nav links (only the modules that are on), then a “Sign in” outline pill. - The category sidebar becomes a chip row (scrollable) at <1280 and stays a left list at ≥1280 if there are more than 8 categories.
- Request panel = the R18/R23 sticky card. Its counts and title change with state: empty
(“Nothing added yet. Tap Add on any tool.”), with items, submitted (a success state in the card:
“Request sent. We’ll email you when it’s ready.”, plus the public token link). The Borrow/Scan
switch is a P9 segmented control. Access-policy copy (the three variants in
PublicRequestPanel) stays verbatim in meaning, as the card’s helper. - Disabled requests: the card says “This makerspace shows its inventory but doesn’t take requests online.” with no primary.
- Mobile: the card becomes a sticky bottom bar (“2 items · Review request”) that opens a bottom sheet with the same content.
- Never expose locations, box IDs, QR, evidence or hidden counts. The availability pill shows
exact_countonly when allowed, else the status word.
S18. Public item detail (/items/:itemId) ← R21 (detail with right rail) + R18 sticky card
Section titled “S18. Public item detail (/items/:itemId) ← R21 (detail with right rail) + R18 sticky card”Layout: L9 PublicLayout + PublicDetailLayout. The slots are filled as follows: cover =
item image; chips = category and kit; sections = Description and Borrowing terms;
actionCard = availability, “Add to request”, “Notify me”. Not-found = L8 CenteredCardLayout.
Fab Lab Kochi / Catalogue / Arduino Uno R3 (breadcrumb)[ image 16:10, r16 ] ┌ (Available) ────────────────┐(Electronics)(Kit) │ 3 available (only if exact)│Arduino Uno R3 (48 bold) │ [■ Add to request ] │description… │ ( Notify me when it's back )│ (when unavailable + feature)Borrowing terms (grey inset box) └─────────────────────────────┘- “Add to request” adds to the same cart (shared
useInventoryCartstate) and links back to the catalogue with the card open. Today the page says “Request from the catalogue”. This is a behaviour improvement within the frontend; flag it for approval. - Not found: a centred card “This item isn’t in the public catalogue.” with “Back to the catalogue”.
S19. Public event page (/events/:publicToken) ← R18, R19, R23, plus R26 confirmation
Section titled “S19. Public event page (/events/:publicToken) ← R18, R19, R23, plus R26 confirmation”Layout: L9 PublicLayout + PublicDetailLayout. The slots are filled as follows: facts =
date chip block and venue block; sections = About / Schedule / Speakers / Venue / FAQ (only
non-empty ones); actionCard = Join card (form inline when short), with state
open/closed/done; host. The events list = L9 + L3-style rows. Feedback, ticket and running
order = L9 width="narrow".
- The layout is exactly P25. Map the existing pieces: image as cover, title, starts_at and
location in the date and venue blocks, category and tags as meta chips, description, and
EventPricefolded into the CTA label (“Register — ₹200”, “Register — it’s free”, “Join waitlist”, “Apply”). - Registration form placement: inside the sticky card when the form is short (no
custom_formand no ticket choice, the R23 pattern); otherwise the card CTA opens a modal or sheet withEventRegistrationForm(tickets, promo, custom fields). - “Add to calendar” and “Share” are the two outline half-buttons in the card. The share error becomes a toast (“Couldn’t share. Link copied instead.” when the clipboard fallback succeeds).
- Closed: the card shows “Registration is closed” plus the cutoff time, with no primary. Not found: a centred card.
- After registering: a confirmation state in the card, then a link to the ticket page (R26) if tickets or check-in exist.
- Events list (
/events): P6 date-chip rows grouped by series (series eyebrow), with search and filters (Free, Registration open) as chips and the calendar view as a segmented toggle (List | Calendar). The inline “Register” expand-in-place becomes a link to the event page (one primary per page; forms live on the event page). - Feedback page (
/events/:token/feedback) = R25 exactly.
Part of Space Works UX spec, published from docs/ux-spec.md. Edit it there.