Skip to content

feat: enhance ambassador card social media buttons#5110

Open
yashdarekar17 wants to merge 18 commits intoasyncapi:masterfrom
yashdarekar17:yashdarekar
Open

feat: enhance ambassador card social media buttons#5110
yashdarekar17 wants to merge 18 commits intoasyncapi:masterfrom
yashdarekar17:yashdarekar

Conversation

@yashdarekar17
Copy link

@yashdarekar17 yashdarekar17 commented Feb 8, 2026

Description

  • Replaced the plain text social media links (Twitter, GitHub, LinkedIn) on the Ambassador cards with brand-specific icons to improve visual consistency across the community page.

  • Implemented interactive hover states for each icon: black for GitHub and Twitter/X, and the official brand blue (#0077b5) for LinkedIn.

  • Refactored the Index component in pages/community/ambassadors/index.tsx to utilize existing icon components (IconTwitter, IconGithub, IconLinkedIn) while maintaining the original card layout and flexbox logic.

Related issue(s)
Fixes #5097

Summary by CodeRabbit

  • Style

    • Replaced text social links with icon buttons (Twitter, GitHub, LinkedIn) for cleaner visuals, consistent sizing, improved spacing, muted styling, and refined hover/color transitions (no underlines).
    • Minor heading, title spacing, and layout tweaks for improved presentation.
  • Refactor

    • Simplified image/container structure and adjusted alignment/gaps for better spacing and responsiveness.
  • New Features

    • Centralized ambassador program link used for all relevant buttons/CTAs.

@netlify
Copy link

netlify bot commented Feb 8, 2026

Deploy Preview for asyncapi-website ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 88a3588
🔍 Latest deploy log https://app.netlify.com/projects/asyncapi-website/deploys/69887d2e5437e7000800570a
😎 Deploy Preview https://deploy-preview-5110--asyncapi-website.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 8, 2026

📝 Walkthrough

Walkthrough

Replaces text social links with GitHub, LinkedIn, and Twitter icon components on the ambassadors page; introduces ambassadorProgramUrl constant and uses it for buttons/links; adjusts icon sizing, spacing, hover/color transitions, and minor layout/image wrapper/styling tweaks. No API or data-flow changes.

Changes

Cohort / File(s) Summary
Ambassadors page (UI & content)
pages/community/ambassadors/index.tsx
Added public icon components (Github, LinkedIn, Twitter) and replaced text links with icons (h-5 w-5); removed underlines, added hover color transitions and spacing; introduced ambassadorProgramUrl and replaced hardcoded hrefs; tightened title spacing, adjusted cover/image wrapper classes and member card layout.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 I swapped the words for shiny bits of lore,
Small logos hop where links were before,
GitHub, X, LinkedIn — neat and spry,
Cards now wink as cursors glide by,
A little rabbit clap — icons, let's soar!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: enhancing ambassador card social media buttons with icons instead of text.
Linked Issues check ✅ Passed The PR successfully implements all coding requirements from #5097: replaces text links with icon components (IconTwitter, IconGithub, IconLinkedIn), adds hover states (black for GitHub/Twitter, #0077b5 for LinkedIn), maintains h-5 w-5 sizing, and preserves card layout/flex positioning.
Out of Scope Changes check ✅ Passed All changes are directly related to the linked issue objectives. Minor adjustments like ambassadorProgramUrl constant and layout tweaks are supporting refactors that enhance the primary feature without introducing unrelated modifications.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
pages/community/ambassadors/index.tsx (2)

130-131: Minor: cursor-pointer is redundant inside a <Link>.

The <Link> already renders an <a> tag which defaults to cursor: pointer. The explicit cursor-pointer class is unnecessary but harmless.


118-120: Consider using ambassador.github as the key instead of array index.

Using index as a React key is a common anti-pattern when the list can be reordered or filtered. Since ambassador.github is guaranteed unique, it's a more stable key.

Proposed fix
-          {asyncapiAmbassadors.map((ambassador: Ambassador, index: number) => (
-            <div
-              key={index}
+          {asyncapiAmbassadors.map((ambassador: Ambassador) => (
+            <div
+              key={ambassador.github}

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 and usage tips.

@asyncapi-bot
Copy link
Contributor

asyncapi-bot commented Feb 8, 2026

⚡️ Lighthouse report for the changes in this PR:

Category Score
🔴 Performance 37
🟢 Accessibility 98
🟢 Best practices 92
🟢 SEO 100
🔴 PWA 33

Lighthouse ran on https://deploy-preview-5110--asyncapi-website.netlify.app/

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🤖 Fix all issues with AI agents
In `@pages/community/ambassadors/index.tsx`:
- Around line 147-171: The anchor elements that wrap IconTwitter, IconGithub,
and IconLinkedIn (the links using ambassador.twitterUrl, ambassador.githubUrl,
ambassador.linkedinUrl) lack accessible names; add aria-label attributes to each
anchor (e.g. aria-label="Twitter", aria-label="GitHub", aria-label="LinkedIn")
so screen readers announce them, keeping existing attributes (target, rel,
className, data-testid) intact.
- Around line 146-171: Optional social links are rendered even when absent
because ambassador.twitterUrl and ambassador.linkedinUrl can be undefined;
update the JSX in the Ambassadors members block to only render the Twitter <a>
(with IconTwitter) when ambassador.twitterUrl is truthy and only render the
LinkedIn <a> (with IconLinkedIn) when ambassador.linkedinUrl is truthy, leaving
the always-present GitHub <a> (and IconGithub) unchanged; ensure you keep the
same attributes (target, rel, className, data-testid where applicable) when
wrapping those anchors with the conditional rendering so tests and behavior
remain consistent.
- Around line 156-170: Remove the trailing whitespace causing Prettier failures
in the JSX anchor blocks that render icons (the <a> elements using
ambassador.githubUrl and ambassador.linkedinUrl and the IconGithub/IconLinkedIn
components); run npx prettier --write on pages/community/ambassadors/index.tsx
or manually trim trailing spaces on the lines around the GitHub and LinkedIn
anchors to fix the formatting and re-run CI.
- Around line 14-16: Reorder the three icon imports (IconGithub, IconLinkedIn,
IconTwitter) so they are grouped with the other ../../../components/ imports and
sorted according to the project's simple-import-sort rules (i.e., place them
alongside imports like IconX or other components and alphabetize within that
group); update the import block in pages/community/ambassadors/index.tsx by
moving the IconGithub, IconLinkedIn, IconTwitter lines into the components group
and arranging them in the correct lexical order to satisfy the linter.

Comment on lines 146 to 171
<div className='flex border-t p-2 gap-4' data-testid='Ambassadors-members-socials'>
<a
href={ambassador.twitterUrl}
target='_blank'
rel='noreferrer'
className='underline'
className='text-gray-500 hover:text-black transition-colors'
data-testid='Ambassadors-members-twitter'
>
Twitter ↗
<IconTwitter className='h-5 w-5 fill-current' />
</a>
<a href={ambassador.githubUrl} target='_blank' rel='noreferrer' className='ml-3 underline'>
Github ↗
<a
href={ambassador.githubUrl}
target='_blank'
rel='noreferrer'
className='text-gray-500 hover:text-black transition-colors'
>
<IconGithub className='h-5 w-5 fill-current' />
</a>
<a href={ambassador.linkedinUrl} target='_blank' rel='noreferrer' className='ml-3 underline'>
Linkedin ↗
<a
href={ambassador.linkedinUrl}
target='_blank'
rel='noreferrer'
className='text-gray-500 hover:text-[#0077b5] transition-colors'
>
<IconLinkedIn className='h-5 w-5 fill-current' />
</a>
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Social links render even when the ambassador has no Twitter or LinkedIn profile.

Unlike github (which is guaranteed), twitter and linkedin are optional fields. When absent, ambassador.twitterUrl is undefined, causing <a href={undefined}> to render as a link to the current page. Each social link should be conditionally rendered.

Based on learnings, the github field is required for ambassadors, but twitter and linkedin are not.

Suggested fix — conditionally render optional social links
 <div className='flex border-t p-2 gap-4' data-testid='Ambassadors-members-socials'>
-  <a
-    href={ambassador.twitterUrl}
-    target='_blank'
-    rel='noreferrer'
-    className='text-gray-500 hover:text-black transition-colors'
-    data-testid='Ambassadors-members-twitter'
-  >
-    <IconTwitter className='h-5 w-5 fill-current' />
-  </a>
-  <a
-    href={ambassador.githubUrl}
-    target='_blank'
-    rel='noreferrer'
-    className='text-gray-500 hover:text-black transition-colors'
-  >
-    <IconGithub className='h-5 w-5 fill-current' />
-  </a>
-  <a
-    href={ambassador.linkedinUrl}
-    target='_blank'
-    rel='noreferrer'
-    className='text-gray-500 hover:text-[`#0077b5`] transition-colors'
-  >
-    <IconLinkedIn className='h-5 w-5 fill-current' />
-  </a>
+  {ambassador.twitterUrl && (
+    <a
+      href={ambassador.twitterUrl}
+      target='_blank'
+      rel='noreferrer'
+      className='text-gray-500 hover:text-black transition-colors'
+      data-testid='Ambassadors-members-twitter'
+    >
+      <IconTwitter className='h-5 w-5 fill-current' />
+    </a>
+  )}
+  <a
+    href={ambassador.githubUrl}
+    target='_blank'
+    rel='noreferrer'
+    className='text-gray-500 hover:text-black transition-colors'
+  >
+    <IconGithub className='h-5 w-5 fill-current' />
+  </a>
+  {ambassador.linkedinUrl && (
+    <a
+      href={ambassador.linkedinUrl}
+      target='_blank'
+      rel='noreferrer'
+      className='text-gray-500 hover:text-[`#0077b5`] transition-colors'
+    >
+      <IconLinkedIn className='h-5 w-5 fill-current' />
+    </a>
+  )}
 </div>
📝 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
<div className='flex border-t p-2 gap-4' data-testid='Ambassadors-members-socials'>
<a
href={ambassador.twitterUrl}
target='_blank'
rel='noreferrer'
className='underline'
className='text-gray-500 hover:text-black transition-colors'
data-testid='Ambassadors-members-twitter'
>
Twitter
<IconTwitter className='h-5 w-5 fill-current' />
</a>
<a href={ambassador.githubUrl} target='_blank' rel='noreferrer' className='ml-3 underline'>
Github
<a
href={ambassador.githubUrl}
target='_blank'
rel='noreferrer'
className='text-gray-500 hover:text-black transition-colors'
>
<IconGithub className='h-5 w-5 fill-current' />
</a>
<a href={ambassador.linkedinUrl} target='_blank' rel='noreferrer' className='ml-3 underline'>
Linkedin
<a
href={ambassador.linkedinUrl}
target='_blank'
rel='noreferrer'
className='text-gray-500 hover:text-[#0077b5] transition-colors'
>
<IconLinkedIn className='h-5 w-5 fill-current' />
</a>
<div className='flex border-t p-2 gap-4' data-testid='Ambassadors-members-socials'>
{ambassador.twitterUrl && (
<a
href={ambassador.twitterUrl}
target='_blank'
rel='noreferrer'
className='text-gray-500 hover:text-black transition-colors'
data-testid='Ambassadors-members-twitter'
>
<IconTwitter className='h-5 w-5 fill-current' />
</a>
)}
<a
href={ambassador.githubUrl}
target='_blank'
rel='noreferrer'
className='text-gray-500 hover:text-black transition-colors'
>
<IconGithub className='h-5 w-5 fill-current' />
</a>
{ambassador.linkedinUrl && (
<a
href={ambassador.linkedinUrl}
target='_blank'
rel='noreferrer'
className='text-gray-500 hover:text-[`#0077b5`] transition-colors'
>
<IconLinkedIn className='h-5 w-5 fill-current' />
</a>
)}
🧰 Tools
🪛 GitHub Actions: PR testing - if Node project

[error] 156-156: Prettier formatting: Delete extraneous character '·' (spaces represented as middot) to fix formatting


[error] 156-156: Prettier formatting: Trailing spaces not allowed


[error] 157-157: Prettier formatting: Delete extraneous character '·' (spaces represented as middot) to fix formatting


[error] 157-157: Prettier formatting: Trailing spaces not allowed


[error] 158-158: Prettier formatting: Delete extraneous character '·' (spaces represented as middot) to fix formatting


[error] 158-158: Prettier formatting: Trailing spaces not allowed


[error] 164-164: Prettier formatting: Delete extraneous character '·' (spaces represented as middot) to fix formatting


[error] 164-164: Prettier formatting: Trailing spaces not allowed


[error] 165-165: Prettier formatting: Delete extraneous character '·' (spaces represented as middot) to fix formatting


[error] 165-165: Prettier formatting: Trailing spaces not allowed


[error] 166-166: Prettier formatting: Delete extraneous character '·' (spaces represented as middot) to fix formatting


[error] 166-166: Prettier formatting: Trailing spaces not allowed

🤖 Prompt for AI Agents
In `@pages/community/ambassadors/index.tsx` around lines 146 - 171, Optional
social links are rendered even when absent because ambassador.twitterUrl and
ambassador.linkedinUrl can be undefined; update the JSX in the Ambassadors
members block to only render the Twitter <a> (with IconTwitter) when
ambassador.twitterUrl is truthy and only render the LinkedIn <a> (with
IconLinkedIn) when ambassador.linkedinUrl is truthy, leaving the always-present
GitHub <a> (and IconGithub) unchanged; ensure you keep the same attributes
(target, rel, className, data-testid where applicable) when wrapping those
anchors with the conditional rendering so tests and behavior remain consistent.

Comment on lines 147 to 171
<a
href={ambassador.twitterUrl}
target='_blank'
rel='noreferrer'
className='underline'
className='text-gray-500 hover:text-black transition-colors'
data-testid='Ambassadors-members-twitter'
>
Twitter ↗
<IconTwitter className='h-5 w-5 fill-current' />
</a>
<a href={ambassador.githubUrl} target='_blank' rel='noreferrer' className='ml-3 underline'>
Github ↗
<a
href={ambassador.githubUrl}
target='_blank'
rel='noreferrer'
className='text-gray-500 hover:text-black transition-colors'
>
<IconGithub className='h-5 w-5 fill-current' />
</a>
<a href={ambassador.linkedinUrl} target='_blank' rel='noreferrer' className='ml-3 underline'>
Linkedin ↗
<a
href={ambassador.linkedinUrl}
target='_blank'
rel='noreferrer'
className='text-gray-500 hover:text-[#0077b5] transition-colors'
>
<IconLinkedIn className='h-5 w-5 fill-current' />
</a>
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Icon-only links lack accessible names for screen readers.

These links contain only SVG icons with no text content. Screen readers will announce them as empty links. Add aria-label attributes to each.

Example fix
   <a
     href={ambassador.twitterUrl}
     target='_blank'
     rel='noreferrer'
     className='text-gray-500 hover:text-black transition-colors'
     data-testid='Ambassadors-members-twitter'
+    aria-label='Twitter'
   >

Apply similarly to the GitHub (aria-label='GitHub') and LinkedIn (aria-label='LinkedIn') links.

📝 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
<a
href={ambassador.twitterUrl}
target='_blank'
rel='noreferrer'
className='underline'
className='text-gray-500 hover:text-black transition-colors'
data-testid='Ambassadors-members-twitter'
>
Twitter
<IconTwitter className='h-5 w-5 fill-current' />
</a>
<a href={ambassador.githubUrl} target='_blank' rel='noreferrer' className='ml-3 underline'>
Github
<a
href={ambassador.githubUrl}
target='_blank'
rel='noreferrer'
className='text-gray-500 hover:text-black transition-colors'
>
<IconGithub className='h-5 w-5 fill-current' />
</a>
<a href={ambassador.linkedinUrl} target='_blank' rel='noreferrer' className='ml-3 underline'>
Linkedin
<a
href={ambassador.linkedinUrl}
target='_blank'
rel='noreferrer'
className='text-gray-500 hover:text-[#0077b5] transition-colors'
>
<IconLinkedIn className='h-5 w-5 fill-current' />
</a>
<a
href={ambassador.twitterUrl}
target='_blank'
rel='noreferrer'
className='text-gray-500 hover:text-black transition-colors'
data-testid='Ambassadors-members-twitter'
aria-label='Twitter'
>
<IconTwitter className='h-5 w-5 fill-current' />
</a>
<a
href={ambassador.githubUrl}
target='_blank'
rel='noreferrer'
className='text-gray-500 hover:text-black transition-colors'
aria-label='GitHub'
>
<IconGithub className='h-5 w-5 fill-current' />
</a>
<a
href={ambassador.linkedinUrl}
target='_blank'
rel='noreferrer'
className='text-gray-500 hover:text-[`#0077b5`] transition-colors'
aria-label='LinkedIn'
>
<IconLinkedIn className='h-5 w-5 fill-current' />
</a>
🧰 Tools
🪛 GitHub Actions: PR testing - if Node project

[error] 156-156: Prettier formatting: Delete extraneous character '·' (spaces represented as middot) to fix formatting


[error] 156-156: Prettier formatting: Trailing spaces not allowed


[error] 157-157: Prettier formatting: Delete extraneous character '·' (spaces represented as middot) to fix formatting


[error] 157-157: Prettier formatting: Trailing spaces not allowed


[error] 158-158: Prettier formatting: Delete extraneous character '·' (spaces represented as middot) to fix formatting


[error] 158-158: Prettier formatting: Trailing spaces not allowed


[error] 164-164: Prettier formatting: Delete extraneous character '·' (spaces represented as middot) to fix formatting


[error] 164-164: Prettier formatting: Trailing spaces not allowed


[error] 165-165: Prettier formatting: Delete extraneous character '·' (spaces represented as middot) to fix formatting


[error] 165-165: Prettier formatting: Trailing spaces not allowed


[error] 166-166: Prettier formatting: Delete extraneous character '·' (spaces represented as middot) to fix formatting


[error] 166-166: Prettier formatting: Trailing spaces not allowed

🤖 Prompt for AI Agents
In `@pages/community/ambassadors/index.tsx` around lines 147 - 171, The anchor
elements that wrap IconTwitter, IconGithub, and IconLinkedIn (the links using
ambassador.twitterUrl, ambassador.githubUrl, ambassador.linkedinUrl) lack
accessible names; add aria-label attributes to each anchor (e.g.
aria-label="Twitter", aria-label="GitHub", aria-label="LinkedIn") so screen
readers announce them, keeping existing attributes (target, rel, className,
data-testid) intact.

@SHUBHANSHU602
Copy link

hey @yashdarekar17 there are some formatting issue also because of which ci is failing so please have a look at this and suggestion of code rabbit
image

@yashdarekar17
Copy link
Author

@SHUBHANSHU602 I appreciate the suggestions! I'm currently in the process of fixing the linting and formatting issues to get the CI passing.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@pages/community/ambassadors/index.tsx`:
- Around line 56-101: The JSX in the Ambassadors page uses double quotes for
attributes and string literals which triggers jsx-quotes/prettier errors; run
the formatter or convert to single quotes across the JSX (for elements like
GenericLayout, Heading, Button and the img src/alt/className) and fix trailing
commas by running the project Prettier config (e.g., npx prettier --write
pages/community/ambassadors/index.tsx) so the file conforms to the repo's quote
style and formatting rules.
🧹 Nitpick comments (1)
pages/community/ambassadors/index.tsx (1)

165-169: Consider using a stable key instead of array index.

ambassador.github is guaranteed unique and stable — it would be a more robust React key than the array index, especially if the list is ever filtered or reordered dynamically in the future.

-            key={index}
+            key={ambassador.github}

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
pages/community/ambassadors/index.tsx (1)

56-101: ⚠️ Potential issue | 🟡 Minor

Run Prettier to fix pervasive formatting errors blocking CI.

The pipeline reports ~30+ prettier/prettier errors across virtually every changed block in this file — multi-line attribute formatting, extra line breaks, spacing inconsistencies, etc. Rather than fixing these individually, run the formatter:

npx prettier --write pages/community/ambassadors/index.tsx

Also applies to: 112-149, 152-161, 242-258, 263-278, 290-299

🤖 Fix all issues with AI agents
In `@pages/community/ambassadors/index.tsx`:
- Line 24: Remove the trailing comma after the object spread "...user" where
it's used (the spread within the props/object literal on the affected line);
edit the expression to end with the spread without a comma so Prettier no longer
flags "Delete `,`" (look for the "...user" spread usage in this file and remove
the trailing comma).

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@pages/community/ambassadors/index.tsx`:
- Line 165: Replace the unescaped single quote in the JSX text "The AsyncAPI
Ambassador program is now open for applications! If you're selected, you'll join
AsyncAPI's mission..." in pages/community/ambassadors/index.tsx to fix the
react/no-unescaped-entities CI error; update the "you're" (and any other raw
apostrophes in that string) to use the HTML entity &apos; (or a properly escaped
apostrophe) so the JSX string is valid.
- Line 50: The file has multiple Prettier formatting violations (affecting lines
around the asyncapiAmbassadors declaration and uses of
addAdditionalUserInfo/sortBy) that are blocking CI; run the Prettier formatter
to fix them in one pass (for example: run npx prettier --write
pages/community/ambassadors/index.tsx) so lines like the asyncapiAmbassadors
assignment and nearby JSX/props are reformatted to meet project style rules and
resolve the CI failures.
🧹 Nitpick comments (1)
pages/community/ambassadors/index.tsx (1)

101-101: Prefer a stable unique key over array index.

ambassador.github is guaranteed unique and stable — using it as the key is more robust than index, especially if the list is ever filtered or reordered dynamically.

-            <div key={index} className='...'>
+            <div key={ambassador.github} className='...'>

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@pages/community/ambassadors/index.tsx`:
- Around line 96-100: The <li> element using key={link.title} with
className='flex flex-col items-center justify-start' and
data-testid='Ambassadors-list' is split across multiple lines and fails
Prettier's single-line rule; collapse that JSX element to a single line (e.g.
<li key={link.title} className='flex ...' data-testid='Ambassadors-list'>) and
then run npx prettier --write to apply consistent formatting.
- Line 63: The long JSX text nodes in pages/community/ambassadors/index.tsx
(e.g., the string starting "Passionate about event-driven architectures or
message-driven APIs? Become an AsyncAPI Ambassador..." and the other two long
strings around the same section) exceed the 120-character max-len and must be
wrapped into shorter lines; fix by breaking each long string literal or JSX text
node into multiple concatenated lines or separate JSX fragments so no single
line exceeds 120 chars (update the text nodes where the long sentences are
rendered, e.g., the JSX element containing the "Passionate about..." copy and
the other long sentence literals), then run npx prettier --write
pages/community/ambassadors/index.tsx to reformat.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@pages/community/ambassadors/index.tsx`:
- Line 179: The JSX text node containing "We appreciate your commitment and
passion for sharing your knowledge with your communities. Let us support you!"
exceeds 120 chars; split the string into shorter segments (e.g., break into two
concatenated strings, use two JSX elements, or insert a <br/> between phrases)
so each line stays under 120 characters and preserves the rendered sentence;
update the JSX in the ambassadors page where that exact text appears.
- Line 91: The JSX text node "AsyncAPI Ambassadors are passionate about APIs and
AsyncAPI. They share their interest, expertise, and excitement within their
communities to help others build better software." exceeds the 120-char max-len
rule; open the JSX element in pages/community/ambassadors/index.tsx (the
paragraph/heading that contains that exact string) and split the sentence across
multiple lines (e.g., break into two or more string literals or separate JSX
text nodes) so each source line is under the limit while preserving the exact
wording and spacing.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@pages/community/ambassadors/index.tsx`:
- Around line 90-93: The Heading block for the ambassador description is
over-indented causing Prettier CI failures; locate the <Heading
typeStyle={HeadingTypeStyle.bodyLg} ...> element and align its opening and
closing tags with its sibling element (same indentation as the element on the
previous line) by removing the extra two leading spaces so the JSX block matches
the surrounding indentation.
- Around line 179-182: The Heading block using HeadingTypeStyle.bodyLg (the
<Heading> element) has extra leading spaces causing Prettier CI failures; remove
two leading spaces so the <Heading typeStyle={HeadingTypeStyle.bodyLg} ...> line
is aligned with its parent <div> (same indentation style as the earlier block at
lines ~90-93) to fix formatting/indentation.
🧹 Nitpick comments (1)
pages/community/ambassadors/index.tsx (1)

129-130: cursor-pointer is redundant inside a <Link>.

The wrapping <Link> already renders as an <a> tag which has cursor: pointer by default. Minor nit — can be removed for cleanliness.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@pages/community/ambassadors/index.tsx`:
- Around line 180-181: The CI failure is due to Prettier formatting around the
JSX text block containing "We appreciate your commitment and passion for sharing
your knowledge with your communities." and "Let us support you!"; run the
formatter (npx prettier --write pages/community/ambassadors/index.tsx) or adjust
the JSX line breaks so the two strings are formatted as a single properly
wrapped text node to satisfy Prettier (ensure the JSX around that paragraph is
valid and saved after formatting).
- Around line 91-92: The JSX text node containing "AsyncAPI Ambassadors are
passionate about APIs and AsyncAPI. They share their interest, expertise, and
excitement within their communities to help others build better software." is
incorrectly line-broken and failing Prettier; run the project formatter (npx
prettier --write pages/community/ambassadors/index.tsx) or fix the line break so
the sentence is a single properly wrapped JSX text node (adjust the string
around "expertise, and excitement") and then commit the formatted file to
resolve the CI Prettier errors.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
pages/community/ambassadors/index.tsx (1)

79-83: ⚠️ Potential issue | 🟡 Minor

Missing title attribute on iframe — accessibility concern.

Screen readers need a title attribute on <iframe> elements to describe the embedded content. This is a WCAG requirement.

Proposed fix
           <iframe
             src='https://www.youtube.com/embed/3rg_7hIb9PQ'
+            title='AsyncAPI Ambassador Program Video'
             allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share'
             data-testid='Ambassadors-Iframe'
           ></iframe>
🤖 Fix all issues with AI agents
In `@pages/community/ambassadors/index.tsx`:
- Line 74: Replace the invalid Tailwind class "full" on the ambassador cover
image with the correct full-width utility: update the img element found in
pages/community/ambassadors/index.tsx (the element using src
'/img/homepage/ambassador-cover.svg' and className='full') to use
className='w-full' so the image renders at full width.
- Around line 49-51: Remove the trailing space after the assignment operator in
the ambassadorProgramUrl declaration so the '=' is immediately followed by the
newline and the string literal (constant ambassadorProgramUrl) starts on the
next line; ensure there are no trailing spaces on that line and run
Prettier/lint to confirm the no-trailing-spaces and prettier/prettier errors are
resolved.

</div>
<div className='hidden w-1/2 lg:block'>
<img src='/img/homepage/ambassador-cover.svg' alt='ambassador-cover' className='w-full' />
<img src='/img/homepage/ambassador-cover.svg' alt='ambassador-cover' className='full' />
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

'full' is not a valid Tailwind class — likely should be 'w-full'.

The class full doesn't exist in Tailwind CSS. This appears to be an accidental deletion of the w- prefix, which will cause the image to lose its full-width sizing.

Proposed fix
-          <img src='/img/homepage/ambassador-cover.svg' alt='ambassador-cover' className='full' />
+          <img src='/img/homepage/ambassador-cover.svg' alt='ambassador-cover' className='w-full' />
🤖 Prompt for AI Agents
In `@pages/community/ambassadors/index.tsx` at line 74, Replace the invalid
Tailwind class "full" on the ambassador cover image with the correct full-width
utility: update the img element found in pages/community/ambassadors/index.tsx
(the element using src '/img/homepage/ambassador-cover.svg' and
className='full') to use className='w-full' so the image renders at full width.

@sonarqubecloud
Copy link

sonarqubecloud bot commented Feb 8, 2026

@codecov
Copy link

codecov bot commented Feb 8, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (581b703) to head (88a3588).

Additional details and impacted files
@@            Coverage Diff            @@
##            master     #5110   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           22        22           
  Lines          796       796           
  Branches       146       146           
=========================================
  Hits           796       796           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: To Be Triaged

Development

Successfully merging this pull request may close these issues.

[FEATURE] Enhance Ambassador Card Social Media Buttons On Community Page

3 participants