Skip to content

Commit 7722208

Browse files
committed
Upgrade to React 19 and replace helmet with native elements
1 parent d3442a2 commit 7722208

File tree

10 files changed

+15
-40
lines changed

10 files changed

+15
-40
lines changed

MyApp.Client/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@
2323
"lucide-react": "^0.487.0",
2424
"react": "^19.1.0",
2525
"react-dom": "^19.1.0",
26-
"react-helmet": "^6.1.0",
27-
"react-helmet-async": "^2.0.5",
2826
"react-router": "^7.5.0",
2927
"react-router-dom": "^7.5.0",
3028
"swr": "^2.3.3",

MyApp.Client/src/components/Layout.tsx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import Header from "./Header"
22
import Footer from "./Footer"
33
import Meta from "./Meta"
4-
import { HelmetProvider, Helmet } from "react-helmet-async"
54

65
type Props = {
76
title?: string
@@ -11,11 +10,7 @@ type Props = {
1110
const Layout = ({title, children}: Props) => {
1211
return (
1312
<>
14-
{!title ? null : <HelmetProvider>
15-
<Helmet>
16-
<title>{title}</title>
17-
</Helmet>
18-
</HelmetProvider>}
13+
{!title ? null : <title>{title}</title>}
1914
<Meta/>
2015
<Header/>
2116
<div className="min-h-screen">

MyApp.Client/src/components/LayoutArticle.tsx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import Header from "./Header"
22
import Footer from "./Footer"
33
import Meta from "./Meta"
4-
import { HelmetProvider, Helmet } from "react-helmet-async"
54

65
type Props = {
76
title?: string
@@ -11,11 +10,7 @@ type Props = {
1110
const Layout = ({title, children}: Props) => {
1211
return (
1312
<>
14-
{!title ? null : <HelmetProvider>
15-
<Helmet>
16-
<title>{title}</title>
17-
</Helmet>
18-
</HelmetProvider>}
13+
{!title ? null : <title>{title}</title>}
1914
<Meta/>
2015
<Header/>
2116
<div className="min-h-screen">

MyApp.Client/src/components/LiteYouTube.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export interface LiteYouTubeProps {
2929
muted?: boolean,
3030
thumbnail?: string,
3131
rel?: string,
32-
containerElement?: keyof JSX.IntrinsicElements;
32+
containerElement?: keyof React.JSX.IntrinsicElements;
3333
style?: React.CSSProperties;
3434
}
3535

@@ -45,8 +45,8 @@ function LiteYouTubeEmbedComponent(props: LiteYouTubeProps, ref: React.Ref<HTMLI
4545
const announceWatch = props.announce || "Watch";
4646
const format = props.webp ? 'webp' : 'jpg';
4747
const vi = props.webp ? 'vi_webp' : 'vi';
48-
const posterUrl = props.thumbnail || (!props.playlist
49-
? `https://i.ytimg.com/${vi}/${videoId}/${posterImp}.${format}`
48+
const posterUrl = props.thumbnail || (!props.playlist
49+
? `https://i.ytimg.com/${vi}/${videoId}/${posterImp}.${format}`
5050
: `https://i.ytimg.com/${vi}/${videoPlaylisCovertId}/${posterImp}.${format}`);
5151

5252
let ytUrl = props.noCookie

MyApp.Client/src/components/MarkdownComponent.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import LiteYouTube from "./LiteYouTube"
66
import FileLayout from "./FileLayout"
77
import { Icon } from "@iconify/react"
88

9-
export const Components: { [name: string]: JSX.Element | Function } = {
9+
export const Components: { [name: string]: React.JSX.Element | Function } = {
1010
Files,
1111
Icon,
1212
Iconify: Icon, // alias for portability with Vue Markdown
@@ -153,7 +153,7 @@ type Props = {
153153
type: string
154154
group?: string
155155
}
156-
export default ({ doc, type, group }: Props): JSX.Element => {
156+
export default ({ doc, type, group }: Props): React.JSX.Element => {
157157
const press = React.useContext(PressContext)
158158

159159
const components = (press.components as any)[type] || {}
Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
1-
import { HelmetProvider, Helmet } from "react-helmet-async"
21

32
export default () => {
43
return (
5-
<HelmetProvider>
6-
<Helmet>
4+
<>
75
<meta
86
name="description"
97
content={`Vite + React SPA`}
108
/>
119
<meta property="og:image" content="/img/logo.svg" />
12-
</Helmet>
13-
</HelmetProvider>
10+
</>
1411
)
1512
}

MyApp.Client/src/pages/counter.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import LayoutPage from "@/components/LayoutPage"
33
import { Button } from "@/components/ui/button"
44
import SrcPage from "@/components/SrcPage"
55

6-
export default (): JSX.Element => {
6+
export default (): React.JSX.Element => {
77
const [count, setCount] = useState(0)
88
const title = `Counter`
99

MyApp.Client/src/pages/posts/[slug].tsx

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@ import { Link } from "react-router-dom"
33
import AuthorLinks from "@/components/AuthorLinks"
44
import { useContext } from "react"
55
import { PressContext } from "@/contexts"
6-
import { HelmetProvider, Helmet } from "react-helmet-async"
76
import { generateSlug, dateLabel, dateTimestamp } from "@/utils"
87
import { useParams } from "react-router-dom"
98
import MarkdownComponent from "@/components/MarkdownComponent"
109
import { ErrorSummary } from "@/components/Form"
1110

12-
export default (): JSX.Element => {
11+
export default (): React.JSX.Element => {
1312
const press = useContext(PressContext)
1413

1514
const { slug } = useParams()
@@ -36,11 +35,7 @@ export default (): JSX.Element => {
3635

3736
return (
3837
<Layout>
39-
<HelmetProvider>
40-
<Helmet>
41-
<title>{title}</title>
42-
</Helmet>
43-
</HelmetProvider>
38+
<title>{title}</title>
4439
{post ? (<>
4540
<div className="container px-5 mb-32 mx-auto">
4641
<article className="mt-20">

MyApp.Client/src/pages/posts/tagged/[tag].tsx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import { useContext } from "react"
88
import { useParams } from "react-router-dom"
99
import { PressContext } from "@/contexts"
1010
import { generateSlug } from "@/utils"
11-
import { HelmetProvider, Helmet } from "react-helmet-async"
1211

1312
export default () => {
1413
const press = useContext(PressContext)
@@ -29,11 +28,7 @@ export default () => {
2928

3029
return (
3130
<Layout>
32-
<HelmetProvider>
33-
<Helmet>
34-
<title>{title}</title>
35-
</Helmet>
36-
</HelmetProvider>
31+
<title>{title}</title>
3732
{selectedTag
3833
? <div className="relative bg-gray-50 dark:bg-gray-900 px-6 pt-16 pb-20 lg:px-8 lg:pt-24 lg:pb-28">
3934
<div className="absolute inset-0">

MyApp.Client/src/pages/weather.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { useState, useEffect } from "react"
1+
import React, { useState, useEffect } from "react"
22
import LayoutPage from "@/components/LayoutPage"
33
import SrcPage from "@/components/SrcPage"
44
import { useClient } from "@/gateway"
55
import { GetWeatherForecast, Forecast } from "@/dtos"
66
import { columnDefs, DataTable, getCoreRowModel } from "@/components/DataTable"
77
import { CellContext } from "@tanstack/react-table"
88

9-
export default (): JSX.Element => {
9+
export default (): React.JSX.Element => {
1010
const client = useClient()
1111
const [forecasts, setForecasts] = useState<Forecast[]>([])
1212

0 commit comments

Comments
 (0)