diff --git a/_data/pages/grant.yml b/_data/pages/grant.yml
new file mode 100644
index 0000000000..a272b0bb02
--- /dev/null
+++ b/_data/pages/grant.yml
@@ -0,0 +1,149 @@
+id: 80c9a40d-ac4c-4bee-8c78-dd83667a1a97
+title: Grant
+template: landing
+parent_page: /ecosystem/
+breadcrumbs: false
+page_last_updated: true
+blocks:
+ - type: hero
+ variant: seed_grant_program
+ buttonUrl: ""
+ title: Seed Grant Program
+ description: ""
+ darkTextColor: true
+ - type: card_display
+ title: Application Process
+ button: Apply Now
+ buttonLink: https://starknet.questbook.app/proposal_form/?grantId=661667585afea0acb56c9f08&chainId=10&newTab=true
+ card_display_items:
+ - title: Application
+ description: "Applicants will submit proposals via an Questbook application form
+ provided by the Starknet Foundation team. "
+ - title: Internal Evaluation
+ description: " Each application will be assessed by members of the Starknet
+ Foundation and Starkware team based on criteria such as potential
+ impact, innovation, milestones, community engagement & track record,
+ and embeddedness with the Starknet ecosystem."
+ - title: Results
+ description: We plan to communicate decisions on your application within an
+ approximate two week timeframe.
+ - title: Onboarding
+ description: "Upon signing a grant agreement and completing KYC, the Starknet
+ Foundation will send funds. "
+ - title: Grant Deliverables
+ description: "After completion of the work, the Foundation will assess results
+ and share deliverables (blog post, video, AMA) with the team. "
+ - type: container
+ blocks:
+ - type: flex_layout
+ heading_variant: sm
+ blocks:
+ - type: markdown
+ body: >-
+ The grants will be awarded to individuals and teams demonstrating
+ promising results in building applications on Starknet, using any
+ combination of the following criteria:
+
+ * Prior development experience on Starknet.
+
+ * Active involvement in the Starknet community, indicated by participation in a Starknet hackathon, builder program, or another entry-level initiative.
+
+ * Willing to submit a demo or links to a proof of concept or MVP.
+
+ * Planning on using or building upon existing Starknet tools and integrations.
+
+
+ **All applicants will be required to provide a clear roadmap detailing how the grant will be used within the next three months.**
+
+ heading: Who Can Apply?
+ xl: 1
+ lg: 1
+ md: 1
+ base: 1
+ max_width: 1062
+ - type: container
+ blocks:
+ - type: flex_layout
+ heading_variant: sm
+ blocks:
+ - type: markdown
+ body: >-
+ Projects currently affiliated with the Starknet Foundation’s Developer Partnership are not eligible to participate in the Seed Grants Program.
+ Ineligible applications include anything related to:
+
+ * Gambling
+
+ * Drugs
+
+ * Firearms
+
+ * Illicit trade
+
+ * Money laundering
+
+ * Any criminal activity
+
+ heading: Who is Not Eligible
+ base: 1
+ md: 1
+ lg: 1
+ xl: 1
+ max_width: 1062
+ - type: card_list
+ randomize: false
+ title: Apply Now!
+ reverse: true
+ showIcons: false
+ card_list_items:
+ - title: Seed Grant Program Application Form
+ description: Application Form
+ image: /assets/sn-symbol-gradient.png
+ website_url: "https://starknet.questbook.app/proposal_form/?grantId=661667585af\
+ ea0acb56c9f08&chainId=10&newTab=true "
+ - type: container
+ blocks:
+ - type: accordion
+ heading: FAQs
+ blocks:
+ - label: What is the Seed Grants Program?
+ body: "* The Seed Grants Program offers teams developing on Starknet grants of
+ up to $25,000 to foster the growth of the Starknet ecosystem"
+ - label: Who can apply?
+ body: >-
+ The grants will be awarded to individuals and teams demonstrating
+ promising results in building applications on Starknet, using any
+ combination of the following criteria:
+ * Prior development experience on Starknet.
+ * Active involvement in the Starknet community, indicated by participation in a Starknet hackathon, builder program, or another entry-level initiative.
+ * Willing to submit a demo or links to a proof of concept or MVP.
+ * Planning on using or building upon existing Starknet tools and integrations.
+ All applicants will be required to provide an explanation detailing how the grant will be used within the next three months.
+ Please note that projects currently affiliated with the Starknet Foundation’s Developer Partnership are not eligible to participate in the Seed Grants Program.
+ - label: What currency are grants paid in?
+ body: Grants are paid out in USDC.
+ - label: How long will it take to receive a response on my application?
+ body: You should receive a response around \[two weeks] after submission.
+ - label: What types of projects do you provide grants to?
+ body: Any project building on Starknet can be eligible for a grant. There is no
+ specific industry vertical targeted and the program is open to all
+ types of submissions.
+ - label: Who is reviewing grant applications?
+ body: Starknet Foundation and Starkware team members will be reviewing the
+ applications.
+ - label: Is my application confidential?
+ body: Applications will not be made public and will only be shared amongst the
+ Starknet Foundation and Starkware team.
+ - label: Will I hear back if my request is rejected?
+ body: Yes — you will hear back if your application is not accepted.
+ - label: Are there application deadlines?
+ body: No – you can apply for Seed Grants on an ongoing basis. Applications will
+ be reviewed in rounds.
+ - label: How can I apply for a grant?
+ body: Please apply via this link, where you will be asked to fill out several
+ questions.
+ - label: How will the reviewers evaluate my application?
+ body: Your application will undergo evaluation by members of the Starknet
+ Foundation and Starkware team, focusing on factors such as impact,
+ innovation, community engagement, track record, and other relevant
+ criteria.
+ max_width: 1062
diff --git a/_data/settings/main-menu.yml b/_data/settings/main-menu.yml
index c972a4f464..63c47a254f 100644
--- a/_data/settings/main-menu.yml
+++ b/_data/settings/main-menu.yml
@@ -45,6 +45,8 @@ items:
- page: 9308fd57-e090-4ca9-9581-d9aeb8a3187c
- custom_title: Security & audits
custom_internal_link: ""
+ - custom_title: Grants Program
+ custom_internal_link: ecosystem/grant
page: af68f1f8-b2a3-49e2-bec0-f36165cc331f
- custom_external_link: https://status.starknet.io/
custom_icon: ""
diff --git a/public/assets/ecosystem/seed_grant_program.svg b/public/assets/ecosystem/seed_grant_program.svg
new file mode 100644
index 0000000000..0404e9a56d
--- /dev/null
+++ b/public/assets/ecosystem/seed_grant_program.svg
@@ -0,0 +1,170 @@
+
\ No newline at end of file
diff --git a/workspaces/cms-config/src/blocks.ts b/workspaces/cms-config/src/blocks.ts
index bb077a138b..19a2832dcc 100644
--- a/workspaces/cms-config/src/blocks.ts
+++ b/workspaces/cms-config/src/blocks.ts
@@ -249,6 +249,28 @@ export const cardListItem = [
},
] satisfies CmsField[];
+export const cardDisplayItem = [
+ {
+ label: "Title",
+ name: "title",
+ widget: "string",
+ crowdin: true,
+ },
+ {
+ label: "Description",
+ name: "description",
+ widget: "string",
+ crowdin: false,
+ },
+ {
+ label: "Image",
+ required: false,
+ name: "image",
+ widget: "image",
+ crowdin: false,
+ },
+] satisfies CmsField[];
+
const videoChapterFields = [
{
crowdin: true,
@@ -494,6 +516,20 @@ export const blocks = [
widget: "string",
crowdin: true,
},
+ {
+ label: "reverse",
+ name: "reverse",
+ required: false,
+ widget: "boolean",
+ crowdin: true,
+ },
+ {
+ label: "show icons",
+ name: "showIcons",
+ required: false,
+ widget: "boolean",
+ crowdin: true,
+ },
{
name: "randomize",
label: "Randomize",
@@ -513,6 +549,44 @@ export const blocks = [
},
],
},
+ {
+ name: "card_display",
+ label: "Cards display",
+ widget: "object",
+ fields: [
+ {
+ label: "Title",
+ name: "title",
+ required: false,
+ widget: "string",
+ crowdin: true,
+ },
+ {
+ label: "button",
+ name: "button",
+ required: false,
+ widget: "string",
+ crowdin: true,
+ },
+ {
+ label: "button link",
+ name: "buttonLink",
+ required: false,
+ widget: "string",
+ crowdin: true,
+ },
+ {
+ label: "Card display items",
+ name: "card_display_items",
+ widget: "list",
+ fields: cardDisplayItem,
+ crowdin: true,
+ required: true,
+ index_file: "",
+ meta: true,
+ },
+ ],
+ },
{
name: "hero",
label: "Hero",
@@ -523,6 +597,12 @@ export const blocks = [
widget: "string",
crowdin: true,
},
+ {
+ name: "darkTextColor",
+ widget: "boolean",
+ required: false,
+ crowdin: true,
+ },
{
name: "description",
widget: "string",
@@ -542,6 +622,7 @@ export const blocks = [
"community",
"nodes_and_services",
"security",
+ "seed_grant_program",
],
default: "learn",
},
diff --git a/workspaces/cms-data/src/pages.ts b/workspaces/cms-data/src/pages.ts
index f29c8c230c..2e19aef0cd 100644
--- a/workspaces/cms-data/src/pages.ts
+++ b/workspaces/cms-data/src/pages.ts
@@ -66,6 +66,17 @@ export interface ListCardItems {
type: string;
}
+export interface DisplayCardItems {
+ title:
+ | "Application"
+ | "Internal Evaluation"
+ | "Results"
+ | "Onboarding"
+ | "Grant Deliverables";
+ description: string;
+ image?: string;
+}
+
export interface ListCardItemsBlock {
readonly type: "card_list";
readonly title: string;
@@ -73,6 +84,17 @@ export interface ListCardItemsBlock {
readonly noOfItems: number;
readonly description: string;
randomize?: boolean;
+ reverse?: boolean;
+ showIcons?: boolean;
+}
+export interface DisplayCardItemsBlock {
+ readonly type: "card_display";
+ readonly title: string;
+ readonly card_display_items: DisplayCardItems[];
+ readonly noOfItems: number;
+ readonly button: string;
+ readonly buttonLink: string;
+ randomize?: boolean;
}
export interface LinkListItem {
@@ -115,6 +137,7 @@ export interface PageHeaderBlock {
export interface HeroBlock {
readonly type: "hero";
+ readonly darkTextColor?: boolean;
readonly title: string;
readonly description: string;
readonly variant?:
@@ -202,6 +225,7 @@ export type Block =
| AccordionBlock
| OrderedBlock
| ListCardItemsBlock
+ | DisplayCardItemsBlock
| AmbassadorsListBlock
| VideoSectionBlock
| NewsletterBlock;
diff --git a/workspaces/website/src/blocks/Block.tsx b/workspaces/website/src/blocks/Block.tsx
index 431aaebca3..5a795449b1 100644
--- a/workspaces/website/src/blocks/Block.tsx
+++ b/workspaces/website/src/blocks/Block.tsx
@@ -22,6 +22,7 @@ import VideoSectionBlock from "./VideoSectionBlock";
import { NewsletterCard } from "@ui/Card/NewsletterCard";
import { YoutubePlayer } from "@ui/YoutubePlayer/YoutubePlayer";
import NavbarStickyBanner from "../pages/(components)/NavbarStickyBanner/NavbarStickyBanner";
+import DisplayCardItems from "./DisplayCardItems";
export enum BlockPlacements {
DEFAULT = "DEFAULT",
@@ -168,6 +169,7 @@ export function Block({
buttonText={block.buttonText}
buttonUrl={block.buttonUrl}
leftBoxMaxWidth={block.leftBoxMaxWidth}
+ darkTextColor={block.darkTextColor}
/>
);
@@ -188,6 +190,15 @@ export function Block({
}}
/>
);
+ case "card_display":
+ return (
+
+ );
case "video_section":
return ;
}
diff --git a/workspaces/website/src/blocks/DisplayCardItems.tsx b/workspaces/website/src/blocks/DisplayCardItems.tsx
new file mode 100644
index 0000000000..ac98267c1e
--- /dev/null
+++ b/workspaces/website/src/blocks/DisplayCardItems.tsx
@@ -0,0 +1,89 @@
+import { Box, Flex, Container, LinkBox, Link, List } from "@chakra-ui/react";
+import { Heading } from "@ui/Typography/Heading";
+import { slugify } from "@starknet-io/cms-utils/src/index";
+import type { DisplayCardItems } from "@starknet-io/cms-data/src/pages";
+import { DisplayCard } from "@ui/Card/DisplayCard";
+interface Props extends LocaleProps {
+ title: string;
+ button?: string;
+ buttonLink?: string;
+ card_display_items: DisplayCardItems[];
+ randomize?: boolean;
+}
+
+export default function DisplayCardItems({
+ params: { locale },
+ title,
+ button,
+ buttonLink,
+ card_display_items,
+}: Props): JSX.Element {
+ return (
+
+
+
+ {title && (
+
+ {title}
+
+ )}
+ {button && (
+
+ {button} →
+
+ )}
+
+
+ {card_display_items?.map(({ title, description }, i) => {
+ return (
+
+ );
+ })}
+
+
+
+ );
+}
diff --git a/workspaces/website/src/blocks/ListCardItems.tsx b/workspaces/website/src/blocks/ListCardItems.tsx
index b87a26f02e..da498b1688 100644
--- a/workspaces/website/src/blocks/ListCardItems.tsx
+++ b/workspaces/website/src/blocks/ListCardItems.tsx
@@ -6,41 +6,56 @@ import { slugify } from "@starknet-io/cms-utils/src/index";
import type { ListCardItems } from "@starknet-io/cms-data/src/pages";
interface Props extends LocaleProps {
- title: string,
- description?: string,
- card_list_items: ListCardItems[],
- randomize?: boolean
+ title: string;
+ description?: string;
+ reverse?: boolean;
+ showIcons?: boolean;
+ card_list_items: ListCardItems[];
+ randomize?: boolean;
}
export default function ListCardItems({
params: { locale },
title,
description,
- card_list_items
-}:
-Props): JSX.Element {
+ reverse,
+ showIcons,
+ card_list_items,
+}: Props): JSX.Element {
return (
- {title && {title}}
- {description && {description}}
+ {title && (
+
+ {title}
+
+ )}
+ {description && (
+
+ {description}
+
+ )}
- {card_list_items?.map(({
- start_date_time,
- type,
- website_url,
- ...card
- }, i) => {
- return (
-
- );
- })}
+ {card_list_items?.map(
+ ({ start_date_time, type, website_url, ...card }, i) => {
+ return (
+
+ );
+ }
+ )}
diff --git a/workspaces/website/src/components/Card/DisplayCard.tsx b/workspaces/website/src/components/Card/DisplayCard.tsx
new file mode 100644
index 0000000000..10dcc5a424
--- /dev/null
+++ b/workspaces/website/src/components/Card/DisplayCard.tsx
@@ -0,0 +1,92 @@
+import { Box, Stack, BoxProps, Text, Circle } from "@chakra-ui/react";
+import { Application } from "@ui/Icons/DisplayCardIcons/Application";
+import { GrantDeliverables } from "@ui/Icons/DisplayCardIcons/GrantDeliverables";
+import { InternalEvaluation } from "@ui/Icons/DisplayCardIcons/InternalEvaluation";
+import { Onboarding } from "@ui/Icons/DisplayCardIcons/Onboarding";
+import { Results } from "@ui/Icons/DisplayCardIcons/Results";
+import { Heading } from "@ui/Typography/Heading";
+
+type Props = {
+ readonly title:
+ | "Application"
+ | "Internal Evaluation"
+ | "Results"
+ | "Onboarding"
+ | "Grant Deliverables";
+ readonly description?: string;
+ readonly index: number;
+} & BoxProps;
+
+const images = {
+ Application: ,
+ "Internal Evaluation": ,
+ Results: ,
+ Onboarding: ,
+ "Grant Deliverables": ,
+};
+
+export const DisplayCard = (props: Props) => {
+ return (
+
+
+
+
+ {images[props?.title]}
+
+
+
+
+
+ {props.index}
+
+
+ {props.title}
+
+
+ {props.description}
+
+
+
+ );
+};
diff --git a/workspaces/website/src/components/Card/ListCard.tsx b/workspaces/website/src/components/Card/ListCard.tsx
index 789c8364af..01cdb68f96 100644
--- a/workspaces/website/src/components/Card/ListCard.tsx
+++ b/workspaces/website/src/components/Card/ListCard.tsx
@@ -10,6 +10,7 @@ import {
Img,
LinkBox,
LinkOverlay,
+ Flex,
} from "@chakra-ui/react";
import { Heading } from "@ui/Typography/Heading";
import { Text } from "@ui/Typography/Text";
@@ -31,6 +32,8 @@ type Props = {
readonly location?: string;
readonly image?: string;
readonly href: string;
+ readonly reverse?: boolean;
+ readonly showIcons?: boolean;
readonly city?: string;
readonly country?: string;
readonly twitter?: string;
@@ -45,26 +48,39 @@ type Props = {
};
} & BoxProps;
-export const ListCard = (props: Props) => {
- const cloudflareImage = `https://www.starknet.io/cdn-cgi/image/width=80px,height=auto,format=auto${props.image}`;
- const isProd = import.meta.env.VITE_ALGOLIA_INDEX === "production";
-
+export const ListCard = ({
+ reverse = false,
+ showIcons = true,
+ title,
+ startDateTime,
+ description,
+ location,
+ image,
+ href,
+ city,
+ country,
+ twitter,
+ discord,
+ variant,
+ type_list,
+ type,
+ recap,
+}: Props) => {
+ const cloudflareImage = `https://www.starknet.io/cdn-cgi/image/width=80px,height=auto,format=auto${image}`;
+ const isProd = import.meta.env.VITE_ALGOLIA_INDEX === "production";
+
return (
-
+
{
spacing={{ base: "3", md: "6" }}
align="center"
>
- {props.image &&
-
-
-
- }
+ {image && (
+
+
+
+
+
+ )}
- {props.startDateTime && (
+ {startDateTime && (
- {props.startDateTime}
- {props.city && (
+ {startDateTime}
+ {city && (
·
)}
- {/* {props.city} */}
- {props.city && ` ${props.city}, `}
- {props.country && props.country}
+ {city && ` ${city}, `}
+ {country && country}
)}
-
-
+
- {props.title}
-
-
- {/* */}
-
-
-
-
-
- {props.description}
-
- {/* {props.variant === "event" && (
-
-
-
- )} */}
- {props.type_list ? (
-
- {props.type_list.map((tag) => (
-
-
- {tag.type !== "ios" ? titleCase(tag.type) : "iOS"}
-
-
- ))}
-
- ) : (
- props.type && (
-
- {props.location && (
-
- {titleCase(props.location)}
-
- )}
- {props.type
- .filter((element) => element !== "")
- .map((tag) => (
-
- {titleCase(tag)}
-
- ))}
-
- )
- )}
-
-
- {props.href &&
- props.variant !== "event" &&
- props.variant !== "job" && (
-
-
-
- )}
- {props.twitter && (
-
+ {title}
+
+
-
- )}
- {props.discord && (
-
-
-
- )}
-
- {props.recap?.link && (
-
+
- {props.recap.label || "View event recap"}
-
+ {description}
+
+
+ {showIcons && (
+ <>
+ {type_list ? (
+
+ {type_list.map((tag) => (
+
+
+ {tag.type !== "ios" ? titleCase(tag.type) : "iOS"}
+
+
+ ))}
+
+ ) : (
+ type && (
+
+ {location && (
+ {titleCase(location)}
+ )}
+ {type
+ .filter((element) => element !== "")
+ .map((tag) => (
+
+ {titleCase(tag)}
+
+ ))}
+
+ )
+ )}
+
+
+ {href && variant !== "event" && variant !== "job" && (
+
+
+
+ )}
+ {twitter && (
+
+
+
+ )}
+ {discord && (
+
+
+
+ )}
+
+ {recap?.link && (
+
+ )}
+ >
)}
diff --git a/workspaces/website/src/components/HeroImage/HeroImage.tsx b/workspaces/website/src/components/HeroImage/HeroImage.tsx
index 3bb41dfe82..56174fc333 100644
--- a/workspaces/website/src/components/HeroImage/HeroImage.tsx
+++ b/workspaces/website/src/components/HeroImage/HeroImage.tsx
@@ -16,6 +16,7 @@ import React from "react";
type Props = {
title: string;
description: string | React.ReactNode;
+ darkTextColor?: boolean;
variant?:
| "wallets"
| "block_explorers"
@@ -26,7 +27,8 @@ type Props = {
| "community"
| "nodes_and_services"
| "security"
- | "roadmap";
+ | "roadmap"
+ | "seed_grant_program";
buttonText?: string;
buttonUrl?: string;
onButtonClick?: () => void;
@@ -49,7 +51,7 @@ const heroStyles: Record = {
"linear(258.76deg, hero-gradient-dapps-a 3.96%, hero-gradient-dapps-b 254.34%)",
arrowGradient: "linear(95.36deg, #EC796B 1.31%, #D672EF 169.4%)",
arrowOpacity: "0.2",
- arrowTipColor: "#D672EF"
+ arrowTipColor: "#D672EF",
},
block_explorers: {
img: "/assets/ecosystem/blockexplorers.svg",
@@ -57,7 +59,7 @@ const heroStyles: Record = {
"linear(258.76deg, hero-gradient-block-explorers-a 3.96%, hero-gradient-block-explorers-b 254.34%)",
arrowGradient: "linear(95.36deg, #EC796B 1.31%, #D672EF 169.4%)",
arrowOpacity: "0.2",
- arrowTipColor: "#D672EF"
+ arrowTipColor: "#D672EF",
},
bridges: {
img: "/assets/ecosystem/bridges.svg",
@@ -65,7 +67,14 @@ const heroStyles: Record = {
"linear(258.76deg, hero-gradient-bridges-on-ramps-a 3.96%, hero-gradient-bridges-on-ramps-b 254.34%)",
arrowGradient: "linear(95.36deg, #EC796B 1.31%, #D672EF 169.4%)",
arrowOpacity: "0.2",
- arrowTipColor: "#D672EF"
+ arrowTipColor: "#D672EF",
+ },
+ seed_grant_program: {
+ img: "/assets/ecosystem/seed_grant_program.svg",
+ gradient: "linear(258.76deg,#CDCDE8, #DEFAFF)",
+ arrowGradient: "linear(95.36deg, #7CB3B9 1.31%, #658DAA 169.4%)",
+ arrowOpacity: "0.2",
+ arrowTipColor: "#D672EF",
},
wallets: {
img: "/assets/ecosystem/wallets.svg",
@@ -73,7 +82,7 @@ const heroStyles: Record = {
"linear(258.76deg, hero-gradient-wallets-a 3.96%, hero-gradient-wallets-b 254.34%)",
arrowGradient: "linear(95.36deg, #EC796B 1.31%, #D672EF 169.4%)",
arrowOpacity: "0.2",
- arrowTipColor: "#D672EF"
+ arrowTipColor: "#D672EF",
},
learn: {
img: "/assets/ecosystem/learn.svg",
@@ -81,7 +90,7 @@ const heroStyles: Record = {
"linear(258.76deg, hero-gradient-learn-a 3.96%, hero-gradient-learn-b 254.34%)",
arrowGradient: "linear(95.36deg, #EC796B 1.31%, #D672EF 169.4%)",
arrowOpacity: "0.2",
- arrowTipColor: "#D672EF"
+ arrowTipColor: "#D672EF",
},
build: {
img: "/assets/ecosystem/developer.svg",
@@ -89,7 +98,7 @@ const heroStyles: Record = {
"linear(258.76deg, hero-gradient-developer-a 3.96%, hero-gradient-developer-b 254.34%)",
arrowGradient: "linear(95.36deg, #EC796B 1.31%, #D672EF 169.4%)",
arrowOpacity: "0.2",
- arrowTipColor: "#D672EF"
+ arrowTipColor: "#D672EF",
},
community: {
img: "/assets/ecosystem/community.svg",
@@ -97,7 +106,7 @@ const heroStyles: Record = {
"linear(258.76deg, hero-gradient-community-a 3.96%, hero-gradient-community-b 254.34%)",
arrowGradient: "linear(95.36deg, #EC796B 1.31%, #D672EF 169.4%)",
arrowOpacity: "0.2",
- arrowTipColor: "#D672EF"
+ arrowTipColor: "#D672EF",
},
nodes_and_services: {
img: "/assets/ecosystem/nodes_and_services.svg",
@@ -105,7 +114,7 @@ const heroStyles: Record = {
"linear-gradient(258.76deg, hero-gradient-nodes-and-services-a 3.96%, hero-gradient-nodes-and-services-b 254.34%)",
arrowGradient: "linear(95.36deg, #EC796B 1.31%, #D672EF 169.4%)",
arrowOpacity: "0.2",
- arrowTipColor: "#D672EF"
+ arrowTipColor: "#D672EF",
},
roadmap: {
img: "/assets/ecosystem/roadmap.svg",
@@ -113,15 +122,15 @@ const heroStyles: Record = {
arrowGradient: "linear(45deg, #82BDBD 100%, #4F6D87 100%)",
backgroundBlendMode: "multiply, multiply, multiply, normal",
arrowOpacity: "1",
- arrowTipColor: "#82BDBD"
+ arrowTipColor: "#82BDBD",
},
security: {
img: "/assets/ecosystem/security.svg",
gradient:
"linear(262.88deg, hero-gradient-security-a 21.62%, hero-gradient-security-b 100.38%)",
arrowGradient: "linear(250.04deg, #5B5F68 57.45%, #81D2FF 119.39%)",
- arrowTipColor: "#5B5F68"
- }
+ arrowTipColor: "#5B5F68",
+ },
};
export const HeroImage = ({
@@ -132,14 +141,21 @@ export const HeroImage = ({
buttonUrl,
onButtonClick,
leftBoxMaxWidth,
+ darkTextColor = false,
}: Props) => {
return (
@@ -253,7 +267,7 @@ export const HeroImage = ({
height: 0,
borderTop: "2px solid transparent",
borderBottom: "2px solid transparent",
- borderLeft: `5px solid ${heroStyles[variant].arrowTipColor}`
+ borderLeft: `5px solid ${heroStyles[variant].arrowTipColor}`,
}}
/>
@@ -262,6 +276,9 @@ export const HeroImage = ({
as="h1"
color="heading-navy-fg"
variant="h2"
+ _dark={{
+ color: darkTextColor ? "#0C0C4F" : "white",
+ }}
size={useBreakpointValue({ base: "md", md: "lg" })}
>
{title}
@@ -274,9 +291,7 @@ export const HeroImage = ({
{description}
{!!buttonText && (
-
+
- {/*
-
- */}
diff --git a/workspaces/website/src/components/Icons/DisplayCardIcons/Application.tsx b/workspaces/website/src/components/Icons/DisplayCardIcons/Application.tsx
new file mode 100644
index 0000000000..06ef3d2345
--- /dev/null
+++ b/workspaces/website/src/components/Icons/DisplayCardIcons/Application.tsx
@@ -0,0 +1,175 @@
+import { HTMLChakraProps } from "@chakra-ui/react";
+
+type Props = HTMLChakraProps<"svg">;
+
+export const Application = ({}: Props) => {
+ return (
+
+ );
+};
diff --git a/workspaces/website/src/components/Icons/DisplayCardIcons/GrantDeliverables.tsx b/workspaces/website/src/components/Icons/DisplayCardIcons/GrantDeliverables.tsx
new file mode 100644
index 0000000000..b7aa776d24
--- /dev/null
+++ b/workspaces/website/src/components/Icons/DisplayCardIcons/GrantDeliverables.tsx
@@ -0,0 +1,134 @@
+import { HTMLChakraProps } from "@chakra-ui/react";
+
+type Props = HTMLChakraProps<"svg">;
+
+export const GrantDeliverables = ({}: Props) => {
+ return (
+
+ );
+};
diff --git a/workspaces/website/src/components/Icons/DisplayCardIcons/InternalEvaluation.tsx b/workspaces/website/src/components/Icons/DisplayCardIcons/InternalEvaluation.tsx
new file mode 100644
index 0000000000..ccfa9cfe22
--- /dev/null
+++ b/workspaces/website/src/components/Icons/DisplayCardIcons/InternalEvaluation.tsx
@@ -0,0 +1,96 @@
+import { HTMLChakraProps } from "@chakra-ui/react";
+
+type Props = HTMLChakraProps<"svg">;
+
+export const InternalEvaluation = ({}: Props) => {
+ return (
+
+ );
+};
diff --git a/workspaces/website/src/components/Icons/DisplayCardIcons/Onboarding.tsx b/workspaces/website/src/components/Icons/DisplayCardIcons/Onboarding.tsx
new file mode 100644
index 0000000000..396f64bb6d
--- /dev/null
+++ b/workspaces/website/src/components/Icons/DisplayCardIcons/Onboarding.tsx
@@ -0,0 +1,32 @@
+import { HTMLChakraProps } from "@chakra-ui/react";
+
+type Props = HTMLChakraProps<"svg">;
+
+export const Onboarding = ({}: Props) => {
+ return (
+
+ );
+};
diff --git a/workspaces/website/src/components/Icons/DisplayCardIcons/Results.tsx b/workspaces/website/src/components/Icons/DisplayCardIcons/Results.tsx
new file mode 100644
index 0000000000..574d36273d
--- /dev/null
+++ b/workspaces/website/src/components/Icons/DisplayCardIcons/Results.tsx
@@ -0,0 +1,40 @@
+import { HTMLChakraProps } from "@chakra-ui/react";
+
+type Props = HTMLChakraProps<"svg">;
+
+export const Results = ({}: Props) => {
+ return (
+
+ );
+};