CSS Sprint E-2: component library finished - 450-copy card consolidation, jt-reviews-box restored, starter template#382
Conversation
… collapsed Within each page the card instances were ~97% identical to each other. Four per-page core classes (services-card x6 33 rules, home-service-card x6 20, about-value-card x3 25, careers-value-card x6 27), additive on the modules; per-instance keeps stay under their own classes and win by later position. Value-different tie scan: clean on all four pages. Combined with E1's jt-info-card, a card instance now reads: jt-info-card <page>-card <instance-class> (global core -> page core -> instance tweaks) - the cascade a new page copies by example. Gates: only the 4 card-page bundle fingerprints changed; scoped screenshot gate green on all four. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
…sion per delegation) The intended slider design (arrow navigation with hover-arrow assets, review-card refinements in 586.css) was silently purged in production - pp-swiper/pp-review are runtime classes with no purge shield, the same accident class as the skip-link incident. Greedy entries /^pp-swiper/ + /^pp-review/ restore it deliberately. Visual assessment: static captures unchanged (full critical suite 34/52 green, zero baseline changes) - the restored rules affect hover states and multi-slide arrow nav, which screenshots do not exercise. Assets verified present (hover-arrow-icon*.svg). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
…omponent verdicts - themes/beaver/layouts/page/starter-example.html.txt: copy-me page shell (slice recipe, hero, three-tier card, shared partials) - kept as .txt so Hugo ignores it; referenced from new-page.md. - bin/qtest COMPONENT_CONSUMERS: info-card/cta-banner/header-cta + cta partial now map to their consumer pages instead of escalating to --all. - new-page.md: measured verdicts - heroes and stat rows are deliberately NOT components (intersections 1 and 0); recipes documented instead. Card class tiers documented. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
📝 WalkthroughWalkthroughShared page-card classes and CSS are consolidated for homepage, services, about, and careers pages. PurgeCSS and qtest mappings are updated, documentation defines card conventions, and a non-live Hugo starter template is added. ChangesShared card styling and starter layout
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant HugoTemplate
participant CSSProcessor
participant SharedPartials
HugoTemplate->>CSSProcessor: pass starter CSS resources with bundleName starter
HugoTemplate->>SharedPartials: render testimonials and CTA partials
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@themes/beaver/assets/css/pages/services.css`:
- Around line 3070-3075: Replace the invalid bare px border-radius declarations
with a valid numeric value, such as 0, in the shared card selectors for
services.css (3070-3075), homepage.css (7565-7570), and careers.css (3665-3670),
covering all four corner declarations at each site.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: af74fccd-3172-432e-ad71-63f299040656
📒 Files selected for processing (12)
bin/qtestdocs/workflows/new-page.mdpostcss.config.jsthemes/beaver/assets/css/pages/about-us.cssthemes/beaver/assets/css/pages/careers.cssthemes/beaver/assets/css/pages/homepage.cssthemes/beaver/assets/css/pages/services.cssthemes/beaver/layouts/home.htmlthemes/beaver/layouts/page/about.htmlthemes/beaver/layouts/page/careers.htmlthemes/beaver/layouts/page/services.htmlthemes/beaver/layouts/page/starter-example.html.txt
| .services-card .pp-infobox-icon-inner span.pp-icon, .services-card .pp-infobox-image img { | ||
| border-top-left-radius: px; | ||
| border-top-right-radius: px; | ||
| border-bottom-left-radius: px; | ||
| border-bottom-right-radius: px; | ||
| } |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Invalid border-*-radius: px; value duplicated into 3 of the 4 new shared card cores.
All three sites set icon/image corner radii to a bare px with no number, which is invalid CSS and gets dropped by every parser — a template placeholder that never got its numeric value. It's currently harmless (zero visual diff, since the value was already broken before consolidation), but the consolidation work has now copied it into the shared "page card core" blocks, exactly what the docs tell future page authors to copy when adding a new page's card.
themes/beaver/assets/css/pages/services.css#L3070-L3075: replace the fourpx-only declarations on.services-card .pp-infobox-icon-inner span.pp-icon, .services-card .pp-infobox-image imgwith a real value (e.g.border-radius: 0;).themes/beaver/assets/css/pages/homepage.css#L7565-L7570: same fix on.home-service-card .pp-infobox-icon-inner span.pp-icon, .home-service-card .pp-infobox-image img.themes/beaver/assets/css/pages/careers.css#L3665-L3670: same fix on.careers-value-card .pp-infobox-icon-inner span.pp-icon, .careers-value-card .pp-infobox-image img.
📍 Affects 3 files
themes/beaver/assets/css/pages/services.css#L3070-L3075(this comment)themes/beaver/assets/css/pages/homepage.css#L7565-L7570themes/beaver/assets/css/pages/careers.css#L3665-L3670
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@themes/beaver/assets/css/pages/services.css` around lines 3070 - 3075,
Replace the invalid bare px border-radius declarations with a valid numeric
value, such as 0, in the shared card selectors for services.css (3070-3075),
homepage.css (7565-7570), and careers.css (3665-3670), covering all four corner
declarations at each site.
Source: Linters/SAST tools
What this is
Sprint E-2 from the groomed schedule — finishing the component library for the paved-path goal.
Shipped
services-card×6/33 rules,home-service-card×6/20,about-value-card×3/25,careers-value-card×6/27), additive on the modules. A card now readsjt-info-card <page>-card <instance>— global core → page core → instance tweaks. Value-different tie scan clean on all four pages; only the 4 card-page bundle fingerprints changed; screenshots green.jt-reviews-boxslider design restored (decision per Paul's delegation): the intended testimonial arrow-nav + card refinements were silently purged (runtimepp-swiper/pp-reviewclasses, no shield — same accident class as the skip-link). Greedy entries restore it; assets verified; static captures unchanged (the design lives in hover/multi-slide states) — full critical suite green with zero baseline changes.themes/beaver/layouts/page/starter-example.html.txt— the copy-me page shell (slice recipe, hero, three-tier card, shared partials), kept.txtso Hugo ignores it.bin/qtestcomponent maps: info-card/cta-banner/header-cta + the cta partial map to their consumer pages instead of escalating to--all.new-page.mdinstead. No forced abstractions.Verification
Full macOS system suite 65/119 zero failures, zero baseline changes; Linux
bin/dtest-allEXIT=0; scoped gates per commit.Next per the groomed schedule
Sprint E-3 (one CTA source): parametrize the cta partial, collapse the 6 inline template copies, fix the duplicate data-node attr.
🤖 Generated with Claude Code
https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
Summary by CodeRabbit
Style
Documentation
Tests