Skip to content

fix: correct CTA spacing on Events page and add missing Event structured-data fields (#725) - #742

Merged
rootsongjc merged 6 commits into
Project-HAMi:masterfrom
Akashstztt:fix/725-events-cta-spacing
Aug 13, 2026
Merged

fix: correct CTA spacing on Events page and add missing Event structured-data fields (#725)#742
rootsongjc merged 6 commits into
Project-HAMi:masterfrom
Akashstztt:fix/725-events-cta-spacing

Conversation

@Akashstztt

@Akashstztt Akashstztt commented Aug 8, 2026

Copy link
Copy Markdown
Contributor
Screenshot 2026-08-10 115706 Related to #725

Changes

UI fix — CTA spacing

The "Want to host or speak at a HAMi event?" section's .ctaList used
display: inline-flex, which caused the list to shrink-wrap to its content
width 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 .ctaList to display: flex with max-width: fit-content, which
keeps 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 events
  • eventStatus — defaults to EventScheduled, overridable per event via
    an optional eventStatus field on the event object
  • offers — defaults to a free offer (price: "0"), overridable per event
    via optional price/priceCurrency fields
  • performer — renders only when an event defines a speaker field, so no
    event emits inaccurate performer data. Added speaker values for the two
    existing events (kcd-vietnam, kubecon-japan) based on the speakers named
    on their event banners.

Testing

  • Verified the CTA section stacks correctly (no crowding) across multiple
    zoom levels (90%–125%) and window widths.
  • Verified the JSON-LD output locally on /landing/kcd-vietnam and
    /landing/kubecon-japan by inspecting the rendered
    application/ld+json script tag — confirmed organizer, eventStatus,
    offers, and performer are all present with correct structure
    (performer correctly emits as an array of separate Person objects
    for multi-speaker events).

Out of scope

While testing the event landing pages, I noticed the banner image on
/landing/kcd-vietnam gets cropped due to object-fit: cover not suiting
its 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

    • Enhanced event metadata with status, organizer, speaker, and ticket information.
    • Added speaker names to selected event listings, including KCD Vietnam and KubeCon Japan.
    • Ticket details now include pricing, currency, availability, links, and validity dates when applicable.
  • Style

    • Improved event call-to-action layout with better spacing, alignment, and sizing.

Fixes #725

@netlify

netlify Bot commented Aug 8, 2026

Copy link
Copy Markdown

Deploy Preview for project-hami ready!

Name Link
🔨 Latest commit 92efef9
🔍 Latest deploy log https://app.netlify.com/projects/project-hami/deploys/6a7d8803b1224e0008cce4fb
😎 Deploy Preview https://deploy-preview-742--project-hami.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

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

@hami-robot

hami-robot Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Welcome @Akashstztt! It looks like this is your first PR to Project-HAMi/website 🎉

@hami-robot hami-robot Bot added the size/S label Aug 8, 2026
@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It 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 reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 7a2f217c-0bf3-4d29-bcfc-43a8afcb0159

📥 Commits

Reviewing files that changed from the base of the PR and between 16d2910 and 92efef9.

📒 Files selected for processing (1)
  • src/data/events.js
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/data/events.js

📝 Walkthrough

Walkthrough

Event 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.

Changes

Event updates

Layer / File(s) Summary
Event JSON-LD and speaker data
src/components/EventLanding.js, src/data/events.js
Event JSON-LD includes default status, organizer, offer pricing, availability, validity data, and optional performers. KCD Vietnam and KubeCon Japan now include speaker names.
Event CTA layout
src/pages/events.module.css
.ctaList uses centered block-level flex layout and a content-sized maximum width.

Estimated code review effort: 2 (Simple) | ~10 minutes

Mergeability Score: ⚪ Minimal · up to 92efe

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: kind/bug

Suggested reviewers: wawa0210, mesutoezdil

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The Event JSON-LD, speaker data, and event-record changes are outside the scope of linked issue #725. Move the structured-data and speaker-data changes to a separate issue or link an issue that explicitly covers those requirements.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes both the CTA spacing fix and the added Event structured-data fields.
Linked Issues check ✅ Passed The PR updates CTA layout and spacing to address the requirements in issue #725 across viewport widths.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 added the kind/bug Something isn't working label Aug 8, 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: 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

📥 Commits

Reviewing files that changed from the base of the PR and between cdf5f73 and b4ec26b.

📒 Files selected for processing (3)
  • src/components/EventLanding.js
  • src/data/events.js
  • src/pages/events.module.css

Comment thread src/components/EventLanding.js Outdated
Comment on lines +75 to +88
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,
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ 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.

@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: 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

📥 Commits

Reviewing files that changed from the base of the PR and between b4ec26b and fec773d.

📒 Files selected for processing (1)
  • src/components/EventLanding.js

Comment thread src/components/EventLanding.js Outdated
Comment thread src/components/EventLanding.js Outdated
@Akashstztt

Akashstztt commented Aug 9, 2026

Copy link
Copy Markdown
Contributor Author

@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!

@Akashstztt

Copy link
Copy Markdown
Contributor Author

@rootsongjc Could you please have a look at this when you get a chance?

Comment thread src/data/events.js Outdated
@hami-robot

hami-robot Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

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:

  • bfd5da6 Update src/data/events.js
Details

Instructions 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.

Akashstzt and others added 6 commits August 13, 2026 14:30
…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>
@Akashstztt
Akashstztt force-pushed the fix/725-events-cta-spacing branch from bfd5da6 to 92efef9 Compare August 13, 2026 09:01
@Akashstztt

Copy link
Copy Markdown
Contributor Author

cc @rootsongjc could you please check this PR when you get a chance? I’d really appreciate your feedback. Thank you!

@rootsongjc rootsongjc left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

/LGTM

@hami-robot

hami-robot Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: Akashstztt, rootsongjc
Once this PR has been reviewed and has the lgtm label, please assign archlitchi for approval. For more information see the Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@rootsongjc
rootsongjc merged commit dd9c129 into Project-HAMi:master Aug 13, 2026
11 of 12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[UI] Improve spacing between the event description and Discord CTA button on the Events page

3 participants