import { useRouter } from 'next/router'; import DefaultErrorPage from 'next/error'; import Head from 'next/head'; import React from 'react'; import { BuilderComponent, builder, useIsPreviewing, Builder } from '@builder.io/react'; // Initialize the Builder SDK with your organization's API Key // Find the API Key on: https://builder.io/account/settings builder.init("37b11147aa464a4d9525b2ab66c319f7"); export async function getStaticProps({ params }) { // Fetch the first page from Builder that matches the current URL. // Use the `userAttributes` field for targeting content. // For more, see https://www.builder.io/c/docs/targeting-with-builder const page = await builder .get('page', { userAttributes: { urlPath: '/' + (params?.page?.join('/') || ''), }, }) .toPromise(); return { props: { page: page || null, }, revalidate: 5, }; } export async function getStaticPaths() { // Fetch all published pages for the current model. // Using the `fields` option will limit the size of the response // and only return the `data.url` field from the matching pages. const pages = await builder.getAll('page', { fields: 'data.url', // only request the `data.url` field options: { noTargeting: true }, limit: 0, }); return { paths: pages.map(page => `${page.data?.url}`), fallback: true, }; } export default function Page({ page }) { const router = useRouter(); // This flag indicates if you are viewing the page in the Builder editor. const isPreviewing = useIsPreviewing(); if (router.isFallback) { return

Loading...

; } // Add your error page here to return if there are no matching // content entries published in Builder. if (!page && !isPreviewing) { return ; } return ( <> {/* Add any relevant SEO metadata or open graph tags here */} {page?.data.title}
{/* Put your header or main layout here */} Your header
{/* Render the Builder page */}
{/* Put your footer or main layout here */} Your footer
); } // This is an example of registering a custom component to be used in Builder.io. // You would typically do this in the file where the component is defined. const MyCustomComponent = props => (

{props.title}

{props.description}

); // This is a minimal example of a custom component, you can view more complex input types here: // https://www.builder.io/c/docs/custom-react-components#input-types Builder.registerComponent(MyCustomComponent, { name: 'ExampleCustomComponent', inputs: [ { name: 'title', type: 'string', defaultValue: 'I am a React component!' }, { name: 'description', type: 'string', defaultValue: 'Find my source in /pages/[...page].js', }, ], }); // Register a custom insert menu to organize your custom componnets // https://www.builder.io/c/docs/custom-components-visual-editor#:~:text=than%20this%20screenshot.-,organizing%20your%20components%20in%20custom%20sections,-You%20can%20create Builder.register('insertMenu', { name: 'My Components', items: [{ item: 'ExampleCustomComponent', name: 'My React Component' }], });