Elevation
partialTwo shadows exist and a third is a defect. Depth otherwise comes from ground, never from a card.
what is not doneThe two shadows are documented as tokens. Which surfaces may carry them, and what a raised thing looks like on dark, is not.
src/styles/v2-theme.css
Grid and layout
not builtHow a band divides its width, and what folds at 1000px and 760px.
what is not doneThe export renders at desktop width only. Every fold in the build was decided per component, which is why two grids on this page had to be rewritten to stop the document scrolling sideways.
Iconography
partiallucide-react at stroke 1.5. No SVG is hand-drawn inside a component.
what is not doneThe icon set is a hand-authored path map of 23 glyphs, not lucide. Sizes are per call site. Neither is written down anywhere a builder would look.
src/components/v2/sections/icons.tsx
Voice and copy rules
not builtFirst person singular, sentence case, no em dash, statements under eight words.
what is not doneThese rules are enforced by a build script and live in four separate doctrine files. A builder writing a page has nowhere on this surface to read them.
Links
not builtAn inline link is a primitive, not a component. Bjarmi cannot carry it on paper.
what is not donedesign.md specifies rest, hover and visited on both grounds and over photography. Nothing on this surface shows it and no primitive enforces it.
Checkbox, radio, toggle
not builtEvery binary and single-choice control on a form.
what is not doneNot installed. The contact form, the pricing scope builder and the tool screens all need them.
Form states and validation
not builtRest, focus, filled, error, disabled, submitting, submitted.
what is not doneNo page in the build shows an error state. Four tools take an email address and none of them documents what a bad one looks like.
Dialog
partialAnything modal, including a confirmation. A fixed div with a backdrop is not a dialog.
what is not doneInstalled and themed. No marketing surface uses one yet and the rule for when a marketing page may is unwritten.
ui/dialog.tsx
Tabs
partialSwitching between panels in place.
what is not doneInstalled and themed, no specimen.
ui/tabs.tsx
Badges and pills
partialA small status or category mark. The capacity pill, the best-value tag.
what is not doneThe primitive is installed. The capacity pill and the best-value tag are still authored separately in two components rather than composed from it.
ui/badge.tsx
Separators and hairlines
partialA line that is its own object is a separator. A line that is the edge of a row is a border.
what is not doneThe rule is written in the W1-0 roster and enforced nowhere. Both forms appear on the site and only one is correct per case.
ui/separator.tsx
Loading and skeleton
partialWhat a surface shows before its data arrives.
what is not doneInstalled. The four tools all fetch and none of them has a documented loading state.
ui/skeleton.tsx
Breadcrumbs
not builtWhere a reader is, three levels deep in services or industries.
what is not doneThe route set is four levels deep in places and there is no breadcrumb component. `breadcrumbsFor()` exists in src/lib/pages.ts and renders nowhere.
Chips and filters
partialThe mono filter row over an index.
what is not doneRendered as doc-local markup in the recipes section and as authored markup inside the work index template. It is a pattern in two places and a component in neither.
Hairline rows
partialThe workhorse. The moment a pattern repeats, the box comes off and it becomes rows.
what is not doneEvery family template writes its own row list. Six implementations of the most-used pattern on the site.
Tables and data lists
partialThe comparison table, and any page that presents figures in columns.
what is not doneComparisonTable exists and overflows a 390px viewport by 130px. There is no general table pattern for anything that is not a comparison.
v2/page/ComparisonTable.tsx
Empty and error states
not builtA filter with no matches, a tool that failed, a 404.
what is not doneThere is a 404 route with no designed state. Nothing else in the build has one.
Banners and toasts
not builtThe response after a form submits, and any sitewide notice.
what is not doneFour tools send an email on submit and none of them has a documented success or failure surface.
Review card
partialA named review with its rating and attribution.
what is not doneAuthored inside the review rail. Not extractable, so the about page and the service pages each rebuild it.
v2/sections/ReviewRail.tsx
Person card
not builtA portrait, a name, a role. The about page and every author byline.
what is not done63 longform pieces are getting author bylines and there is no component for one.
Hero
partialThe opening band. One full-bleed surface exists on the whole site and this is it.
what is not doneThe homepage hero is documented by the export. The service, industry, longform and work heroes are four more shapes, none of them on this page.
v2/sections/Hero.tsx
Homepage bands
partialThe 23 bands the homepage composes from.
what is not doneListed by name with props. None renders a specimen, because each takes a full content slice.
v2/sections/
Marquees
partialThe logo wall and the ticker. A track that moves on its own, forever.
what is not doneBoth exist and neither can be shown inside a specimen plate without misrepresenting itself. That is a real constraint and this page has not solved it.
v2/sections/LogoWall.tsx · v2/sections/Ticker.tsx
Article typography
partialA 65ch body, crossheads, pull quotes, lists, figures, code. 63 longform pieces run on it.
what is not doneThe template exists. The prose scale inside it, and what a list or a blockquote looks like, is decided by the template and documented nowhere. This is the single biggest gap on the site by page count.
v2/templates/longform/
Mobile navigation
partialThe sheet under 900px.
what is not doneA sheet by definition fills the viewport. No specimen, and its trigger currently sits two pixels outside a 390px viewport.
v2/chrome/MobileNav.tsx
Page type · homepage
partial1 route. The band order the whole site is judged against.
what is not doneReauthored on shadcn by W1-0. Its anatomy is not written down here.
Page type · service
partial33 routes. Short hero and grader, problem strip, what I do, proof, steps, price anchor, FAQ, close.
what is not doneThe recipe is a paragraph in section 14. The template has 17 bands and none of them is documented individually.
v2/templates/service/
Page type · industry
partial24 routes. The service skeleton with the lanes that matter for that industry.
what is not doneSame as service: a paragraph, and 16 undocumented bands.
v2/templates/industry/
Page type · category lander
partialThe service, industry and resource hubs. Rows, never card walls.
what is not doneOne paragraph of recipe. The hub is the quietest page type and the easiest to get wrong.
v2/templates/service/ServiceCategoryTemplate.tsx
Page type · work index
partialHairline rows, a fixed preview that swaps on hover, mono chip filters.
what is not done38 items with no pagination and a hover preview that has no touch equivalent.
v2/templates/work/WorkIndexTemplate.tsx
Page type · case study
partial38 routes. Tag, display headline, plate, three stats, narrative, next-case rows.
what is not doneRecipe only. The narrative typography inside it is the article gap above.
v2/templates/work/CaseStudyTemplate.tsx
Page type · comparison
partialThe cross and check table is the centrepiece and appears nowhere else.
what is not doneThe table it is built around overflows a phone.
v2/templates/longform/ComparisonTemplate.tsx
Page type · pricing
not built2 routes. Tiers, a scope builder, terms, a tier table, FAQ.
what is not doneThe scope builder is the one interactive moment on the site and no component exists for it.
Page type · about and trust
not built6 routes. Operator dossier, fact rows, timeline, reviews, badges.
what is not doneRecipe only. No timeline component, no fact-row component, no person card.
Page type · legal and utility
not built9 routes. Legal text carried verbatim, 404, thank you.
what is not doneNo prose treatment for legal text and no designed 404.
How to build from this
doneWhat to reach for, the section order rule, the eyebrow pattern. Its own page.
src/app/design-system/how-to-use/page.tsx
Adding to the system
not builtWhat a builder does when the thing they need is not here.
what is not doneThere is no written route from "this page has no answer" to "the system has one". Six family lanes are about to hit that wall in parallel.