Skip to content

feat: build Home layout per Figma — animations, CategoriesResult, layout fixes#223

Merged
Agbeleshe merged 4 commits into
Hub-of-Evolution:mainfrom
gregemax:fig
Apr 28, 2026
Merged

feat: build Home layout per Figma — animations, CategoriesResult, layout fixes#223
Agbeleshe merged 4 commits into
Hub-of-Evolution:mainfrom
gregemax:fig

Conversation

@gregemax
Copy link
Copy Markdown
Contributor

Summary

Implements the missing Home page layout per Figma design.


Changes

app/globals.css

  • Added missing @keyframes for fadeSlideDown, fadeSlideUp, cardSlideIn, popIn and their utility classes
  • Without these, BrowseCategories was permanently stuck at opacity-0 (all cards invisible)
  • Removed body { padding: 5px } that was creating an unwanted gap around full-width sections (hero, feature bar, testimonials)

components/landing/CategoriesResult.tsx (new)

  • Responsive 4-column product card grid (1-col mobile → 2-col tablet → 4-col desktop)
  • Each card: category badge, product image with hover zoom, artisan name, USDC price, Buy Now CTA
  • All cards link to /market
  • "View all" link on desktop, shown below grid on mobile

app/page.tsx

  • Added CategoriesResult import and section between BrowseCategories and TopCourses
  • Removed empty className="" on wrapper div

Sections order (matches Figma)

  1. Hero
  2. Browse Categories (carousel — now visible with fixed animations)
  3. Categories Result (new — artisan product cards)
  4. Top Courses
  5. Feature Bar
  6. Testimonials
  7. Featured Courses

Closes #2

- Add EscrowResolvedEvent struct with arbitrator: Address field
- Add emit_escrow_resolved_event helper (topic: escrow_resolved)
- Emit EscrowResolvedEvent in resolve_dispute alongside existing EscrowEvent

Off-chain systems can now track arbitrator identity per resolution
to build reputation/history scores.
Hub-of-Evolution#211)

Replace all synchronous OnboardingClient.update_reputation /
update_user_metrics calls with ReputationUpdateEvent emissions.

- Add ReputationUpdateEvent struct (address, deltas, metrics, token, ts)
- Add emit_reputation_update helper (topic: reputation_update)
- Replace 5 call sites: release_funds, auto_release, refund_to_buyer,
  resolve_dispute, recurring escrow cycle

Off-chain indexers subscribe to 'reputation_update' events and apply
updates asynchronously. Escrow financial operations no longer revert
if the onboarding contract is paused, upgraded, or buggy.
…instance storage (Hub-of-Evolution#206)

Global platform config keys are read on every escrow operation.
Instance storage is cheaper (no per-key rent) and appropriate for
contract-wide static config.

Changes:
- All get/set calls for PlatformConfig, MaxReleaseWindow, and
  WhitelistedTokens switched from persistent() to instance()
- Removed all extend_persistent() calls for those three keys
- Added extend_instance_ttl(TTL_THRESHOLD, TTL_EXTENSION) in
  get_platform_config_internal (hot path) to keep instance alive
- Add missing CSS animation keyframes (fadeSlideDown, fadeSlideUp,
  cardSlideIn, popIn) so BrowseCategories section renders correctly
  instead of staying opacity-0
- Create CategoriesResult component: responsive 4-col product card
  grid with category badge, artisan name, USDC price, and Buy Now CTA
  linked to /market
- Wire CategoriesResult into page.tsx between BrowseCategories and
  TopCourses
- Remove body { padding: 5px } that was breaking full-width sections
@Agbeleshe Agbeleshe merged commit 1e27464 into Hub-of-Evolution:main Apr 28, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

(Frontend): Build Home Layout per Figma (Missing Page)

2 participants