fix: comprehensive TypeScript/build fixes and modernization

- Update tsconfig to ES2024 target and bundler moduleResolution
- Add dynamic imports for chart.js and recharts (bundle optimization)
- Consolidate 17 useState into useReducer in sessions page
- Fix 18 .js extension imports across lib files
- Add type declarations for @rapideditor/country-coder
- Fix platform user types (PlatformUserRole enum)
- Fix Calendar component prop types
- Centralize next-auth type augmentation
- Add force-dynamic to all API routes (prevent build-time prerender)
- Fix Prisma JSON null handling with Prisma.DbNull
- Fix various type mismatches (SessionMessage, ImportRecord, etc.)
- Export ButtonProps from button component
- Update next-themes import path
- Replace JSX.Element with React.ReactElement
- Remove obsolete debug scripts and pnpm lockfile
- Downgrade eslint to v8 for next compatibility
This commit is contained in:
2026-01-20 07:28:10 +01:00
parent 8b3846539f
commit 5bfd762e55
161 changed files with 14655 additions and 11682 deletions

View File

@@ -56,4 +56,9 @@ function Button({
);
}
export { Button, buttonVariants };
type ButtonProps = React.ComponentProps<"button"> &
VariantProps<typeof buttonVariants> & {
asChild?: boolean;
};
export { Button, buttonVariants, type ButtonProps };

View File

@@ -14,11 +14,9 @@ import {
import { Button, buttonVariants } from "@/components/ui/button";
import { cn } from "@/lib/utils";
interface CalendarRootProps {
className?: string;
type CalendarRootProps = {
rootRef?: React.Ref<HTMLDivElement>;
[key: string]: unknown;
}
} & React.HTMLAttributes<HTMLDivElement>;
const CalendarRoot = ({ className, rootRef, ...props }: CalendarRootProps) => {
return (
@@ -33,13 +31,14 @@ const CalendarRoot = ({ className, rootRef, ...props }: CalendarRootProps) => {
interface CalendarChevronProps {
className?: string;
orientation: "left" | "right" | "up" | "down";
[key: string]: unknown;
size?: number;
disabled?: boolean;
orientation?: "left" | "right" | "up" | "down";
}
const CalendarChevron = ({
className,
orientation,
orientation = "down",
...props
}: CalendarChevronProps) => {
if (orientation === "left") {
@@ -59,19 +58,20 @@ const CalendarChevron = ({
return <ChevronDownIcon className={cn("size-4", className)} {...props} />;
};
interface CalendarWeekNumberProps {
children: React.ReactNode;
[key: string]: unknown;
interface CalendarWeekNumberProps
extends React.ThHTMLAttributes<HTMLTableCellElement> {
week: { weekNumber: number };
}
const CalendarWeekNumber = ({
week,
children,
...props
}: CalendarWeekNumberProps) => {
return (
<td {...props}>
<div className="flex size-9 items-center justify-center p-0 text-sm">
{children}
{children ?? week.weekNumber}
</div>
</td>
);