Next.js 15 Update (#26)

* Update Next.js and React versions in all packages
* Replace onRedirect function with next/link in BillingSessionStatus, since it's no longer cached by default
* Remove unused revalidatePath import in billing return page, since it's no longer cached by default
* Add Turbopack module aliases to improve development server speed
* Converted new Dynamic APIs to be Promise-based
* Adjust mobile layout
* Use ENABLE_REACT_COMPILER to enable the React Compiler in Next.js 15
* Report Errors using the new onRequestError hook
This commit is contained in:
Giancarlo Buomprisco
2024-10-22 08:39:21 +02:00
committed by GitHub
parent 93cb011260
commit 5b9285a575
109 changed files with 5143 additions and 5545 deletions

View File

@@ -10,31 +10,31 @@
},
"dependencies": {
"@hookform/resolvers": "^3.9.0",
"@radix-ui/react-accordion": "1.2.0",
"@radix-ui/react-alert-dialog": "^1.1.1",
"@radix-ui/react-avatar": "^1.1.0",
"@radix-ui/react-checkbox": "^1.1.1",
"@radix-ui/react-dialog": "^1.1.1",
"@radix-ui/react-dropdown-menu": "^2.1.1",
"@radix-ui/react-accordion": "1.2.1",
"@radix-ui/react-alert-dialog": "^1.1.2",
"@radix-ui/react-avatar": "^1.1.1",
"@radix-ui/react-checkbox": "^1.1.2",
"@radix-ui/react-dialog": "^1.1.2",
"@radix-ui/react-dropdown-menu": "^2.1.2",
"@radix-ui/react-label": "^2.1.0",
"@radix-ui/react-navigation-menu": "^1.2.0",
"@radix-ui/react-popover": "^1.1.1",
"@radix-ui/react-radio-group": "^1.2.0",
"@radix-ui/react-scroll-area": "^1.1.0",
"@radix-ui/react-select": "^2.1.1",
"@radix-ui/react-navigation-menu": "^1.2.1",
"@radix-ui/react-popover": "^1.1.2",
"@radix-ui/react-radio-group": "^1.2.1",
"@radix-ui/react-scroll-area": "^1.2.0",
"@radix-ui/react-select": "^2.1.2",
"@radix-ui/react-separator": "^1.1.0",
"@radix-ui/react-slot": "^1.1.0",
"@radix-ui/react-switch": "^1.1.0",
"@radix-ui/react-tabs": "^1.1.0",
"@radix-ui/react-toast": "^1.2.1",
"@radix-ui/react-tooltip": "1.1.2",
"@radix-ui/react-switch": "^1.1.1",
"@radix-ui/react-tabs": "^1.1.1",
"@radix-ui/react-toast": "^1.2.2",
"@radix-ui/react-tooltip": "1.1.3",
"clsx": "^2.1.1",
"cmdk": "1.0.0",
"input-otp": "1.2.4",
"lucide-react": "^0.446.0",
"lucide-react": "^0.453.0",
"react-top-loading-bar": "2.3.1",
"recharts": "^2.12.7",
"tailwind-merge": "^2.5.2"
"recharts": "2.13.0",
"tailwind-merge": "^2.5.4"
},
"devDependencies": {
"@kit/eslint-config": "workspace:*",
@@ -42,23 +42,23 @@
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
"@radix-ui/react-icons": "^1.3.0",
"@tanstack/react-query": "5.56.2",
"@tanstack/react-query": "5.59.15",
"@tanstack/react-table": "^8.20.5",
"@types/react": "^18.3.10",
"@types/react-dom": "^18.3.0",
"@types/react": "^18.3.11",
"@types/react-dom": "^18.3.1",
"class-variance-authority": "^0.7.0",
"date-fns": "^4.1.0",
"eslint": "^8.57.0",
"next": "14.2.13",
"next": "15.0.0",
"next-themes": "0.3.0",
"prettier": "^3.3.3",
"react-day-picker": "^8.10.1",
"react-hook-form": "^7.53.0",
"react-i18next": "^15.0.2",
"react-hook-form": "^7.53.1",
"react-i18next": "^15.1.0",
"sonner": "^1.5.0",
"tailwindcss": "3.4.13",
"tailwindcss": "3.4.14",
"tailwindcss-animate": "^1.0.7",
"typescript": "^5.6.2",
"typescript": "^5.6.3",
"zod": "^3.23.8"
},
"eslintConfig": {

View File

@@ -34,7 +34,7 @@ export const ImageUploadInput = forwardRef<React.ElementRef<'input'>, Props>(
},
forwardedRef,
) {
const localRef = useRef<HTMLInputElement>();
const localRef = useRef<HTMLInputElement>(null);
const [state, setState] = useState({
image,

View File

@@ -30,21 +30,24 @@ function PageWithSidebar(props: PageProps) {
return (
<div
className={cn('flex bg-gray-50/95 dark:bg-background/85', props.className)}
className={cn(
'flex bg-gray-50/95 dark:bg-background/85',
props.className,
)}
>
{Navigation}
<div
className={
props.contentContainerClassName ??
'mx-auto flex h-screen w-full flex-col overflow-y-auto px-4 lg:px-0 bg-inherit'
'mx-auto flex h-screen w-full flex-col overflow-y-auto bg-inherit'
}
>
{MobileNavigation}
<div
className={
'flex flex-1 flex-col overflow-y-auto bg-background lg:m-1.5 lg:ml-0 lg:rounded-lg lg:border'
'flex flex-1 flex-col overflow-y-auto bg-background px-4 lg:m-1.5 lg:ml-0 lg:rounded-lg lg:border lg:px-0'
}
>
{Children}
@@ -62,7 +65,7 @@ export function PageMobileNavigation(
return (
<div
className={cn(
'flex w-full items-center border-b py-2 lg:hidden',
'flex w-full items-center border-b px-4 py-2 lg:hidden lg:px-0',
props.className,
)}
>
@@ -115,7 +118,9 @@ export function PageBody(
}
export function PageNavigation(props: React.PropsWithChildren) {
return <div className={'hidden flex-1 lg:flex bg-inherit'}>{props.children}</div>;
return (
<div className={'hidden flex-1 bg-inherit lg:flex'}>{props.children}</div>
);
}
export function PageDescription(props: React.PropsWithChildren) {

View File

@@ -17,7 +17,7 @@ type ProfileAvatarProps = (SessionProps | TextProps) & {
export function ProfileAvatar(props: ProfileAvatarProps) {
const avatarClassName = cn(
props.className,
'mx-auto w-9 h-9 group-focus:ring-2',
'mx-auto h-9 w-9 group-focus:ring-2',
);
if ('text' in props) {

View File

@@ -42,7 +42,7 @@ export function Stepper(props: {
const isDotsVariant = variant === 'dots';
const labelClassName = cn({
['text-xs px-1.5 py-2']: !isNumberVariant,
['px-1.5 py-2 text-xs']: !isNumberVariant,
['hidden']: isDotsVariant,
});
@@ -182,15 +182,15 @@ function StepDivider({
selected: boolean;
complete: boolean;
}>) {
const spanClassName = cn('font-medium text-sm min-w-max', {
['text-muted-foreground hidden sm:flex']: !selected,
const spanClassName = cn('min-w-max text-sm font-medium', {
['hidden text-muted-foreground sm:flex']: !selected,
['text-secondary-foreground']: selected || complete,
['font-medium']: selected,
});
const className = cn(
'flex flex-1 last:flex-[0_0_0] items-center h-9 justify-center' +
' items-center w-full group px-3 flex space-x-3',
'flex h-9 flex-1 items-center justify-center last:flex-[0_0_0]' +
' group flex w-full items-center space-x-3 px-3',
);
return (