From b3bc6fceb95fb1be74841aaf55444be8648cc2a6 Mon Sep 17 00:00:00 2001 From: Nik Graf Date: Mon, 11 Aug 2025 10:43:54 +0200 Subject: [PATCH 1/9] prepare routes --- .../src/components/explore-tabs.tsx | 43 ++++++ .../src/components/navbar.tsx | 14 +- .../template-vite-react/src/routeTree.gen.ts | 134 +++++++++++++++++- .../src/routes/explore-public-knowledge.tsx | 129 ++--------------- .../explore-public-knowledge/asset-market.tsx | 14 ++ .../routes/explore-public-knowledge/dapps.tsx | 14 ++ .../routes/explore-public-knowledge/index.tsx | 7 + .../investment-rounts.tsx | 14 ++ .../explore-public-knowledge/projects.tsx | 134 ++++++++++++++++++ .../template-vite-react/src/routes/index.tsx | 2 +- 10 files changed, 371 insertions(+), 134 deletions(-) create mode 100644 apps/create-hypergraph/template-vite-react/src/components/explore-tabs.tsx create mode 100644 apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx create mode 100644 apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx create mode 100644 apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/index.tsx create mode 100644 apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounts.tsx create mode 100644 apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/projects.tsx diff --git a/apps/create-hypergraph/template-vite-react/src/components/explore-tabs.tsx b/apps/create-hypergraph/template-vite-react/src/components/explore-tabs.tsx new file mode 100644 index 00000000..d65f9940 --- /dev/null +++ b/apps/create-hypergraph/template-vite-react/src/components/explore-tabs.tsx @@ -0,0 +1,43 @@ +import { Link, useRouter } from '@tanstack/react-router'; +import { clsx } from 'clsx'; + +type Tab = { + label: string; + to: string; +}; + +const tabs: Tab[] = [ + { label: 'Projects', to: '/explore-public-knowledge/projects' }, + { label: 'dApps', to: '/explore-public-knowledge/dapps' }, + { label: 'Investment Rounts', to: '/explore-public-knowledge/investment-rounts' }, + { label: 'Asset Market', to: '/explore-public-knowledge/asset-market' }, +]; + +export function ExploreTabs() { + const router = useRouter(); + const pathname = router.state.location.pathname ?? ''; + + return ( +
+
+ {tabs.map((tab) => { + const isActive = pathname.startsWith(tab.to); + return ( + + {tab.label} + + ); + })} +
+
+ ); +} diff --git a/apps/create-hypergraph/template-vite-react/src/components/navbar.tsx b/apps/create-hypergraph/template-vite-react/src/components/navbar.tsx index 1f01dd46..9373cb08 100644 --- a/apps/create-hypergraph/template-vite-react/src/components/navbar.tsx +++ b/apps/create-hypergraph/template-vite-react/src/components/navbar.tsx @@ -1,11 +1,11 @@ import { Button } from '@/components/ui/button'; import { - NavigationMenu, - NavigationMenuContent, - NavigationMenuItem, - NavigationMenuLink, - NavigationMenuList, - NavigationMenuTrigger, + NavigationMenu, + NavigationMenuContent, + NavigationMenuItem, + NavigationMenuLink, + NavigationMenuList, + NavigationMenuTrigger, } from '@/components/ui/navigation-menu'; import { TooltipProvider } from '@/components/ui/tooltip'; import { useHypergraphApp, useHypergraphAuth } from '@graphprotocol/hypergraph-react'; @@ -51,7 +51,7 @@ export function Navbar() { - + Explore Public Knowledge diff --git a/apps/create-hypergraph/template-vite-react/src/routeTree.gen.ts b/apps/create-hypergraph/template-vite-react/src/routeTree.gen.ts index 6ea8f4ff..4ddeb0d8 100644 --- a/apps/create-hypergraph/template-vite-react/src/routeTree.gen.ts +++ b/apps/create-hypergraph/template-vite-react/src/routeTree.gen.ts @@ -13,8 +13,13 @@ import { Route as LoginRouteImport } from './routes/login' import { Route as ExplorePublicKnowledgeRouteImport } from './routes/explore-public-knowledge' import { Route as AuthenticateSuccessRouteImport } from './routes/authenticate-success' import { Route as IndexRouteImport } from './routes/index' +import { Route as ExplorePublicKnowledgeIndexRouteImport } from './routes/explore-public-knowledge/index' import { Route as PublicSpaceSpaceIdRouteImport } from './routes/public-space/$space-id' import { Route as PrivateSpaceSpaceIdRouteImport } from './routes/private-space/$space-id' +import { Route as ExplorePublicKnowledgeProjectsRouteImport } from './routes/explore-public-knowledge/projects' +import { Route as ExplorePublicKnowledgeInvestmentRountsRouteImport } from './routes/explore-public-knowledge/investment-rounts' +import { Route as ExplorePublicKnowledgeDappsRouteImport } from './routes/explore-public-knowledge/dapps' +import { Route as ExplorePublicKnowledgeAssetMarketRouteImport } from './routes/explore-public-knowledge/asset-market' const LoginRoute = LoginRouteImport.update({ id: '/login', @@ -36,6 +41,12 @@ const IndexRoute = IndexRouteImport.update({ path: '/', getParentRoute: () => rootRouteImport, } as any) +const ExplorePublicKnowledgeIndexRoute = + ExplorePublicKnowledgeIndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => ExplorePublicKnowledgeRoute, + } as any) const PublicSpaceSpaceIdRoute = PublicSpaceSpaceIdRouteImport.update({ id: '/public-space/$space-id', path: '/public-space/$space-id', @@ -46,31 +57,69 @@ const PrivateSpaceSpaceIdRoute = PrivateSpaceSpaceIdRouteImport.update({ path: '/private-space/$space-id', getParentRoute: () => rootRouteImport, } as any) +const ExplorePublicKnowledgeProjectsRoute = + ExplorePublicKnowledgeProjectsRouteImport.update({ + id: '/projects', + path: '/projects', + getParentRoute: () => ExplorePublicKnowledgeRoute, + } as any) +const ExplorePublicKnowledgeInvestmentRountsRoute = + ExplorePublicKnowledgeInvestmentRountsRouteImport.update({ + id: '/investment-rounts', + path: '/investment-rounts', + getParentRoute: () => ExplorePublicKnowledgeRoute, + } as any) +const ExplorePublicKnowledgeDappsRoute = + ExplorePublicKnowledgeDappsRouteImport.update({ + id: '/dapps', + path: '/dapps', + getParentRoute: () => ExplorePublicKnowledgeRoute, + } as any) +const ExplorePublicKnowledgeAssetMarketRoute = + ExplorePublicKnowledgeAssetMarketRouteImport.update({ + id: '/asset-market', + path: '/asset-market', + getParentRoute: () => ExplorePublicKnowledgeRoute, + } as any) export interface FileRoutesByFullPath { '/': typeof IndexRoute '/authenticate-success': typeof AuthenticateSuccessRoute - '/explore-public-knowledge': typeof ExplorePublicKnowledgeRoute + '/explore-public-knowledge': typeof ExplorePublicKnowledgeRouteWithChildren '/login': typeof LoginRoute + '/explore-public-knowledge/asset-market': typeof ExplorePublicKnowledgeAssetMarketRoute + '/explore-public-knowledge/dapps': typeof ExplorePublicKnowledgeDappsRoute + '/explore-public-knowledge/investment-rounts': typeof ExplorePublicKnowledgeInvestmentRountsRoute + '/explore-public-knowledge/projects': typeof ExplorePublicKnowledgeProjectsRoute '/private-space/$space-id': typeof PrivateSpaceSpaceIdRoute '/public-space/$space-id': typeof PublicSpaceSpaceIdRoute + '/explore-public-knowledge/': typeof ExplorePublicKnowledgeIndexRoute } export interface FileRoutesByTo { '/': typeof IndexRoute '/authenticate-success': typeof AuthenticateSuccessRoute - '/explore-public-knowledge': typeof ExplorePublicKnowledgeRoute '/login': typeof LoginRoute + '/explore-public-knowledge/asset-market': typeof ExplorePublicKnowledgeAssetMarketRoute + '/explore-public-knowledge/dapps': typeof ExplorePublicKnowledgeDappsRoute + '/explore-public-knowledge/investment-rounts': typeof ExplorePublicKnowledgeInvestmentRountsRoute + '/explore-public-knowledge/projects': typeof ExplorePublicKnowledgeProjectsRoute '/private-space/$space-id': typeof PrivateSpaceSpaceIdRoute '/public-space/$space-id': typeof PublicSpaceSpaceIdRoute + '/explore-public-knowledge': typeof ExplorePublicKnowledgeIndexRoute } export interface FileRoutesById { __root__: typeof rootRouteImport '/': typeof IndexRoute '/authenticate-success': typeof AuthenticateSuccessRoute - '/explore-public-knowledge': typeof ExplorePublicKnowledgeRoute + '/explore-public-knowledge': typeof ExplorePublicKnowledgeRouteWithChildren '/login': typeof LoginRoute + '/explore-public-knowledge/asset-market': typeof ExplorePublicKnowledgeAssetMarketRoute + '/explore-public-knowledge/dapps': typeof ExplorePublicKnowledgeDappsRoute + '/explore-public-knowledge/investment-rounts': typeof ExplorePublicKnowledgeInvestmentRountsRoute + '/explore-public-knowledge/projects': typeof ExplorePublicKnowledgeProjectsRoute '/private-space/$space-id': typeof PrivateSpaceSpaceIdRoute '/public-space/$space-id': typeof PublicSpaceSpaceIdRoute + '/explore-public-knowledge/': typeof ExplorePublicKnowledgeIndexRoute } export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath @@ -79,30 +128,44 @@ export interface FileRouteTypes { | '/authenticate-success' | '/explore-public-knowledge' | '/login' + | '/explore-public-knowledge/asset-market' + | '/explore-public-knowledge/dapps' + | '/explore-public-knowledge/investment-rounts' + | '/explore-public-knowledge/projects' | '/private-space/$space-id' | '/public-space/$space-id' + | '/explore-public-knowledge/' fileRoutesByTo: FileRoutesByTo to: | '/' | '/authenticate-success' - | '/explore-public-knowledge' | '/login' + | '/explore-public-knowledge/asset-market' + | '/explore-public-knowledge/dapps' + | '/explore-public-knowledge/investment-rounts' + | '/explore-public-knowledge/projects' | '/private-space/$space-id' | '/public-space/$space-id' + | '/explore-public-knowledge' id: | '__root__' | '/' | '/authenticate-success' | '/explore-public-knowledge' | '/login' + | '/explore-public-knowledge/asset-market' + | '/explore-public-knowledge/dapps' + | '/explore-public-knowledge/investment-rounts' + | '/explore-public-knowledge/projects' | '/private-space/$space-id' | '/public-space/$space-id' + | '/explore-public-knowledge/' fileRoutesById: FileRoutesById } export interface RootRouteChildren { IndexRoute: typeof IndexRoute AuthenticateSuccessRoute: typeof AuthenticateSuccessRoute - ExplorePublicKnowledgeRoute: typeof ExplorePublicKnowledgeRoute + ExplorePublicKnowledgeRoute: typeof ExplorePublicKnowledgeRouteWithChildren LoginRoute: typeof LoginRoute PrivateSpaceSpaceIdRoute: typeof PrivateSpaceSpaceIdRoute PublicSpaceSpaceIdRoute: typeof PublicSpaceSpaceIdRoute @@ -138,6 +201,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof IndexRouteImport parentRoute: typeof rootRouteImport } + '/explore-public-knowledge/': { + id: '/explore-public-knowledge/' + path: '/' + fullPath: '/explore-public-knowledge/' + preLoaderRoute: typeof ExplorePublicKnowledgeIndexRouteImport + parentRoute: typeof ExplorePublicKnowledgeRoute + } '/public-space/$space-id': { id: '/public-space/$space-id' path: '/public-space/$space-id' @@ -152,13 +222,65 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof PrivateSpaceSpaceIdRouteImport parentRoute: typeof rootRouteImport } + '/explore-public-knowledge/projects': { + id: '/explore-public-knowledge/projects' + path: '/projects' + fullPath: '/explore-public-knowledge/projects' + preLoaderRoute: typeof ExplorePublicKnowledgeProjectsRouteImport + parentRoute: typeof ExplorePublicKnowledgeRoute + } + '/explore-public-knowledge/investment-rounts': { + id: '/explore-public-knowledge/investment-rounts' + path: '/investment-rounts' + fullPath: '/explore-public-knowledge/investment-rounts' + preLoaderRoute: typeof ExplorePublicKnowledgeInvestmentRountsRouteImport + parentRoute: typeof ExplorePublicKnowledgeRoute + } + '/explore-public-knowledge/dapps': { + id: '/explore-public-knowledge/dapps' + path: '/dapps' + fullPath: '/explore-public-knowledge/dapps' + preLoaderRoute: typeof ExplorePublicKnowledgeDappsRouteImport + parentRoute: typeof ExplorePublicKnowledgeRoute + } + '/explore-public-knowledge/asset-market': { + id: '/explore-public-knowledge/asset-market' + path: '/asset-market' + fullPath: '/explore-public-knowledge/asset-market' + preLoaderRoute: typeof ExplorePublicKnowledgeAssetMarketRouteImport + parentRoute: typeof ExplorePublicKnowledgeRoute + } } } +interface ExplorePublicKnowledgeRouteChildren { + ExplorePublicKnowledgeAssetMarketRoute: typeof ExplorePublicKnowledgeAssetMarketRoute + ExplorePublicKnowledgeDappsRoute: typeof ExplorePublicKnowledgeDappsRoute + ExplorePublicKnowledgeInvestmentRountsRoute: typeof ExplorePublicKnowledgeInvestmentRountsRoute + ExplorePublicKnowledgeProjectsRoute: typeof ExplorePublicKnowledgeProjectsRoute + ExplorePublicKnowledgeIndexRoute: typeof ExplorePublicKnowledgeIndexRoute +} + +const ExplorePublicKnowledgeRouteChildren: ExplorePublicKnowledgeRouteChildren = + { + ExplorePublicKnowledgeAssetMarketRoute: + ExplorePublicKnowledgeAssetMarketRoute, + ExplorePublicKnowledgeDappsRoute: ExplorePublicKnowledgeDappsRoute, + ExplorePublicKnowledgeInvestmentRountsRoute: + ExplorePublicKnowledgeInvestmentRountsRoute, + ExplorePublicKnowledgeProjectsRoute: ExplorePublicKnowledgeProjectsRoute, + ExplorePublicKnowledgeIndexRoute: ExplorePublicKnowledgeIndexRoute, + } + +const ExplorePublicKnowledgeRouteWithChildren = + ExplorePublicKnowledgeRoute._addFileChildren( + ExplorePublicKnowledgeRouteChildren, + ) + const rootRouteChildren: RootRouteChildren = { IndexRoute: IndexRoute, AuthenticateSuccessRoute: AuthenticateSuccessRoute, - ExplorePublicKnowledgeRoute: ExplorePublicKnowledgeRoute, + ExplorePublicKnowledgeRoute: ExplorePublicKnowledgeRouteWithChildren, LoginRoute: LoginRoute, PrivateSpaceSpaceIdRoute: PrivateSpaceSpaceIdRoute, PublicSpaceSpaceIdRoute: PublicSpaceSpaceIdRoute, diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge.tsx index 6f37328c..c4d02867 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge.tsx @@ -1,32 +1,14 @@ -import { GraphImage } from '@/components/graph-image'; -import { Project } from '@/schema'; -import { useQuery } from '@graphprotocol/hypergraph-react'; -import { createFileRoute } from '@tanstack/react-router'; -import { useState } from 'react'; +import { ExploreTabs } from '@/components/explore-tabs'; +import { Outlet, createFileRoute } from '@tanstack/react-router'; export const Route = createFileRoute('/explore-public-knowledge')({ - component: ExplorePublicKnowledge, + component: ExploreLayout, }); -function ExplorePublicKnowledge() { - const [searchTerm, setSearchTerm] = useState(''); - - const { data: projects, isPending } = useQuery(Project, { - mode: 'public', - space: 'b2565802-3118-47be-91f2-e59170735bac', - first: 40, - include: { avatar: {} }, - filter: { - name: { - // contains is case sensitive - contains: searchTerm, - }, - }, - }); - +function ExploreLayout() { return ( -
-
+
+

Explore Public Knowledge

@@ -35,103 +17,10 @@ function ExplorePublicKnowledge() {

- {/* Search UI */} -
-
-
- - - -
- setSearchTerm(e.target.value)} - placeholder="Search projects..." - className="block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl leading-5 bg-white placeholder-gray-500 focus:outline-none focus:placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 transition-all duration-200" - /> -
+ +
+
- -
- {projects.map((project) => ( -
- {/* Gradient overlay */} -
- - {/* Content */} -
- {/* Project icon/avatar */} -
- {project.avatar?.[0]?.url ? ( - - ) : ( - {project.name.charAt(0).toUpperCase()} - )} -
- - {/* Project name */} -

- {project.name} -

- - {/* Project ID */} -

{project.id}

- - {/* Project description */} - {project.description &&

{project.description}

} - - {/* Project xUrl */} - {project.xUrl && ( - - - - - View on X - - )} -
- - {/* Decorative corner accent */} -
-
- ))} -
- - {/* Empty state */} - {isPending === false && projects.length === 0 && ( -
-
- - - -
-

No Projects Found

-

There are currently no public projects available to explore.

-
- )}
); } diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx new file mode 100644 index 00000000..b826fccc --- /dev/null +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx @@ -0,0 +1,14 @@ +import { createFileRoute } from '@tanstack/react-router'; + +function AssetMarket() { + return ( +
+

Asset Market

+

Coming soon.

+
+ ); +} + +export const Route = createFileRoute('/explore-public-knowledge/asset-market')({ + component: AssetMarket, +}); diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx new file mode 100644 index 00000000..0358d722 --- /dev/null +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx @@ -0,0 +1,14 @@ +import { createFileRoute } from '@tanstack/react-router'; + +function Dapps() { + return ( +
+

dApps

+

Coming soon.

+
+ ); +} + +export const Route = createFileRoute('/explore-public-knowledge/dapps')({ + component: Dapps, +}); diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/index.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/index.tsx new file mode 100644 index 00000000..4d5ae379 --- /dev/null +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/index.tsx @@ -0,0 +1,7 @@ +import { createFileRoute, redirect } from '@tanstack/react-router'; + +export const Route = createFileRoute('/explore-public-knowledge/')({ + beforeLoad: () => { + throw redirect({ to: '/explore-public-knowledge/projects' }); + }, +}); diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounts.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounts.tsx new file mode 100644 index 00000000..fed98b86 --- /dev/null +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounts.tsx @@ -0,0 +1,14 @@ +import { createFileRoute } from '@tanstack/react-router'; + +function InvestmentRounts() { + return ( +
+

Investment Rounts

+

Coming soon.

+
+ ); +} + +export const Route = createFileRoute('/explore-public-knowledge/investment-rounts')({ + component: InvestmentRounts, +}); diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/projects.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/projects.tsx new file mode 100644 index 00000000..bd209346 --- /dev/null +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/projects.tsx @@ -0,0 +1,134 @@ +import { GraphImage } from '@/components/graph-image'; +import { Project } from '@/schema'; +import { useQuery } from '@graphprotocol/hypergraph-react'; +import { createFileRoute } from '@tanstack/react-router'; +import { useState } from 'react'; + +export const Route = createFileRoute('/explore-public-knowledge/projects')({ + component: ExplorePublicKnowledgeProjects, +}); + +function ExplorePublicKnowledgeProjects() { + const [searchTerm, setSearchTerm] = useState(''); + + const { data: projects, isPending } = useQuery(Project, { + mode: 'public', + space: 'b2565802-3118-47be-91f2-e59170735bac', + first: 40, + include: { avatar: {} }, + filter: { + name: { + // contains is case sensitive + contains: searchTerm, + }, + }, + }); + + return ( + <> +
+

+ Projects +

+
+ + {/* Search UI */} +
+
+
+ + + +
+ setSearchTerm(e.target.value)} + placeholder="Search projects..." + className="block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl leading-5 bg-white placeholder-gray-500 focus:outline-none focus:placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 transition-all duration-200" + /> +
+
+ +
+ {projects.map((project) => ( +
+ {/* Gradient overlay */} +
+ + {/* Content */} +
+ {/* Project icon/avatar */} +
+ {project.avatar?.[0]?.url ? ( + + ) : ( + {project.name.charAt(0).toUpperCase()} + )} +
+ + {/* Project name */} +

+ {project.name} +

+ + {/* Project ID */} +

{project.id}

+ + {/* Project description */} + {project.description &&

{project.description}

} + + {/* Project xUrl */} + {project.xUrl && ( + + + + + View on X + + )} +
+ + {/* Decorative corner accent */} +
+
+ ))} +
+ + {/* Empty state */} + {isPending === false && projects.length === 0 && ( +
+
+ + + +
+

No Projects Found

+

There are currently no public projects available to explore.

+
+ )} + + ); +} diff --git a/apps/create-hypergraph/template-vite-react/src/routes/index.tsx b/apps/create-hypergraph/template-vite-react/src/routes/index.tsx index 228ac11f..b8ae9d1b 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/index.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/index.tsx @@ -53,7 +53,7 @@ function Index() {

Discover and explore the vast network of knowledge already available in the public Knowledge Graph.

- + From 179c6ca40f4c71c399833c90f6c13b1651efcded Mon Sep 17 00:00:00 2001 From: Nik Graf Date: Mon, 11 Aug 2025 11:02:42 +0200 Subject: [PATCH 2/9] fetch data --- .../template-vite-react/src/mapping.ts | 18 ++++++++++++++++++ .../explore-public-knowledge/asset-market.tsx | 17 +++++++++++++---- .../routes/explore-public-knowledge/dapps.tsx | 18 ++++++++++++++---- .../investment-rounts.tsx | 17 +++++++++++++---- .../template-vite-react/src/schema.ts | 12 ++++++++++++ 5 files changed, 70 insertions(+), 12 deletions(-) diff --git a/apps/create-hypergraph/template-vite-react/src/mapping.ts b/apps/create-hypergraph/template-vite-react/src/mapping.ts index 5a599dfb..5ebe2904 100644 --- a/apps/create-hypergraph/template-vite-react/src/mapping.ts +++ b/apps/create-hypergraph/template-vite-react/src/mapping.ts @@ -26,4 +26,22 @@ export const mapping: Mapping.Mapping = { avatar: Id('1155beff-fad5-49b7-a2e0-da4777b8792c'), }, }, + Dapp: { + typeIds: [Id('8ca136d0-698a-4bbf-a76b-8e2741b2dc8c')], + properties: { + name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + }, + }, + InvestmentRound: { + typeIds: [Id('8f03f4c9-59e4-44a8-a625-c0a40b1ff330')], + properties: { + name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + }, + }, + Asset: { + typeIds: [Id('f8780a80-c238-4a2a-96cb-567d88b1aa63')], + properties: { + name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + }, + }, }; diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx index b826fccc..84709a64 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx @@ -1,6 +1,19 @@ +import { Asset } from '@/schema'; +import { useQuery } from '@graphprotocol/hypergraph-react'; import { createFileRoute } from '@tanstack/react-router'; +export const Route = createFileRoute('/explore-public-knowledge/asset-market')({ + component: AssetMarket, +}); + function AssetMarket() { + const { data: assets, isPending } = useQuery(Asset, { + mode: 'public', + space: 'b2565802-3118-47be-91f2-e59170735bac', + first: 40, + }); + + console.log(assets, isPending); return (

Asset Market

@@ -8,7 +21,3 @@ function AssetMarket() {
); } - -export const Route = createFileRoute('/explore-public-knowledge/asset-market')({ - component: AssetMarket, -}); diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx index 0358d722..d56de5a1 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx @@ -1,6 +1,20 @@ +import { Dapp } from '@/schema'; +import { useQuery } from '@graphprotocol/hypergraph-react'; import { createFileRoute } from '@tanstack/react-router'; +export const Route = createFileRoute('/explore-public-knowledge/dapps')({ + component: Dapps, +}); + function Dapps() { + const { data: dapps, isPending } = useQuery(Dapp, { + mode: 'public', + space: 'b2565802-3118-47be-91f2-e59170735bac', + first: 40, + }); + + console.log(dapps, isPending); + return (

dApps

@@ -8,7 +22,3 @@ function Dapps() {
); } - -export const Route = createFileRoute('/explore-public-knowledge/dapps')({ - component: Dapps, -}); diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounts.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounts.tsx index fed98b86..59c95976 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounts.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounts.tsx @@ -1,6 +1,19 @@ +import { InvestmentRound } from '@/schema'; +import { useQuery } from '@graphprotocol/hypergraph-react'; import { createFileRoute } from '@tanstack/react-router'; +export const Route = createFileRoute('/explore-public-knowledge/investment-rounts')({ + component: InvestmentRounts, +}); + function InvestmentRounts() { + const { data: investmentRounds, isPending } = useQuery(InvestmentRound, { + mode: 'public', + space: 'b2565802-3118-47be-91f2-e59170735bac', + first: 40, + }); + + console.log(investmentRounds, isPending); return (

Investment Rounts

@@ -8,7 +21,3 @@ function InvestmentRounts() {
); } - -export const Route = createFileRoute('/explore-public-knowledge/investment-rounts')({ - component: InvestmentRounts, -}); diff --git a/apps/create-hypergraph/template-vite-react/src/schema.ts b/apps/create-hypergraph/template-vite-react/src/schema.ts index 4e869b87..a02693ba 100644 --- a/apps/create-hypergraph/template-vite-react/src/schema.ts +++ b/apps/create-hypergraph/template-vite-react/src/schema.ts @@ -15,3 +15,15 @@ export class Project extends Entity.Class('Project')({ xUrl: Type.optional(Type.String), avatar: Type.Relation(Image), }) {} + +export class Dapp extends Entity.Class('Dapp')({ + name: Type.String, +}) {} + +export class InvestmentRound extends Entity.Class('InvestmentRound')({ + name: Type.String, +}) {} + +export class Asset extends Entity.Class('Asset')({ + name: Type.String, +}) {} From 463792d53f6cd6716801547800a931896dbf59f9 Mon Sep 17 00:00:00 2001 From: Nik Graf Date: Mon, 11 Aug 2025 11:05:02 +0200 Subject: [PATCH 3/9] fix active tab --- .../src/components/explore-tabs.tsx | 35 ++++++++----------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/apps/create-hypergraph/template-vite-react/src/components/explore-tabs.tsx b/apps/create-hypergraph/template-vite-react/src/components/explore-tabs.tsx index d65f9940..a8a90fe1 100644 --- a/apps/create-hypergraph/template-vite-react/src/components/explore-tabs.tsx +++ b/apps/create-hypergraph/template-vite-react/src/components/explore-tabs.tsx @@ -1,4 +1,4 @@ -import { Link, useRouter } from '@tanstack/react-router'; +import { Link } from '@tanstack/react-router'; import { clsx } from 'clsx'; type Tab = { @@ -14,29 +14,22 @@ const tabs: Tab[] = [ ]; export function ExploreTabs() { - const router = useRouter(); - const pathname = router.state.location.pathname ?? ''; - return (
- {tabs.map((tab) => { - const isActive = pathname.startsWith(tab.to); - return ( - - {tab.label} - - ); - })} + {tabs.map((tab) => ( + + {tab.label} + + ))}
); From 4e0588f4be8dd2b9a3098ab41efd497736fb7115 Mon Sep 17 00:00:00 2001 From: Nik Graf Date: Mon, 11 Aug 2025 13:05:04 +0200 Subject: [PATCH 4/9] query assets, dapps and investment rounds --- .../template-vite-react/src/mapping.ts | 26 +++++ .../explore-public-knowledge/asset-market.tsx | 70 +++++++++++- .../routes/explore-public-knowledge/dapps.tsx | 107 +++++++++++++++++- .../investment-rounts.tsx | 87 +++++++++++++- .../explore-public-knowledge/projects.tsx | 2 + .../template-vite-react/src/schema.ts | 18 +++ 6 files changed, 294 insertions(+), 16 deletions(-) diff --git a/apps/create-hypergraph/template-vite-react/src/mapping.ts b/apps/create-hypergraph/template-vite-react/src/mapping.ts index 5ebe2904..1ae2c37a 100644 --- a/apps/create-hypergraph/template-vite-react/src/mapping.ts +++ b/apps/create-hypergraph/template-vite-react/src/mapping.ts @@ -28,6 +28,24 @@ export const mapping: Mapping.Mapping = { }, Dapp: { typeIds: [Id('8ca136d0-698a-4bbf-a76b-8e2741b2dc8c')], + properties: { + name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + description: Id('9b1f76ff-9711-404c-861e-59dc3fa7d037'), + xUrl: Id('0d625978-4b3c-4b57-a86f-de45c997c73c'), + githubUrl: Id('9eedefa8-60ae-4ac1-9a04-805054a4b094'), + }, + relations: { + avatar: Id('1155beff-fad5-49b7-a2e0-da4777b8792c'), + }, + }, + Investor: { + typeIds: [Id('331aea18-973c-4adc-8f53-614f598d262d')], + properties: { + name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + }, + }, + FundingStage: { + typeIds: [Id('8d35d217-3fa1-4686-b74f-fcb3e9438067')], properties: { name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'), }, @@ -36,12 +54,20 @@ export const mapping: Mapping.Mapping = { typeIds: [Id('8f03f4c9-59e4-44a8-a625-c0a40b1ff330')], properties: { name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + raisedAmount: Id('16781706-dd9c-48bf-913e-cdf18b56034f'), + }, + relations: { + investors: Id('9b8a610a-fa35-486e-a479-e253dbdabb4f'), + fundingStages: Id('e278c3d4-78b9-4222-b272-5a39a8556bd2'), + raisedBy: Id('b4878d1a-0609-488d-b8a6-e19862d6b62f'), }, }, Asset: { typeIds: [Id('f8780a80-c238-4a2a-96cb-567d88b1aa63')], properties: { name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + symbol: Id('ace1e96c-9b83-47b4-bd33-1d302ec0a0f5'), + blockchainAddress: Id('56b5944f-f059-48d1-b0fa-34abe84219da'), }, }, }; diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx index 84709a64..e1819959 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx @@ -13,11 +13,71 @@ function AssetMarket() { first: 40, }); - console.log(assets, isPending); return ( -
-

Asset Market

-

Coming soon.

-
+ <> +
+

+ Asset Market +

+
+ + {isPending &&
Loading…
} + +
+ {assets.map((asset) => ( +
+ {/* Gradient overlay */} +
+ + {/* Content */} +
+
+ {asset.name.charAt(0).toUpperCase()} +
+ + {/* Asset name */} +

+ {asset.name} +

+ + {/* Asset ID */} +

{asset.id}

+ + {/* Asset symbol */} + {asset.symbol &&

{asset.symbol}

} + + {/* Asset blockchain address */} + {asset.blockchainAddress && ( +

{asset.blockchainAddress}

+ )} +
+ + {/* Decorative corner accent */} +
+
+ ))} +
+ + {/* Empty state */} + {isPending === false && assets.length === 0 && ( +
+
+ + + +
+

No Projects Found

+

There are currently no public projects available to explore.

+
+ )} + ); } diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx index d56de5a1..bc69730e 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx @@ -1,3 +1,4 @@ +import { GraphImage } from '@/components/graph-image'; import { Dapp } from '@/schema'; import { useQuery } from '@graphprotocol/hypergraph-react'; import { createFileRoute } from '@tanstack/react-router'; @@ -11,14 +12,108 @@ function Dapps() { mode: 'public', space: 'b2565802-3118-47be-91f2-e59170735bac', first: 40, + include: { avatar: {} }, }); - console.log(dapps, isPending); - return ( -
-

dApps

-

Coming soon.

-
+ <> +
+

+ Dapps +

+
+ + {isPending &&
Loading…
} + +
+ {dapps.map((dapp) => ( +
+ {/* Gradient overlay */} +
+ + {/* Content */} +
+ {/* Dapp icon/avatar */} +
+ {dapp.avatar?.[0]?.url ? ( + + ) : ( + {dapp.name.charAt(0).toUpperCase()} + )} +
+ + {/* Asset name */} +

+ {dapp.name} +

+ + {/* Asset ID */} +

{dapp.id}

+ + {/* Dapp description */} + {dapp.description &&

{dapp.description}

} + + {/* Dapp xUrl */} + {dapp.xUrl && ( + + + + + View on X + + )} + + {/* Dapp githubUrl */} + {dapp.githubUrl && ( + + + + + View on Github + + )} +
+ + {/* Decorative corner accent */} +
+
+ ))} +
+ + {/* Empty state */} + {isPending === false && dapps.length === 0 && ( +
+
+ + + +
+

No Projects Found

+

There are currently no public projects available to explore.

+
+ )} + ); } diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounts.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounts.tsx index 59c95976..b789a2de 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounts.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounts.tsx @@ -11,13 +11,90 @@ function InvestmentRounts() { mode: 'public', space: 'b2565802-3118-47be-91f2-e59170735bac', first: 40, + include: { + investors: {}, + fundingStages: {}, + raisedBy: {}, + }, }); - console.log(investmentRounds, isPending); return ( -
-

Investment Rounts

-

Coming soon.

-
+ <> +
+

+ Investment Rounds +

+
+ + {isPending &&
Loading…
} + + {/* Investment rounds */} +
+ {investmentRounds.map((investmentRound) => ( +
+ {/* Gradient overlay */} +
+ + {/* Content */} +
+
+ {investmentRound.name.charAt(0).toUpperCase()} +
+ + {/* Asset name */} +

+ {investmentRound.name} +

+ + {/* Asset ID */} +

{investmentRound.id}

+ + {/* Investment round raised amount */} + {investmentRound.raisedAmount && ( +

USD {investmentRound.raisedAmount}

+ )} + + {/* Investment round funding stages */} + {investmentRound.fundingStages.length > 0 && ( +

+ {investmentRound.fundingStages.map((fundingStage) => fundingStage.name).join(', ')} +

+ )} + + {/* Investment round investors */} + {investmentRound.investors.length > 0 && ( +

+ {investmentRound.investors.map((investor) => investor.name).join(', ')} +

+ )} +
+ + {/* Decorative corner accent */} +
+
+ ))} +
+ + {/* Empty state */} + {isPending === false && investmentRounds.length === 0 && ( +
+
+ + + +
+

No Projects Found

+

There are currently no public projects available to explore.

+
+ )} + ); } diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/projects.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/projects.tsx index bd209346..38ca28ea 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/projects.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/projects.tsx @@ -55,6 +55,8 @@ function ExplorePublicKnowledgeProjects() {
+ {isPending &&
Loading…
} +
{projects.map((project) => (
('Project')({ export class Dapp extends Entity.Class('Dapp')({ name: Type.String, + description: Type.optional(Type.String), + xUrl: Type.optional(Type.String), + githubUrl: Type.optional(Type.String), + avatar: Type.Relation(Image), +}) {} + +export class Investor extends Entity.Class('Investor')({ + name: Type.String, +}) {} + +export class FundingStage extends Entity.Class('FundingStage')({ + name: Type.String, }) {} export class InvestmentRound extends Entity.Class('InvestmentRound')({ name: Type.String, + raisedAmount: Type.optional(Type.Number), + investors: Type.Relation(Investor), + fundingStages: Type.Relation(FundingStage), + raisedBy: Type.Relation(Project), }) {} export class Asset extends Entity.Class('Asset')({ name: Type.String, + symbol: Type.optional(Type.String), + blockchainAddress: Type.optional(Type.String), }) {} From ffdf7be6b4518b4039d8def9805a342a65969401 Mon Sep 17 00:00:00 2001 From: Nik Graf Date: Mon, 11 Aug 2025 13:11:13 +0200 Subject: [PATCH 5/9] add schema and mapping to the next template --- .../template-nextjs/app/mapping.ts | 44 +++++++++++++++++++ .../template-nextjs/app/schema.ts | 30 +++++++++++++ 2 files changed, 74 insertions(+) diff --git a/apps/create-hypergraph/template-nextjs/app/mapping.ts b/apps/create-hypergraph/template-nextjs/app/mapping.ts index 5a599dfb..1ae2c37a 100644 --- a/apps/create-hypergraph/template-nextjs/app/mapping.ts +++ b/apps/create-hypergraph/template-nextjs/app/mapping.ts @@ -26,4 +26,48 @@ export const mapping: Mapping.Mapping = { avatar: Id('1155beff-fad5-49b7-a2e0-da4777b8792c'), }, }, + Dapp: { + typeIds: [Id('8ca136d0-698a-4bbf-a76b-8e2741b2dc8c')], + properties: { + name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + description: Id('9b1f76ff-9711-404c-861e-59dc3fa7d037'), + xUrl: Id('0d625978-4b3c-4b57-a86f-de45c997c73c'), + githubUrl: Id('9eedefa8-60ae-4ac1-9a04-805054a4b094'), + }, + relations: { + avatar: Id('1155beff-fad5-49b7-a2e0-da4777b8792c'), + }, + }, + Investor: { + typeIds: [Id('331aea18-973c-4adc-8f53-614f598d262d')], + properties: { + name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + }, + }, + FundingStage: { + typeIds: [Id('8d35d217-3fa1-4686-b74f-fcb3e9438067')], + properties: { + name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + }, + }, + InvestmentRound: { + typeIds: [Id('8f03f4c9-59e4-44a8-a625-c0a40b1ff330')], + properties: { + name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + raisedAmount: Id('16781706-dd9c-48bf-913e-cdf18b56034f'), + }, + relations: { + investors: Id('9b8a610a-fa35-486e-a479-e253dbdabb4f'), + fundingStages: Id('e278c3d4-78b9-4222-b272-5a39a8556bd2'), + raisedBy: Id('b4878d1a-0609-488d-b8a6-e19862d6b62f'), + }, + }, + Asset: { + typeIds: [Id('f8780a80-c238-4a2a-96cb-567d88b1aa63')], + properties: { + name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'), + symbol: Id('ace1e96c-9b83-47b4-bd33-1d302ec0a0f5'), + blockchainAddress: Id('56b5944f-f059-48d1-b0fa-34abe84219da'), + }, + }, }; diff --git a/apps/create-hypergraph/template-nextjs/app/schema.ts b/apps/create-hypergraph/template-nextjs/app/schema.ts index 4e869b87..aee4444f 100644 --- a/apps/create-hypergraph/template-nextjs/app/schema.ts +++ b/apps/create-hypergraph/template-nextjs/app/schema.ts @@ -15,3 +15,33 @@ export class Project extends Entity.Class('Project')({ xUrl: Type.optional(Type.String), avatar: Type.Relation(Image), }) {} + +export class Dapp extends Entity.Class('Dapp')({ + name: Type.String, + description: Type.optional(Type.String), + xUrl: Type.optional(Type.String), + githubUrl: Type.optional(Type.String), + avatar: Type.Relation(Image), +}) {} + +export class Investor extends Entity.Class('Investor')({ + name: Type.String, +}) {} + +export class FundingStage extends Entity.Class('FundingStage')({ + name: Type.String, +}) {} + +export class InvestmentRound extends Entity.Class('InvestmentRound')({ + name: Type.String, + raisedAmount: Type.optional(Type.Number), + investors: Type.Relation(Investor), + fundingStages: Type.Relation(FundingStage), + raisedBy: Type.Relation(Project), +}) {} + +export class Asset extends Entity.Class('Asset')({ + name: Type.String, + symbol: Type.optional(Type.String), + blockchainAddress: Type.optional(Type.String), +}) {} From 073c26db59e95d0870a2e04089b7cb86fc902bb3 Mon Sep 17 00:00:00 2001 From: Nik Graf Date: Mon, 11 Aug 2025 13:44:11 +0200 Subject: [PATCH 6/9] fix typo and load 100 per dataset --- .../src/components/explore-tabs.tsx | 2 +- .../template-vite-react/src/routeTree.gen.ts | 38 +++++++++---------- .../explore-public-knowledge/asset-market.tsx | 2 +- .../routes/explore-public-knowledge/dapps.tsx | 2 +- ...tment-rounts.tsx => investment-rounds.tsx} | 8 ++-- .../explore-public-knowledge/projects.tsx | 2 +- 6 files changed, 27 insertions(+), 27 deletions(-) rename apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/{investment-rounts.tsx => investment-rounds.tsx} (97%) diff --git a/apps/create-hypergraph/template-vite-react/src/components/explore-tabs.tsx b/apps/create-hypergraph/template-vite-react/src/components/explore-tabs.tsx index a8a90fe1..c0c0e174 100644 --- a/apps/create-hypergraph/template-vite-react/src/components/explore-tabs.tsx +++ b/apps/create-hypergraph/template-vite-react/src/components/explore-tabs.tsx @@ -9,7 +9,7 @@ type Tab = { const tabs: Tab[] = [ { label: 'Projects', to: '/explore-public-knowledge/projects' }, { label: 'dApps', to: '/explore-public-knowledge/dapps' }, - { label: 'Investment Rounts', to: '/explore-public-knowledge/investment-rounts' }, + { label: 'Investment Rounds', to: '/explore-public-knowledge/investment-rounds' }, { label: 'Asset Market', to: '/explore-public-knowledge/asset-market' }, ]; diff --git a/apps/create-hypergraph/template-vite-react/src/routeTree.gen.ts b/apps/create-hypergraph/template-vite-react/src/routeTree.gen.ts index 4ddeb0d8..11206355 100644 --- a/apps/create-hypergraph/template-vite-react/src/routeTree.gen.ts +++ b/apps/create-hypergraph/template-vite-react/src/routeTree.gen.ts @@ -17,7 +17,7 @@ import { Route as ExplorePublicKnowledgeIndexRouteImport } from './routes/explor import { Route as PublicSpaceSpaceIdRouteImport } from './routes/public-space/$space-id' import { Route as PrivateSpaceSpaceIdRouteImport } from './routes/private-space/$space-id' import { Route as ExplorePublicKnowledgeProjectsRouteImport } from './routes/explore-public-knowledge/projects' -import { Route as ExplorePublicKnowledgeInvestmentRountsRouteImport } from './routes/explore-public-knowledge/investment-rounts' +import { Route as ExplorePublicKnowledgeInvestmentRoundsRouteImport } from './routes/explore-public-knowledge/investment-rounds' import { Route as ExplorePublicKnowledgeDappsRouteImport } from './routes/explore-public-knowledge/dapps' import { Route as ExplorePublicKnowledgeAssetMarketRouteImport } from './routes/explore-public-knowledge/asset-market' @@ -63,10 +63,10 @@ const ExplorePublicKnowledgeProjectsRoute = path: '/projects', getParentRoute: () => ExplorePublicKnowledgeRoute, } as any) -const ExplorePublicKnowledgeInvestmentRountsRoute = - ExplorePublicKnowledgeInvestmentRountsRouteImport.update({ - id: '/investment-rounts', - path: '/investment-rounts', +const ExplorePublicKnowledgeInvestmentRoundsRoute = + ExplorePublicKnowledgeInvestmentRoundsRouteImport.update({ + id: '/investment-rounds', + path: '/investment-rounds', getParentRoute: () => ExplorePublicKnowledgeRoute, } as any) const ExplorePublicKnowledgeDappsRoute = @@ -89,7 +89,7 @@ export interface FileRoutesByFullPath { '/login': typeof LoginRoute '/explore-public-knowledge/asset-market': typeof ExplorePublicKnowledgeAssetMarketRoute '/explore-public-knowledge/dapps': typeof ExplorePublicKnowledgeDappsRoute - '/explore-public-knowledge/investment-rounts': typeof ExplorePublicKnowledgeInvestmentRountsRoute + '/explore-public-knowledge/investment-rounds': typeof ExplorePublicKnowledgeInvestmentRoundsRoute '/explore-public-knowledge/projects': typeof ExplorePublicKnowledgeProjectsRoute '/private-space/$space-id': typeof PrivateSpaceSpaceIdRoute '/public-space/$space-id': typeof PublicSpaceSpaceIdRoute @@ -101,7 +101,7 @@ export interface FileRoutesByTo { '/login': typeof LoginRoute '/explore-public-knowledge/asset-market': typeof ExplorePublicKnowledgeAssetMarketRoute '/explore-public-knowledge/dapps': typeof ExplorePublicKnowledgeDappsRoute - '/explore-public-knowledge/investment-rounts': typeof ExplorePublicKnowledgeInvestmentRountsRoute + '/explore-public-knowledge/investment-rounds': typeof ExplorePublicKnowledgeInvestmentRoundsRoute '/explore-public-knowledge/projects': typeof ExplorePublicKnowledgeProjectsRoute '/private-space/$space-id': typeof PrivateSpaceSpaceIdRoute '/public-space/$space-id': typeof PublicSpaceSpaceIdRoute @@ -115,7 +115,7 @@ export interface FileRoutesById { '/login': typeof LoginRoute '/explore-public-knowledge/asset-market': typeof ExplorePublicKnowledgeAssetMarketRoute '/explore-public-knowledge/dapps': typeof ExplorePublicKnowledgeDappsRoute - '/explore-public-knowledge/investment-rounts': typeof ExplorePublicKnowledgeInvestmentRountsRoute + '/explore-public-knowledge/investment-rounds': typeof ExplorePublicKnowledgeInvestmentRoundsRoute '/explore-public-knowledge/projects': typeof ExplorePublicKnowledgeProjectsRoute '/private-space/$space-id': typeof PrivateSpaceSpaceIdRoute '/public-space/$space-id': typeof PublicSpaceSpaceIdRoute @@ -130,7 +130,7 @@ export interface FileRouteTypes { | '/login' | '/explore-public-knowledge/asset-market' | '/explore-public-knowledge/dapps' - | '/explore-public-knowledge/investment-rounts' + | '/explore-public-knowledge/investment-rounds' | '/explore-public-knowledge/projects' | '/private-space/$space-id' | '/public-space/$space-id' @@ -142,7 +142,7 @@ export interface FileRouteTypes { | '/login' | '/explore-public-knowledge/asset-market' | '/explore-public-knowledge/dapps' - | '/explore-public-knowledge/investment-rounts' + | '/explore-public-knowledge/investment-rounds' | '/explore-public-knowledge/projects' | '/private-space/$space-id' | '/public-space/$space-id' @@ -155,7 +155,7 @@ export interface FileRouteTypes { | '/login' | '/explore-public-knowledge/asset-market' | '/explore-public-knowledge/dapps' - | '/explore-public-knowledge/investment-rounts' + | '/explore-public-knowledge/investment-rounds' | '/explore-public-knowledge/projects' | '/private-space/$space-id' | '/public-space/$space-id' @@ -229,11 +229,11 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof ExplorePublicKnowledgeProjectsRouteImport parentRoute: typeof ExplorePublicKnowledgeRoute } - '/explore-public-knowledge/investment-rounts': { - id: '/explore-public-knowledge/investment-rounts' - path: '/investment-rounts' - fullPath: '/explore-public-knowledge/investment-rounts' - preLoaderRoute: typeof ExplorePublicKnowledgeInvestmentRountsRouteImport + '/explore-public-knowledge/investment-rounds': { + id: '/explore-public-knowledge/investment-rounds' + path: '/investment-rounds' + fullPath: '/explore-public-knowledge/investment-rounds' + preLoaderRoute: typeof ExplorePublicKnowledgeInvestmentRoundsRouteImport parentRoute: typeof ExplorePublicKnowledgeRoute } '/explore-public-knowledge/dapps': { @@ -256,7 +256,7 @@ declare module '@tanstack/react-router' { interface ExplorePublicKnowledgeRouteChildren { ExplorePublicKnowledgeAssetMarketRoute: typeof ExplorePublicKnowledgeAssetMarketRoute ExplorePublicKnowledgeDappsRoute: typeof ExplorePublicKnowledgeDappsRoute - ExplorePublicKnowledgeInvestmentRountsRoute: typeof ExplorePublicKnowledgeInvestmentRountsRoute + ExplorePublicKnowledgeInvestmentRoundsRoute: typeof ExplorePublicKnowledgeInvestmentRoundsRoute ExplorePublicKnowledgeProjectsRoute: typeof ExplorePublicKnowledgeProjectsRoute ExplorePublicKnowledgeIndexRoute: typeof ExplorePublicKnowledgeIndexRoute } @@ -266,8 +266,8 @@ const ExplorePublicKnowledgeRouteChildren: ExplorePublicKnowledgeRouteChildren = ExplorePublicKnowledgeAssetMarketRoute: ExplorePublicKnowledgeAssetMarketRoute, ExplorePublicKnowledgeDappsRoute: ExplorePublicKnowledgeDappsRoute, - ExplorePublicKnowledgeInvestmentRountsRoute: - ExplorePublicKnowledgeInvestmentRountsRoute, + ExplorePublicKnowledgeInvestmentRoundsRoute: + ExplorePublicKnowledgeInvestmentRoundsRoute, ExplorePublicKnowledgeProjectsRoute: ExplorePublicKnowledgeProjectsRoute, ExplorePublicKnowledgeIndexRoute: ExplorePublicKnowledgeIndexRoute, } diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx index e1819959..ce855daa 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx @@ -10,7 +10,7 @@ function AssetMarket() { const { data: assets, isPending } = useQuery(Asset, { mode: 'public', space: 'b2565802-3118-47be-91f2-e59170735bac', - first: 40, + first: 100, }); return ( diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx index bc69730e..f2c30c4f 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx @@ -11,7 +11,7 @@ function Dapps() { const { data: dapps, isPending } = useQuery(Dapp, { mode: 'public', space: 'b2565802-3118-47be-91f2-e59170735bac', - first: 40, + first: 100, include: { avatar: {} }, }); diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounts.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounds.tsx similarity index 97% rename from apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounts.tsx rename to apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounds.tsx index b789a2de..d44a5735 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounts.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounds.tsx @@ -2,15 +2,15 @@ import { InvestmentRound } from '@/schema'; import { useQuery } from '@graphprotocol/hypergraph-react'; import { createFileRoute } from '@tanstack/react-router'; -export const Route = createFileRoute('/explore-public-knowledge/investment-rounts')({ - component: InvestmentRounts, +export const Route = createFileRoute('/explore-public-knowledge/investment-rounds')({ + component: InvestmentRounds, }); -function InvestmentRounts() { +function InvestmentRounds() { const { data: investmentRounds, isPending } = useQuery(InvestmentRound, { mode: 'public', space: 'b2565802-3118-47be-91f2-e59170735bac', - first: 40, + first: 100, include: { investors: {}, fundingStages: {}, diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/projects.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/projects.tsx index 38ca28ea..3b9ff688 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/projects.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/projects.tsx @@ -14,7 +14,7 @@ function ExplorePublicKnowledgeProjects() { const { data: projects, isPending } = useQuery(Project, { mode: 'public', space: 'b2565802-3118-47be-91f2-e59170735bac', - first: 40, + first: 100, include: { avatar: {} }, filter: { name: { From dd063d46c1eae3150dd0947de1cf902b6496413f Mon Sep 17 00:00:00 2001 From: Nik Graf Date: Mon, 11 Aug 2025 13:45:40 +0200 Subject: [PATCH 7/9] migrate update to next template --- .../template-nextjs/Components/Layout.tsx | 2 +- .../Components/PublicKnowledge/Explore.tsx | 2 +- .../Components/explore-tabs.tsx | 45 +++++++ .../asset-market/page.tsx | 69 +++++++++++ .../explore-public-knowledge/dapps/page.tsx | 99 ++++++++++++++++ .../investment-rounds/page.tsx | 84 +++++++++++++ .../app/explore-public-knowledge/layout.tsx | 26 +++++ .../app/explore-public-knowledge/page.tsx | 19 +-- .../projects/page.tsx | 110 ++++++++++++++++++ 9 files changed, 438 insertions(+), 18 deletions(-) create mode 100644 apps/create-hypergraph/template-nextjs/Components/explore-tabs.tsx create mode 100644 apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/asset-market/page.tsx create mode 100644 apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/dapps/page.tsx create mode 100644 apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/investment-rounds/page.tsx create mode 100644 apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/layout.tsx create mode 100644 apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/projects/page.tsx diff --git a/apps/create-hypergraph/template-nextjs/Components/Layout.tsx b/apps/create-hypergraph/template-nextjs/Components/Layout.tsx index 3a223f5a..21adf05c 100644 --- a/apps/create-hypergraph/template-nextjs/Components/Layout.tsx +++ b/apps/create-hypergraph/template-nextjs/Components/Layout.tsx @@ -23,7 +23,7 @@ export function Layout({ children }: Readonly<{ children: React.ReactNode }>) { const { redirectToConnect, logout } = useHypergraphApp(); useLayoutEffect(() => { - if (pathname.startsWith('/login') || pathname.startsWith('/authenticate-success') || pathname === '/' || pathname === '/explore-public-knowledge') { + if (pathname.startsWith('/login') || pathname.startsWith('/authenticate-success') || pathname === '/' || pathname === '/explore-public-knowledge' || pathname === '/explore-public-knowledge/projects' || pathname === '/explore-public-knowledge/dapps' || pathname === '/explore-public-knowledge/investors' || pathname === '/explore-public-knowledge/investment-rounds' || pathname === '/explore-public-knowledge/asset-market') { return; } diff --git a/apps/create-hypergraph/template-nextjs/Components/PublicKnowledge/Explore.tsx b/apps/create-hypergraph/template-nextjs/Components/PublicKnowledge/Explore.tsx index cd7ff595..71df5140 100644 --- a/apps/create-hypergraph/template-nextjs/Components/PublicKnowledge/Explore.tsx +++ b/apps/create-hypergraph/template-nextjs/Components/PublicKnowledge/Explore.tsx @@ -11,7 +11,7 @@ export function PublicKnowledgeExplorer() { const { data: projects, isPending } = useQuery(Project, { mode: 'public', space: 'b2565802-3118-47be-91f2-e59170735bac', - first: 40, + first: 100, include: { avatar: {} }, filter: { name: { diff --git a/apps/create-hypergraph/template-nextjs/Components/explore-tabs.tsx b/apps/create-hypergraph/template-nextjs/Components/explore-tabs.tsx new file mode 100644 index 00000000..f5105092 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/Components/explore-tabs.tsx @@ -0,0 +1,45 @@ +'use client'; + +import { clsx } from 'clsx'; +import Link from 'next/link'; +import { usePathname } from 'next/navigation'; + +type Tab = { + label: string; + href: string; +}; + +const tabs: Tab[] = [ + { label: 'Projects', href: '/explore-public-knowledge/projects' }, + { label: 'dApps', href: '/explore-public-knowledge/dapps' }, + { label: 'Investment Rounds', href: '/explore-public-knowledge/investment-rounds' }, + { label: 'Asset Market', href: '/explore-public-knowledge/asset-market' }, +]; + +export function ExploreTabs() { + const pathname = usePathname(); + + return ( +
+
+ {tabs.map((tab) => { + const isActive = pathname.startsWith(tab.href); + return ( + + {tab.label} + + ); + })} +
+
+ ); +} + + diff --git a/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/asset-market/page.tsx b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/asset-market/page.tsx new file mode 100644 index 00000000..5a3597f9 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/asset-market/page.tsx @@ -0,0 +1,69 @@ +'use client'; + +import { useQuery } from '@graphprotocol/hypergraph-react'; +import { Asset } from '../../schema'; + +export default function ExploreAssetMarketPage() { + const { data: assets, isPending } = useQuery(Asset, { + mode: 'public', + space: 'b2565802-3118-47be-91f2-e59170735bac', + first: 100, + }); + + return ( + <> +
+

+ Asset Market +

+
+ + {isPending &&
Loading…
} + +
+ {assets.map((asset) => ( +
+
+ +
+
+ {asset.name.charAt(0).toUpperCase()} +
+ +

+ {asset.name} +

+ +

{asset.id}

+ + {asset.symbol &&

{asset.symbol}

} + + {asset.blockchainAddress && ( +

{asset.blockchainAddress}

+ )} +
+ +
+
+ ))} +
+ + {isPending === false && assets.length === 0 && ( +
+
+ + + +
+

No Projects Found

+

There are currently no public projects available to explore.

+
+ )} + + ); +} + + diff --git a/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/dapps/page.tsx b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/dapps/page.tsx new file mode 100644 index 00000000..da22a807 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/dapps/page.tsx @@ -0,0 +1,99 @@ +'use client'; + +import { useQuery } from '@graphprotocol/hypergraph-react'; +import { GraphImage } from '../../../Components/GraphImage'; +import { Dapp } from '../../schema'; + +export default function ExploreDappsPage() { + const { data: dapps, isPending } = useQuery(Dapp, { + mode: 'public', + space: 'b2565802-3118-47be-91f2-e59170735bac', + first: 100, + include: { avatar: {} }, + }); + + return ( + <> +
+

+ Dapps +

+
+ + {isPending &&
Loading…
} + +
+ {dapps.map((dapp) => ( +
+
+ +
+
+ {dapp.avatar?.[0]?.url ? ( + + ) : ( + {dapp.name.charAt(0).toUpperCase()} + )} +
+ +

+ {dapp.name} +

+ +

{dapp.id}

+ + {dapp.description &&

{dapp.description}

} + + {dapp.xUrl && ( + + + + + View on X + + )} + + {dapp.githubUrl && ( + + + + + View on Github + + )} +
+ +
+
+ ))} +
+ + {isPending === false && dapps.length === 0 && ( +
+
+ + + +
+

No Projects Found

+

There are currently no public projects available to explore.

+
+ )} + + ); +} + + diff --git a/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/investment-rounds/page.tsx b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/investment-rounds/page.tsx new file mode 100644 index 00000000..aeaf8fe1 --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/investment-rounds/page.tsx @@ -0,0 +1,84 @@ +'use client'; + +import { useQuery } from '@graphprotocol/hypergraph-react'; +import { InvestmentRound } from '../../schema'; + +export default function ExploreInvestmentRoundsPage() { + const { data: investmentRounds, isPending } = useQuery(InvestmentRound, { + mode: 'public', + space: 'b2565802-3118-47be-91f2-e59170735bac', + first: 100, + include: { + investors: {}, + fundingStages: {}, + raisedBy: {}, + }, + }); + + return ( + <> +
+

+ Investment Rounds +

+
+ + {isPending &&
Loading…
} + +
+ {investmentRounds.map((investmentRound) => ( +
+
+ +
+
+ {investmentRound.name.charAt(0).toUpperCase()} +
+ +

+ {investmentRound.name} +

+ +

{investmentRound.id}

+ + {investmentRound.raisedAmount && ( +

USD {investmentRound.raisedAmount}

+ )} + + {investmentRound.fundingStages.length > 0 && ( +

+ {investmentRound.fundingStages.map((fundingStage) => fundingStage.name).join(', ')} +

+ )} + + {investmentRound.investors.length > 0 && ( +

+ {investmentRound.investors.map((investor) => investor.name).join(', ')} +

+ )} +
+ +
+
+ ))} +
+ + {isPending === false && investmentRounds.length === 0 && ( +
+
+ + + +
+

No Projects Found

+

There are currently no public projects available to explore.

+
+ )} + + ); +} + + diff --git a/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/layout.tsx b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/layout.tsx new file mode 100644 index 00000000..251731cf --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/layout.tsx @@ -0,0 +1,26 @@ +import { ExploreTabs } from '../../Components/explore-tabs'; + +export default function ExplorePublicKnowledgeLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( +
+
+

+ Explore Public Knowledge +

+

+ This page demonstrates how to query public data from a space. No authentication is required. +

+
+ + + +
{children}
+
+ ); +} + + diff --git a/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/page.tsx b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/page.tsx index 1a8e2dcd..67154e89 100644 --- a/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/page.tsx +++ b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/page.tsx @@ -1,18 +1,5 @@ -import { PublicKnowledgeExplorer } from '../../Components/PublicKnowledge/Explore'; +import { redirect } from 'next/navigation'; -export default function ExplorePublicKnowledgePage() { - return ( -
-
-

- Explore Public Knowledge -

-

- This page demonstrates how to query public data from a space. No authentication is required. -

-
- - -
- ); +export default function ExplorePublicKnowledgeIndexPage() { + redirect('/explore-public-knowledge/projects'); } diff --git a/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/projects/page.tsx b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/projects/page.tsx new file mode 100644 index 00000000..8be7a41a --- /dev/null +++ b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/projects/page.tsx @@ -0,0 +1,110 @@ +'use client'; + +import { useQuery } from '@graphprotocol/hypergraph-react'; +import { useState } from 'react'; +import { GraphImage } from '../../../Components/GraphImage'; +import { Project } from '../../schema'; + +export default function ExploreProjectsPage() { + const [searchTerm, setSearchTerm] = useState(''); + + const { data: projects, isPending } = useQuery(Project, { + mode: 'public', + space: 'b2565802-3118-47be-91f2-e59170735bac', + first: 100, + include: { avatar: {} }, + filter: { + name: { + contains: searchTerm, + }, + }, + }); + + return ( + <> +
+

+ Projects +

+
+ +
+
+
+ + + +
+ setSearchTerm(e.target.value)} + placeholder="Search projects..." + className="block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl leading-5 bg-white placeholder-gray-500 focus:outline-none focus:placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 transition-all duration-200" + /> +
+
+ + {isPending &&
Loading…
} + +
+ {projects.map((project) => ( +
+
+ +
+
+ {project.avatar?.[0]?.url ? ( + + ) : ( + {project.name.charAt(0).toUpperCase()} + )} +
+ +

+ {project.name} +

+ +

{project.id}

+ + {project.description &&

{project.description}

} + + {project.xUrl && ( + + + + + View on X + + )} +
+ +
+
+ ))} +
+ + {isPending === false && projects.length === 0 && ( +
+
+ + + +
+

No Projects Found

+

There are currently no public projects available to explore.

+
+ )} + + ); +} + + From 00e126f1aa7c88b9aa3cfe158eda365b388b411d Mon Sep 17 00:00:00 2001 From: Nik Graf Date: Mon, 11 Aug 2025 13:50:36 +0200 Subject: [PATCH 8/9] add changeset --- .changeset/great-papayas-divide.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/great-papayas-divide.md diff --git a/.changeset/great-papayas-divide.md b/.changeset/great-papayas-divide.md new file mode 100644 index 00000000..9e7aef98 --- /dev/null +++ b/.changeset/great-papayas-divide.md @@ -0,0 +1,6 @@ +--- +"create-hypergraph": patch +--- + +add datasets (dapps, investment roundes, assets) to templates + \ No newline at end of file From 788908f9105bc92cac1236f668e861b9df3210d0 Mon Sep 17 00:00:00 2001 From: Nik Graf Date: Mon, 11 Aug 2025 14:00:19 +0200 Subject: [PATCH 9/9] cleanup --- .../Components/PublicKnowledge/Explore.tsx | 127 ------------------ .../asset-market/page.tsx | 4 +- .../explore-public-knowledge/dapps/page.tsx | 4 +- .../investment-rounds/page.tsx | 4 +- .../explore-public-knowledge/asset-market.tsx | 4 +- .../routes/explore-public-knowledge/dapps.tsx | 4 +- .../investment-rounds.tsx | 4 +- 7 files changed, 12 insertions(+), 139 deletions(-) delete mode 100644 apps/create-hypergraph/template-nextjs/Components/PublicKnowledge/Explore.tsx diff --git a/apps/create-hypergraph/template-nextjs/Components/PublicKnowledge/Explore.tsx b/apps/create-hypergraph/template-nextjs/Components/PublicKnowledge/Explore.tsx deleted file mode 100644 index 71df5140..00000000 --- a/apps/create-hypergraph/template-nextjs/Components/PublicKnowledge/Explore.tsx +++ /dev/null @@ -1,127 +0,0 @@ -'use client'; - -import { useQuery } from '@graphprotocol/hypergraph-react'; -import { useState } from 'react'; -import { Project } from '../../app/schema'; -import { GraphImage } from '../GraphImage'; - -export function PublicKnowledgeExplorer() { - const [searchTerm, setSearchTerm] = useState(''); - - const { data: projects, isPending } = useQuery(Project, { - mode: 'public', - space: 'b2565802-3118-47be-91f2-e59170735bac', - first: 100, - include: { avatar: {} }, - filter: { - name: { - // contains is case sensitive - contains: searchTerm, - }, - }, - }); - - return ( - <> - {/* Search UI */} -
-
-
- - - -
- setSearchTerm(e.target.value)} - placeholder="Search projects..." - className="block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl leading-5 bg-white placeholder-gray-500 focus:outline-none focus:placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 transition-all duration-200" - /> -
-
- -
- {projects.map((project) => ( -
- {/* Gradient overlay */} -
- - {/* Content */} -
- {/* Project icon/avatar */} -
- {project.avatar?.[0]?.url ? ( - - ) : ( - {project.name.charAt(0).toUpperCase()} - )} -
- - {/* Project name */} -

- {project.name} -

- - {/* Project ID */} -

{project.id}

- - {/* Project description */} - {project.description &&

{project.description}

} - - {/* Project xUrl */} - {project.xUrl && ( - - - - - View on X - - )} -
- - {/* Decorative corner accent */} -
-
- ))} -
- - {/* Empty state */} - {isPending === false && projects.length === 0 && ( -
-
- - - -
-

No Projects Found

-

There are currently no public projects available to explore.

-
- )} - - ); -} diff --git a/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/asset-market/page.tsx b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/asset-market/page.tsx index 5a3597f9..d5652d92 100644 --- a/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/asset-market/page.tsx +++ b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/asset-market/page.tsx @@ -58,8 +58,8 @@ export default function ExploreAssetMarketPage() {
-

No Projects Found

-

There are currently no public projects available to explore.

+

No Assets Found

+

There are currently no public assets available to explore.

)} diff --git a/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/dapps/page.tsx b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/dapps/page.tsx index da22a807..59b35495 100644 --- a/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/dapps/page.tsx +++ b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/dapps/page.tsx @@ -88,8 +88,8 @@ export default function ExploreDappsPage() {
-

No Projects Found

-

There are currently no public projects available to explore.

+

No Dapps Found

+

There are currently no public dapps available to explore.

)} diff --git a/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/investment-rounds/page.tsx b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/investment-rounds/page.tsx index aeaf8fe1..cffbba7b 100644 --- a/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/investment-rounds/page.tsx +++ b/apps/create-hypergraph/template-nextjs/app/explore-public-knowledge/investment-rounds/page.tsx @@ -73,8 +73,8 @@ export default function ExploreInvestmentRoundsPage() {
-

No Projects Found

-

There are currently no public projects available to explore.

+

No Investment Rounds Found

+

There are currently no public investment rounds available to explore.

)} diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx index ce855daa..f0520efb 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/asset-market.tsx @@ -74,8 +74,8 @@ function AssetMarket() { />
-

No Projects Found

-

There are currently no public projects available to explore.

+

No Assets Found

+

There are currently no public assets available to explore.

)} diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx index f2c30c4f..0072898e 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/dapps.tsx @@ -110,8 +110,8 @@ function Dapps() { />
-

No Projects Found

-

There are currently no public projects available to explore.

+

No Dapps Found

+

There are currently no public dapps available to explore.

)} diff --git a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounds.tsx b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounds.tsx index d44a5735..0560db32 100644 --- a/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounds.tsx +++ b/apps/create-hypergraph/template-vite-react/src/routes/explore-public-knowledge/investment-rounds.tsx @@ -91,8 +91,8 @@ function InvestmentRounds() { />
-

No Projects Found

-

There are currently no public projects available to explore.

+

No Investment Rounds Found

+

There are currently no public investment rounds available to explore.

)}