Skip to content

feat: enhance user feedback and expand community experience - #150

Merged
alodiaalmira merged 7 commits into
developfrom
feat/games-management-admin
Aug 7, 2026
Merged

feat: enhance user feedback and expand community experience#150
alodiaalmira merged 7 commits into
developfrom
feat/games-management-admin

Conversation

@reyowner

@reyowner reyowner commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

Changes

  • Implementing toast notifications for create, edit, delete, invite, and registration actions across the application.
  • Improving success and error feedback for administrative workflows with better validation and partial-success handling.
  • Updating Discord sign-in to consistently open in the browser across desktop, mobile, and native environments.
  • Implementing a new Community page with dedicated Overview, Events, Game Servers, and Game Guilds sections.
  • Adding an Events page with support for featured event content and media.
  • Introducing reusable Community components to improve maintainability and consistency.
  • Improving game listing subtitles using route-based information.
  • Enabling tournament notification links to navigate directly to the relevant tournament.
  • Displaying total Players Online in the server statistics.
  • Preventing games associated with tournaments from being deleted.
  • Applying review findings to improve styling, validation, formatting, and overall code quality.

Included

  • Toast notification system
  • Community page and navigation
  • Events feature
  • Discord authentication improvements
  • Tournament notification navigation
  • Enhanced game server statistics
  • Game management safeguards
  • Reusable community components
  • User feedback and UI improvements
  • Code quality and review fixes

@vercel

vercel Bot commented Aug 6, 2026

Copy link
Copy Markdown

Deployment failed for project black-rose with the following error:

You don't have permission to create a Preview Deployment for this Vercel project: black-rose.

View Documentation: https://vercel.com/docs/accounts/team-members-and-roles

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The pull request adds Sonner notifications across management and registration flows, mounts the global Toaster, simplifies Discord OAuth routing, adds tournament notification navigation, expands the community page into extracted tabs, updates game subtitles and server statistics, and protects referenced games from deletion.

Changes

Toast feedback

