forked from solidjs/solid-docs
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuse-project.ts
More file actions
39 lines (33 loc) · 1.05 KB
/
use-project.ts
File metadata and controls
39 lines (33 loc) · 1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { createEffect, createSignal, type Accessor } from "solid-js";
import { useMatch } from "@solidjs/router";
import { SUPPORTED_LOCALES } from "~/i18n/config";
import { useI18n } from "~/i18n/i18n-context";
type Project = "solid-start" | "solid-router" | "solid-meta" | "solid";
export function useProject(): Accessor<Project> {
const match = useMatch(() => "/:locale?/:project/*", {
locale: SUPPORTED_LOCALES,
project: ["solid-start", "solid-router", "solid-meta"],
});
return () => (match()?.params.project as Project) ?? "solid";
}
export function useProjectTitle(): Accessor<string> {
const [title, setTitle] = createSignal("");
const project = useProject();
const i18n = useI18n();
createEffect(() => {
switch (project()) {
case "solid-start":
setTitle(i18n.t("meta.title.solid_start"));
break;
case "solid-router":
setTitle(i18n.t("meta.title.solid_router"));
break;
case "solid-meta":
setTitle(i18n.t("meta.title.solid_meta"));
break;
default:
setTitle(i18n.t("meta.title.solid"));
}
});
return title;
}