Skip to content

refactor(ui): compose organizer empty states directly - #646

Merged
zacjones93 merged 5 commits into
codex/ui-start-admin-coveragefrom
codex/empty-state-component-migration
Jul 15, 2026
Merged

refactor(ui): compose organizer empty states directly#646
zacjones93 merged 5 commits into
codex/ui-start-admin-coveragefrom
codex/empty-state-component-migration

Conversation

@zacjones93

@zacjones93 zacjones93 commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • replace ten OrganizerEmptyState adapter render sites in the mirrored Start/Crew component cluster with direct children-driven @repo/ui EmptyState composition
  • preserve the audited plain/card surfaces, copy, icons, card nesting, action callbacks, optional action behavior, and Start/Crew source parity
  • let the Sources tab own its correct h2 hierarchy while keeping nested registration, prerequisite, and venue states at h3
  • update the adapter inventory and LAT contract to record ten migrated sites and nine remaining Start route-owned sites

Scope

This slice covers only:

  • registration-questions-editor
  • event-division-mapper (both prerequisite branches)
  • organizer/invites/invite-sources-list
  • organizer/schedule/venue-manager

It does not change route-level judges, shifts, waivers, cohosts, invites, or results consumers. No route logic, form schemas, handlers, server functions, payloads, or domain state changed.

Verification

  • focused Start consumer suites: 4 files / 10 tests passed
  • focused Crew consumer suites: 4 files / 10 tests passed
  • Start full suite: 152 files / 2,974 tests passed
  • Start and Crew type-checks passed
  • scoped Biome checks passed
  • UI inventory check passed
  • mirrored source parity passed for all four component pairs
  • lat check passed
  • git diff --check passed
  • GitNexus staged change analysis: medium risk, limited to the expected consumers and existing RegistrationQuestionsEditor execution flows

Crew full-suite baseline remains unchanged: 3 failed files / 2 failed tests / 3,182 passed. The failures are the pre-existing missing refund-status-badge and revenue-stats-display imports plus two stale event-import-tabs label assertions.


Summary by cubic

Compose organizer empty states directly with @repo/ui EmptyState, and add @repo/ui/metric for consistent preview summaries in Crew. UI and behavior stay the same; headings are correct and metrics use a compact, consistent style.

  • New Features

    • Added @repo/ui/metric (Root, Card, Inset, Label, Value) with tests and Storybook; exposed via apps/*/src/components/ui/metric.tsx.
    • Updated docs and inventory to include the new metric primitive.
  • Refactors

    • Replaced OrganizerEmptyState with EmptyState in: registration-questions-editor, event-division-mapper (both prerequisites), organizer/invites/invite-sources-list, and organizer/schedule/venue-manager (Start and Crew).
    • Adopted Metric in Crew summary UIs: crew-import-tabs, volunteer-import-flow, heats import preview, crew-copy-prior-event-panel, and crew-template-panel.
    • Preserved plain/card surfaces, copy, icons, and action callbacks; Sources tab uses h2 while nested states use h3; mirrored tests assert headings, optional actions, and metric labels/values.
    • No changes to route logic, form schemas, server functions, payloads, or domain state.

Written for commit d6316c1. Summary will update on new commits.

Review in cubic

@coderabbitai

coderabbitai Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@zacjones93, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 14 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: d2c84b19-57b8-4feb-a4d3-3ff67f6c89d4

📥 Commits

Reviewing files that changed from the base of the PR and between f1f2431 and 67388dd.

📒 Files selected for processing (18)
  • apps/crew/src/components/competition-settings/registration-questions-editor.tsx
  • apps/crew/src/components/event-division-mapper.tsx
  • apps/crew/src/components/organizer/invites/invite-sources-list.tsx
  • apps/crew/src/components/organizer/schedule/venue-manager.tsx
  • apps/crew/test/components/event-division-mapper.test.tsx
  • apps/crew/test/components/invite-sources-list.test.tsx
  • apps/crew/test/components/registration-questions-editor.test.tsx
  • apps/crew/test/components/venue-manager.test.tsx
  • apps/wodsmith-start/src/components/competition-settings/registration-questions-editor.tsx
  • apps/wodsmith-start/src/components/event-division-mapper.tsx
  • apps/wodsmith-start/src/components/organizer/invites/invite-sources-list.tsx
  • apps/wodsmith-start/src/components/organizer/schedule/venue-manager.tsx
  • apps/wodsmith-start/test/components/event-division-mapper.test.tsx
  • apps/wodsmith-start/test/components/invite-sources-list.test.tsx
  • apps/wodsmith-start/test/components/registration-questions-editor.test.tsx
  • apps/wodsmith-start/test/components/venue-manager.test.tsx
  • docs/ui-library/organizer-empty-state-adapter.md
  • lat.md/ui-library.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/empty-state-component-migration

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@zacjones93

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

This was referenced Jul 11, 2026
@zacjones93

Copy link
Copy Markdown
Contributor Author

LGTM — no actionable findings at exact head 67388dd against base f1f2431.\n\nIndependent review covered the complete 18-file diff:\n\n- Scope is bounded to the four mirrored component pairs and their consumer tests/docs. Production diffs change only the OrganizerEmptyState import/render blocks; route logic, domain state, form/RHF code, schemas, handlers, server functions, DnD, and payload construction are untouched.\n- The migration follows children-driven composition: explicit EmptyState.Root/Card surfaces and Icon/Title/Description/Actions parts, with no boolean mode or domain props.\n- The five sites per app preserve the adapter classes, plain/card selection, card -> padding wrapper -> Root nesting, copy, decorative icon treatment, callbacks, icons, and action omission. Invite Sources intentionally moves to h2 under the Invites h1; registration, event prerequisites, and venue remain h3, with venue beneath its existing Venues h2.\n- Start/Crew production files are byte-identical for all four pairs. Tests mirror apart from app-specific names/LAT refs and exercise both event prerequisite branches plus registration, optional source action, and venue dialog behavior.\n- Inventory is exact: original source usage was Start 14 + Crew 5 = 19; this slice migrates Start 5 + Crew 5 = 10; remaining production adapter usage is Start 9 across 6 files and Crew 0.\n- Unique LAT leaves resolve and lat check passes. Focused verification passed in each app: 4 files / 10 tests; both app type-checks, UI inventory check, and git diff --check passed.\n- Live review threads are empty. CodeRabbit is marked successful but reported rate limiting. At review time all builds, lints, both E2E shards, Crew demo E2E, GitGuardian, and branch-stack checks passed; only aggregate/downstream typecheck and Start-test jobs remained pending.\n\nGitNexus was refreshed to the exact head, but its MCP reader reported a LadybugDB storage-version mismatch, so the risk conclusion is grounded in the exact diff, call-site search, parity checks, focused tests, type-checks, LAT, and live GitHub state.

@zacjones93 zacjones93 closed this Jul 15, 2026
@zacjones93
zacjones93 merged commit d6316c1 into codex/ui-start-admin-coverage Jul 15, 2026
24 checks passed
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.

1 participant