* chore: bump version to 2.23.10 and enhance workspace loading logic

- Updated application version from 2.23.9 to 2.23.10 in package.json.
- Refactored workspace loading functions to use async/await for improved error handling and added redirects for missing workspaces or users.
- Updated sidebar layout components to handle asynchronous data fetching and redirection more effectively.
- Minor adjustments to personal account dropdown styles for consistency.

* refactor: remove unused import from load-user-workspace.ts

- Removed the unused 'forbidden' import from the load-user-workspace.ts file to clean up the code and improve readability.

* refactor: remove debug log from workspaceLoader function

- Removed the console.log statement for workspace and user in the load-user-workspace.ts file to clean up the code and improve performance.

* chore: bump version to 2.23.11 and update dependencies

- Updated application version from 2.23.10 to 2.23.11 in package.json.
- Upgraded prettier to version 3.8.1.
- Updated various dependencies including @next/bundle-analyzer to 16.1.4, @next/eslint-plugin-next to 16.1.4, @react-email/components to 1.0.6, @stripe/stripe-js to 8.6.4, and @supabase/supabase-js to 2.91.1.
- Improved type support by upgrading @types/node to 25.0.10 and @types/react to 19.2.9.
- Enhanced i18next to version 25.8.0 for better localization support.

* chore: update dependencies and improve package configurations

- Bumped versions of several packages including @turbo/gen and turbo to 2.7.6, @next/bundle-analyzer and @next/eslint-plugin-next to 16.1.5, and @stripe/react-stripe-js to 5.5.0.
- Updated @supabase/supabase-js to 2.93.1 and added @sentry/nextjs to the workspace.
- Changed nodemailer and related types to use catalog references for better dependency management.
- Refactored global styles to include tw-animate-css and removed the old tailwindcss-animate plugin.
- Enhanced type definitions for eslint and related packages.

* chore: update pnpm-lock.yaml with new dependencies and version adjustments

- Added new dependencies: @sentry/nextjs (10.37.0), @types/eslint (9.6.1), @types/nodemailer (7.0.9), eslint (9.39.2), and eslint-config-turbo (2.7.6).
- Updated nodemailer to version 7.0.12 and adjusted its specifier to use catalog references.
- Changed the specifier for several packages to 'catalog:' for improved dependency management.
- Removed outdated references to eslint-community/eslint-utils version 4.9.0.

* feat: enhance user dialog components with success callbacks

- Added state management for open/close functionality in AdminBanUserDialog and AdminReactivateUserDialog.
- Updated BanUserForm and ReactivateUserForm to accept an onSuccess prop, allowing the dialog to close upon successful user action.
This commit is contained in:
Giancarlo Buomprisco
2026-01-27 12:44:59 +01:00
committed by GitHub
parent 255ba19766
commit 9355c0a614
16 changed files with 2568 additions and 3533 deletions

View File

@@ -15,7 +15,7 @@
"ai": "5.0.116", "ai": "5.0.116",
"lucide-react": "catalog:", "lucide-react": "catalog:",
"next": "catalog:", "next": "catalog:",
"nodemailer": "^7.0.12", "nodemailer": "catalog:",
"react": "catalog:", "react": "catalog:",
"react-dom": "catalog:", "react-dom": "catalog:",
"rxjs": "^7.8.2" "rxjs": "^7.8.2"
@@ -31,7 +31,7 @@
"@kit/ui": "workspace:*", "@kit/ui": "workspace:*",
"@tailwindcss/postcss": "^4.1.18", "@tailwindcss/postcss": "^4.1.18",
"@types/node": "catalog:", "@types/node": "catalog:",
"@types/nodemailer": "7.0.5", "@types/nodemailer": "catalog:",
"@types/react": "catalog:", "@types/react": "catalog:",
"@types/react-dom": "catalog:", "@types/react-dom": "catalog:",
"babel-plugin-react-compiler": "1.0.0", "babel-plugin-react-compiler": "1.0.0",
@@ -39,7 +39,7 @@
"react-hook-form": "catalog:", "react-hook-form": "catalog:",
"recharts": "2.15.3", "recharts": "2.15.3",
"tailwindcss": "catalog:", "tailwindcss": "catalog:",
"tailwindcss-animate": "^1.0.7", "tw-animate-css": "catalog:",
"typescript": "^5.9.3", "typescript": "^5.9.3",
"zod": "catalog:" "zod": "catalog:"
}, },

