Skip to content

feat(blog): add Boundless x Trustless Work hackathon post and fit cover images#551

Merged
Benjtalkshow merged 1 commit into
boundlessfi:mainfrom
Benjtalkshow:feat/blog-hackathon-launch-and-cover-fit
May 15, 2026
Merged

feat(blog): add Boundless x Trustless Work hackathon post and fit cover images#551
Benjtalkshow merged 1 commit into
boundlessfi:mainfrom
Benjtalkshow:feat/blog-hackathon-launch-and-cover-fit

Conversation

@Benjtalkshow
Copy link
Copy Markdown
Collaborator

@Benjtalkshow Benjtalkshow commented May 15, 2026

Summary

  • Add the hackathon launch post at content/blog/boundless-launches-first-hackathon-campaign.mdx for May 13.
  • BlogCard + BlogPostDetails cover images use object-contain so the full banner is visible (previously object-cover cropped wider banners).
  • SHARE icons on the blog details page now use the current brand primary #2eedaa instead of the old #99FF2D.

Test plan

  • Open /blog and verify the new "Boundless Launches Its First Hackathon Campaign" card renders with the full banner visible (no cropping).
  • Open the post detail page and verify the cover image fits the banner area without cropping.
  • Confirm the SHARE icons (X, Discord, send, copy link) on the post detail page use the mint primary, not the old lime.
  • All existing blog posts still render correctly (covers may show letterbox bands if they were sized for object-cover — known trade-off).

Summary by CodeRabbit

  • New Features

    • Added blog post announcing the Boundless x Trustless Work hackathon campaign, including event details, schedule, prize breakdown, and registration information.
  • Style

    • Updated blog cover image display to use contain fit instead of cover.
    • Changed share icon colors from neon green to teal across blog details.

Review Change Stack

…er images

- Add content/blog/boundless-launches-first-hackathon-campaign.mdx for the May 13 hackathon launch announcement.
- BlogCard and BlogPostDetails cover images use object-contain so the full banner is visible (previously object-cover cropped wider banners).
- Update SHARE icons on the blog details page from the old brand color #99FF2D to the current brand primary #2eedaa.
@vercel
Copy link
Copy Markdown

vercel Bot commented May 15, 2026

@Benjtalkshow is attempting to deploy a commit to the Threadflow Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 15, 2026

📝 Walkthrough

Walkthrough

This PR updates the blog section of the landing page with visual refinements and new content. Blog card and post detail components switch image display from object-cover to object-contain, and social share icons receive updated colors. A new blog post announces the "Boundless x Trustless Work" hackathon campaign with event schedule, prize pool, participation guidelines, and project focus areas.

Changes

Blog Landing Page and Content Updates

Layer / File(s) Summary
Image fit and icon color updates in blog components
components/landing-page/blog/BlogCard.tsx, components/landing-page/blog/BlogPostDetails.tsx
Image styling changes from object-cover to object-contain in both card and post detail components. Share icon stroke colors update from #99FF2D (lime) to #2eedaa (mint) across Twitter, Discord, Send, and Link icons in both default and checkmark/copied states.
Hackathon campaign blog post with frontmatter and full content
content/blog/boundless-launches-first-hackathon-campaign.mdx
New blog post introducing the "Boundless x Trustless Work" hackathon with complete metadata, event overview, participation details (schedule, venue, eligibility), prize breakdown, project guidance emphasizing Trustless Work escrow primitives, and registration/community links.

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related PRs

  • boundlessfi/boundless#549: Both PRs switch image rendering from object-cover to object-contain for cover images in blog/submission UI components, directly related styling alignment.

Suggested reviewers

  • 0xdevcollins

Poem

🐰 A hackathon hops into view,
With mint-green icons, fresh and new.
Images fit the frame just right,
Blog posts gleaming, burning bright! ✨

🚥 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 summarizes the two main changes: adding a new hackathon blog post and updating cover image fitting across blog components.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.

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

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

