Frontend: Add NextNProgress component for progress indication during page transitions

This commit is contained in:
Marco Pedone 2025-08-06 09:26:35 +02:00
parent 77f1bec4ce
commit e544b25795
3 changed files with 32 additions and 2 deletions

View file

@ -47,6 +47,7 @@
"lucide-react": "^0.536.0", "lucide-react": "^0.536.0",
"next": "^15.3.4", "next": "^15.3.4",
"next-themes": "^0.4.6", "next-themes": "^0.4.6",
"nextjs-progressbar": "^0.0.16",
"nodemailer": "^7.0.5", "nodemailer": "^7.0.5",
"nodemailer-html-to-text": "^3.2.0", "nodemailer-html-to-text": "^3.2.0",
"nuqs": "^2.4.3", "nuqs": "^2.4.3",
@ -7456,6 +7457,12 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/@types/nprogress": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/@types/nprogress/-/nprogress-0.2.3.tgz",
"integrity": "sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==",
"license": "MIT"
},
"node_modules/@types/parse-json": { "node_modules/@types/parse-json": {
"version": "4.0.2", "version": "4.0.2",
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
@ -15269,6 +15276,21 @@
"node": "^10 || ^12 || >=14" "node": "^10 || ^12 || >=14"
} }
}, },
"node_modules/nextjs-progressbar": {
"version": "0.0.16",
"resolved": "https://registry.npmjs.org/nextjs-progressbar/-/nextjs-progressbar-0.0.16.tgz",
"integrity": "sha512-GV0fD38EMD3vSDCmkq+tObmoup6QA91a6a9MxGuhJZuRk/9TNsrHGnIQQQ/sggkMkXuT4fBgF6jRjFwScDT3zA==",
"license": "MIT",
"dependencies": {
"@types/nprogress": "^0.2.0",
"nprogress": "^0.2.0",
"prop-types": "^15.8.1"
},
"peerDependencies": {
"next": ">= 6.0.0",
"react": ">= 16.0.0"
}
},
"node_modules/nice-try": { "node_modules/nice-try": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
@ -15622,6 +15644,12 @@
"which": "bin/which" "which": "bin/which"
} }
}, },
"node_modules/nprogress": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
"integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==",
"license": "MIT"
},
"node_modules/nth-check": { "node_modules/nth-check": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",

View file

@ -58,6 +58,7 @@
"lucide-react": "^0.536.0", "lucide-react": "^0.536.0",
"next": "^15.3.4", "next": "^15.3.4",
"next-themes": "^0.4.6", "next-themes": "^0.4.6",
"nextjs-progressbar": "^0.0.16",
"nodemailer": "^7.0.5", "nodemailer": "^7.0.5",
"nodemailer-html-to-text": "^3.2.0", "nodemailer-html-to-text": "^3.2.0",
"nuqs": "^2.4.3", "nuqs": "^2.4.3",
@ -143,4 +144,4 @@
"ct3aMetadata": { "ct3aMetadata": {
"initVersion": "7.9.0" "initVersion": "7.9.0"
} }
} }

View file

@ -13,6 +13,7 @@ import { Layout } from "~/components/Layout";
import { inter } from "~/utils/fonts"; import { inter } from "~/utils/fonts";
import "react-day-picker/dist/style.css"; import "react-day-picker/dist/style.css";
import { NuqsAdapter } from "nuqs/adapters/next/pages"; import { NuqsAdapter } from "nuqs/adapters/next/pages";
import NextNProgress from "nextjs-progressbar";
type ThemeProviderProps = ComponentProps<typeof NextThemesProvider>; type ThemeProviderProps = ComponentProps<typeof NextThemesProvider>;
export function ThemeProvider({ children, ...props }: ThemeProviderProps) { export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
@ -72,7 +73,7 @@ const MyApp = ({
`}</style> `}</style>
<Toaster position="top-right" reverseOrder={false} /> <Toaster position="top-right" reverseOrder={false} />
<NextNProgress options={{ showSpinner: false }} />
{getLayout(<Component {...pageProps} />)} {getLayout(<Component {...pageProps} />)}
</ThemeProvider> </ThemeProvider>
</SessionProvider> </SessionProvider>