Layer / File(s) Summary
Sonner foundation
src/components/ui/sonner.tsx, src/routes/__root.tsx
The Toaster uses explicit utility classes and renders in the root route.
Admin operation feedback
src/features/admin/features/games/..., src/features/admin/features/members/..., src/features/admin/features/tournaments/...
Administrative operations now show success or error toasts. Game deletion checks tournament references before deletion.
Team and registration feedback
src/features/teams/..., src/features/tournaments/components/*RegistrationDialog.tsx
Team, invitation, and registration operations now show normalized success or error toasts.

Discord OAuth routing

Layer / File(s) Summary
Browser and native OAuth flow
src/features/auth/services/discord.ts, src/lib/discord-url.ts, src/routes/login.tsx
Non-Capacitor OAuth uses the browser. Capacitor retains native PKCE OAuth. Discord-app handoff and related login UI were removed.

Community page restructuring

Layer / File(s) Summary
Community tab components
src/features/community/components/CommunityTabs.tsx, src/features/community/components/EventCard.tsx, src/features/community/components/EventsTab.tsx, src/features/community/components/GameCard.tsx, src/features/community/components/*Tab.tsx
The pull request adds shared tab definitions, event and game cards, and overview, events, server, and guild tab components.
Community route integration
src/routes/community.index.tsx, src/features/community/components/CommunityPortrait.tsx
The route imports the extracted components, renders the Events tab, and updates community description content.

Route-linked UI updates

Layer / File(s) Summary
Route navigation and display values
src/features/notifications/components/NotificationBell.tsx, src/features/game-servers/components/GameServersOverlay.tsx, src/routes/servers.index.tsx
Tournament notification links navigate internally, game subtitles use route mappings, and the server statistic displays total players as “Players Online”.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant LoginRoute
  participant DiscordOAuth
  participant BrowserOrCapacitor
  LoginRoute->>DiscordOAuth: startDiscordOAuth()
  alt Capacitor native
    DiscordOAuth->>BrowserOrCapacitor: Start PKCE OAuth
  else Non-Capacitor
    DiscordOAuth->>BrowserOrCapacitor: Navigate to browser authorization URL
  end
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 34.38% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: improved user feedback through toast notifications and expanded community features.
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/games-management-admin

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/components/ui/sonner.tsx`:
- Around line 13-18: Update the custom Sonner class strings in the toast
configuration to use important utilities for properties that conflict with
Sonner defaults, including shadow/background, borders, and action/cancel button
font size, colors, backgrounds, and borders. Preserve the existing custom theme
and apply the stronger utilities to both general and button-specific styles.

In `@src/features/admin/features/games/components/CreateGameModal.tsx`:
- Line 224: Update the success handling in the CreateGameModal submission flow
to account for failures caught by the image-upload and role-creation blocks.
Track whether either setup step fails, and avoid the unconditional success
toast; instead show the appropriate partial-success/error message or return
before reporting success when setup is incomplete.

In `@src/features/game-servers/components/GameServersOverlay.tsx`:
- Around line 28-30: Update the game route mapping in GameServersOverlay by
removing quotes from the palworld and valorant keys, while keeping
where-winds-meet quoted because its hyphens require a string key.

In `@src/features/teams/components/EditTeamDialog.tsx`:
- Around line 87-92: Handle the undefined gameId path in the save flow by
ensuring users receive the same error toast before the early return, or by
disabling the Save button until gameId is available. Update the relevant gameId
guard and the Save button’s disabled condition, preserving the existing inline
error state and successful submission behavior.

In `@src/routes/login.tsx`:
- Line 161: Fix the Prettier formatting for the descriptive text near the login
route’s Discord sign-in content by wrapping the line according to the project’s
configured formatter. Preserve the existing wording and behavior.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 2dda9db3-ecd5-433b-9765-f8a731ce3568

📥 Commits

Reviewing files that changed from the base of the PR and between 06ed1d7 and 5ab1da9.

📒 Files selected for processing (21)
  • src/components/ui/sonner.tsx
  • src/features/admin/features/games/components/CreateGameModal.tsx
  • src/features/admin/features/games/components/EditGameModal.tsx
  • src/features/admin/features/games/components/GamesManagement.tsx
  • src/features/admin/features/games/services/games.service.ts
  • src/features/admin/features/members/components/MembersManagement.tsx
  • src/features/admin/features/tournaments/components/CreateTournamentModal.tsx
  • src/features/admin/features/tournaments/components/EditTournamentModal.tsx
  • src/features/admin/features/tournaments/components/TournamentsManagement.tsx
  • src/features/auth/services/discord.ts
  • src/features/game-servers/components/GameServersOverlay.tsx
  • src/features/notifications/components/NotificationBell.tsx
  • src/features/teams/components/CreateTeamDialog.tsx
  • src/features/teams/components/EditTeamDialog.tsx
  • src/features/teams/components/InviteMemberDialog.tsx
  • src/features/tournaments/components/RequestTournamentRegistrationDialog.tsx
  • src/features/tournaments/components/SelectTeamRegistrationDialog.tsx
  • src/lib/discord-url.ts
  • src/routes/__root.tsx
  • src/routes/login.tsx
  • src/routes/servers.index.tsx

Comment thread src/components/ui/sonner.tsx Outdated
Comment thread src/features/admin/features/games/components/CreateGameModal.tsx Outdated
Comment on lines 28 to 30
"palworld": "/servers",
"where-winds-meet": "/guilds",
"valorant": "/tournaments",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Fix the reported Prettier errors.

The configured prettier/prettier rule rejects the quoted palworld and valorant keys. Remove those quotes. Keep "where-winds-meet" quoted because its hyphens require a string key.

Proposed fix
   const hardcodedHrefs: Record<string, CommunityGame["href"]> = {
-    "palworld": "/servers",
+    palworld: "/servers",
     "where-winds-meet": "/guilds",
-    "valorant": "/tournaments",
+    valorant: "/tournaments",
   };
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"palworld": "/servers",
"where-winds-meet": "/guilds",
"valorant": "/tournaments",
palworld: "/servers",
"where-winds-meet": "/guilds",
valorant: "/tournaments",
🧰 Tools
🪛 ESLint

[error] 28-28: Replace "palworld" with palworld

(prettier/prettier)


[error] 30-30: Replace "valorant" with valorant

(prettier/prettier)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/features/game-servers/components/GameServersOverlay.tsx` around lines 28
- 30, Update the game route mapping in GameServersOverlay by removing quotes
from the palworld and valorant keys, while keeping where-winds-meet quoted
because its hyphens require a string key.

Source: Linters/SAST tools

Comment thread src/features/teams/components/EditTeamDialog.tsx
Comment thread src/routes/login.tsx Outdated
@reyowner reyowner changed the title feat: implement toast notif and some fixes feat: implement toast notifications and improve user feedback Aug 6, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/features/admin/features/games/components/CreateGameModal.tsx`:
- Around line 225-242: The partial-failure toast in the game creation flow
should use operation-neutral wording because failures may involve roles, image
updates, or persistence rather than uploads. Update the message built in the
failures branch around headerImageFailed, iconImageFailed, and rolesFailed to
say “failed during setup,” while preserving the existing failure labels and
success behavior.

In `@src/routes/community.index.tsx`:
- Around line 345-346: Update the community copy near the honesty and integrity
statement so the compound subject “Trust and loyalty” uses a plural verb, while
preserving the sentence’s meaning and surrounding wording.

In `@src/routes/login.tsx`:
- Around line 161-162: Adjust the JSX text line break in the login page
description so “Black” ends the first line and “Rose.” begins the second line,
matching Prettier’s approved formatting.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 03e60f5b-e89e-4055-81dc-2ff757255653

📥 Commits

Reviewing files that changed from the base of the PR and between 5ab1da9 and 5e55037.

📒 Files selected for processing (7)
  • src/components/ui/sonner.tsx
  • src/features/admin/features/games/components/CreateGameModal.tsx
  • src/features/community/components/CommunityPortrait.tsx
  • src/features/game-servers/components/GameServersOverlay.tsx
  • src/features/teams/components/EditTeamDialog.tsx
  • src/routes/community.index.tsx
  • src/routes/login.tsx
💤 Files with no reviewable changes (1)
  • src/features/game-servers/components/GameServersOverlay.tsx
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/components/ui/sonner.tsx
  • src/features/teams/components/EditTeamDialog.tsx

Comment thread src/features/admin/features/games/components/CreateGameModal.tsx
Comment thread src/routes/community.index.tsx Outdated
Comment thread src/routes/login.tsx Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (7)
src/features/community/components/EventCard.tsx (4)

30-36: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Lazy-load the YouTube embed and use the no-cookie domain.

EventsTab renders several cards at once, and each embed loads third-party scripts immediately. Add loading="lazy" to defer offscreen embeds. Use www.youtube-nocookie.com to reduce tracking before the visitor plays the video.

♻️ Proposed change
           <iframe
-            src={`https://www.youtube.com/embed/${youtubeVideoId}`}
+            src={`https://www.youtube-nocookie.com/embed/${youtubeVideoId}`}
             title={title}
             className="h-full w-full"
+            loading="lazy"
+            referrerPolicy="strict-origin-when-cross-origin"
             allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
             allowFullScreen
           />
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/features/community/components/EventCard.tsx` around lines 30 - 36, Update
the YouTube iframe in EventCard to use the www.youtube-nocookie.com embed host
and add lazy loading via the iframe’s loading attribute, while preserving the
existing video ID, title, permissions, and fullscreen behavior.

9-9: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Remove the unused accentLine prop.

accentLine is required in EventCardProps and destructured at Line 21, but no JSX in this component consumes it. Only accentTag is applied, at Line 51. Every caller must pass a value that has no effect. Remove the prop, or apply it as an accent line like GameCard.tsx does at Line 61.

♻️ Proposed removal
   /** Image source for static events (when youtubeVideoId is not provided) */
   imageSrc?: string;