Copy link
Copy Markdown

@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

🧹 Nitpick comments (2)
content/blog/boundless-launches-first-hackathon-campaign.mdx (2)

26-162: Tight registration deadline noted.

The registration deadline (May 15th, line 95) coincides with the PR creation date (May 15, 2026), leaving minimal time between post publication and registration close. While not a code issue, consider whether the deadline should be extended or if this was intentional to create urgency.

🤖 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 `@content/blog/boundless-launches-first-hackathon-campaign.mdx` around lines 26
- 162, The "Registration Deadline: May 15th" under the "Other Details" in the
"Event Details" section creates a tight window that matches the PR creation
date; update the deadline or add a clarifying note to avoid confusion. Locate
the "Event Details" header and the line containing "Registration Deadline: May
15th" and either (a) change the date to a later one (e.g., extend to May 20th or
another agreed date) or (b) append a short parenthetical like
"(intentional—registration may close soon after publication)" to indicate this
was deliberate; ensure the change appears consistently wherever "Registration
Deadline" is referenced (e.g., in the "Other Details" block and any duplicated
spots).

28-28: 💤 Low value

Consider replacing "today" with the specific date.

The phrase "today, May 13th, 2026" will become inaccurate for readers viewing the post after the launch date. Using just "May 13th, 2026" or "on May 13th, 2026" would age better.

♻️ Proposed alternatives
-Boundless is officially launching its first-ever hackathon today, **May 13th, 2026**.
+Boundless is officially launching its first-ever hackathon on **May 13th, 2026**.

Or:

-Boundless is officially launching its first-ever hackathon today, **May 13th, 2026**.
+Boundless officially launched its first-ever hackathon **May 13th, 2026**.
🤖 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 `@content/blog/boundless-launches-first-hackathon-campaign.mdx` at line 28,
Replace the time-sensitive phrasing in the sentence "Boundless is officially
launching its first-ever hackathon today, **May 13th, 2026**." so it doesn't
age; change it to a fixed-date formulation such as "Boundless is officially
launching its first-ever hackathon on **May 13th, 2026**." (edit the line in
content/blog/boundless-launches-first-hackathon-campaign.mdx that contains the
original sentence).
🤖 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 `@content/blog/boundless-launches-first-hackathon-campaign.mdx`:
- Line 8: The author.image field in the frontmatter is an empty string—replace
it with a valid public image URL (or a relative path to an asset) so the Avatar
component in BlogPostDetails.tsx can render the photo instead of falling back to
initials; update the author.image value in the post metadata (the author.image
entry) to point to the chosen image and ensure the file is accessible by the
site build.

---

Nitpick comments:
In `@content/blog/boundless-launches-first-hackathon-campaign.mdx`:
- Around line 26-162: The "Registration Deadline: May 15th" under the "Other
Details" in the "Event Details" section creates a tight window that matches the
PR creation date; update the deadline or add a clarifying note to avoid
confusion. Locate the "Event Details" header and the line containing
"Registration Deadline: May 15th" and either (a) change the date to a later one
(e.g., extend to May 20th or another agreed date) or (b) append a short
parenthetical like "(intentional—registration may close soon after publication)"
to indicate this was deliberate; ensure the change appears consistently wherever
"Registration Deadline" is referenced (e.g., in the "Other Details" block and
any duplicated spots).
- Line 28: Replace the time-sensitive phrasing in the sentence "Boundless is
officially launching its first-ever hackathon today, **May 13th, 2026**." so it
doesn't age; change it to a fixed-date formulation such as "Boundless is
officially launching its first-ever hackathon on **May 13th, 2026**." (edit the
line in content/blog/boundless-launches-first-hackathon-campaign.mdx that
contains the original sentence).
🪄 Autofix (Beta)

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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b6231e30-7344-4c3c-828b-799f165de0e3

📥 Commits

Reviewing files that changed from the base of the PR and between 503ec0e and c0dbddb.

