Storefront polish#2041
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
2 Skipped Deployments
|
|
Deployment failed with the following error: Learn More: https://vercel.com/filiph?upgradeToPro=build-rate-limit |
There was a problem hiding this comment.
1 issue found and verified against the latest diff
Confidence score: 4/5
- In
apps/storefront/src/components/actionable/pagination.tsx,parseIntwill accept malformedpagequery values like2abc, which can route users to an unintended page instead of falling back tofirstPage; this is a mild but user-visible pagination correctness risk if merged as-is — switch to strict integer validation (full-string numeric check) before clamping.
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
❌ 1 Tests Failed:
View the top 3 failed test(s) by shortest run time
View the full list of 198 ❄️ flaky test(s)
To view more test analytics, go to the Test Analytics Dashboard |
0f46807 to
97307ee
Compare
There was a problem hiding this comment.
1 issue found across 3 files (changes from recent commits).
Tip: Review your code locally with the cubic CLI to iterate faster.
Re-trigger cubic
cf67e28 to
7052b0a
Compare
Bundle ReportChanges will decrease total bundle size by 608.03kB (-9.51%) ⬇️. This is within the configured threshold ✅ Detailed changes
|
3d9d981 to
1921dd3
Compare
…regrounds. The Alert was the design system's outlier: a hard-coded bg-yellow-200 no tenant theme could recolor, and the error severity set a saturated --state-danger background with no foreground, leaving illegible dark --text on red. Promote warning to themeable --color-warning-* sources plus a --surface-warning/--text-warning-strong pair, map each severity to a surface + AA-clearing on-surface ink, and derive an ARIA role (alert for warning/error). Pin the new token pair to WCAG AA in the gate.
The vegan/sale/free-shipping overlay badges already read tokens, but the gift-card (bg-purple-600) and subscription (bg-blue-600) fills were hard-coded and no tenant theme could recolor them. Promote both to --badge-gift-card-bg/--badge-subscription-bg (defaults unchanged), collapse h-3 w-3 to size-3, and pin white-on-badge AA in the gate.
…tion through the shop cascade. The collection/recommendation/search wrappers were near-identical delegations, but recommendation rendered the raw surface preset instead of productCardSurfaceForShop — so tenants could theme collection/search cards but not recommendation cards. Extract one generic SurfaceProductCard that resolves any surface through the full cascade; the three wrappers now delegate, pinning only their surface. Recommendation cards become tenant-customizable like the rest, and no-extensions shops stay byte-identical.
The info severity rendered on neutral --surface-1, indistinguishable from a plain card. Add a light-info surface (--surface-info) paired with the existing dark-blue info ink (--text-info-strong), completing the severity color system, and pin the pair to WCAG AA in the gate.
The decrease button disabled at the lower bound, but increase never disabled at the shop's maxQuantity — at the ceiling it silently no-opped (the clamp swallowed the click) with no visual or assistive-tech signal. Disable it at quantity >= maxQuantity, mirroring decrease-at-min.
…the image. The fallback initials emitted one letter per word, so a multi-word name overflowed the fixed-size circle, and runs of whitespace produced empty initials. Extracted a testable getInitials that takes the first + last word initials (capped at two) and collapses whitespace. The wrapper className was also spread onto the inner <Image>, so a caller's circle styling (e.g. the blog author's margins) wrongly landed on the image — the image now always just fills its circle.
… target. The remove button was display:contents, erasing its box so keyboard users got no hit area and no visible focus indicator; it now renders as a small padded target with the shared focus-ring and a danger hover/focus color. The X icon used h-4 with no matching width, so lucide's 24px default left it rendered 16 tall x 24 wide (distorted) — switched both the tag and X icons to size-4.
… summary. The shipping, subtotal, discount, promo, and automatic-discount detail lines each hand-rolled the same flex justify-between row + muted Label. Consolidated them into one SummaryRow primitive that takes the label and renders the value (a Price, status text, or null while loading) as children, so every summary line stays visually consistent and future rows extend one component.
lucide icons render at a 24px default width/height, so a height-only class (h-3 / h-4) left them constrained vertically but 24px wide — squashed glyphs. Switched the export-cart download, info-bar mail/phone, geo-redirect check, and cart-summary lock icons to canonical size-* (both axes). Also dropped no-op text-lg/text-2xl/bare stroke classes and moved inline strokeWidth styles to the lucide strokeWidth prop.
…clamp. The free-shipping PackageIcon carried no size class (only no-op text-sm), so it rendered at lucide's 24px default inside the badge, and the vegan AttributeIcon used height-only h-4 — both distorted next to the size-3 gift/subscription icons. Unified all four badge icons to size-3. Also replaced VariantTitle's inline -webkit-box line-clamp style with the canonical line-clamp-2 utility.
There was a problem hiding this comment.
1 issue found across 2 files (changes from recent commits).
Tip: Review your code locally with the cubic CLI to iterate faster.
Re-trigger cubic
The `block` utility class conflicted with `line-clamp-2` by overriding the `display: -webkit-box` property required for multi-line truncation. Removing `block` allows `line-clamp-2` to function correctly.
No description provided.