diff --git a/_data/pages/ambassadors.yml b/_data/pages/ambassadors.yml
index 9c57a7816b..ba82b0db62 100644
--- a/_data/pages/ambassadors.yml
+++ b/_data/pages/ambassadors.yml
@@ -2,7 +2,7 @@ id: 5ecdf9cf-d433-478a-a280-07e0f860534f
title: Ambassadors Program
show_title: true
template: narrow content
-toc: false
+hideToc: true
parent_page: 683db5f6-c625-4fe0-a2af-3c5b6af8c2c9
breadcrumbs: true
page_last_updated: true
diff --git a/_data/pages/home.yml b/_data/pages/home.yml
index 560102e43e..80e3d57d4a 100644
--- a/_data/pages/home.yml
+++ b/_data/pages/home.yml
@@ -14,30 +14,77 @@ blocks:
variant: large_card
orientation: left
withIllustration: false
- title: What is Starknet?
- icon: /assets/illustration-how-it-works.png
+ title: Unlimited Scale
+ icon: /assets/unlimited-scale.png
type: image_icon_link_card
link:
- page: 93b845d7-5662-4cd4-8c13-3730440880c0
- custom_title: What is Starknet?
- description: Starknet is a decentralized layer-2 network that enables Ethereum
- to scale securely and dapps to achieve unlimited scale for
- transactions and computation.
+ custom_title: Discover validity rollups
+ custom_internal_link: /learn/what-is-starknet
+ description: Starknet utilizes the power of STARK technology to ensure
+ computational integrity. By validating off-chain transactions with
+ advanced math and cryptography, Starknet overcomes Ethereum’s
+ scalability limitations. Starknet is a Validity Rollup that provides
+ unlimited scale while retaining Ethereum’s security and
+ decentralization.
columns: "4"
+ - type: flex_layout
+ heading_variant: sm
+ blocks:
+ - size: large
+ color: orange
+ variant: large_card
+ orientation: vertical
+ withIllustration: false
+ title: Superior UX
+ icon: /assets/superior-ux.png
+ type: image_icon_link_card
+ link:
+ custom_title: Dive into native AA
+ custom_internal_link: /posts/developers/native-account-abstraction-opening-blockchain-to-new-possibilities
+ description: "Starknet offers efficient and user-friendly experiences by
+ employing Native Account Abstraction. All accounts are smart
+ accounts: their behavior is determined by their developers rather
+ than at the protocol level. This means unparalleled flexibility in
+ account management. Developers can customize their applications
+ beyond protocol constraints to elevate user experience and
+ security. "
+ columns: "4"
+ - size: large
+ color: orange
+ variant: large_card
+ orientation: vertical
+ withIllustration: false
+ title: Thriving ecosystem
+ icon: /assets/thriving-ecosystem.png
+ type: image_icon_link_card
+ link:
+ custom_title: The growing Starknet Stack
+ custom_internal_link: /posts/ecosystem/the-starknet-stacks-growth-spurt
+ description: Starknet's meteoric rise as a blockchain ecosystem is fueled by its
+ passionate community of developers, users, and partners. With the
+ Starknet Stack evolving at an astounding pace, this vibrant
+ collective has developed the most decentralized Rollup Stack,
+ enhancing network security, censorship resistance, resilience, and
+ transparency.
+ columns: "4"
+ base: 1
+ md: 2
- size: large
color: orange
variant: large_card
- orientation: right
+ orientation: left
withIllustration: false
- title: How does Starknet scale Ethereum?
- icon: /assets/illustration-scaling.png
+ title: Creativity Unleashed
+ icon: /assets/creativity-unleased.png
type: image_icon_link_card
link:
- page: 93b845d7-5662-4cd4-8c13-3730440880c0
- custom_title: How does it work
- description: 'Starknet uses math and cryptography to securely scale Ethereum. It
- operates as a Validity-rollup (or ZK-rollup): it "bundles" many
- transactions and "rolls" them to Ethereum as a single transaction.'
+ custom_title: Build with Cairo
+ custom_external_link: https://www.cairo-lang.org/
+ description: Starknet devs are empowered to code solutions that make a
+ difference. Cairo, Starknet’s native smart contract language, allows
+ developers to push the boundaries of their applications by allowing
+ them to code any kind of business logic.
Building with Cairo,
+ developers can let their vision reach its full potential on Starknet.
columns: "4"
- type: newsletter_popup
title: Starknet newsletter
diff --git a/public/assets/creativity-unleased.png b/public/assets/creativity-unleased.png
new file mode 100644
index 0000000000..7a5cc8742a
Binary files /dev/null and b/public/assets/creativity-unleased.png differ
diff --git a/public/assets/superior-ux.png b/public/assets/superior-ux.png
new file mode 100644
index 0000000000..cac35a5314
Binary files /dev/null and b/public/assets/superior-ux.png differ
diff --git a/public/assets/thriving-ecosystem.png b/public/assets/thriving-ecosystem.png
new file mode 100644
index 0000000000..3b7c4d6785
Binary files /dev/null and b/public/assets/thriving-ecosystem.png differ
diff --git a/public/assets/unlimited-scale.png b/public/assets/unlimited-scale.png
new file mode 100644
index 0000000000..e853299850
Binary files /dev/null and b/public/assets/unlimited-scale.png differ
diff --git a/workspaces/cms-config/src/blocks.ts b/workspaces/cms-config/src/blocks.ts
index 1a98203e15..a985890f5e 100644
--- a/workspaces/cms-config/src/blocks.ts
+++ b/workspaces/cms-config/src/blocks.ts
@@ -434,7 +434,7 @@ export const blocks = [
widget: "select",
default: "left",
required: false,
- options: ["left", "right"],
+ options: ["left", "right", "vertical"],
}
],
},
@@ -765,6 +765,54 @@ export const blocks = [
},
] satisfies CmsFieldList["types"];
+const flexLayout = {
+ name: "flex_layout",
+ label: "Flex layout",
+ widget: "object" as "object",
+ fields: [
+ {
+ name: "base",
+ widget: "number",
+ required: false,
+ },
+ {
+ name: "md",
+ widget: "number",
+ required: false,
+ },
+ {
+ name: "lg",
+ widget: "number",
+ required: false,
+ },
+ {
+ name: "xl",
+ widget: "number",
+ required: false,
+ },
+ {
+ name: "heading",
+ required: false,
+ widget: "string",
+ crowdin: true
+ },
+ {
+ name: "heading_variant",
+ widget: "select",
+ options: ["h1", "h2", "h3", "h4", "h5", "h6"],
+ required: false,
+ default: "sm",
+ },
+ {
+ name: "blocks",
+ label: "Blocks",
+ widget: "list",
+ types: blocks,
+ default: [],
+ },
+ ],
+} satisfies CmsField;
+
export const topLevelBlocks = [
{
name: "group",
@@ -775,7 +823,7 @@ export const topLevelBlocks = [
name: "blocks",
label: "Blocks",
widget: "list",
- types: blocks,
+ types: [...blocks, flexLayout],
default: [],
},
],
@@ -794,7 +842,7 @@ export const topLevelBlocks = [
name: "blocks",
label: "Blocks",
widget: "list",
- types: blocks,
+ types: [...blocks, flexLayout],
default: [],
},
],
@@ -822,57 +870,11 @@ export const topLevelBlocks = [
name: "blocks",
label: "Blocks",
widget: "list",
- types: blocks,
- default: [],
- },
- ],
- },
- {
- name: "flex_layout",
- label: "Flex layout",
- widget: "object",
- fields: [
- {
- name: "base",
- widget: "number",
- required: false,
- },
- {
- name: "md",
- widget: "number",
- required: false,
- },
- {
- name: "lg",
- widget: "number",
- required: false,
- },
- {
- name: "xl",
- widget: "number",
- required: false,
- },
- {
- name: "heading",
- required: false,
- widget: "string",
- crowdin: true
- },
- {
- name: "heading_variant",
- widget: "select",
- options: ["h1", "h2", "h3", "h4", "h5", "h6"],
- required: false,
- default: "sm",
- },
- {
- name: "blocks",
- label: "Blocks",
- widget: "list",
- types: blocks,
+ types: [...blocks, flexLayout],
default: [],
},
],
},
+ flexLayout,
...blocks,
] satisfies CmsFieldList["types"];
diff --git a/workspaces/cms-config/src/collections/pages.ts b/workspaces/cms-config/src/collections/pages.ts
index 7ff9fe67bc..36b9ad8d60 100644
--- a/workspaces/cms-config/src/collections/pages.ts
+++ b/workspaces/cms-config/src/collections/pages.ts
@@ -60,11 +60,11 @@ export const pagesCollectionConfig = {
default: "content",
},
{
- name: "toc",
- label: "Show table of contents",
+ name: "hideToc",
+ label: "Hide table of content",
hint: "Applies only for the 'content' template type",
widget: "boolean",
- default: true,
+ default: false,
required: false
},
{
diff --git a/workspaces/cms-data/src/pages.ts b/workspaces/cms-data/src/pages.ts
index 9119258e3f..642022439e 100644
--- a/workspaces/cms-data/src/pages.ts
+++ b/workspaces/cms-data/src/pages.ts
@@ -218,7 +218,7 @@ export interface Page extends Meta {
readonly link: string;
readonly title: string;
readonly show_title?: boolean;
- readonly toc?: boolean;
+ readonly hideToc?: boolean;
readonly template: "landing" | "content" | "narrow content";
readonly tocCustomTitle?: string;
readonly hidden_page: boolean;
diff --git a/workspaces/website/src/components/Card/ImageIconCard.tsx b/workspaces/website/src/components/Card/ImageIconCard.tsx
index 63db7dd987..e2ce294c0a 100644
--- a/workspaces/website/src/components/Card/ImageIconCard.tsx
+++ b/workspaces/website/src/components/Card/ImageIconCard.tsx
@@ -37,7 +37,7 @@ type Props = {
| "cyan"
| "pink"
| "grey",
- orientation?: "left" | "right"
+ orientation?: "left" | "right" | "vertical"
onClick?: () => void;
};
@@ -129,8 +129,10 @@ export const ImageIconCard = ({
base: variant === "community_card" ? "24px" : variant === "large_card" ? "24px" : "0",
md: variant === "community_card" ? "16px" : variant === "large_card" ? "48px" : "0"
}}
- {...(orientation === "right" && variant === "large_card" && { justifyContent: "space-between" })}
- alignItems={{ lg: variant === "large_card" ? "center" : "initial" }}
+ {...(orientation !== "vertical" && variant === "large_card" && {
+ justifyContent: "center"
+ })}
+ alignItems={{ base: 'center', lg: variant === "large_card" ? "center" : "initial" }}
height="100%"
>
@@ -165,7 +167,10 @@ export const ImageIconCard = ({
>
diff --git a/workspaces/website/src/components/Card/components/ImageIconBox.tsx b/workspaces/website/src/components/Card/components/ImageIconBox.tsx
index 1cf12ffc40..dd76ff616c 100644
--- a/workspaces/website/src/components/Card/components/ImageIconBox.tsx
+++ b/workspaces/website/src/components/Card/components/ImageIconBox.tsx
@@ -234,7 +234,6 @@ export const ImageIconBox = ({
: icon &&
= ({ icon, alt = "", filter, borderRadius }) => {
+/**
+ * `Props` type.
+ */
+
+type Props = {
+ icon?: string,
+ alt?: string,
+ filter?: string,
+ borderRadius?: string,
+};
+
+/**
+ * Export `ImageIcon` component.
+ */
+
+const ImageIcon: React.FC = ({
+ icon,
+ alt = "",
+ filter,
+ borderRadius,
+}) => {
return (
-
+
)
};
-export default ImageIcon;
\ No newline at end of file
+export default ImageIcon;
diff --git a/workspaces/website/src/pages/(components)/CMSPage.tsx b/workspaces/website/src/pages/(components)/CMSPage.tsx
index ce156a1250..100e6dfaa6 100644
--- a/workspaces/website/src/pages/(components)/CMSPage.tsx
+++ b/workspaces/website/src/pages/(components)/CMSPage.tsx
@@ -107,7 +107,7 @@ export default function CMSPage({
}
rightAside={
- data.template === "content" ? (
+ data.template === "content" && !data.hideToc ? (
) : null
}
diff --git a/workspaces/website/src/pages/(components)/TableOfContents/blocksToTOC.ts b/workspaces/website/src/pages/(components)/TableOfContents/blocksToTOC.ts
index d6265d1d9a..32bb920ecb 100644
--- a/workspaces/website/src/pages/(components)/TableOfContents/blocksToTOC.ts
+++ b/workspaces/website/src/pages/(components)/TableOfContents/blocksToTOC.ts
@@ -33,6 +33,11 @@ export function blocksToTOC(blocks: readonly TopLevelBlock[] = [], level: number
tableOfContents.push(headingData);
blocksToTOC(block.blocks, level + 1, tableOfContents);
}
+ } else if (block.type === 'video_section') {
+ tableOfContents.push({
+ title: block["scaling-eth"].title,
+ level
+ });
} else if (block.type === "ordered_block") {
const sortedBlocks = Array.from(block.blocks || []).sort((a, b) => {
return a.title.localeCompare(b.title);