📒 Files selected for processing (3)
  • components/landing-page/blog/BlogCard.tsx
  • components/landing-page/blog/BlogPostDetails.tsx
  • content/blog/boundless-launches-first-hackathon-campaign.mdx

publishedAt: '2026-05-13'
author:
name: 'Boundless Team'
image: ''
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add author image URL.

The author.image field is currently an empty string. While the Avatar component in BlogPostDetails.tsx will fall back to showing initials, providing an actual image URL would improve the visual presentation of the blog post.

💡 Suggested fix
 author:
   name: 'Boundless Team'
-  image: ''
+  image: '/images/boundless-team-avatar.png'
📝 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
image: ''
author:
name: 'Boundless Team'
image: '/images/boundless-team-avatar.png'
🤖 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 `@content/blog/boundless-launches-first-hackathon-campaign.mdx` at line 8, The
author.image field in the frontmatter is an empty string—replace it with a valid
public image URL (or a relative path to an asset) so the Avatar component in
BlogPostDetails.tsx can render the photo instead of falling back to initials;
update the author.image value in the post metadata (the author.image entry) to
point to the chosen image and ensure the file is accessible by the site build.

@Benjtalkshow Benjtalkshow merged commit 810bae3 into boundlessfi:main May 15, 2026
6 of 8 checks passed
Benjtalkshow added a commit that referenced this pull request May 15, 2026
* fix(submissions): improve link validation UX, banner display, and error toasts (#547)

- Reconcile frontend link types with backend enum (github, demo, video, document, presentation, other)
- Allow up to 5 "other" links per submission with smart type-picking on Add Link and duplicate guards on type change
- Add 500-character cap and live counter on the optional Introduction field
- Pass banner through initialData on submission edit so the saved banner displays
- Add banner field to ParticipantSubmission so the type compiles
- Set mock-fill participation type from myTeam to avoid INDIVIDUAL submissions while on a team
- Switch submission error toasts to title + description with 8s duration so backend messages are readable
- Update SubmissionLinksTab icon mapping for the new link types

* fix(submissions): correct logo cropping and remove duplicate category badge on submission card (#549)

- Logo overlay on banner uses object-contain so wordmark logos are not cropped
- Render the category badge once instead of twice on the explore submissions card

* feat(blog): add Boundless x Trustless Work hackathon post and fit cover images (#551)

- Add content/blog/boundless-launches-first-hackathon-campaign.mdx for the May 13 hackathon launch announcement.
- BlogCard and BlogPostDetails cover images use object-contain so the full banner is visible (previously object-cover cropped wider banners).
- Update SHARE icons on the blog details page from the old brand color #99FF2D to the current brand primary #2eedaa.
0xdevcollins added a commit that referenced this pull request May 15, 2026
* fix(submissions): improve link validation UX, banner display, and error toasts (#547)

- Reconcile frontend link types with backend enum (github, demo, video, document, presentation, other)
- Allow up to 5 "other" links per submission with smart type-picking on Add Link and duplicate guards on type change
- Add 500-character cap and live counter on the optional Introduction field
- Pass banner through initialData on submission edit so the saved banner displays
- Add banner field to ParticipantSubmission so the type compiles
- Set mock-fill participation type from myTeam to avoid INDIVIDUAL submissions while on a team
- Switch submission error toasts to title + description with 8s duration so backend messages are readable
- Update SubmissionLinksTab icon mapping for the new link types

* fix(submissions): correct logo cropping and remove duplicate category badge on submission card (#549)

- Logo overlay on banner uses object-contain so wordmark logos are not cropped
- Render the category badge once instead of twice on the explore submissions card

* feat(blog): add Boundless x Trustless Work hackathon post and fit cover images (#551)

- Add content/blog/boundless-launches-first-hackathon-campaign.mdx for the May 13 hackathon launch announcement.
- BlogCard and BlogPostDetails cover images use object-contain so the full banner is visible (previously object-cover cropped wider banners).
- Update SHARE icons on the blog details page from the old brand color #99FF2D to the current brand primary #2eedaa.

* feat(judge): dedicated judge portal, organizer invitations, completeness gate UX (#550)

* feat: implement judge portal with submission evaluation, invitations, and score calculation workflows

* feat: add countdown banner, support read-only score sliders, and integrate submission disqualification into grading modal

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0xdevcollins added a commit that referenced this pull request May 15, 2026
)

* fix(submissions): improve link validation UX, banner display, and error toasts (#547)

- Reconcile frontend link types with backend enum (github, demo, video, document, presentation, other)
- Allow up to 5 "other" links per submission with smart type-picking on Add Link and duplicate guards on type change
- Add 500-character cap and live counter on the optional Introduction field
- Pass banner through initialData on submission edit so the saved banner displays
- Add banner field to ParticipantSubmission so the type compiles
- Set mock-fill participation type from myTeam to avoid INDIVIDUAL submissions while on a team
- Switch submission error toasts to title + description with 8s duration so backend messages are readable
- Update SubmissionLinksTab icon mapping for the new link types

* fix(submissions): correct logo cropping and remove duplicate category badge on submission card (#549)

- Logo overlay on banner uses object-contain so wordmark logos are not cropped
- Render the category badge once instead of twice on the explore submissions card

* feat(blog): add Boundless x Trustless Work hackathon post and fit cover images (#551)

- Add content/blog/boundless-launches-first-hackathon-campaign.mdx for the May 13 hackathon launch announcement.
- BlogCard and BlogPostDetails cover images use object-contain so the full banner is visible (previously object-cover cropped wider banners).
- Update SHARE icons on the blog details page from the old brand color #99FF2D to the current brand primary #2eedaa.

* feat(judge): dedicated judge portal, organizer invitations, completeness gate UX (#550)

* feat: implement judge portal with submission evaluation, invitations, and score calculation workflows

* feat: add countdown banner, support read-only score sliders, and integrate submission disqualification into grading modal

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(hackathons): add "hidden until results" submission visibility mode (#555)

Surfaces the new HIDDEN_UNTIL_RESULTS option (added in the nestjs PR) in
the organizer settings tab. Reorders the three visibility options so the
recommended "Shortlisted only" leads, the new "Hidden until results are
announced" sits in the middle, and "All submissions" comes last. Rewrites
the copy on the "All submissions" choice that incorrectly claimed
disqualified projects would be shown -- they never were on the backend,
and Phase 2 makes that an explicit guarantee. Aligns the form's default
and API-fallback value with the backend default (ACCEPTED_SHORTLISTED,
not ALL) so organizers don't see a misleading initial selection.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Benjtalkshow added a commit that referenced this pull request May 15, 2026
* fix(submissions): improve link validation UX, banner display, and error toasts (#547)

- Reconcile frontend link types with backend enum (github, demo, video, document, presentation, other)
- Allow up to 5 "other" links per submission with smart type-picking on Add Link and duplicate guards on type change
- Add 500-character cap and live counter on the optional Introduction field
- Pass banner through initialData on submission edit so the saved banner displays
- Add banner field to ParticipantSubmission so the type compiles
- Set mock-fill participation type from myTeam to avoid INDIVIDUAL submissions while on a team
- Switch submission error toasts to title + description with 8s duration so backend messages are readable
- Update SubmissionLinksTab icon mapping for the new link types

* fix(submissions): correct logo cropping and remove duplicate category badge on submission card (#549)

- Logo overlay on banner uses object-contain so wordmark logos are not cropped
- Render the category badge once instead of twice on the explore submissions card

* feat(blog): add Boundless x Trustless Work hackathon post and fit cover images (#551)

- Add content/blog/boundless-launches-first-hackathon-campaign.mdx for the May 13 hackathon launch announcement.
- BlogCard and BlogPostDetails cover images use object-contain so the full banner is visible (previously object-cover cropped wider banners).
- Update SHARE icons on the blog details page from the old brand color #99FF2D to the current brand primary #2eedaa.

* feat(judge): dedicated judge portal, organizer invitations, completeness gate UX (#550)

* feat: implement judge portal with submission evaluation, invitations, and score calculation workflows

* feat: add countdown banner, support read-only score sliders, and integrate submission disqualification into grading modal

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(hackathons): add "hidden until results" submission visibility mode (#555)

Surfaces the new HIDDEN_UNTIL_RESULTS option (added in the nestjs PR) in
the organizer settings tab. Reorders the three visibility options so the
recommended "Shortlisted only" leads, the new "Hidden until results are
announced" sits in the middle, and "All submissions" comes last. Rewrites
the copy on the "All submissions" choice that incorrectly claimed
disqualified projects would be shown -- they never were on the backend,
and Phase 2 makes that an explicit guarantee. Aligns the form's default
and API-fallback value with the backend default (ACCEPTED_SHORTLISTED,
not ALL) so organizers don't see a misleading initial selection.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(hackathons): owner submission visibility, team UX, organizer teams page (#552)

Submission visibility on the public submissions tab
- Surface the user's own submission first on the hackathon submissions tab, regardless of submissionStatusVisibility setting. Team members (non-leader) see their team's submission too.

Find Team tab UX
- Stop replacing the whole tab with MyTeamView when the user has a team. Render MyTeamView at the top and the open-teams list below.
- Filter the user's own team out of the "Other Teams" list to avoid duplication.
- Wire the team count badge on the team-formation tab.

Team details
- New /hackathons/[slug]/teams/[teamId] page with team header, members list (clickable links to profiles), roles needed, leader card, and contact card.
- TeamCard click opens the team details page in a new tab.
- MyTeamView team name is now a clickable link to the same page.
- Add useTeam hook + query key.

Organizer submissions page
- Replace raw Buttons on review actions with BoundlessButton (default / outline / destructive) so colors come from the design system.
- Remove the "Before Deadline" gating on the Approve action; backend organizer override now allows it.

Organizer participants page
- Add Solo Participants and Teams metric cards next to the existing Total Participants and Total Submissions cards.

Organizer submissions page
- Add a metric strip with Total / Solo / Team Submissions sourced from the statistics endpoint.

Organizer Teams page (new)
- New route /organizations/[id]/hackathons/[hackathonId]/teams.
- Stats (Total / Open / Submitted / Not submitted), search by team or leader (server-side), status and submission filters (client-side), server-side pagination matching the participants page pattern, click to view team details in a new tab.
- Add "Teams" entry to the existing organizer hackathon sidebar (HackathonSidebar.tsx).

Image fit fixes for cropped logos/banners
- SubmissionCard banner and logo overlay use object-contain (banner was object-cover, cropping wordmarks and tall banners).
- /me/hackathons/submissions: banner, logo overlay, and small table thumbnail all use object-contain.
- ProjectSidebarHeader logo uses object-contain.

Type changes
- lib/api/hackathons/teams.ts Team interface gains optional hasSubmission flag.

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Benjtalkshow added a commit that referenced this pull request May 15, 2026
* fix(submissions): improve link validation UX, banner display, and error toasts (#547)

- Reconcile frontend link types with backend enum (github, demo, video, document, presentation, other)
- Allow up to 5 "other" links per submission with smart type-picking on Add Link and duplicate guards on type change
- Add 500-character cap and live counter on the optional Introduction field
- Pass banner through initialData on submission edit so the saved banner displays
- Add banner field to ParticipantSubmission so the type compiles
- Set mock-fill participation type from myTeam to avoid INDIVIDUAL submissions while on a team
- Switch submission error toasts to title + description with 8s duration so backend messages are readable
- Update SubmissionLinksTab icon mapping for the new link types

* fix(submissions): correct logo cropping and remove duplicate category badge on submission card (#549)

- Logo overlay on banner uses object-contain so wordmark logos are not cropped
- Render the category badge once instead of twice on the explore submissions card

* feat(blog): add Boundless x Trustless Work hackathon post and fit cover images (#551)

- Add content/blog/boundless-launches-first-hackathon-campaign.mdx for the May 13 hackathon launch announcement.
- BlogCard and BlogPostDetails cover images use object-contain so the full banner is visible (previously object-cover cropped wider banners).
- Update SHARE icons on the blog details page from the old brand color #99FF2D to the current brand primary #2eedaa.

* feat(judge): dedicated judge portal, organizer invitations, completeness gate UX (#550)

* feat: implement judge portal with submission evaluation, invitations, and score calculation workflows

* feat: add countdown banner, support read-only score sliders, and integrate submission disqualification into grading modal

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(hackathons): add "hidden until results" submission visibility mode (#555)

Surfaces the new HIDDEN_UNTIL_RESULTS option (added in the nestjs PR) in
the organizer settings tab. Reorders the three visibility options so the
recommended "Shortlisted only" leads, the new "Hidden until results are
announced" sits in the middle, and "All submissions" comes last. Rewrites
the copy on the "All submissions" choice that incorrectly claimed
disqualified projects would be shown -- they never were on the backend,
and Phase 2 makes that an explicit guarantee. Aligns the form's default
and API-fallback value with the backend default (ACCEPTED_SHORTLISTED,
not ALL) so organizers don't see a misleading initial selection.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(hackathons): owner submission visibility, team UX, organizer teams page (#552)

Submission visibility on the public submissions tab
- Surface the user's own submission first on the hackathon submissions tab, regardless of submissionStatusVisibility setting. Team members (non-leader) see their team's submission too.

Find Team tab UX
- Stop replacing the whole tab with MyTeamView when the user has a team. Render MyTeamView at the top and the open-teams list below.
- Filter the user's own team out of the "Other Teams" list to avoid duplication.
- Wire the team count badge on the team-formation tab.

Team details
- New /hackathons/[slug]/teams/[teamId] page with team header, members list (clickable links to profiles), roles needed, leader card, and contact card.
- TeamCard click opens the team details page in a new tab.
- MyTeamView team name is now a clickable link to the same page.
- Add useTeam hook + query key.

Organizer submissions page
- Replace raw Buttons on review actions with BoundlessButton (default / outline / destructive) so colors come from the design system.
- Remove the "Before Deadline" gating on the Approve action; backend organizer override now allows it.

Organizer participants page
- Add Solo Participants and Teams metric cards next to the existing Total Participants and Total Submissions cards.

Organizer submissions page
- Add a metric strip with Total / Solo / Team Submissions sourced from the statistics endpoint.

Organizer Teams page (new)
- New route /organizations/[id]/hackathons/[hackathonId]/teams.
- Stats (Total / Open / Submitted / Not submitted), search by team or leader (server-side), status and submission filters (client-side), server-side pagination matching the participants page pattern, click to view team details in a new tab.
- Add "Teams" entry to the existing organizer hackathon sidebar (HackathonSidebar.tsx).

Image fit fixes for cropped logos/banners
- SubmissionCard banner and logo overlay use object-contain (banner was object-cover, cropping wordmarks and tall banners).
- /me/hackathons/submissions: banner, logo overlay, and small table thumbnail all use object-contain.
- ProjectSidebarHeader logo uses object-contain.

Type changes
- lib/api/hackathons/teams.ts Team interface gains optional hasSubmission flag.

* fix(blog): use object-cover so card and detail covers fill the frame (#558)

The earlier switch to object-contain was meant to preserve the full image, but it left dark letterbox bands around banners on both the BlogCard grid and the post-details hero. With properly-sized cover banners, object-cover fills the frame without visible cropping. Authors should size cover images for a 2:1 ratio on the card and the responsive heights on the details page.

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

1 participant