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.

April 22, 2026 DS v1.3 6 gaps found 50+ pages scanned

What's already in the DS

25 components
Buttons (all variants)
Inputs & Fields
Cards
Listing Card (grid)
Listing Card (row)
Badges & Chips
Alerts & Toast
Alert Strip
Navigation (site-nav)
Public-page Nav Drawer
Account Sub-Nav
Tabs & Breadcrumbs
Empty States & Skeleton
Stepper
Data Table
Toggle Switch
BankID Card
BankID Auth Modal
Status Tracker
Dashboard Sidebar
Toast / Snackbar
Datepicker (single/range)
Tooltip / Info-tip
Bottom Sheet / Filter Drawer
Timeline / Activity Log
Agreement Card
Status Badge (unified)
Rating Input (5-star)
Media Upload (drag-drop)
Site Footer ✗
Chat UI ✗
Photo Gallery ✗
Avatar ✗
Fact Grid ✗
Amenities Grid ✗
Map Block ✗
Landlord Card ✗
Safety Grid ✗
Feature Chips ✗
Page Hero ✗
CTA Band ✗
Stats Row ✗
FAQ / Accordion ✗
Contact Channel ✗
TOC Sub-Nav ✗
Search Box ✗

P1 — Critical gaps

6 components · Used on core product flows

Site Footer .site-footer

P1 Critical

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.

All brand pages template-brand.html template-product.html Homepage.html Search.html Listing.html + 35 more
Add .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

P1 Critical

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.

Chat.html Messages.html
Add Chat section to DS with: thread list item, message bubble (in/out), unread indicator, chat input bar. Include dark overlay variant for mobile.

Photo Gallery .gallery · .view-all-btn

P1 Critical

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.

Listing.html CreateListing.html
Add to DS as .gallery with documented grid areas, overlay states, and "View all" button behavior. Include image upload/edit state for CreateListing.

Avatar .av · .avatar · .landlord-avatar

P1 Critical

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.

Chat.html Listing.html Press.html TenantProfile.html PublicProfile.html
Consolidate to single .avatar component with size modifiers: --sm (32px), default (44px), --lg (60px). Document initials pattern and image override. Add to DS.

Fact Grid .facts · .fact

P1 Critical

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.

Listing.html Application.html AgreementSent.html
Add to DS as .fact-grid / .fact. Document label/value/sub structure and responsive collapse to 2-col on mobile.

Amenities Grid .amenities · .amenity · .amenity.off

P1 Critical

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.

Listing.html CreateListing.html
Add to DS as .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 surfaces

Landlord Card .landlord-card · .landlord-avatar · .landlord-meta

P2 High

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.

Listing.html InterestedTenants.html
Add as .profile-card (reusable for landlord and tenant). Should use the new .avatar component internally.

Map Block & POI .map-block · .poi · .poi-item

P2 High

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.

Listing.html Contact.html
Add .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

P2 High

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.

Listing.html SafetyPackage.html LandlordLanding.html TenantGuide.html
Add as .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

P2 High

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).

Listing.html TenantGuide.html LandlordGuide.html
Add .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

P2 High

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.

Listing.html Search.html Application.html
These should become .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

P2 High

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.

About.html Careers.html Press.html LandlordLanding.html TenantGuide.html template-brand.html
Standardise on .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 surfaces

CTA Band .cta-band

P3 Medium

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.

About.html FAQ.html LandlordLanding.html template-brand.html
Add to DS brand section. Document dark and warm background variants, copy structure, and button layout rules.

Stats Row .stats · .stat-num · .stat-label

P3 Medium

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.

About.html LandlordLanding.html SearchLanding.html template-brand.html
Add to DS brand section as .stats-row. Document max 4 items, responsive wrap, and type scale (--text-3xl for numbers).

FAQ / Accordion .faq · .faq-group · details summary

P3 Medium

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.

FAQ.html TenantGuide.html LandlordGuide.html template-brand.html
Add to DS as .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

P3 Medium

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.

About.html
Add to DS brand section. Low urgency but prevents further one-off CSS drift if more brand pages need history sections.

Contact Channel Card .channel · .ch-icon

P3 Medium

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.

Contact.html
Can be implemented using the proposed .feature-item component (from P2 Safety Grid). No separate entry needed — consolidate.

All gaps at a glance

17 total
Component CSS Class(es) Priority Action Pages
Site Footer .site-footer P1 Add to DS All (45)
Chat UI .chat-layout .bubble .chat-thread P1 Add to DS Chat, Messages
Photo Gallery .gallery P1 Add to DS Listing, CreateListing
Avatar .av .avatar .landlord-avatar P1 Consolidate + Add Chat, Listing, Press, Profile
Fact Grid .facts .fact P1 Add to DS Listing, Application, Agreement
Amenities Grid .amenities .amenity P1 Add to DS Listing, CreateListing
Landlord Card .landlord-card P2 Merge into Profile Card Listing, InterestedTenants
Map Block + POI .map-block .poi .poi-item P2 Add to DS Listing, Contact
Safety / Feature Grid .safety-grid .safety-item P2 Add as .feature-grid Listing, SafetyPackage, Guides
TOC Sub-Nav .toc P2 Add as .page-toc variant Listing, TenantGuide, LandlordGuide
Feature Chips .feat-chip .feat-chip.ok P2 Replace with .badge Listing, Search, Application
Page Hero .page-hero .brand-hero P2 Standardise + Add About, Careers, Press, Guides
CTA Band .cta-band P3 Add to DS (brand) About, FAQ, LandlordLanding
Stats Row .stats .stat-num .stat-label P3 Add to DS (brand) About, SearchLanding, LandlordLanding
FAQ / Accordion .faq .faq-group P3 Add to DS FAQ, TenantGuide, LandlordGuide
Timeline .timeline .tl-item P3 Add to DS (brand) About
Contact Channel .channel .ch-icon P3 Merge into .feature-item Contact

Recommended next steps

Sprint 1 · P1 — Do immediately

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

Sprint 2 · P2 — Before handoff

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

Sprint 3 · P3 — Brand DS completion

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