-  accentLine: string;
   accentTag: string;
   imageSrc,
-  accentLine,
   accentTag,

Then drop accentLine from the EventCard call in src/features/community/components/EventsTab.tsx at Line 70. The accentLine values in the EVENTS array become unused as well.

Also applies to: 21-21

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/features/community/components/EventCard.tsx` at line 9, Remove the unused
accentLine property from EventCardProps and its destructuring in EventCard, then
stop passing accentLine from EventsTab and remove the now-unused accentLine
values from the EVENTS data. Keep the existing accentTag behavior unchanged.

1-13: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Model the media props as a discriminated union.

The current type allows a card with neither youtubeVideoId nor imageSrc. In that case Line 40 renders <img src={undefined}>, which produces a broken image. Make the two media modes mutually exclusive so the compiler rejects the invalid combination.

♻️ Proposed typing
-interface EventCardProps {
-  title: string;
-  date: string;
-  description: string;
-  /** YouTube video ID for embed, or null for image-only events */
-  youtubeVideoId?: string;
-  /** Image source for static events (when youtubeVideoId is not provided) */
-  imageSrc?: string;
+type EventCardMedia =
+  | { youtubeVideoId: string; imageSrc?: never }
+  | { youtubeVideoId?: never; imageSrc: string };
+
+type EventCardProps = EventCardMedia & {
+  title: string;
+  date: string;
+  description: string;
   accentTag: string;
   /** Index for numbered marker (1-based) */
   index?: number;
-}
+};

Also applies to: 39-43

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/features/community/components/EventCard.tsx` around lines 1 - 13, Update
EventCardProps to use a discriminated union for its media fields, requiring
either a youtubeVideoId for video cards or an imageSrc for image-only cards
while disallowing both fields from being omitted or provided together. Adjust
the EventCard rendering logic around the media branch to narrow on the selected
property and preserve the existing video and image behavior.

