Skip to content

Commit 886b4d2

Browse files
authored
Cleaned up code (#37)
1 parent bb5e2f0 commit 886b4d2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+273
-184
lines changed

src/index.html renamed to src/index.html.jinja

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<!doctype html>
22
<html lang="en">
33
<head>
4+
<title>{{ appname }}</title>
5+
<meta name="description" content="{{ appname }}" />
46
<link rel="shortcut icon" href="/favicon.svg?v=1" />
57
<meta
68
name="viewport"

src/package-lock.json.jinja

-22
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/package.json.jinja

-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
"immer": "^10.1.1",
2323
"react": "^18.3.1",
2424
"react-dom": "^18.3.1",
25-
"react-helmet-async": "^2.0.5",
2625
"react-router-dom": "^6.28.0",
2726
"zustand": "^5.0.1"
2827
},

src/src/app/error.tsx

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { RootErrorMetadata } from "../components/metadata/root/root-error-metadata";
2+
import { RootErrorView } from "../components/views/root/root-error-view";
3+
import { RootErrorInput } from "./types";
4+
5+
export function RootError({}: RootErrorInput) {
6+
return (
7+
<>
8+
<RootErrorMetadata />
9+
<RootErrorView />
10+
</>
11+
);
12+
}

src/src/app/error.tsx.jinja

-19
This file was deleted.

src/src/app/layout.tsx

+7-10
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,17 @@
11
import { Outlet } from "react-router-dom";
22
import { PageLayout } from "../components/layouts/page-layout";
3-
import { HelmetProvider } from "../providers/helmet-provider";
43
import { I18nProvider } from "../providers/i18n-provider";
54
import { ThemeProvider } from "../providers/theme-provider";
65
import { RootLayoutInput } from "./types";
76

87
export function RootLayout({}: RootLayoutInput) {
98
return (
10-
<HelmetProvider>
11-
<I18nProvider>
12-
<ThemeProvider>
13-
<PageLayout>
14-
<Outlet />
15-
</PageLayout>
16-
</ThemeProvider>
17-
</I18nProvider>
18-
</HelmetProvider>
9+
<I18nProvider>
10+
<ThemeProvider>
11+
<PageLayout>
12+
<Outlet />
13+
</PageLayout>
14+
</ThemeProvider>
15+
</I18nProvider>
1916
);
2017
}

src/src/app/not-found.tsx

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { RootNotFoundMetadata } from "../components/metadata/root/root-not-found-metadata";
2+
import { RootNotFoundView } from "../components/views/root/root-not-found-view";
3+
import { RootNotFoundInput } from "./types";
4+
5+
export function RootNotFound({}: RootNotFoundInput) {
6+
return (
7+
<>
8+
<RootNotFoundMetadata />
9+
<RootNotFoundView />
10+
</>
11+
);
12+
}

src/src/app/not-found.tsx.jinja

-19
This file was deleted.

src/src/app/page.tsx

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { RootPageMetadata } from "../components/metadata/root/root-page-metadata";
2+
import { RootPageView } from "../components/views/root/root-page-view";
3+
import { RootPageInput } from "./types";
4+
5+
export function RootPage({}: RootPageInput) {
6+
return (
7+
<>
8+
<RootPageMetadata />
9+
<RootPageView />
10+
</>
11+
);
12+
}

src/src/app/page.tsx.jinja

-19
This file was deleted.

src/src/components/meta/head/index.ts

-2
This file was deleted.

src/src/components/meta/head/main.tsx

-11
This file was deleted.

src/src/components/meta/head/types.ts

