Commit 40efd4f
authored
Pare site to three Flexion Solutions offerings (#16)
* docs(spec): pare home page to three Flexion Solutions offerings
Design doc covering the content-driven featured-labs restructuring,
hidden /work/ routes, and nav simplification for this pass.
* docs(plan): implementation plan for pare-down-to-solutions
Bite-sized, TDD-style task list that turns the approved spec into
commits — add featured-lab content, loader, LabCard, home rewrite,
nav update, route gating, and overlay cleanup.
* chore(docs): move specs and plans from docs/superpowers/ into notes/
Matches the project's existing convention where notes/specs/ and
notes/plans/ hold ephemeral planning artifacts, while docs/ is for
durable behavioral documentation.
* feat(content): add featured labs source files
* feat(build): add featured-lab content loader
* feat(design): add LabCard component
* fix(design): register lab-card styles in index.css
* feat(design-system): register LabCard example
* feat(content): expand home front-matter with subtitle, intro, learn-more
* feat(home): rewrite home page with featured labs and learn-more row
* test(home): rewrite view and loader tests for new layout
* feat(header): drop Work, add Home to primary nav
* feat(routes): hide /work directory from the public site
* chore(content): remove work overlay files
* docs: update featured-content guide for the new content type
* fix(docs): unwrap stray outer code fence in featured-content.md
* fix(footer): drop broken Work link, link Home instead
* feat(home): fix learn-more grid, link About to flexion.us, remove /about/
Three review fixes rolled into one:
- The Learn more grid defined itself as a `container-type: inline-size`
container, so the nested `@container (min-width: 48rem)` column rule
could never match against its own container. Swap to a media query at
48rem so the two teasers lay out horizontally on desktop.
- The "Learn about Flexion" teaser now links to https://flexion.us/
instead of the local /about/ page.
- Remove the /about/ page entirely: delete content/about.md and
src/pages/about.tsx, drop the route from allRoutes, drop About from
header and footer nav, and update smoke, a11y, home, and routes tests
to match.
* feat(lab-card): horizontal band layout with typed, grouped links
Rework the featured-labs cards on the home page to address two UX issues:
**Link differentiation.** Every link now carries a `kind` of `demo`,
`repo`, or `case-study`, rendered with a recognizable inline icon
(globe, GitHub mark, document). Labels shorten to "Live demo",
"Repository", "Case study" — the icons do the category work.
**Sub-project grouping.** Links accept an optional `group` name. When
set, same-group links render under a small uppercase heading. Forms Lab
now makes its two distinct projects (production Platform vs. the
experiment) visually explicit.
**Horizontal band layout.** The card becomes a two-column grid above
40rem (container query) — intro on the left, grouped link panel on the
right. On narrow viewports it stacks. The home page's featured list is
also capped at 72rem so desktop bands don't stretch edge-to-edge.
Schema: `links: [{label, url, kind, group?}]`. Updated the three content
files, loader, loader tests, LabCard component + styles + examples,
LabCard view tests, and docs/featured-content.md.
* fix(lab-card): stack links vertically, right-align in horizontal mode
Two defects reported on the home page:
- Links weren't right-aligned. The link column sat in the right grid
track but its flex children aligned to the column's start, so the
block hugged the center gutter.
- The second link in a group appeared slightly lower. The list was
flex-wrap with a row gap; two-link groups would wrap unpredictably
when the label widths were close to the column width.
Switch the link list to a vertical stack. In horizontal-band mode
(container ≥40rem), right-align each group and its anchors with
flex-end + text-align: end. On narrow stacked cards, default start
alignment is preserved so the link list reads naturally below the
intro.
* content(commitment): update open source commitment to 2026-03-23 draft
Replace the prior commitment prose with the revised working draft from
the convergence meeting: tighter framing around resilience, a single
"We're open by default" section with a bulleted list of why Flexion is
committed to open source, and a closing paragraph on public benefit.
Preserves existing markdown conventions (h1 title, italic status line,
h2 section, markdown bullets rendered through the ContentPage pipeline).
* feat(lab-card): rework as title-on-top with one column per link
Replace the horizontal-band layout with a column-per-link design:
- Title and tagline sit on top; a horizontal row of columns sits below,
separated by a subtle top border on the columns row.
- Each column heads with an uppercase kind label ("Demo", "Repository",
"Case study"), followed by the icon-prefixed link itself.
- Columns flow responsively via container queries: 1 column → 2 at
32rem → 4 at 56rem. This keeps Forms Lab's four links on a single
row on desktop while single-link cards remain compact.
- The link `label` is now the project/repo identifier (what you're
linking to) rather than the action, since the action is carried by
the column heading.
- Drop the now-unneeded `group` field from the content schema and
loader. Labels absorb the sub-project identity ("Forms Platform",
"Forms Lab (experiment)") without a separate grouping construct.
* feat(lab-card): group columns by kind, not per-link
Rework the column layout so each column represents a distinct link
kind (Demo, Repository, Case study), with same-kind links stacking
vertically within the column in document order.
This makes the Forms Lab card read cleanly — one "Demo" column with
Forms Platform above Forms Lab (experiment), one "Repository" column
with flexion/forms above flexion/forms-lab. Matching list positions
across columns refer to the same project. Headings no longer repeat,
so they carry real categorical weight.
Other cards adjust naturally: Messaging has one Repository column,
Document Extractor has Repository and Case study columns.
- `LabCard`: groups links by kind, preserves per-kind document order,
emits one column per present kind in fixed order (Demo → Repository
→ Case study).
- Styles: columns container auto-fits at 14rem minimum above 32rem;
stacks below. Inner link list is a vertical flex stack with the
icon-prefixed anchors.
- Update home and component view tests to match; update the home test
fixture to include the required `kind` field.
- Update docs/featured-content.md to describe the group-by-kind layout.
* content(commitment): drop working-draft status line
Remove the "Status: Working draft reflecting all 10 strategic decisions
confirmed as of the 2026-03-23 convergence meeting..." line from the
commitment page.
* fix(lab-card): align links across columns via subgrid
Problem: when links grouped by kind sat in side-by-side columns, the
second-row link in one column could sit slightly lower than its
sibling in the next column. Each column was its own layout context,
so rows didn't share heights across siblings — a short label on the
left and a long label on the right wouldn't align.
Fix: switch .lab-card__column to a CSS subgrid inheriting rows from
.lab-card__columns, so heading + each link row share heights across
all columns. Compute --lab-card-rows = max(link count per kind) from
JSX so the outer grid defines enough tracks.
Also flatten the per-column markup: the inner <ul> wrapper around the
link list is gone, since each column now lays out via grid rows
directly.1 parent 1607ac4 commit 40efd4f
37 files changed
Lines changed: 2448 additions & 471 deletions
File tree
- content
- featured
- work
- docs
- views
- notes
- plans
- specs
- src
- build
- design
- components
- header
- lab-card
- pages
- tests
- a11y
- build
- views
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
18 | 23 | | |
19 | | - | |
| 24 | + | |
20 | 25 | | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
| 26 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
3 | | - | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
4 | 19 | | |
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
0 commit comments