Component Gap Audit
Cross-referencing all 45 mock-up pages against the Design System v1.2 component list. Every component class used in pages but absent from ds-preview.html is catalogued below.
What's already in the DS
25 componentsP1 — Critical gaps
6 components · Used on core product flowsSite Footer .site-footer
Dark 4-column footer with logo, links, and bottom bar. Used on every single page — brand and product. CSS is defined in shared.css (inlined per page) but there is no documented spec, anatomy, or live example in the DS preview.
.site-footer as a full section in DS preview with anatomy labels: .cols, .brand-col, .bottom. Document column structure and responsive breakpoints.Chat UI .chat-layout · .bubble · .chat-thread
Full messaging interface with a thread sidebar, message bubbles (incoming .bubble.in / outgoing .bubble.out), and a text input footer. This is a React app mounted at #chat-app-root — but the DS needs to document the visual tokens and component shapes that React uses.
Photo Gallery .gallery · .view-all-btn
3-column / 2-row asymmetric grid of property photos. First image spans both rows. "View all" button overlaid bottom-right. Badge row top-left. Core to the Listing detail page — one of the highest-traffic product surfaces.
.gallery with documented grid areas, overlay states, and "View all" button behavior. Include image upload/edit state for CreateListing.Avatar .av · .avatar · .landlord-avatar
Circular user identity element with initials fallback. Used in three separate contexts with three different class names — indicating inconsistency. Sizes vary: 36px (chat threads), 52px (landlord card), 60px+ (press profile). No single token-based definition exists.
.avatar component with size modifiers: --sm (32px), default (44px), --lg (60px). Document initials pattern and image override. Add to DS.Fact Grid .facts · .fact
4-column grid of key property facts (size, rooms, rent, floor). Each cell has a label (.k), value (.v), and optional sub-text (.sub). Heavily used on the listing detail page — critical for tenant decision-making.
.fact-grid / .fact. Document label/value/sub structure and responsive collapse to 2-col on mobile.Amenities Grid .amenities · .amenity · .amenity.off
3-column grid of property features with icon + label. Off/unavailable items use .amenity.off (opacity 0.4). Icon uses brand red stroke. Used on listing detail and listing creation.
.amenities with icon grid layout, active/off states, and token-aligned icon color (--color-action stroke).P2 — High priority gaps
6 components · Important product & shared surfacesLandlord Card .landlord-card · .landlord-avatar · .landlord-meta
Profile card for the landlord on the listing detail page. Contains avatar, name, verification badges, response time, and a contact button. Overlaps with the Avatar gap — the avatar here is ad-hoc inline CSS, not using a component.
.profile-card (reusable for landlord and tenant). Should use the new .avatar component internally.Map Block & POI .map-block · .poi · .poi-item
Neighbourhood section on Listing: a placeholder map with a hood label + walk score strip, plus a 4-column grid of nearby points of interest (transit, grocery, etc). The map itself is a placeholder in mock-up but will be a real Google Maps embed in production.
.map-block as a DS component with defined placeholder treatment and POI grid. Document embed integration point for Google Maps.Safety / Feature Grid .safety-grid · .safety-item
2-column grid of trust/safety features with icon, title, and description. Uses --sam-brown-light background tiles. Appears in the Listing "Trygghet" section and SafetyPackage page. Visually similar to Amenities but with larger copy blocks.
.feature-grid / .feature-item (more generic name covers both safety and general feature lists). 2-col default, 1-col mobile.TOC Sticky Sub-Nav .toc
Horizontally scrollable anchor-link bar that sticks below the main nav on the Listing detail page. Links jump to page sections. Visually similar to .account-nav and .tabs already in the DS, but semantically different (anchor links, not state tabs).
.page-toc as a variant of the existing tabs pattern. Document sticky-below-nav behaviour and active state via scroll spy.Feature Chips .feat-chips · .feat-chip · .feat-chip.ok
Inline pill-shaped tags listing property features (pets, balcony, furnished, etc). The .ok modifier turns items green to indicate "allowed" status. Similar to but distinct from .chip in the DS — these are read-only, not interactive filter chips.
.badge--neutral and .badge--success from the existing DS badge component. Consolidate in mock-ups and remove bespoke class. No new DS entry needed — but pages need updating.Page Hero (Brand surface) .page-hero · .brand-hero · .eyebrow · .hero-ctas
Top hero section on brand pages: eyebrow label, H1, subtitle, CTA button(s), optional stats row. Two class names are used (.page-hero and .brand-hero) across pages — suggesting drift. The template file uses .brand-hero.
.brand-hero. Add to DS with anatomy: eyebrow, H1, subtitle, CTA group, stats row (optional). Include dark and warm variants.P3 — Medium priority gaps
5 components · Brand / marketing surfacesCTA Band .cta-band
Full-width section at the bottom of brand pages: dark or warm background, centred heading, body copy, and one or two CTA buttons. Template file defines it as a standard closing section for all brand pages.
Stats Row .stats · .stat-num · .stat-label
Horizontal row of 3–4 metric highlights (e.g. "50 000+ trygga uthyrningar"). Large number + small descriptor label. Used inside hero sections and as standalone trust sections. Numbers use tabular-nums.
.stats-row. Document max 4 items, responsive wrap, and type scale (--text-3xl for numbers).FAQ / Accordion .faq · .faq-group · details summary
Expandable question/answer list using native <details> + <summary> elements. Grouped by category with H2 headings. Used on FAQ page and as an inline section on brand landing pages. No custom JS — pure CSS animated expand.
.accordion / .faq. Document open/closed states, dividers, group heading pattern, and filter chip integration (on FAQ page).Timeline .timeline · .tl-item · .tl-year · .tl-content
Vertical list of year-labelled milestones used on the About page company history section. Year in a styled pill, connected by a vertical rule. Currently used only once but is a reusable brand pattern.
Contact Channel Card .channel · .ch-icon
Icon + title + description block used in groups of 3 on the Contact page (phone, email, chat channels). The .ch-icon has per-type colour modifiers (.phone, .email, .chat). Visually similar to the feature-grid gap above.
.feature-item component (from P2 Safety Grid). No separate entry needed — consolidate.All gaps at a glance
17 totalRecommended next steps
Add the 6 P1 components to ds-preview.html with full anatomy, states, and CSS in the relevant assets/_*.css file. Consolidate the three avatar class names across pages into a single .avatar component.
Affected components: Site Footer, Chat UI, Photo Gallery, Avatar, Fact Grid, Amenities Grid
Add P2 components. Refactor .feat-chip usages in Listing.html, Search.html, and Application.html to use .badge--neutral / .badge--success instead. Standardise .page-hero → .brand-hero across all 6 pages.
Affected: Landlord Card → Profile Card, Map Block, Feature Grid, TOC Sub-Nav, Feature Chips refactor, Page Hero standardise
Add a "Brand Components" section to ds-preview.html covering CTA Band, Stats Row, FAQ/Accordion, Timeline. Merge Contact Channel into the Feature Item component added in Sprint 2.
Affected: CTA Band, Stats Row, FAQ/Accordion, Timeline, Contact Channel
Samtrygg Design System · Component Gap Audit · Generated April 21, 2026 · 45 pages scanned