-4
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { RootErrorMetadata } from "./main";
2+
export type { RootErrorMetadataInput } from "./types";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { msg } from "@lingui/macro";
2+
import { useLingui } from "@lingui/react";
3+
import { useDocumentMetadata } from "../../../../hooks/use-document-metadata";
4+
import { RootErrorMetadataInput } from "./types";
5+
6+
export function RootErrorMetadata({}: RootErrorMetadataInput) {
7+
const { _ } = useLingui();
8+
9+
useDocumentMetadata({
10+
description: _(msg({ message: "{{ appname }}" })),
11+
title: _(msg({ message: "Error • {{ appname }}" })),
12+
});
13+
14+
return null;
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export type RootErrorMetadataInput = {
2+
[key: string]: never;
3+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { RootNotFoundMetadata } from "./main";
2+
export type { RootNotFoundMetadataInput } from "./types";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { msg } from "@lingui/macro";
2+
import { useLingui } from "@lingui/react";
3+
import { useDocumentMetadata } from "../../../../hooks/use-document-metadata";
4+
import { RootNotFoundMetadataInput } from "./types";
5+
6+
export function RootNotFoundMetadata({}: RootNotFoundMetadataInput) {
7+
const { _ } = useLingui();
8+
9+
useDocumentMetadata({
10+
description: _(msg({ message: "{{ appname }}" })),
11+
title: _(msg({ message: "Not Found • {{ appname }}" })),
12+
});
13+
14+
return null;
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export type RootNotFoundMetadataInput = {
2+
[key: string]: never;
3+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { RootPageMetadata } from "./main";
2+
export type { RootPageMetadataInput } from "./types";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { msg } from "@lingui/macro";
2+
import { useLingui } from "@lingui/react";
3+
import { useDocumentMetadata } from "../../../../hooks/use-document-metadata";
4+
import { RootPageMetadataInput } from "./types";
5+
6+
export function RootPageMetadata({}: RootPageMetadataInput) {
7+
const { _ } = useLingui();
8+
9+
useDocumentMetadata({
10+
description: _(msg({ message: "{{ appname }}" })),
11+
title: _(msg({ message: "{{ appname }}" })),
12+
});
13+
14+
return null;
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export type RootPageMetadataInput = {
2+
[key: string]: never;
3+
};

src/src/constants.ts.jinja

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export const colorSchemeStorageKey = "{{ keyprefix }}-color-scheme";
2+
export const defaultColorScheme = "auto";
3+
export const defaultLocale = "en";
4+
export const defaultUserLanguage = "en";
5+
export const stateStorageKey = "{{ keyprefix }}-state";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { useDocumentMetadata } from "./main";
2+
export type { UseDocumentMetadataInput } from "./types";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { useElementAttribute } from "../use-element-attribute";
2+
import { useElementText } from "../use-element-text";
3+
import { UseDocumentMetadataInput } from "./types";
4+
5+
export function useDocumentMetadata({
6+
description,
7+
language,
8+
title,
9+
}: UseDocumentMetadataInput): void {
10+
useElementAttribute({
11+
selector: "meta[name='description']",
12+
attribute: "content",
13+
value: description,
14+
});
15+
16+
useElementAttribute({
17+
selector: "html",
18+
attribute: "lang",
19+
value: language,
20+
});
21+
22+
useElementText({
23+
selector: "title",
24+
text: title,
25+
});
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export type UseDocumentMetadataInput = {
2+
description?: string;
3+
language?: string;
4+
title?: string;
5+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { useElementAttribute } from "./main";
2+
export type { UseElementAttributeInput } from "./types";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { useEffect } from "react";
2+
import { UseElementAttributeInput } from "./types";
3+
4+
export function useElementAttribute({
5+
attribute,
6+
selector,
7+
value,
8+
}: UseElementAttributeInput): void {
9+
useEffect(() => {
10+
if (
11+
attribute === undefined ||
12+
selector === undefined ||
13+
value === undefined
14+
)
15+
return;
16+
17+
document?.querySelector(selector)?.setAttribute(attribute, value);
18+
}, [attribute, selector, value]);
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export type UseElementAttributeInput = {
2+
attribute?: string;
3+
selector?: string;
4+
value?: string;
5+
};
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { useElementText } from "./main";
2+
export type { UseElementTextInput } from "./types";
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { useEffect } from "react";
2+
import { UseElementTextInput } from "./types";
3+
4+
export function useElementText({ selector, text }: UseElementTextInput): void {
5+
useEffect(() => {
6+
if (selector === undefined || text === undefined) return;
7+
8+
const element = document?.querySelector(selector);
9+
if (element) element.textContent = text;
10+
}, [selector, text]);
11+
}
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export type UseElementTextInput = {
2+
selector?: string;
3+
text?: string;
4+
};

src/src/hooks/use-language/constants.ts

-1
This file was deleted.

src/src/hooks/use-language/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export { UseLanguage } from "./main";
1+
export { useLanguage } from "./main";
22
export type { UseLanguageInput, UseLanguageOutput } from "./types";

src/src/hooks/use-language/main.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
subscribeLanguageChange,
77
} from "./utils";
88

9-
export function UseLanguage({}: UseLanguageInput = {}): UseLanguageOutput {
9+
export function useLanguage({}: UseLanguageInput = {}): UseLanguageOutput {
1010
const language = useSyncExternalStore(
1111
subscribeLanguageChange,
1212
getCurrentLanguage,

src/src/hooks/use-language/utils.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { defaultLanguage } from "./constants";
1+
import { defaultUserLanguage } from "../../constants";
22

33
export function subscribeLanguageChange(callback: () => void) {
44
window.addEventListener("languagechange", callback);
@@ -10,5 +10,5 @@ export function getCurrentLanguage() {
1010
}
1111

1212
export function getDefaultLanguage() {
13-
return defaultLanguage;
13+
return defaultUserLanguage;
1414
}
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
import { messages } from "../../locales/en.po";
22

3-
export const defaultLocale = "en";
43
export const defaultMessages = messages;

0 commit comments

Comments
 (0)