From 70c006ae21e46c3dc38e2f14e79e2cc63bd219bd Mon Sep 17 00:00:00 2001 From: Alabi Ibrahim Abimbola <139625252+abimbolaalabi@users.noreply.github.com> Date: Sat, 17 Oct 2026 11:55:43 +0100 Subject: [PATCH 1/2] feat(cards): link builder and project cards to the main app Builder and project cards now point to the public profile and project pages on boundlessfi.xyz through a shared main-app URL helper. Project cards use the project logo with an initials fallback, and cards without a username or slug render unlinked. Closes #401 --- components/cards/opportunity-card.tsx | 163 ++++++++++-------- components/cards/types.ts | 6 +- .../discover/to-builder-directory-card.ts | 7 +- components/discover/to-project-card.ts | 5 +- components/landing/to-builder-card.ts | 3 +- lib/main-app.ts | 20 +++ public/brand/test.png | Bin 111059 -> 0 bytes 7 files changed, 125 insertions(+), 79 deletions(-) create mode 100644 lib/main-app.ts delete mode 100644 public/brand/test.png diff --git a/components/cards/opportunity-card.tsx b/components/cards/opportunity-card.tsx index e0fcf045..cf152ce3 100644 --- a/components/cards/opportunity-card.tsx +++ b/components/cards/opportunity-card.tsx @@ -10,6 +10,7 @@ import Image from 'next/image'; import Link from 'next/link'; import type { ReactNode } from 'react'; +import { deriveInitials } from '@/lib/initials'; import { cn } from '@/lib/utils'; import type { OpportunityCardStatus, OpportunityCardView } from './types'; @@ -81,96 +82,116 @@ export function OpportunityCard({ participants, mode, comments, + logo, endsIn, reward, detailUrl, } = opportunity; - return ( - -
-
-
+
+
+ {logo ? ( {org} - - {org} + ) : ( + + {deriveInitials(title)} - - #{index} - -
- + )} + + {org} + + + #{index} +
+ +
-

- {title} -

+

+ {title} +

