-
)
diff --git a/components/ScrollToTop.tsx b/components/ScrollToTop.tsx
new file mode 100644
index 0000000..1536518
--- /dev/null
+++ b/components/ScrollToTop.tsx
@@ -0,0 +1,27 @@
+"use client"
+
+import { useState, useEffect } from "react"
+import { ChevronUp } from "lucide-react"
+
+export default function ScrollToTop() {
+ const [visible, setVisible] = useState(false)
+
+ useEffect(() => {
+ const onScroll = () => setVisible(window.scrollY > 300)
+ window.addEventListener("scroll", onScroll, { passive: true })
+ onScroll()
+ return () => window.removeEventListener("scroll", onScroll)
+ }, [])
+
+ if (!visible) return null
+
+ return (
+
window.scrollTo({ top: 0, behavior: "smooth" })}
+ className="fixed right-6 bottom-6 z-50 inline-flex items-center justify-center w-12 h-12 rounded-full bg-primary text-primary-foreground shadow-lg hover:scale-105 transform transition"
+ >
+
+
+ )
+}
diff --git a/components/ui/calendar.tsx b/components/ui/calendar.tsx
index 61d2b45..0655517 100644
--- a/components/ui/calendar.tsx
+++ b/components/ui/calendar.tsx
@@ -1,7 +1,7 @@
"use client"
import * as React from "react"
-import { ChevronLeft, ChevronRight } from "lucide-react"
+// Navigation icons removed due to updated react-day-picker component typings.
import { DayPicker } from "react-day-picker"
import { cn } from "@/lib/utils"
@@ -53,10 +53,9 @@ function Calendar({
day_hidden: "invisible",
...classNames,
}}
- components={{
- IconLeft: ({ ...props }) =>
,
- IconRight: ({ ...props }) =>
,
- }}
+ // Use DayPicker's default navigation icons to avoid strict component typing
+ // differences between versions. Custom icons can be re-added with proper
+ // typings if needed.
{...props}
/>
)
diff --git a/components/ui/use-toast.ts b/components/ui/use-toast.ts
index 02e111d..c7ca8c3 100644
--- a/components/ui/use-toast.ts
+++ b/components/ui/use-toast.ts
@@ -18,7 +18,10 @@ type ToasterToast = ToastProps & {
action?: ToastActionElement
}
-const actionTypes = {
+// The following constant is used for type inference only. Disable the unused-var
+// lint check because the runtime value is intentionally unused.
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+const _actionTypes = {
ADD_TOAST: "ADD_TOAST",
UPDATE_TOAST: "UPDATE_TOAST",
DISMISS_TOAST: "DISMISS_TOAST",
@@ -32,7 +35,7 @@ function genId() {
return count.toString()
}
-type ActionType = typeof actionTypes
+type ActionType = typeof _actionTypes
type Action =
| {
diff --git a/eslint.config.cjs b/eslint.config.cjs
new file mode 100644
index 0000000..a7cc3f9
--- /dev/null
+++ b/eslint.config.cjs
@@ -0,0 +1,35 @@
+// Minimal flat ESLint config to ensure `npx eslint` runs non-interactively in this environment.
+// This avoids shareable "extends" usage which can trigger interactive installs.
+// Minimal flat ESLint config to ensure `npx eslint` runs non-interactively in this environment.
+// This avoids shareable "extends" usage which can trigger interactive installs.
+module.exports = [
+ {
+ ignores: ["node_modules/**", ".next/**"],
+ },
+ {
+ files: ["**/*.{js,jsx,ts,tsx}"],
+ languageOptions: {
+ parser: require("@typescript-eslint/parser"),
+ parserOptions: {
+ ecmaVersion: 2024,
+ sourceType: "module",
+ ecmaFeatures: { jsx: true },
+ // Keep `project: false` to avoid expensive type-aware parsing by default.
+ // If you want stronger type-aware rules later, change to ['./tsconfig.json'].
+ project: false,
+ },
+ },
+ plugins: {
+ "@typescript-eslint": require("@typescript-eslint/eslint-plugin"),
+ },
+ rules: {
+ // Keep this minimal; we will run `--fix` for simple stylistic issues.
+ // Enable a TypeScript-aware unused-vars rule and ignore args starting with _.
+ "no-unused-vars": "off",
+ "no-undef": "off",
+ "no-console": "off",
+ "@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }],
+ },
+ },
+];
+
diff --git a/hooks/use-toast.ts b/hooks/use-toast.ts
index 02e111d..0020771 100644
--- a/hooks/use-toast.ts
+++ b/hooks/use-toast.ts
@@ -18,6 +18,9 @@ type ToasterToast = ToastProps & {
action?: ToastActionElement
}
+// The following constant is used for type inference only. Disable the unused-var
+// lint check because the runtime value is intentionally unused.
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
const actionTypes = {
ADD_TOAST: "ADD_TOAST",
UPDATE_TOAST: "UPDATE_TOAST",
diff --git a/next-build-debug.log b/next-build-debug.log
new file mode 100644
index 0000000..785b076
--- /dev/null
+++ b/next-build-debug.log
@@ -0,0 +1,229 @@
+ Γû▓ Next.js 15.2.4
+
+ Creating an optimized production build ...
+2025-10-26T23:58:03.856Z next:build:webpack-build using separate compiler workers
+2025-10-26T23:58:06.329Z next:jsconfig-paths-plugin tsconfig.json or jsconfig.json paths: { '@/*': [ './*' ] }
+2025-10-26T23:58:06.332Z next:jsconfig-paths-plugin resolved baseUrl: { baseUrl: 'D:\\frontend', isImplicit: true }
+2025-10-26T23:58:06.357Z next:jsconfig-paths-plugin tsconfig.json or jsconfig.json paths: { '@/*': [ './*' ] }
+2025-10-26T23:58:06.357Z next:jsconfig-paths-plugin resolved baseUrl: { baseUrl: 'D:\\frontend', isImplicit: true }
+2025-10-26T23:58:06.419Z next:jsconfig-paths-plugin tsconfig.json or jsconfig.json paths: { '@/*': [ './*' ] }
+2025-10-26T23:58:06.419Z next:jsconfig-paths-plugin resolved baseUrl: { baseUrl: 'D:\\frontend', isImplicit: true }
+2025-10-26T23:58:06.592Z next:build:webpack-build starting compiler server
+2025-10-26T23:58:06.593Z next:build:webpack-build starting server compiler
+2025-10-26T23:58:07.159Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-route-loader
+2025-10-26T23:58:07.163Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-app-loader
+2025-10-26T23:58:07.163Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-app-loader
+2025-10-26T23:58:07.226Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-route-loader
+2025-10-26T23:58:07.231Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-route-loader
+2025-10-26T23:58:07.234Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-route-loader
+2025-10-26T23:58:07.237Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-app-loader
+2025-10-26T23:58:07.238Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-app-loader
+2025-10-26T23:58:07.240Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-app-loader
+2025-10-26T23:58:07.241Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-app-loader
+2025-10-26T23:58:07.242Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-app-loader
+2025-10-26T23:58:07.243Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-app-loader
+2025-10-26T23:58:07.283Z next:jsconfig-paths-plugin moduleName did not match any paths pattern @opentelemetry/api
+2025-10-26T23:58:07.322Z next:jsconfig-paths-plugin moduleName did not match any paths pattern @opentelemetry/api
+2025-10-26T23:58:07.394Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.395Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/static.edge
+2025-10-26T23:58:07.400Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.400Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/static.edge
+2025-10-26T23:58:07.448Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/static.edge
+2025-10-26T23:58:07.449Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.449Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/client.edge
+2025-10-26T23:58:07.450Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/static.edge
+2025-10-26T23:58:07.450Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.451Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/client.edge
+2025-10-26T23:58:07.478Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.479Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.481Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.481Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.490Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\theme-provider
+2025-10-26T23:58:07.490Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ScrollToTop
+2025-10-26T23:58:07.490Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\toaster
+2025-10-26T23:58:07.491Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.536Z next:jsconfig-paths-plugin moduleName did not match any paths pattern @opentelemetry/api
+2025-10-26T23:58:07.537Z next:jsconfig-paths-plugin moduleName did not match any paths pattern @opentelemetry/api
+2025-10-26T23:58:07.544Z next:jsconfig-paths-plugin moduleName did not match any paths pattern server-only
+2025-10-26T23:58:07.547Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\theme-provider
+2025-10-26T23:58:07.547Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ScrollToTop
+2025-10-26T23:58:07.547Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\toaster
+2025-10-26T23:58:07.549Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.551Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\theme-provider
+2025-10-26T23:58:07.553Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\theme-provider
+2025-10-26T23:58:07.554Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ScrollToTop
+2025-10-26T23:58:07.555Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ScrollToTop
+2025-10-26T23:58:07.556Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\toaster
+2025-10-26T23:58:07.557Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\toaster
+2025-10-26T23:58:07.558Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.559Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.588Z next:jsconfig-paths-plugin moduleName did not match any paths pattern server-only
+2025-10-26T23:58:07.597Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.598Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.598Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.598Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.600Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.600Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.600Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.600Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.603Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.603Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.604Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.604Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:07.687Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.688Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.688Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.688Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.688Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.688Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.688Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.689Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.689Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.689Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.689Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.689Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.689Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.690Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.690Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.690Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.690Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.690Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.690Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.691Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.697Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.697Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.697Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.697Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.698Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.698Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.698Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.698Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.698Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.698Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.698Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.698Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.698Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.699Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.699Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.699Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.699Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.699Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.699Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.699Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.707Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.707Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.708Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.708Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.708Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.708Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.708Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.708Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.708Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.709Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.709Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.709Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.709Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.709Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.709Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.710Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.710Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.710Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.710Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.710Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.718Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.718Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.718Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.718Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.718Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.719Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.719Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.719Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.719Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.719Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.719Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.720Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.720Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.720Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.720Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.720Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.720Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.721Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.721Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.721Z next:jsconfig-paths-plugin moduleName did not match any paths pattern next-flight-client-entry-loader
+2025-10-26T23:58:07.785Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\card
+2025-10-26T23:58:07.787Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\card
+2025-10-26T23:58:07.789Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\badge
+2025-10-26T23:58:07.790Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\badge
+2025-10-26T23:58:07.791Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\button
+2025-10-26T23:58:07.791Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\button
+2025-10-26T23:58:07.792Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\Header
+2025-10-26T23:58:07.793Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\Header
+2025-10-26T23:58:07.794Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\DownloadCards
+2025-10-26T23:58:07.795Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\DownloadCards
+2025-10-26T23:58:07.796Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\hooks\use-toast
+2025-10-26T23:58:07.796Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\toast
+2025-10-26T23:58:07.797Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\toast
+2025-10-26T23:58:07.799Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\badge
+2025-10-26T23:58:07.801Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\badge
+2025-10-26T23:58:07.803Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\card
+2025-10-26T23:58:07.803Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\card
+2025-10-26T23:58:07.804Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\button
+2025-10-26T23:58:07.805Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\button
+2025-10-26T23:58:07.806Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\Header
+2025-10-26T23:58:07.807Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\Header
+2025-10-26T23:58:07.808Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\DownloadCards
+2025-10-26T23:58:07.809Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\DownloadCards
+2025-10-26T23:58:07.840Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/client.edge
+2025-10-26T23:58:07.841Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/client.edge
+2025-10-26T23:58:07.843Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\toast
+2025-10-26T23:58:07.844Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\toast
+2025-10-26T23:58:07.846Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\hooks\use-toast
+2025-10-26T23:58:07.856Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\hooks\use-toast
+2025-10-26T23:58:07.857Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\hooks\use-toast
+2025-10-26T23:58:07.901Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\button
+2025-10-26T23:58:07.902Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.902Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.902Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.903Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\button
+2025-10-26T23:58:07.904Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.904Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.904Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.907Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\button
+2025-10-26T23:58:07.907Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.907Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.907Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.909Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\button
+2025-10-26T23:58:07.910Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.910Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.911Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.922Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\button
+2025-10-26T23:58:07.922Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\button
+2025-10-26T23:58:07.926Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\button
+2025-10-26T23:58:07.927Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\button
+2025-10-26T23:58:07.928Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\card
+2025-10-26T23:58:07.929Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\card
+2025-10-26T23:58:07.930Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\card
+2025-10-26T23:58:07.931Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\components\ui\card
+2025-10-26T23:58:07.934Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.934Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.938Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.939Z next:jsconfig-paths-plugin skipping request as it is an absolute path D:\frontend\lib\utils
+2025-10-26T23:58:07.967Z next:jsconfig-paths-plugin skipping request as it is inside node_modules ../shared/lib/image-external
+2025-10-26T23:58:08.000Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/client.edge
+2025-10-26T23:58:08.000Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/client.edge
+2025-10-26T23:58:08.009Z next:jsconfig-paths-plugin skipping request as it is inside node_modules ../shared/lib/image-external
+2025-10-26T23:58:08.157Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:08.158Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:08.159Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:08.160Z next:jsconfig-paths-plugin moduleName did not match any paths pattern react-server-dom-webpack/server.edge
+2025-10-26T23:58:08.779Z next:build:webpack-build server compiler finished 2186ms
+Failed to compile.
+
+./app/page.tsx + 18 modules
+Unexpected end of JSON input
+
+./app/layout.tsx + 1 modules
+Unexpected end of JSON input
+
+
+> Build failed because of webpack errors
diff --git a/package-lock.json b/package-lock.json
index 695b3fd..c68c9ec 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -40,28 +40,28 @@
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "1.0.4",
- "date-fns": "4.1.0",
+ "date-fns": "^3.6.0",
"embla-carousel-react": "8.5.1",
"input-otp": "1.4.1",
"lucide-react": "^0.454.0",
"next": "15.2.4",
"next-themes": "latest",
- "react": "^19",
- "react-day-picker": "8.10.1",
- "react-dom": "^19",
+ "react": "^19.2.0",
+ "react-day-picker": "^9.11.1",
+ "react-dom": "^19.2.0",
"react-hook-form": "^7.54.1",
"react-resizable-panels": "^2.1.7",
"recharts": "2.15.0",
"sonner": "^1.7.1",
"tailwind-merge": "^2.5.5",
"tailwindcss-animate": "^1.0.7",
- "vaul": "^0.9.6",
+ "vaul": "^1.1.2",
"zod": "^3.24.1"
},
"devDependencies": {
"@types/node": "^22",
- "@types/react": "^19",
- "@types/react-dom": "^19",
+ "@types/react": "^19.2.2",
+ "@types/react-dom": "^19.2.2",
"postcss": "^8.5",
"tailwindcss": "^3.4.17",
"typescript": "^5"
@@ -89,6 +89,12 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@date-fns/tz": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@date-fns/tz/-/tz-1.4.1.tgz",
+ "integrity": "sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==",
+ "license": "MIT"
+ },
"node_modules/@emnapi/runtime": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.4.tgz",
@@ -2152,9 +2158,9 @@
}
},
"node_modules/@types/react": {
- "version": "19.1.8",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz",
- "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==",
+ "version": "19.2.2",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz",
+ "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2162,13 +2168,13 @@
}
},
"node_modules/@types/react-dom": {
- "version": "19.1.6",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz",
- "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==",
+ "version": "19.2.2",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.2.tgz",
+ "integrity": "sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==",
"dev": true,
"license": "MIT",
"peerDependencies": {
- "@types/react": "^19.0.0"
+ "@types/react": "^19.2.0"
}
},
"node_modules/ansi-regex": {
@@ -2682,15 +2688,21 @@
}
},
"node_modules/date-fns": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz",
- "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==",
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz",
+ "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/kossnocorp"
}
},
+ "node_modules/date-fns-jalali": {
+ "version": "4.1.0-0",
+ "resolved": "https://registry.npmjs.org/date-fns-jalali/-/date-fns-jalali-4.1.0-0.tgz",
+ "integrity": "sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==",
+ "license": "MIT"
+ },
"node_modules/decimal.js-light": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz",
@@ -3648,38 +3660,55 @@
"license": "MIT"
},
"node_modules/react": {
- "version": "19.1.0",
- "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
- "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
+ "version": "19.2.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz",
+ "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-day-picker": {
- "version": "8.10.1",
- "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-8.10.1.tgz",
- "integrity": "sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA==",
+ "version": "9.11.1",
+ "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-9.11.1.tgz",
+ "integrity": "sha512-l3ub6o8NlchqIjPKrRFUCkTUEq6KwemQlfv3XZzzwpUeGwmDJ+0u0Upmt38hJyd7D/vn2dQoOoLV/qAp0o3uUw==",
"license": "MIT",
+ "dependencies": {
+ "@date-fns/tz": "^1.4.1",
+ "date-fns": "^4.1.0",
+ "date-fns-jalali": "^4.1.0-0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
"funding": {
"type": "individual",
"url": "https://github.com/sponsors/gpbl"
},
"peerDependencies": {
- "date-fns": "^2.28.0 || ^3.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/react-day-picker/node_modules/date-fns": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz",
+ "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/kossnocorp"
}
},
"node_modules/react-dom": {
- "version": "19.1.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
- "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
+ "version": "19.2.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz",
+ "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==",
"license": "MIT",
"dependencies": {
- "scheduler": "^0.26.0"
+ "scheduler": "^0.27.0"
},
"peerDependencies": {
- "react": "^19.1.0"
+ "react": "^19.2.0"
}
},
"node_modules/react-hook-form": {
@@ -3926,9 +3955,9 @@
}
},
"node_modules/scheduler": {
- "version": "0.26.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
- "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
+ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
"license": "MIT"
},
"node_modules/semver": {
@@ -4443,16 +4472,16 @@
"license": "MIT"
},
"node_modules/vaul": {
- "version": "0.9.9",
- "resolved": "https://registry.npmjs.org/vaul/-/vaul-0.9.9.tgz",
- "integrity": "sha512-7afKg48srluhZwIkaU+lgGtFCUsYBSGOl8vcc8N/M3YQlZFlynHD15AE+pwrYdc826o7nrIND4lL9Y6b9WWZZQ==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz",
+ "integrity": "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==",
"license": "MIT",
"dependencies": {
"@radix-ui/react-dialog": "^1.1.1"
},
"peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc"
}
},
"node_modules/victory-vendor": {
diff --git a/package.json b/package.json
index 8773dfe..4401530 100644
--- a/package.json
+++ b/package.json
@@ -41,28 +41,28 @@
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "1.0.4",
- "date-fns": "4.1.0",
+ "date-fns": "^3.6.0",
"embla-carousel-react": "8.5.1",
"input-otp": "1.4.1",
"lucide-react": "^0.454.0",
"next": "15.2.4",
"next-themes": "latest",
- "react": "^19",
- "react-day-picker": "8.10.1",
- "react-dom": "^19",
+ "react": "^19.2.0",
+ "react-day-picker": "^9.11.1",
+ "react-dom": "^19.2.0",
"react-hook-form": "^7.54.1",
"react-resizable-panels": "^2.1.7",
"recharts": "2.15.0",
"sonner": "^1.7.1",
"tailwind-merge": "^2.5.5",
"tailwindcss-animate": "^1.0.7",
- "vaul": "^0.9.6",
+ "vaul": "^1.1.2",
"zod": "^3.24.1"
},
"devDependencies": {
"@types/node": "^22",
- "@types/react": "^19",
- "@types/react-dom": "^19",
+ "@types/react": "^19.2.2",
+ "@types/react-dom": "^19.2.2",
"postcss": "^8.5",
"tailwindcss": "^3.4.17",
"typescript": "^5"
diff --git a/public/hero-illustration.svg b/public/hero-illustration.svg
new file mode 100644
index 0000000..6573c71
--- /dev/null
+++ b/public/hero-illustration.svg
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+