From 40caa1d3e76705ca053bac5c5c2f9bb7f4e8bc68 Mon Sep 17 00:00:00 2001 From: aXenDeveloper Date: Sat, 15 Nov 2025 20:23:13 +0100 Subject: [PATCH 1/2] feat: Add progress bar --- apps/docs/src/examples/tooltip.tsx | 19 ++++---- packages/vitnode/package.json | 1 + .../vitnode/src/views/layouts/provider.tsx | 23 ++++++---- .../vitnode/src/views/layouts/root-layout.tsx | 4 +- packages/vitnode/src/vitnode.config.ts | 3 ++ pnpm-lock.yaml | 45 ++++++++++++++++--- 6 files changed, 71 insertions(+), 24 deletions(-) diff --git a/apps/docs/src/examples/tooltip.tsx b/apps/docs/src/examples/tooltip.tsx index 1056e6bb4..3ed643b5d 100644 --- a/apps/docs/src/examples/tooltip.tsx +++ b/apps/docs/src/examples/tooltip.tsx @@ -4,18 +4,21 @@ import { Button } from "@vitnode/core/components/ui/button"; import { Tooltip, TooltipContent, + TooltipProvider, TooltipTrigger, } from "@vitnode/core/components/ui/tooltip"; export default function TooltipDemo() { return ( - - - - - -

Add to library

-
-
+ + + + + + +

Add to library

+
+
+
); } diff --git a/packages/vitnode/package.json b/packages/vitnode/package.json index 4f6c3b0b3..e9f3ff958 100644 --- a/packages/vitnode/package.json +++ b/packages/vitnode/package.json @@ -109,6 +109,7 @@ }, "type": "module", "dependencies": { + "@bprogress/next": "^3.2.12", "@dnd-kit/core": "^6.3.1", "@hono/swagger-ui": "^0.5.2", "@react-email/preview-server": "^5.0.4", diff --git a/packages/vitnode/src/views/layouts/provider.tsx b/packages/vitnode/src/views/layouts/provider.tsx index 79e44acfe..4e6256060 100644 --- a/packages/vitnode/src/views/layouts/provider.tsx +++ b/packages/vitnode/src/views/layouts/provider.tsx @@ -1,5 +1,6 @@ "use client"; +import { ProgressProvider } from "@bprogress/next/app"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { ThemeProvider } from "next-themes"; import React from "react"; @@ -13,16 +14,11 @@ import { Toaster } from "../../components/ui/sonner"; export const RootProvider = ({ children, - theme, toaster, - debug, + config: { debug, theme, progressBar }, }: { children: React.ReactNode; - debug?: VitNodeConfig["debug"]; - theme?: Omit< - React.ComponentProps, - "attribute" | "disableTransitionOnChange" | "enableSystem" - >; + config: VitNodeConfig; toaster?: React.ComponentProps; }) => { React.useEffect(() => { @@ -59,7 +55,18 @@ export const RootProvider = ({ position={toaster?.position ?? "top-center"} {...toaster} /> - {children} + + {children} + ); diff --git a/packages/vitnode/src/views/layouts/root-layout.tsx b/packages/vitnode/src/views/layouts/root-layout.tsx index 8c85f7272..30b8453f8 100644 --- a/packages/vitnode/src/views/layouts/root-layout.tsx +++ b/packages/vitnode/src/views/layouts/root-layout.tsx @@ -40,9 +40,7 @@ export const RootLayout = async ({ return ( - - {children} - + {children} ); }; diff --git a/packages/vitnode/src/vitnode.config.ts b/packages/vitnode/src/vitnode.config.ts index 83e58cf4a..ac62f308e 100644 --- a/packages/vitnode/src/vitnode.config.ts +++ b/packages/vitnode/src/vitnode.config.ts @@ -1,6 +1,8 @@ +import type { ProgressProvider } from "@bprogress/next/app"; import type { drizzle } from "drizzle-orm/postgres-js"; import type { ThemeProvider } from "next-themes"; import type { IRateLimiterOptions } from "rate-limiter-flexible"; +import type React from "react"; import type { CronAdapter } from "./api/lib/cron"; import type { BuildPluginApiReturn } from "./api/lib/plugin"; @@ -26,6 +28,7 @@ export interface VitNodeConfig< }; metadata: VitNodeApiConfig["metadata"]; plugins: BuildPluginReturn[]; + progressBar?: React.ComponentProps; theme?: Omit< React.ComponentProps, "attribute" | "disableTransitionOnChange" | "enableSystem" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1bb149690..e31c8e969 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -55,7 +55,7 @@ importers: version: 4.10.6 next-intl: specifier: ^4.5.3 - version: 4.5.3(next@16.0.3(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3) + version: 4.5.3(next@16.0.3(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3) react: specifier: ^19.2.0 version: 19.2.0 @@ -152,7 +152,7 @@ importers: version: 16.0.3(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) next-intl: specifier: ^4.5.3 - version: 4.5.3(next@16.0.3(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3) + version: 4.5.3(next@16.0.3(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3) node-cron: specifier: ^4.2.1 version: 4.2.1 @@ -423,6 +423,9 @@ importers: packages/vitnode: dependencies: + '@bprogress/next': + specifier: ^3.2.12 + version: 3.2.12(next@16.0.3(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@dnd-kit/core': specifier: ^6.3.1 version: 6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) @@ -570,7 +573,7 @@ importers: version: 16.0.3(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) next-intl: specifier: ^4.5.3 - version: 4.5.3(next@16.0.3(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3) + version: 4.5.3(next@16.0.3(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3) react: specifier: ^19.2.0 version: 19.2.0 @@ -639,7 +642,7 @@ importers: version: 16.0.3(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) next-intl: specifier: ^4.5.3 - version: 4.5.3(next@16.0.3(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3) + version: 4.5.3(next@16.0.3(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3) react: specifier: ^19.2.0 version: 19.2.0 @@ -935,6 +938,22 @@ packages: '@borewit/text-codec@0.1.1': resolution: {integrity: sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==} + '@bprogress/core@1.3.4': + resolution: {integrity: sha512-q/AqpurI/1uJzOrQROuZWixn/+ARekh+uvJGwLCP6HQ/EqAX4SkvNf618tSBxL4NysC0MwqAppb/mRw6Tzi61w==} + + '@bprogress/next@3.2.12': + resolution: {integrity: sha512-/ZvNwbAd0ty9QiQwCfT2AfwWVdAaEyCPx5RUz3CfiiJS/OLBohhDz/IC/srhwK9GnXeXavvtiUrpKzN5GJDwlw==} + peerDependencies: + next: '>=13.0.0' + react: '>=18.0.0' + react-dom: '>=18.0.0' + + '@bprogress/react@1.2.7': + resolution: {integrity: sha512-MqJfHW+R5CQeWqyqrLxUjdBRHk24Xl63OkBLo5DMWqUqocUikRTfCIc/jtQQbPk7BRfdr5OP3Lx7YlfQ9QOZMQ==} + peerDependencies: + react: '>=18.0.0' + react-dom: '>=18.0.0' + '@clack/core@0.3.5': resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==} @@ -8482,6 +8501,22 @@ snapshots: '@borewit/text-codec@0.1.1': {} + '@bprogress/core@1.3.4': {} + + '@bprogress/next@3.2.12(next@16.0.3(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@bprogress/core': 1.3.4 + '@bprogress/react': 1.2.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + next: 16.0.3(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@bprogress/react@1.2.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@bprogress/core': 1.3.4 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + '@clack/core@0.3.5': dependencies: picocolors: 1.1.1 @@ -14177,7 +14212,7 @@ snapshots: negotiator@1.0.0: {} - next-intl@4.5.3(next@16.0.3(@babel/core@7.28.5)(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3): + next-intl@4.5.3(next@16.0.3(@playwright/test@1.56.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(typescript@5.9.3): dependencies: '@formatjs/intl-localematcher': 0.5.10 '@swc/core': 1.15.2 From 184a737807b696a61aacba41a004530aaaf1f64d Mon Sep 17 00:00:00 2001 From: Maciej Piotr Balcerzak Date: Sat, 15 Nov 2025 20:27:17 +0100 Subject: [PATCH 2/2] Update packages/vitnode/src/views/layouts/provider.tsx Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- packages/vitnode/src/views/layouts/provider.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/vitnode/src/views/layouts/provider.tsx b/packages/vitnode/src/views/layouts/provider.tsx index 4e6256060..790ae196e 100644 --- a/packages/vitnode/src/views/layouts/provider.tsx +++ b/packages/vitnode/src/views/layouts/provider.tsx @@ -56,14 +56,14 @@ export const RootProvider = ({ {...toaster} /> {children}