Skip to content

feat(dashboard): standardize guild and integration page states - #318

Merged
Lakes41 merged 1 commit into
Adamantine-guild:mainfrom
mishellerv:feat/guilds-integrations-states
Jul 29, 2026
Merged

feat(dashboard): standardize guild and integration page states#318
Lakes41 merged 1 commit into
Adamantine-guild:mainfrom
mishellerv:feat/guilds-integrations-states

Conversation

@mishellerv

Copy link
Copy Markdown
Contributor

Description

Standardizes loading, error, and empty state handling across the /guilds and /integrations dashboard routes. Extracts shared LoadingSkeleton, ErrorState, and EmptyState components (already partially present, now made reusable) so both routes follow the same visual and structural pattern already established in /dashboard, /passes, /members, and /activity.

Linked Issue

Closes #255

Type of Change

  • 🐛 Bug fix
  • ✨ New feature / enhancement
  • 📝 Documentation update
  • 🔧 Chore / refactor
  • 🧪 Tests only

Changes Made

  • apps/dashboard/components/LoadingSkeleton.tsx — new shared skeleton component, reused across /guilds and /integrations
  • apps/dashboard/components/ErrorState.tsx — new shared styled error component
  • apps/dashboard/components/EmptyState.tsx — extended with flexible props and responsive styling for reuse across routes
  • apps/dashboard/components/GuildsListState.tsx / IntegrationsListState.tsx — route-specific adapters that wire the shared components into each page's data-fetching state, avoiding duplicated logic
  • apps/dashboard/app/guilds/page.tsx — now renders loading/error/empty/unsupported states consistently
  • apps/dashboard/app/integrations/page.tsx, app/integrations/loading.tsx, app/integrations/error.tsx — added loading/error boundaries and empty-state handling
  • apps/dashboard/test/list-page-states.test.ts — 6 new tests covering loading, error, and empty rendering for both routes
  • apps/dashboard/README.md — documented the ?mockState=error|empty simulation mechanism for manual testing

Test Evidence

Manual verification:

  • /guilds?mockState=error and /integrations?mockState=error render the styled error state
  • /guilds?mockState=empty and /integrations?mockState=empty render the distinct empty state
  • Default (no query param) shows the loading skeleton followed by data

Checklist

  • I have read CONTRIBUTING.md
  • This PR is linked to an open issue
  • pnpm typecheck passes with no errors
  • pnpm lint passes (or issues are pre-existing and documented)
  • pnpm test passes (all existing tests still pass)
  • The dashboard starts and renders correctly (if UI or API code changed)
  • The Discord bot still starts and responds to commands (if bot code changed)
  • Docs site renders correctly (if docs changed): pnpm dev:docs
  • No secrets, tokens, or API keys are included in this PR
  • Environment variable changes are reflected in .env.example
  • I have updated documentation if new behaviour was introduced

Screenshots / Recordings

Additional Notes

This PR intentionally scopes only the changes required for #255. Unrelated dead-code cleanup and toolchain config fixes discovered during development (unused imports, ignoreDeprecations version mismatch, an ESLint global) were kept out of this PR and will be submitted separately to keep this review focused.

Additional Notes

This PR intentionally scopes only the changes required for #255. Unrelated dead-code cleanup and toolchain config fixes discovered during development (unused imports, ignoreDeprecations version mismatch, an ESLint global) were kept out of this PR and will be submitted separately to keep this review focused.

Note: pnpm typecheck passes cleanly for @guildpass/dashboard (the package touched in this PR). Running the full monorepo typecheck surfaces a pre-existing, unrelated error in apps/access-api/src/workers/indexer.ts (missing @guildpass/contracts module resolution) — confirmed present on the parent commit (71ead9a) as well, so it is not introduced by this change.

@Lakes41
Lakes41 merged commit f49eb60 into Adamantine-guild:main Jul 29, 2026
1 check 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.

Standardize loading, error, and empty states across the Guilds and Integrations pages

2 participants