45-45: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Use the v4 gradient utility name for consistency.

EventCard.tsx:45 uses bg-gradient-to-t, while GameCard.tsx:50 uses bg-linear-to-t. Tailwind v4 names linear gradients with bg-linear-*; use that class here if legacy gradient aliases are not intentionally needed.

♻️ Proposed change
-            <div className="absolute inset-0 bg-gradient-to-t from-[oklch(0.055_0_0)] via-[oklch(0.055_0_0/0.35)] to-transparent" />
+            <div className="absolute inset-0 bg-linear-to-t from-[oklch(0.055_0_0)] via-[oklch(0.055_0_0/0.35)] to-transparent" />
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/features/community/components/EventCard.tsx` at line 45, Update the
gradient class on the overlay div in EventCard to use Tailwind v4’s
bg-linear-to-t utility instead of bg-gradient-to-t, matching the existing
GameCard convention while preserving the current gradient colors and direction.
src/features/community/components/EventsTab.tsx (1)

35-43: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

The pagination path is currently unreachable.

INITIAL_VISIBLE is 3 and EVENTS has 3 items, so hasMore at Line 39 is always false and the "Load More Events" button at Lines 77-90 never renders. If you keep the control for future events, increment by a page size instead of jumping to the full list.

♻️ Proposed change
-const INITIAL_VISIBLE = 3;
+const PAGE_SIZE = 2;
 
 export function EventsTab() {
-  const [visibleCount, setVisibleCount] = useState(INITIAL_VISIBLE);
+  const [visibleCount, setVisibleCount] = useState(PAGE_SIZE);
   const hasMore = EVENTS.length > visibleCount;
 
   const handleLoadMore = () => {
-    setVisibleCount(EVENTS.length);
+    setVisibleCount((count) => Math.min(count + PAGE_SIZE, EVENTS.length));
   };
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/features/community/components/EventsTab.tsx` around lines 35 - 43, Update
EventsTab’s handleLoadMore to increase visibleCount by a page-sized increment
rather than setting it directly to EVENTS.length, preserving the hasMore-driven
“Load More Events” path for future items.
src/features/community/components/GameCard.tsx (1)

40-43: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Reduce the redundant tab stops per card.

Each card contains three Link elements that all navigate to ctaHref. Keyboard and screen reader users must move through three identical destinations per card. Keep the title and the CTA focusable, and remove the banner link from the tab order.

♻️ Proposed change
       <Link
         to={ctaHref}
+        tabIndex={-1}
+        aria-hidden="true"
         className="relative block h-48 overflow-hidden focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/40 sm:h-56"
       >