View File

@@ -6,15 +6,13 @@
/* Tailwind CSS */ /* Tailwind CSS */
@import 'tailwindcss'; @import 'tailwindcss';
@import 'tw-animate-css';
/* local styles - update the below if you add a new style */ /* local styles - update the below if you add a new style */
@import './theme.css'; @import './theme.css';
@import './theme.utilities.css'; @import './theme.utilities.css';
@import './shadcn-ui.css'; @import './shadcn-ui.css';
/* plugins - update the below if you add a new plugin */
@plugin 'tailwindcss-animate';
/* content sources - update the below if you add a new path */ /* content sources - update the below if you add a new path */
@source '../../../packages/ui/src/**/*.{ts,tsx}'; @source '../../../packages/ui/src/**/*.{ts,tsx}';
@source '../{app,components}/**/*.{ts,tsx}'; @source '../{app,components}/**/*.{ts,tsx}';

View File

@@ -11,7 +11,7 @@
}, },
"author": "Makerkit", "author": "Makerkit",
"devDependencies": { "devDependencies": {
"@playwright/test": "^1.57.0", "@playwright/test": "^1.58.0",
"@supabase/supabase-js": "catalog:", "@supabase/supabase-js": "catalog:",
"@types/node": "catalog:", "@types/node": "catalog:",
"dotenv": "17.2.3", "dotenv": "17.2.3",

View File

@@ -54,7 +54,7 @@
"@makerkit/data-loader-supabase-core": "^0.0.10", "@makerkit/data-loader-supabase-core": "^0.0.10",
"@makerkit/data-loader-supabase-nextjs": "^1.2.5", "@makerkit/data-loader-supabase-nextjs": "^1.2.5",
"@marsidev/react-turnstile": "^1.4.1", "@marsidev/react-turnstile": "^1.4.1",
"@nosecone/next": "1.0.0-beta.17", "@nosecone/next": "1.0.0",
"@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-icons": "^1.3.2",
"@supabase/supabase-js": "catalog:", "@supabase/supabase-js": "catalog:",
"@tanstack/react-query": "catalog:", "@tanstack/react-query": "catalog:",
@@ -86,7 +86,7 @@
"babel-plugin-react-compiler": "1.0.0", "babel-plugin-react-compiler": "1.0.0",
"cssnano": "^7.1.2", "cssnano": "^7.1.2",
"pino-pretty": "13.0.0", "pino-pretty": "13.0.0",
"prettier": "^3.8.0", "prettier": "^3.8.1",
"supabase": "catalog:", "supabase": "catalog:",
"tailwindcss": "catalog:", "tailwindcss": "catalog:",
"typescript": "^5.9.3" "typescript": "^5.9.3"

View File

@@ -1,6 +1,6 @@
{ {
"name": "next-supabase-saas-kit-turbo", "name": "next-supabase-saas-kit-turbo",
"version": "2.23.10", "version": "2.23.11",
"private": true, "private": true,
"sideEffects": false, "sideEffects": false,
"engines": { "engines": {
@@ -45,10 +45,10 @@
}, },
"devDependencies": { "devDependencies": {
"@manypkg/cli": "^0.25.1", "@manypkg/cli": "^0.25.1",
"@turbo/gen": "^2.7.5", "@turbo/gen": "^2.7.6",
"cross-env": "^10.0.0", "cross-env": "^10.0.0",
"prettier": "^3.8.0", "prettier": "^3.8.1",
"turbo": "2.7.5", "turbo": "2.7.6",
"typescript": "^5.9.3" "typescript": "^5.9.3"
} }
} }

View File

@@ -37,8 +37,10 @@ export function AdminBanUserDialog(
userId: string; userId: string;
}>, }>,
) { ) {
const [open, setOpen] = useState(false);
return ( return (
<AlertDialog> <AlertDialog open={open} onOpenChange={setOpen}>
<AlertDialogTrigger asChild>{props.children}</AlertDialogTrigger> <AlertDialogTrigger asChild>{props.children}</AlertDialogTrigger>
<AlertDialogContent> <AlertDialogContent>
@@ -51,13 +53,13 @@ export function AdminBanUserDialog(
</AlertDialogDescription> </AlertDialogDescription>
</AlertDialogHeader> </AlertDialogHeader>
<BanUserForm userId={props.userId} /> <BanUserForm userId={props.userId} onSuccess={() => setOpen(false)} />
</AlertDialogContent> </AlertDialogContent>
</AlertDialog> </AlertDialog>
); );
} }
function BanUserForm(props: { userId: string }) { function BanUserForm(props: { userId: string; onSuccess: () => void }) {
const [pending, startTransition] = useTransition(); const [pending, startTransition] = useTransition();
const [error, setError] = useState<boolean>(false); const [error, setError] = useState<boolean>(false);
@@ -78,6 +80,7 @@ function BanUserForm(props: { userId: string }) {
startTransition(async () => { startTransition(async () => {
try { try {
await banUserAction(data); await banUserAction(data);
props.onSuccess();
} catch { } catch {
setError(true); setError(true);
} }

View File

@@ -37,8 +37,10 @@ export function AdminReactivateUserDialog(
userId: string; userId: string;
}>, }>,
) { ) {
const [open, setOpen] = useState(false);
return ( return (
<AlertDialog> <AlertDialog open={open} onOpenChange={setOpen}>
<AlertDialogTrigger asChild>{props.children}</AlertDialogTrigger> <AlertDialogTrigger asChild>{props.children}</AlertDialogTrigger>
<AlertDialogContent> <AlertDialogContent>
@@ -50,13 +52,13 @@ export function AdminReactivateUserDialog(
</AlertDialogDescription> </AlertDialogDescription>
</AlertDialogHeader> </AlertDialogHeader>
<ReactivateUserForm userId={props.userId} /> <ReactivateUserForm userId={props.userId} onSuccess={() => setOpen(false)} />
</AlertDialogContent> </AlertDialogContent>
</AlertDialog> </AlertDialog>
); );
} }
function ReactivateUserForm(props: { userId: string }) { function ReactivateUserForm(props: { userId: string; onSuccess: () => void }) {
const [pending, startTransition] = useTransition(); const [pending, startTransition] = useTransition();
const [error, setError] = useState<boolean>(false); const [error, setError] = useState<boolean>(false);
@@ -77,6 +79,7 @@ function ReactivateUserForm(props: { userId: string }) {
startTransition(async () => { startTransition(async () => {
try { try {
await reactivateUserAction(data); await reactivateUserAction(data);
props.onSuccess();
} catch { } catch {
setError(true); setError(true);
} }

View File

@@ -13,14 +13,14 @@
".": "./src/index.ts" ".": "./src/index.ts"
}, },
"dependencies": { "dependencies": {
"nodemailer": "^7.0.12" "nodemailer": "catalog:"
}, },
"devDependencies": { "devDependencies": {
"@kit/eslint-config": "workspace:*", "@kit/eslint-config": "workspace:*",
"@kit/mailers-shared": "workspace:*", "@kit/mailers-shared": "workspace:*",
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@types/nodemailer": "7.0.5", "@types/nodemailer": "catalog:",
"zod": "catalog:" "zod": "catalog:"
}, },
"typesVersions": { "typesVersions": {

View File

@@ -24,7 +24,7 @@
"devDependencies": { "devDependencies": {
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"@kit/tsconfig": "workspace:*", "@kit/tsconfig": "workspace:*",
"@modelcontextprotocol/sdk": "1.25.2", "@modelcontextprotocol/sdk": "1.25.3",
"@types/node": "catalog:", "@types/node": "catalog:",
"postgres": "3.4.8", "postgres": "3.4.8",
"zod": "catalog:" "zod": "catalog:"

View File

@@ -16,7 +16,7 @@
"./config/server": "./src/sentry.client.server.ts" "./config/server": "./src/sentry.client.server.ts"
}, },
"dependencies": { "dependencies": {
"@sentry/nextjs": "^10.34.0" "@sentry/nextjs": "catalog:"
}, },
"devDependencies": { "devDependencies": {
"@kit/eslint-config": "workspace:*", "@kit/eslint-config": "workspace:*",

View File

@@ -23,7 +23,7 @@
"@types/react": "catalog:" "@types/react": "catalog:"
}, },
"dependencies": { "dependencies": {
"pino": "^10.2.0" "pino": "^10.3.0"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {

View File

@@ -35,7 +35,7 @@
"eslint": "^9.39.2", "eslint": "^9.39.2",
"next": "catalog:", "next": "catalog:",
"next-themes": "0.4.6", "next-themes": "0.4.6",
"prettier": "^3.8.0", "prettier": "^3.8.1",
"react-day-picker": "^9.13.0", "react-day-picker": "^9.13.0",
"react-hook-form": "catalog:", "react-hook-form": "catalog:",
"react-i18next": "catalog:", "react-i18next": "catalog:",

6003
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -5,25 +5,31 @@ packages:
catalog: catalog:
'@marsidev/react-turnstile': 1.4.1 '@marsidev/react-turnstile': 1.4.1
'@next/bundle-analyzer': 16.1.3 '@next/bundle-analyzer': 16.1.5
'@next/eslint-plugin-next': 16.1.3 '@next/eslint-plugin-next': 16.1.5
'@react-email/components': 1.0.4 '@react-email/components': 1.0.6
'@stripe/react-stripe-js': 5.4.1 '@sentry/nextjs': 10.37.0
'@stripe/stripe-js': 8.6.1 '@stripe/react-stripe-js': 5.5.0
'@supabase/supabase-js': 2.90.1 '@stripe/stripe-js': 8.6.4
'@supabase/supabase-js': 2.93.1
'@tailwindcss/postcss': 4.1.18 '@tailwindcss/postcss': 4.1.18
'@tanstack/react-query': 5.90.19 '@tanstack/react-query': 5.90.20
'@types/node': 25.0.9 '@types/eslint': 9.6.1
'@types/react': 19.2.8 '@types/node': 25.0.10
'@types/nodemailer': 7.0.9
'@types/react': 19.2.9
'@types/react-dom': 19.2.3 '@types/react-dom': 19.2.3
eslint-config-next: 16.1.3 eslint: 9.39.2
i18next: 25.7.4 eslint-config-next: 16.1.5
eslint-config-turbo: 2.7.6
i18next: 25.8.0
i18next-browser-languagedetector: 8.2.0 i18next-browser-languagedetector: 8.2.0
i18next-resources-to-backend: 1.2.1 i18next-resources-to-backend: 1.2.1
lucide-react: 0.562.0 lucide-react: 0.563.0
next: 16.1.3 next: 16.1.5
react: 19.2.3 nodemailer: 7.0.12
react-dom: 19.2.3 react: 19.2.4
react-dom: 19.2.4
react-hook-form: 7.71.1 react-hook-form: 7.71.1
react-i18next: 16.5.3 react-i18next: 16.5.3
stripe: 20.2.0 stripe: 20.2.0

View File

@@ -14,13 +14,13 @@
}, },
"dependencies": { "dependencies": {
"@next/eslint-plugin-next": "catalog:", "@next/eslint-plugin-next": "catalog:",
"@types/eslint": "9.6.1", "@types/eslint": "catalog:",
"eslint-config-next": "catalog:", "eslint-config-next": "catalog:",
"eslint-config-turbo": "^2.7.5" "eslint-config-turbo": "catalog:"
}, },
"devDependencies": { "devDependencies": {
"@kit/prettier-config": "workspace:*", "@kit/prettier-config": "workspace:*",
"eslint": "^9.39.2" "eslint": "catalog:"
}, },
"prettier": "@kit/prettier-config" "prettier": "@kit/prettier-config"
} }

View File

@@ -10,7 +10,7 @@
}, },
"dependencies": { "dependencies": {
"@trivago/prettier-plugin-sort-imports": "6.0.2", "@trivago/prettier-plugin-sort-imports": "6.0.2",
"prettier": "^3.8.0", "prettier": "^3.8.1",
"prettier-plugin-tailwindcss": "^0.7.2" "prettier-plugin-tailwindcss": "^0.7.2"
}, },
"devDependencies": { "devDependencies": {