diff --git a/src/solidbase-theme/Layout.tsx b/src/solidbase-theme/Layout.tsx index c1397de23f..d035d3bd25 100644 --- a/src/solidbase-theme/Layout.tsx +++ b/src/solidbase-theme/Layout.tsx @@ -7,14 +7,17 @@ import { I18nProvider } from "~/i18n/i18n-context"; import { Title } from "@solidjs/meta"; import { useThemeListener } from "@kobalte/solidbase/client"; import { usePace } from "@kobalte/solidbase/default-theme/pace.js"; +import { useProjectTitle } from "~/ui/use-project-title"; export default function (props: RouteSectionProps) { useThemeListener(); usePace(); + const projectTitle = useProjectTitle(); + return ( - Solid Docs + {projectTitle()} }> {props.children} diff --git a/src/ui/docs-layout.tsx b/src/ui/docs-layout.tsx index 471fc369f5..e1f6c98da4 100644 --- a/src/ui/docs-layout.tsx +++ b/src/ui/docs-layout.tsx @@ -5,6 +5,7 @@ import { coreEntries } from "solid:collection"; import { Pagination } from "~/ui/pagination"; import { EditPageLink } from "./edit-page-link"; import { PageIssueLink } from "./page-issue-link"; +import { useProjectTitle } from "./use-project-title"; interface DocsLayoutProps { entries: typeof coreEntries; @@ -13,6 +14,7 @@ interface DocsLayoutProps { export const DocsLayout = (props: DocsLayoutProps) => { const location = useLocation(); + const projectTitle = useProjectTitle(); const collection = () => location.pathname.includes("/reference/") @@ -40,7 +42,7 @@ export const DocsLayout = (props: DocsLayoutProps) => { <> SolidDocs}> - {(title) => {`${title()} - SolidDocs`}} + {(title) => {`${title()} - ${projectTitle()}`}}
diff --git a/src/ui/not-found.tsx b/src/ui/not-found.tsx index e500dba2d7..56e823ec8e 100644 --- a/src/ui/not-found.tsx +++ b/src/ui/not-found.tsx @@ -2,11 +2,14 @@ import { Title } from "@solidjs/meta"; import { Layout } from "./layout"; import { HttpStatusCode } from "@solidjs/start"; import { A } from "~/ui/i18n-anchor"; +import { useProjectTitle } from "./use-project-title"; export function NotFound() { + const projectTitle = useProjectTitle(); + return ( <> - 404 - SolidDocs + Not Found - {projectTitle()}
diff --git a/src/ui/use-project-title.ts b/src/ui/use-project-title.ts new file mode 100644 index 0000000000..a38c3dd9b6 --- /dev/null +++ b/src/ui/use-project-title.ts @@ -0,0 +1,35 @@ +import { type Accessor, createEffect, createSignal } from "solid-js"; +import { useMatch } from "@solidjs/router"; + +const SOLID_START_TITLE = "SolidStart Docs"; +const SOLID_ROUTER_TITLE = "Solid Router Docs"; +const SOLID_META_TITLE = "Solid Meta Docs"; +const SOLID_TITLE = "Solid Docs"; + +type ProjectTitle = + | typeof SOLID_START_TITLE + | typeof SOLID_ROUTER_TITLE + | typeof SOLID_META_TITLE + | typeof SOLID_TITLE; + +export function useProjectTitle(): Accessor { + const [title, setTitle] = createSignal(SOLID_TITLE); + + const isStart = useMatch(() => "/solid-start/*"); + const isRouter = useMatch(() => "/solid-router/*"); + const isMeta = useMatch(() => "/solid-meta/*"); + + createEffect(() => { + if (isStart()) { + setTitle(SOLID_START_TITLE); + } else if (isRouter()) { + setTitle(SOLID_ROUTER_TITLE); + } else if (isMeta()) { + setTitle(SOLID_META_TITLE); + } else { + setTitle(SOLID_TITLE); + } + }); + + return title; +}