Also applies to: 82-87, 94-106

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/features/community/components/GameCard.tsx` around lines 40 - 43, Update
the banner Link alongside the title and CTA Links in GameCard so it remains
clickable but is removed from sequential keyboard focus using the appropriate
tabIndex value. Keep the title and CTA Links focusable and preserve their
existing navigation to ctaHref.
src/features/community/components/GameGuildsTab.tsx (1)

4-39: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Extract the shared tab section shell.

This component and GameServersTab.tsx share the same markup: the <main> wrapper, the grid background overlay, the container, the eyebrow/heading/description block, and the card grid. Only the text and the GameCard props differ. Extract a CommunitySection component that accepts eyebrow, heading, description, and children, then render each tab as a thin wrapper. The same shell would also serve EventsTab.tsx Lines 46-59.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/features/community/components/GameGuildsTab.tsx` around lines 4 - 39,
Extract the duplicated section markup from GameGuildsTab and GameServersTab into
a shared CommunitySection component accepting eyebrow, heading, description, and
children. Move the main wrapper, background overlay, container, intro block, and
card-grid layout into that component, then make GameGuildsTab, GameServersTab,
and the corresponding EventsTab section thin wrappers that provide their text
and card content.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@src/features/community/components/EventCard.tsx`:
- Around line 30-36: Update the YouTube iframe in EventCard to use the
www.youtube-nocookie.com embed host and add lazy loading via the iframe’s
loading attribute, while preserving the existing video ID, title, permissions,
and fullscreen behavior.
- Line 9: Remove the unused accentLine property from EventCardProps and its
destructuring in EventCard, then stop passing accentLine from EventsTab and
remove the now-unused accentLine values from the EVENTS data. Keep the existing
accentTag behavior unchanged.
- Around line 1-13: Update EventCardProps to use a discriminated union for its
media fields, requiring either a youtubeVideoId for video cards or an imageSrc
for image-only cards while disallowing both fields from being omitted or
provided together. Adjust the EventCard rendering logic around the media branch
to narrow on the selected property and preserve the existing video and image
behavior.
- Line 45: Update the gradient class on the overlay div in EventCard to use
Tailwind v4’s bg-linear-to-t utility instead of bg-gradient-to-t, matching the
existing GameCard convention while preserving the current gradient colors and
direction.

In `@src/features/community/components/EventsTab.tsx`:
- Around line 35-43: Update EventsTab’s handleLoadMore to increase visibleCount
by a page-sized increment rather than setting it directly to EVENTS.length,
preserving the hasMore-driven “Load More Events” path for future items.

In `@src/features/community/components/GameCard.tsx`:
- Around line 40-43: Update the banner Link alongside the title and CTA Links in
GameCard so it remains clickable but is removed from sequential keyboard focus
using the appropriate tabIndex value. Keep the title and CTA Links focusable and
preserve their existing navigation to ctaHref.

In `@src/features/community/components/GameGuildsTab.tsx`:
- Around line 4-39: Extract the duplicated section markup from GameGuildsTab and
GameServersTab into a shared CommunitySection component accepting eyebrow,
heading, description, and children. Move the main wrapper, background overlay,
container, intro block, and card-grid layout into that component, then make
GameGuildsTab, GameServersTab, and the corresponding EventsTab section thin
wrappers that provide their text and card content.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c3a3e467-e176-4260-b460-a20a33f22113

📥 Commits

Reviewing files that changed from the base of the PR and between 5e55037 and 5721640.

⛔ Files ignored due to path filters (1)
  • src/assets/blackrose-valorant-event.jpg is excluded by !**/*.jpg
📒 Files selected for processing (8)
  • src/features/community/components/CommunityTabs.tsx
  • src/features/community/components/EventCard.tsx
  • src/features/community/components/EventsTab.tsx
  • src/features/community/components/GameCard.tsx
  • src/features/community/components/GameGuildsTab.tsx
  • src/features/community/components/GameServersTab.tsx
  • src/features/community/components/OverviewTab.tsx
  • src/routes/community.index.tsx

@reyowner reyowner changed the title feat: implement toast notifications and improve user feedback feat: enhance user feedback and expand community experience Aug 6, 2026
@alodiaalmira
alodiaalmira merged commit dd17ea4 into develop Aug 7, 2026
2 of 3 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.

2 participants