- {/* Single row: short items hold their size, the mode label truncates. */} -
- - - - {category} - + {/* Single row: short items hold their size, the mode label truncates. */} +
+ + + + {category} - - {participants} - - - {mode} - - - {comments} - -
+
+ + {participants} + + + {mode} + + + {comments} + +
- {endsIn || reward ? ( - <> - + {endsIn || reward ? ( + <> + -
- {endsIn ? ( - - - Ends in {endsIn} - - ) : null} - {reward ? ( - - Token - - {reward.amount.toLocaleString()} {reward.currency} - +
+ {endsIn ? ( + + + Ends in {endsIn} + + ) : null} + {reward ? ( + + Token + + {reward.amount.toLocaleString()} {reward.currency} - ) : null} -
- - ) : null} -
+ + ) : null} + + + ) : null} + + ); + + if (!detailUrl) return card; + + return ( + + {card} ); } diff --git a/components/cards/types.ts b/components/cards/types.ts index 3c0997b7..05d4df32 100644 --- a/components/cards/types.ts +++ b/components/cards/types.ts @@ -46,10 +46,12 @@ export interface OpportunityCardView { /** Sub-mode label or pillar name. Empty string when nothing better is available. */ mode: string; comments: number; + /** Optional project logo image URL. */ + logo?: string; /** Pre-formatted countdown like `4D:22H:49M` when a deadline is available. */ endsIn?: string; reward?: { amount: number; currency: string }; - /** Detail page path so cards can link out. */ - detailUrl: string; + /** Detail page URL so cards can link out. Absent when there is no target. */ + detailUrl?: string; isFeatured: boolean; } diff --git a/components/discover/to-builder-directory-card.ts b/components/discover/to-builder-directory-card.ts index 835c8add..7525f3ac 100644 --- a/components/discover/to-builder-directory-card.ts +++ b/components/discover/to-builder-directory-card.ts @@ -1,4 +1,5 @@ import type { BuilderCardView } from '@/components/cards/types'; +import { profileUrl } from '@/lib/main-app'; import type { BuilderListItemDto } from './use-builders'; @@ -21,10 +22,8 @@ export function toDirectoryBuilderCard( location: builder.location ?? builder.country ?? undefined, skills: builder.skills?.slice(0, MAX_SKILLS), // Only link out when a username exists; a null username would otherwise - // produce a `/builders/null` href. Cards without a target render as plain + // produce a `/profile/null` href. Cards without a target render as plain // (non-clickable) cards. - detailUrl: builder.username - ? `/builders/${builder.username}` - : undefined, + detailUrl: builder.username ? profileUrl(builder.username) : undefined, }; } diff --git a/components/discover/to-project-card.ts b/components/discover/to-project-card.ts index ce37a6ea..af363bbd 100644 --- a/components/discover/to-project-card.ts +++ b/components/discover/to-project-card.ts @@ -3,6 +3,7 @@ import type { OpportunityCardView, } from '@/components/cards/types'; import type { Schemas } from '@/lib/api/types'; +import { projectUrl } from '@/lib/main-app'; /** One `/projects` or `/projects/featured` row. */ export type ProjectCardDto = Schemas['PublicProjectCardDto']; @@ -40,7 +41,9 @@ export function toProjectCard( participants: project.team?.total ?? 1, mode: project.originType ? ORIGIN_LABEL[project.originType] : '', comments: project._count.comments, - detailUrl: `/projects/${project.slug ?? project.id}`, + logo: project.logo ?? undefined, + // Only link out when a slug exists; do not fall back to the id. + detailUrl: project.slug ? projectUrl(project.slug) : undefined, isFeatured: project.isFeatured, }; } diff --git a/components/landing/to-builder-card.ts b/components/landing/to-builder-card.ts index e55b3212..b6af73d4 100644 --- a/components/landing/to-builder-card.ts +++ b/components/landing/to-builder-card.ts @@ -1,5 +1,6 @@ import type { BuilderCardView } from '@/components/cards/types'; import type { Schemas } from '@/lib/api/types'; +import { profileUrl } from '@/lib/main-app'; const MAX_SKILLS = 4; @@ -16,6 +17,6 @@ export function toBuilderCard(builder: TopBuilder): BuilderCardView { skills: builder.skills.slice(0, MAX_SKILLS), followers: builder.followers, projects: builder.projects, - detailUrl: builder.username ? `/builders/${builder.username}` : undefined, + detailUrl: builder.username ? profileUrl(builder.username) : undefined, }; } diff --git a/lib/main-app.ts b/lib/main-app.ts new file mode 100644 index 00000000..4e78abea --- /dev/null +++ b/lib/main-app.ts @@ -0,0 +1,20 @@ +import { siteConfig } from '@/lib/seo/site'; + +/** + * Build an absolute URL on the main Boundless app. Paths are normalised to a + * leading slash so callers can pass either `'profile/jane'` or `'/profile/jane'`. + */ +export function mainAppUrl(path: string): string { + const normalized = path.startsWith('/') ? path : `/${path}`; + return `${siteConfig.parentUrl}${normalized}`; +} + +/** Public builder profile page in the main app. */ +export function profileUrl(username: string): string { + return mainAppUrl(`/profile/${encodeURIComponent(username)}`); +} + +/** Public project page in the main app. */ +export function projectUrl(slug: string): string { + return mainAppUrl(`/projects/${encodeURIComponent(slug)}`); +} diff --git a/public/brand/test.png b/public/brand/test.png deleted file mode 100644 index b1f7ae555b1aa8f88897583f70a7e117f15ede98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111059 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�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%0A~*3UV84sh&< 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 t^10FFEg5Pt#j zzU5%xMIw#;gAU_p8&I11fC1hN90d603 zV1c7vBJBf@qz>8u;EQb+=q6a8vJ5}$A=-m`lo9BIkJp!o%-J3rW4PZTW_zKxIo=WZ) zhh-Mx<5qx46NEKM zuL1=-l>+SYv2>#cmu9`Y{`e~ohHyltZ-Fy0WCSG)!&qA1L z<}+FeU}~QaobVM?6}iFiF{`32yylH-V0gGTfgEt6tcSKlhZ{C#V!*gF0x!cO0^f~; zl+Od9aTd-a8;_l~p#iNTz*~RL=VPTxmxRGJ0A;x^ADi*rqX3HZj=4>8p9{MK0jD4} zp?s3r8JH5>071@N+8Du7rXOVJdIk&TNJ2-3^BB4=A*u7~SY&>~8F-MXkY0cPm`g(U zElRoUiE#$dw{gJ7HLD=5(oMd}A(tv>c_BtuWI$tu&z9wp02Ua`G!AQvADY12u$O*| zLAFo^JiD&0n1uQ4Xi@_pYAZUCK}qCjQUk6dNkKC~(3F-ieh`LP|J1DFJ`kn{Gvtgn zm@{NldpCV66r-Px1%7Au5RTM5#IsRE`v1S-h+q`f4$$WRf+I1oPQO?QW1--{qroRI zt~zLH#LzQI@*O!du+2269MnRb=}v=fz>ua9x}gC)%nxXh$#Cot)&0)H`NRR612Yk` zuQ$W5V0d{DNwh_B$5qPbhmCXSeMtZzZ}7Ts1lHWep*XCkkI!nNb-X|u9O3~a5jCIt zbSIIb0!Bh{8_&Y=As)oXE})-+l|<1wAkMbjouO+*hrxR8mY2jIqP9{-*c=%hdIlhF z;0gR=FGvt|%gu#==ptY{&kIG@Od$IhAm#o4!dH;lUV)0_b~mU8IH{@AV0! z;uWE4Wcv&Wn7JTwX0xQ11#ta%D6^bt`Ew)ykvJV*{6T=kpIy-kjH4F(vKUag9o}D^ z{9}DO&}croFaicMG{|G9<`Q@;LUZ#lpvl0z7aE^~duNj&m@~F}a_|Ra*9ce?)iA<` zjtiQ)_uZxO6;H**JHq(?fcI0=0}PNpz#tA?-U2fs$W7BYjE-_h3tTTT7Ft2vjXQ)w;FrNqN3a-j1JDb~qmL+EATYY+8+SXz$zU3V)ep5%&H|!l zZI6hLx{BhJIKGdc0v9PLFn)yL2}IG*@Jr&;M4}940R|?J==&mVyx61Yw&^gB##~sOqO|D+c3;5Vru~@PMbA z5wc@Ed(9;zchle^m|AblWpEh-;kKqJSl1c6YW{(;AkH_gV`dP6cY+Ib4M(*a!r6b{ z2i)Fd6;+b?y$i$el4DQ=+)srrgn*3mA1KnoUZaOI4eks67mBp~1=j_6WHBcmYY8Zhf!ZR^C@--v)Hh(lBNM;x-PjVEi z@W()iW~Zu8=u4-FxHxKypgJN59sR2<0y-k`hzSMq0t9ATB!FG~=_zPz^NG>~K@jyv zO(2N0$7g=+jvPx2M{N;QM+C9mzuF>6^RPPT`&8i8SpGBn+cFpyx~UD96ibx&)0W|d zg>oIFg`itDJkrmGj-TNbAb!R&UPFe5_Y>HlZmLcI0LX1^i@0KdVAt0Gc=`@d+3bnB zCXC(axIE!6$gi!0gdV$WE8Yb88UM&zZDs6~L!d@sdJ0bQ*&c(V62-t4r}1q& zaFU=mqR%k^KBE0LeIr*2jibSqN7ET_`J)kifW#i3&P+3kvw^iWXCMRnHnm}}N+acE zqzo8{FE&6Pk|^&(4LD6bC@>KBF&t9kfJ=d#^umwh5O^{EYjAUz_kZA!E=7aKOTeWA zBjISRK>MLbx4FmiwhEND2b9jjp#$Z|c{)R6GDwF8r0nwG${vcE>muT*z!EG#T3d8u1>nYfWukVecb1>W|9*>@3hI7J8UAD@mWZstXHy5jG6 uxg&`3k!}tHG6x5w&reW*znp~VoxqCK(`6I0VVVa|u;itcq&`R(JpVs1$^;q! From 7efdcd35d3770dbba478d2931a90ced18c6c6c5a Mon Sep 17 00:00:00 2001 From: Security Fix Bot Date: Sun, 18 Oct 2026 10:56:13 +0100 Subject: [PATCH 2/2] feat: add how-to-get-listed explanation to builders directory - Add HowToGetListedDialog component explaining listing criteria - Update StatsBanner to support inline links in subtitle - Enhance empty state with listing explanation - Add screenshots documenting all three UI changes --- components/discover/builders-grid.tsx | 43 +++-- components/discover/builders-view.tsx | 163 +++++++++--------- .../discover/how-to-get-listed-dialog.tsx | 84 +++++++++ components/discover/stats-banner.tsx | 49 ++++-- 4 files changed, 232 insertions(+), 107 deletions(-) create mode 100644 components/discover/how-to-get-listed-dialog.tsx diff --git a/components/discover/builders-grid.tsx b/components/discover/builders-grid.tsx index 16a2e789..cde38c57 100644 --- a/components/discover/builders-grid.tsx +++ b/components/discover/builders-grid.tsx @@ -1,13 +1,13 @@ -'use client'; +"use client"; -import { BuilderCard } from '@/components/cards/builder-card'; -import { BuilderCardSkeleton } from '@/components/cards/builder-card-skeleton'; -import { Pagination } from '@/components/ui/pagination'; +import { BuilderCard } from "@/components/cards/builder-card"; +import { BuilderCardSkeleton } from "@/components/cards/builder-card-skeleton"; +import { Pagination } from "@/components/ui/pagination"; -import { toDirectoryBuilderCard } from './to-builder-directory-card'; -import type { BuildersDirectoryResponse } from './use-builders'; +import { toDirectoryBuilderCard } from "./to-builder-directory-card"; +import type { BuildersDirectoryResponse } from "./use-builders"; -const GRID_CLASS = 'grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4'; +const GRID_CLASS = "grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4"; export function BuildersGrid({ data, @@ -17,6 +17,7 @@ export function BuildersGrid({ page, pageSize, onPageChange, + onHelpClick, }: { data?: BuildersDirectoryResponse; isPending: boolean; @@ -26,6 +27,8 @@ export function BuildersGrid({ page: number; pageSize: number; onPageChange: (page: number) => void; + /** Called when the user clicks "How to get listed" in the empty state. */ + onHelpClick?: () => void; }) { if (isPending) { return ( @@ -39,7 +42,7 @@ export function BuildersGrid({ if (isError || !data) { return ( -

+

Builders could not be loaded right now.

); @@ -47,16 +50,26 @@ export function BuildersGrid({ if (data.data.length === 0) { return ( -

- {isNarrowed - ? 'No builders match these filters.' - : 'No builders to show yet.'} -

+
+

+ {isNarrowed + ? "No builders match these filters." + : "Builders appear here once their profile is complete and they have shipped work on Boundless."} +

+ {!isNarrowed && onHelpClick && ( + + )} +
); } return ( -
+
{data.data.map((builder) => ( )}
diff --git a/components/discover/builders-view.tsx b/components/discover/builders-view.tsx index c09084d8..7f9bbe10 100644 --- a/components/discover/builders-view.tsx +++ b/components/discover/builders-view.tsx @@ -1,24 +1,25 @@ -'use client'; +"use client"; -import { getCountryDataList } from 'countries-list'; -import { useRouter, useSearchParams } from 'next/navigation'; -import { useCallback, useEffect, useMemo, useState } from 'react'; +import { getCountryDataList } from "countries-list"; +import { useRouter, useSearchParams } from "next/navigation"; +import { useCallback, useEffect, useMemo, useState } from "react"; -import { BuilderCardSkeleton } from '@/components/cards/builder-card-skeleton'; -import { Activity01Icon, CodeIcon, GlobeIcon } from '@/components/icons'; -import { Section } from '@/components/marketing/section'; +import { BuilderCardSkeleton } from "@/components/cards/builder-card-skeleton"; +import { Activity01Icon, CodeIcon, GlobeIcon } from "@/components/icons"; +import { HowToGetListedDialog } from "@/components/discover/how-to-get-listed-dialog"; +import { Section } from "@/components/marketing/section"; -import { BuildersGrid } from './builders-grid'; -import { BuildersSortSelect } from './builders-sort-select'; -import { StatsBanner } from './stats-banner'; -import { DiscoverToolbar } from './discover-toolbar'; +import { BuildersGrid } from "./builders-grid"; +import { BuildersSortSelect } from "./builders-sort-select"; +import { StatsBanner } from "./stats-banner"; +import { DiscoverToolbar } from "./discover-toolbar"; import { FilterRail, hasActiveFilters, type FilterSectionConfig, type FilterValue, -} from './filter-rail'; -import { FilterSheet } from './filter-sheet'; +} from "./filter-rail"; +import { FilterSheet } from "./filter-sheet"; import { DEFAULT_BUILDER_SORT, isBuilderSort, @@ -26,11 +27,11 @@ import { useBuilders, type BuilderSort, type BuildersQueryParams, -} from './use-builders'; +} from "./use-builders"; const PAGE_SIZE = 12; const SEARCH_DEBOUNCE_MS = 300; -const SEARCH_PARAM = 'q'; +const SEARCH_PARAM = "q"; /** * The query string is the source of truth for everything that narrows the @@ -38,24 +39,24 @@ const SEARCH_PARAM = 'q'; * with the browser buttons. Defaults are left out to keep the URL readable. */ function readFilters(params: URLSearchParams): FilterValue { - const country = params.get('country'); - const status = params.get('status'); + const country = params.get("country"); + const status = params.get("status"); return { // Repeated `skills` params, matching what the endpoint accepts. Joining on // a comma would break any facet whose own label contains one. - skills: params.getAll('skills'), + skills: params.getAll("skills"), country: country ? [country] : [], status: status ? [status] : [], }; } function readPage(params: URLSearchParams): number { - const raw = Number(params.get('page')); + const raw = Number(params.get("page")); return Number.isInteger(raw) && raw > 0 ? raw : 1; } function readSort(params: URLSearchParams): BuilderSort { - const raw = params.get('sort'); + const raw = params.get("sort"); return raw && isBuilderSort(raw) ? raw : DEFAULT_BUILDER_SORT; } @@ -63,15 +64,15 @@ function buildQuery( search: string, filters: FilterValue, page: number, - sort: BuilderSort + sort: BuilderSort, ): string { const next = new URLSearchParams(); if (search) next.set(SEARCH_PARAM, search); - for (const skill of filters.skills ?? []) next.append('skills', skill); - if (filters.country?.[0]) next.set('country', filters.country[0]); - if (filters.status?.[0]) next.set('status', filters.status[0]); - if (page > 1) next.set('page', String(page)); - if (sort !== DEFAULT_BUILDER_SORT) next.set('sort', sort); + for (const skill of filters.skills ?? []) next.append("skills", skill); + if (filters.country?.[0]) next.set("country", filters.country[0]); + if (filters.status?.[0]) next.set("status", filters.status[0]); + if (page > 1) next.set("page", String(page)); + if (sort !== DEFAULT_BUILDER_SORT) next.set("sort", sort); return next.toString(); } @@ -83,7 +84,7 @@ const EMPTY_FILTERS: FilterValue = { /** ISO alpha-2 code -> country name, for friendlier facet labels. */ const COUNTRY_NAMES = new Map( - getCountryDataList().map(country => [country.iso2, country.name]) + getCountryDataList().map((country) => [country.iso2, country.name]), ); function countryLabel(code: string): string | undefined { @@ -101,7 +102,7 @@ export function BuildersView() { const router = useRouter(); const searchParams = useSearchParams(); - const search = searchParams.get(SEARCH_PARAM) ?? ''; + const search = searchParams.get(SEARCH_PARAM) ?? ""; const filters = useMemo(() => readFilters(searchParams), [searchParams]); const page = readPage(searchParams); const sort = readSort(searchParams); @@ -109,6 +110,7 @@ export function BuildersView() { const [searchInput, setSearchInput] = useState(search); const [railOpen, setRailOpen] = useState(true); const [sheetOpen, setSheetOpen] = useState(false); + const [helpDialogOpen, setHelpDialogOpen] = useState(false); // The box is the one control not driven straight from the URL, because typing // has to stay off the network until the visitor pauses. `committed` remembers @@ -129,16 +131,16 @@ export function BuildersView() { nextSearch: string, nextFilters: FilterValue, nextPage: number, - mode: 'push' | 'replace', - nextSort: BuilderSort = sort + mode: "push" | "replace", + nextSort: BuilderSort = sort, ) => { const query = buildQuery(nextSearch, nextFilters, nextPage, nextSort); - const href = query ? `/builders?${query}` : '/builders'; + const href = query ? `/builders?${query}` : "/builders"; // `scroll: false` so narrowing the list does not yank the page to the top. - if (mode === 'replace') router.replace(href, { scroll: false }); + if (mode === "replace") router.replace(href, { scroll: false }); else router.push(href, { scroll: false }); }, - [router, sort] + [router, sort], ); // Search uses replace so a debounced keystroke does not add a history entry. @@ -156,9 +158,9 @@ export function BuildersView() { if (trimmed) next.set(SEARCH_PARAM, trimmed); else next.delete(SEARCH_PARAM); // Narrowing the list invalidates the page number. - next.delete('page'); + next.delete("page"); const query = next.toString(); - router.replace(query ? `/builders?${query}` : '/builders', { + router.replace(query ? `/builders?${query}` : "/builders", { scroll: false, }); }, SEARCH_DEBOUNCE_MS); @@ -166,11 +168,11 @@ export function BuildersView() { }, [searchInput, search, router]); const applyFilters = (next: FilterValue) => { - navigate(search, next, 1, 'push'); + navigate(search, next, 1, "push"); }; const applySort = (next: BuilderSort) => { - navigate(search, filters, 1, 'push', next); + navigate(search, filters, 1, "push", next); }; const params = useMemo( @@ -185,7 +187,7 @@ export function BuildersView() { status: filters.status?.[0], sort, }), - [page, search, filters, sort] + [page, search, filters, sort], ); const { data, isError, isPending } = useBuilders(params); @@ -199,39 +201,39 @@ export function BuildersView() { if (!facets) return []; return [ { - group: 'skills', - selection: 'multi', - title: 'Skills', + group: "skills", + selection: "multi", + title: "Skills", icon: CodeIcon, - kind: 'facet', + kind: "facet", items: facets.skills, }, { - group: 'country', - selection: 'single', - title: 'Country', + group: "country", + selection: "single", + title: "Country", icon: GlobeIcon, - kind: 'facet', - items: facets.countries.map(item => ({ + kind: "facet", + items: facets.countries.map((item) => ({ ...item, label: countryLabel(item.value) ?? item.value, })), }, { - group: 'status', - selection: 'single', - title: 'Status', + group: "status", + selection: "single", + title: "Status", icon: Activity01Icon, - kind: 'enum', + kind: "enum", items: facets.statuses, }, ]; }, [facets]); const reset = () => { - setCommitted(''); - setSearchInput(''); - navigate('', EMPTY_FILTERS, 1, 'push'); + setCommitted(""); + setSearchInput(""); + navigate("", EMPTY_FILTERS, 1, "push"); }; // A shared link can name a page that no longer exists (the directory shrank, @@ -240,37 +242,42 @@ export function BuildersView() { const totalPages = data?.pagination.totalPages ?? 0; useEffect(() => { if (totalPages > 0 && page > totalPages) { - navigate(search, filters, totalPages, 'replace'); + navigate(search, filters, totalPages, "replace"); } }, [page, totalPages, search, filters, sort, navigate]); return (
setHelpDialogOpen(true), + }} /> setRailOpen(open => !open)} + onToggleFilters={() => setRailOpen((open) => !open)} onOpenMobileFilters={() => setSheetOpen(true)} filtersActive={hasActiveFilters(filters)} onReset={reset} query={searchInput} onQueryChange={setSearchInput} - placeholder='Search builders, skills, or locations' + placeholder="Search builders, skills, or locations" sort={} /> -
+
{railOpen ? ( -
); } @@ -319,14 +328,14 @@ export function BuildersView() { export function BuildersViewFallback() { return (
-
+
{Array.from({ length: PAGE_SIZE }, (_, index) => ( ))} diff --git a/components/discover/how-to-get-listed-dialog.tsx b/components/discover/how-to-get-listed-dialog.tsx new file mode 100644 index 00000000..861c7a03 --- /dev/null +++ b/components/discover/how-to-get-listed-dialog.tsx @@ -0,0 +1,84 @@ +"use client"; + +import { Button } from "@/components/ui/button"; +import { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { mainAppUrl } from "@/lib/main-app"; + +/** + * Dialog explaining how builders get listed in the directory. Triggered from + * the stats banner header or the empty state message. Lists the three criteria + * (complete profile, public profile, real work) and provides a link to the + * main app's profile settings. + */ +export function HowToGetListedDialog({ + open, + onOpenChange, +}: { + open: boolean; + onOpenChange: (open: boolean) => void; +}) { + return ( + + + + How to get listed + + Builders appear in the directory when they meet these requirements: + + + +
+
+
+ 1 +
+

+ Complete profile with a username, photo, and at least one skill +

+
+ +
+
+ 2 +
+

Public profile

+
+ +
+
+ 3 +
+

+ Real work on Boundless: a published project you created or joined, + a hackathon entry, a bounty submission, or a bounty, quest, or + grant award +

+
+
+ +
+ + + + +
+
+
+ ); +} diff --git a/components/discover/stats-banner.tsx b/components/discover/stats-banner.tsx index 81f988ec..7bb2d295 100644 --- a/components/discover/stats-banner.tsx +++ b/components/discover/stats-banner.tsx @@ -1,4 +1,4 @@ -import { cn } from '@/lib/utils'; +import { cn } from "@/lib/utils"; export interface StatsBannerStat { label: string; @@ -14,6 +14,12 @@ export interface StatsBannerProps { */ stats?: StatsBannerStat[]; className?: string; + /** Optional subtitle with a link, e.g. for "How to get listed". */ + subtitleWithLink?: { + text: string; + linkText: string; + onLinkClick: () => void; + }; } /** @@ -27,6 +33,7 @@ export function StatsBanner({ subtitle, stats = [], className, + subtitleWithLink, }: StatsBannerProps) { return (
{/* @@ -45,26 +52,38 @@ export function StatsBanner({ page background that is the same colour as the banner. */}