feat: implement issues #173, #174, #175, #176#178
Merged
Chucks1093 merged 1 commit intoApr 26, 2026
Conversation
…layerorg#175, accesslayerorg#176 - accesslayerorg#173 Empty creator bio fallback: new CreatorBio component renders the bio when present, otherwise a consistent helper text ("This creator hasn't shared a bio yet."). Wired into CreatorCard (list surface) and CreatorProfileHeader (profile detail surface) so wording stays aligned. Whitespace-only bios are treated as missing. - accesslayerorg#174 Reusable percentage formatter: formatPercent in numberFormat.utils with stable edge-case behavior (null / undefined / NaN / Infinity all render as the placeholder; values smaller than the precision round cleanly; signed mode prefixes positive values with `+`). Refactored Change24hBadge to use it (replaces the hand-rolled `${change > 0 ? '+' : ''}${change.toFixed(2)}%`) and added a thin PercentageBadge component used in TradeDialog as a "X% of holdings" indicator on the sell flow. - accesslayerorg#175 Modal keyboard focus order: explicit data-focus-order markers on TradeDialog's amount input → Cancel → Confirm, matching the visual left-to-right reading order. Comment in the source documents the contract; covering test asserts the DOM order so a future refactor that swaps the buttons (and therefore the tab sequence) fails CI. - accesslayerorg#176 Unsupported avatar format note: FormFileUpload now validates the dropped/selected file against its `accept` list before kicking off the upload simulation, with a new `unsupported-format` render branch that surfaces a clear message ("That file format isn't supported. Use PNG, JPG.") and lets the user pick again. Validators live in src/utils/fileFormat.utils.ts. 29 new passing tests across 4 new test files (numberFormat: 9, CreatorBio: 6, fileFormat: 9, TradeDialog focus order: 5). pnpm lint and pnpm build are clean. The 5 pre-existing failures in KeySupplyBadge.test.tsx (fast-check property tests) are unchanged on this branch — they fail on main too and are out of scope. Fixes: accesslayerorg#173 Fixes: accesslayerorg#174 Fixes: accesslayerorg#175 Fixes: accesslayerorg#176
|
@Akpolo Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Bundles four small UX/quality issues into one PR.
CreatorBiocomponent renders the bio when present, otherwise a consistent helper text (This creator hasn't shared a bio yet.). Wired intoCreatorCard(list surface) andCreatorProfileHeader(profile detail surface) so wording stays aligned. Whitespace-only bios are treated as missing; a newbioprop was added toCreatorProfileHeader.formatPercentinnumberFormat.utils.tswith stable edge-case behavior (null / undefined / NaN / Infinity all render as the placeholder; values smaller than the precision round cleanly;signed: trueprefixes positives with+).Change24hBadgenow uses it (replaces the hand-rolled${change > 0 ? '+' : ''}${change.toFixed(2)}%), and a newPercentageBadgecomponent is the second consumer — applied inTradeDialogas aX% of holdingsindicator on the sell flow.data-focus-ordermarkers onTradeDialog's amount input → Cancel → Confirm match the visual left-to-right reading order in the footer. A source comment documents the contract; the covering test asserts DOM order so a future refactor that swaps the two buttons (and therefore the tab sequence) fails CI. Tab-sequence reachability of both Cancel and Confirm is also asserted.FormFileUploadnow validates the dropped/selected file against itsacceptlist before kicking off the upload simulation. Newunsupported-formatrender branch surfaces a clear message (That file format isn't supported. Use PNG, JPG.) and lets the user pick again. The validators (isFileAccepted,unsupportedFormatMessage) live insrc/utils/fileFormat.utils.tsand are individually tested.Test plan
pnpm lint— cleanpnpm build— cleanpnpm exec vitest run— 64 tests pass (was 35 baseline; +29 new tests across 4 new files)CreatorCardfor a creator with nodescriptionCreatorProfileHeaderwhenbiois omitted.bmpfor the avatar surfaces the unsupported-format notePre-existing failures
mainalready has 5 failures inKeySupplyBadge.test.tsx— fast-check property tests. They're unchanged on this branch and out of scope. Worth a follow-up issue.Fixes