Skip to content

Commit 7f2e222

Browse files
feat(example): add Head component for dynamic title and description management
1 parent b3669b8 commit 7f2e222

5 files changed

Lines changed: 20 additions & 1 deletion

File tree

examples/form/app/layout.jsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ import { DefaultLayout } from '../components/DefaultLayout.jsx';
55
import { DefaultHead } from '../components/Head/Head.App';
66
import { NotificationsProvider } from '../components/Notifications';
77

8+
export const metadata = {
9+
title: 'App Router · Default Title',
10+
description: 'App Router · Default Description',
11+
};
12+
813
export default function Layout({ children }) {
914
return (
1015
<PrimerRoot defaultColorMode="light" lang="pt-BR">

examples/form/components/Head/Head.Pages.jsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,12 @@ export function DefaultHead() {
99
// Calling DefaultTags() forces evaluation instead of relying on component mounting.
1010
return <NextHead>{DefaultTags()}</NextHead>;
1111
}
12+
13+
export function Head({ title, description }) {
14+
return (
15+
<NextHead>
16+
{title && <title>{title}</title>}
17+
{description && <meta name="description" content={description} key="description" />}
18+
</NextHead>
19+
);
20+
}

examples/form/pages/_app.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { AutoThemeProvider } from '@barso/ui';
22
import '@barso/ui/css';
33

4-
import { DefaultHead } from '../components/Head/Head.Pages';
4+
import { DefaultHead, Head } from '../components/Head/Head.Pages';
55
import { NotificationsProvider } from '../components/Notifications';
66

77
export default function MyApp({ Component, pageProps }) {
88
return (
99
<AutoThemeProvider defaultColorMode="dark">
1010
<DefaultHead />
11+
<Head title="Pages Router · Default Title" description="Pages Router · Default Description" />
1112
<NotificationsProvider>
1213
<Component {...pageProps} />
1314
</NotificationsProvider>

examples/form/pages/pages_router.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { Checkout } from '../components/Checkout.jsx';
22
import { DefaultLayout } from '../components/DefaultLayout.jsx';
3+
import { Head } from '../components/Head/Head.Pages.jsx';
34
import { checkoutFields, product, store } from '../form-config.js';
45

56
export default function Home() {
67
return (
78
<DefaultLayout containerWidth="medium">
9+
<Head description="Pages Router · Custom Description" />
810
<Checkout fields={checkoutFields} product={product} store={store} />
911
</DefaultLayout>
1012
);

examples/form/pages/registration.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { DefaultLayout } from '../components/DefaultLayout.jsx';
2+
import { Head } from '../components/Head/Head.Pages.jsx';
23
import { Registration } from '../components/Registration.jsx';
34
import { registrationFields, store } from '../form-config.js';
45

56
export default function RegistrationPage() {
67
return (
78
<DefaultLayout containerWidth="small">
9+
<Head title="Pages Router · Custom Title" />
810
<Registration fields={registrationFields} store={store} />
911
</DefaultLayout>
1012
);

0 commit comments

Comments
 (0)