fix: correct CTA spacing on Events page and add missing Event structured-data fields (#725) - #742
Conversation
✅ Deploy Preview for project-hami ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
Welcome @Akashstztt! It looks like this is your first PR to Project-HAMi/website 🎉 |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughEvent JSON-LD now includes event, organizer, offer, and performer metadata. Speaker names were added to two event records. The event CTA list now uses centered, content-sized flex layout. ChangesEvent updates
Estimated code review effort: 2 (Simple) | ~10 minutes Mergeability Score: ⚪ Minimal · up to The PR makes localized CTA styling and Event structured-data updates, with no actionable merge-blocking risk remaining after normal checks and review. Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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/EventLanding.js`:
- Around line 75-88: Update the structured event data generation in EventLanding
so eventStatus and offers are emitted only from authoritative per-event
metadata. Remove the default EventScheduled, zero-price/InStock, and date-based
offer fallbacks; add the required status and offer fields to each event
definition when known, and omit the entire offers object when ticket data is
unavailable, including for ended events such as kcd-vietnam and kubecon-japan.
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 69440366-b507-4a00-b133-cbb49db46f6c
📒 Files selected for processing (3)
src/components/EventLanding.jssrc/data/events.jssrc/pages/events.module.css
| eventStatus: `https://schema.org/${event.eventStatus || "EventScheduled"}`, | ||
| organizer: { | ||
| "@type": "Organization", | ||
| name: "HAMi", | ||
| url: "https://project-hami.io/", | ||
| }, | ||
| offers: { | ||
| "@type": "Offer", | ||
| url: event.externalUrl || `${siteConfig.url}/events/${event.slug}`, | ||
| price: event.price ?? "0", | ||
| priceCurrency: event.priceCurrency || "USD", | ||
| availability: "https://schema.org/InStock", | ||
| validFrom: event.offerValidFrom || event.date, | ||
| }, |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift
Do not emit active offer defaults without authoritative event data.
Neither event in src/data/events.js defines offer metadata. These fallbacks publish EventScheduled, a 0 USD InStock offer, and an offer valid from the event start date for every record. As of August 8, 2026, kcd-vietnam ended on July 25, 2026, and kubecon-japan ended on July 30, 2026. Store status and offer values per event, and omit offers when authoritative ticket data is unavailable.
🤖 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/components/EventLanding.js` around lines 75 - 88, Update the structured
event data generation in EventLanding so eventStatus and offers are emitted only
from authoritative per-event metadata. Remove the default EventScheduled,
zero-price/InStock, and date-based offer fallbacks; add the required status and
offer fields to each event definition when known, and omit the entire offers
object when ticket data is unavailable, including for ended events such as
kcd-vietnam and kubecon-japan.
b4ec26b to
fec773d
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 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/EventLanding.js`:
- Line 75: Update the event JSON-LD construction around eventStatus and
offers.availability to derive both fields from the same authoritative status
value, including the existing EventScheduled fallback when event.eventStatus is
absent. Ensure the availability comparison uses that resolved status rather than
the raw event.eventStatus, so the generated metadata cannot report conflicting
states.
- Around line 76-80: Update the JSON-LD event object near the organizer metadata
to conditionally include performer when event.speaker is present. Split the
comma-separated speaker names, trim each name, and map them to Person objects so
each speaker is serialized as an individual performer.
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 50846a51-72a7-425f-82f0-6d6b2bd54c7c
📒 Files selected for processing (1)
src/components/EventLanding.js
|
@rootsongjc This PR is ready for review — DCO sign-off is complete, all CI checks pass, and CodeRabbit's feedback has been addressed. @mesutoezdil @wawa0210 whenever you get a chance, would appreciate a review. Thanks! |
|
@rootsongjc Could you please have a look at this when you get a chance? |
|
Thanks for your pull request. Before we can look at it, you'll need to add a 'DCO signoff' to your commits. 📝 Please follow instructions in the contributing guide to update your commits with the DCO Full details of the Developer Certificate of Origin can be found at developercertificate.org. The list of commits missing DCO signoff:
DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
…red-data fields (Project-HAMi#725) Signed-off-by: Akash Kumar <akashstzt@gmail.com>
Signed-off-by: Akash Kumar <akashstzt@gmail.com>
…lability Signed-off-by: Akash Kumar <akashstzt@gmail.com>
Signed-off-by: Akash Kumar <akashstzt@gmail.com>
Signed-off-by: Akash Kumar <akashstzt@gmail.com>
Co-authored-by: Jimmy Song <rootsongjc@gmail.com> Signed-off-by: Akash Kumar <akashstzt@gmail.com>
bfd5da6 to
92efef9
Compare
|
cc @rootsongjc could you please check this PR when you get a chance? I’d really appreciate your feedback. Thank you! |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: Akashstztt, rootsongjc The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Changes
UI fix — CTA spacing
The "Want to host or speak at a HAMi event?" section's
.ctaListuseddisplay: inline-flex, which caused the list to shrink-wrap to its contentwidth instead of behaving as a full block. At certain viewport widths and
zoom levels, this let the "Join the events channel on Discord" button crowd
directly into the list text instead of stacking cleanly below it.
Changed
.ctaListtodisplay: flexwithmax-width: fit-content, whichkeeps the same centered, left-aligned visual layout but removes the inline
shrink-wrap behavior that caused the crowding.
SEO fix — missing Event structured data
Per the Google Search Console warnings referenced in this issue, added the
following fields to the JSON-LD emitted by
EventLanding.js:organizer— set to HAMi / project-hami.io for all eventseventStatus— defaults toEventScheduled, overridable per event viaan optional
eventStatusfield on the event objectoffers— defaults to a free offer (price: "0"), overridable per eventvia optional
price/priceCurrencyfieldsperformer— renders only when an event defines aspeakerfield, so noevent emits inaccurate performer data. Added
speakervalues for the twoexisting events (kcd-vietnam, kubecon-japan) based on the speakers named
on their event banners.
Testing
zoom levels (90%–125%) and window widths.
/landing/kcd-vietnamand/landing/kubecon-japanby inspecting the renderedapplication/ld+jsonscript tag — confirmedorganizer,eventStatus,offers, andperformerare all present with correct structure(
performercorrectly emits as an array of separatePersonobjectsfor multi-speaker events).
Out of scope
While testing the event landing pages, I noticed the banner image on
/landing/kcd-vietnamgets cropped due toobject-fit: covernot suitingits square aspect ratio. That's a separate visual issue unrelated to this
fix, so I'll track it as a follow-up PR.
Summary by CodeRabbit
Summary by CodeRabbit
New Features
Style
Fixes #725