diff --git a/components/full-page-loader.tsx b/components/full-page-loader.tsx
new file mode 100644
index 0000000..1ebfff0
--- /dev/null
+++ b/components/full-page-loader.tsx
@@ -0,0 +1,9 @@
+import React from 'react'
+import { Loader2 } from 'lucide-react'
+export default function FullPageLoader() {
+ return (
+
+
+
+ )
+}
diff --git a/components/user/add-device-dialog.tsx b/components/user/add-device-dialog.tsx
index fbe6d85..61bb54b 100644
--- a/components/user/add-device-dialog.tsx
+++ b/components/user/add-device-dialog.tsx
@@ -101,7 +101,7 @@ export default function AddDeviceDialogForm({ user_id }: { user_id?: string }) {
Device Name
{
+ const timer = setTimeout(() => {
+ setIsVisible(false);
+ }, 3000);
+
+ return () => clearTimeout(timer);
+ }, []);
+
+ if (!isVisible) {
+ return null;
+ }
+
+ return (
+
+ Welcome,{" "}
+
+ {firstName} {lastName}
+
+
+ );
+}
\ No newline at end of file
diff --git a/lib/atoms.ts b/lib/atoms.ts
index 3908ca7..07d1c82 100644
--- a/lib/atoms.ts
+++ b/lib/atoms.ts
@@ -15,6 +15,7 @@ export const formulaResultAtom = atom("");
export const deviceCartAtom = atom
([]);
export const cartDrawerOpenAtom = atom(false);
export const WalletDrawerOpenAtom = atom(false);
+export const loadingDevicesToPayAtom = atom(false);
// Export the atoms with their store
export const atoms = {
@@ -27,4 +28,5 @@ export const atoms = {
deviceCartAtom,
cartDrawerOpenAtom,
walletTopUpValue,
+ loadingDevicesToPayAtom,
};
diff --git a/package-lock.json b/package-lock.json
index 60e5d22..1150690 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -58,6 +58,7 @@
"eslint-config-next": "15.1.2",
"postcss": "^8.4.49",
"tailwindcss": "^3.4.17",
+ "tailwindcss-motion": "^1.1.0",
"ts-node": "^10.9.2",
"typescript": "^5.8.3"
}
@@ -7975,6 +7976,15 @@
"tailwindcss": ">=3.0.0 || insiders"
}
},
+ "node_modules/tailwindcss-motion": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/tailwindcss-motion/-/tailwindcss-motion-1.1.0.tgz",
+ "integrity": "sha512-0lK6rA4+367ffJdi1TtB72GlMCxJi2TP/xRiHc6An5pZSlU6WfIHhSvLxpcGilGZfBrOqc2q4woH1DEP/lCNbQ==",
+ "dev": true,
+ "peerDependencies": {
+ "tailwindcss": ">=3.0.0 || insiders"
+ }
+ },
"node_modules/tapable": {
"version": "2.2.1",
"dev": true,
diff --git a/package.json b/package.json
index 3a64078..a39467f 100644
--- a/package.json
+++ b/package.json
@@ -59,6 +59,7 @@
"eslint-config-next": "15.1.2",
"postcss": "^8.4.49",
"tailwindcss": "^3.4.17",
+ "tailwindcss-motion": "^1.1.0",
"ts-node": "^10.9.2",
"typescript": "^5.8.3"
},
diff --git a/tailwind.config.ts b/tailwind.config.ts
index fb3af2a..5fe840c 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -1,6 +1,6 @@
import type { Config } from "tailwindcss";
import tailwindcssAnimate from "tailwindcss-animate";
-
+import tailwindcssMotion from "tailwindcss-motion";
export default {
darkMode: ["class"],
content: [
@@ -100,5 +100,5 @@ export default {
}
}
},
- plugins: [tailwindcssAnimate],
+ plugins: [tailwindcssAnimate, tailwindcssMotion],
} satisfies Config;