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 ( - {alt} + {alt} ) }; -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);