diff --git a/package-lock.json b/package-lock.json
index a43cf46..4bf7a47 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2912,6 +2912,7 @@
"version": "20.14.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.1.tgz",
"integrity": "sha512-T2MzSGEu+ysB/FkWfqmhV3PLyQlowdptmmgD20C6QxsS8Fmv5SjpZ1ayXaEC0S21/h5UJ9iA6W/5vSNU5l00OA==",
+ "dev": true,
"dependencies": {
"undici-types": "~5.26.4"
}
@@ -2920,13 +2921,13 @@
"version": "15.7.12",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz",
"integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==",
- "devOptional": true
+ "dev": true
},
"node_modules/@types/react": {
"version": "18.3.3",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz",
"integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"@types/prop-types": "*",
"csstype": "^3.0.2"
@@ -8646,6 +8647,7 @@
"version": "5.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
"integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
+ "dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -8672,7 +8674,8 @@
"node_modules/undici-types": {
"version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
},
"node_modules/unicode-canonical-property-names-ecmascript": {
"version": "2.0.0",
diff --git a/public/svgs/cast.svg b/public/svgs/cast.svg
new file mode 100644
index 0000000..627b637
--- /dev/null
+++ b/public/svgs/cast.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/svgs/chat.svg b/public/svgs/chat.svg
new file mode 100644
index 0000000..b1b3232
--- /dev/null
+++ b/public/svgs/chat.svg
@@ -0,0 +1,3 @@
+
diff --git a/public/svgs/currency.svg b/public/svgs/currency.svg
new file mode 100644
index 0000000..7739135
--- /dev/null
+++ b/public/svgs/currency.svg
@@ -0,0 +1,3 @@
+
diff --git a/public/svgs/eth.svg b/public/svgs/eth.svg
new file mode 100644
index 0000000..03f6f11
--- /dev/null
+++ b/public/svgs/eth.svg
@@ -0,0 +1,9 @@
+
diff --git a/public/svgs/history.svg b/public/svgs/history.svg
new file mode 100644
index 0000000..5d26595
--- /dev/null
+++ b/public/svgs/history.svg
@@ -0,0 +1,3 @@
+
diff --git a/public/svgs/index.ts b/public/svgs/index.ts
index 430202e..0ad5850 100644
--- a/public/svgs/index.ts
+++ b/public/svgs/index.ts
@@ -1,5 +1,14 @@
// basic util svg
-export { default as copy } from "./copy.svg";
-export { default as control } from "./control.svg";
export { default as arrowLeft } from "./arrowLeft.svg";
+export { default as cast } from "./cast.svg";
+export { default as chat } from "./chat.svg";
+export { default as control } from "./control.svg";
+export { default as copy } from "./copy.svg";
+export { default as currency } from "./currency.svg";
+export { default as eth } from "./eth.svg";
+export { default as history } from "./history.svg";
+export { default as loader } from "./loader.svg";
+export { default as nvir } from "./nvir.svg";
export { default as outLink } from "./outLink.svg";
+export { default as star } from "./star.svg";
+export { default as wallet } from "./wallet.svg";
diff --git a/public/svgs/loader.svg b/public/svgs/loader.svg
new file mode 100644
index 0000000..a34cbfc
--- /dev/null
+++ b/public/svgs/loader.svg
@@ -0,0 +1,19 @@
+
diff --git a/public/svgs/nvir.svg b/public/svgs/nvir.svg
new file mode 100644
index 0000000..cbdc395
--- /dev/null
+++ b/public/svgs/nvir.svg
@@ -0,0 +1,20 @@
+
diff --git a/public/svgs/star.svg b/public/svgs/star.svg
new file mode 100644
index 0000000..38aab5f
--- /dev/null
+++ b/public/svgs/star.svg
@@ -0,0 +1,11 @@
+
diff --git a/public/svgs/wallet.svg b/public/svgs/wallet.svg
new file mode 100644
index 0000000..77d8bbb
--- /dev/null
+++ b/public/svgs/wallet.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/app/daniel/testPage1/container/HomeContainer.tsx b/src/app/daniel/testPage1/container/HomeContainer.tsx
new file mode 100644
index 0000000..f176492
--- /dev/null
+++ b/src/app/daniel/testPage1/container/HomeContainer.tsx
@@ -0,0 +1,45 @@
+"use client";
+import { Layout } from "antd";
+import { Content, Footer, Header } from "antd/es/layout/layout";
+import { DanielEmptyContentAtom } from "~/components/Atoms/EmptyContentAtom/DanielEmptyContentAtom";
+import DanielPreviewDisplayAtom from "~/components/Atoms/EmptyContentAtom/DanielPreviewDisplayAtom";
+import { DanielFooterAtom } from "~/components/Atoms/FooterAtom/DanielFooterAtom";
+import { DanielHeaderAtom } from "~/components/Atoms/HeaderAtom/DanielHeaderAtom";
+
+const HomeContainer = () => {
+ return (
+
+
+ alert("You just clicked the cast icon")}
+ onClickRightIcon={() => alert("You just clicked the settings icon")}
+ title='Proxima OS'
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default HomeContainer;
diff --git a/src/app/daniel/testPage1/page.tsx b/src/app/daniel/testPage1/page.tsx
new file mode 100644
index 0000000..5fdec28
--- /dev/null
+++ b/src/app/daniel/testPage1/page.tsx
@@ -0,0 +1,5 @@
+import HomeContainer from "./container/HomeContainer";
+
+export default function TestPageOne() {
+ return ;
+}
diff --git a/src/components/Atoms/EmptyContentAtom/DanielEmptyContentAtom.tsx b/src/components/Atoms/EmptyContentAtom/DanielEmptyContentAtom.tsx
new file mode 100644
index 0000000..a4a0a73
--- /dev/null
+++ b/src/components/Atoms/EmptyContentAtom/DanielEmptyContentAtom.tsx
@@ -0,0 +1,14 @@
+import { DanielStarredAtom } from "./DanielStarredAtom";
+
+export const DanielEmptyContentAtom = () => {
+ return (
+
+ );
+};
diff --git a/src/components/Atoms/EmptyContentAtom/DanielPreviewContentAtom.tsx b/src/components/Atoms/EmptyContentAtom/DanielPreviewContentAtom.tsx
new file mode 100644
index 0000000..e8c5964
--- /dev/null
+++ b/src/components/Atoms/EmptyContentAtom/DanielPreviewContentAtom.tsx
@@ -0,0 +1,100 @@
+import Image from "next/image";
+import { useCallback } from "react";
+import { ModalContainer } from "../ModalContainer/ModalContainer";
+
+interface PreviewProps {
+ avatar: string;
+ name: string;
+ userDetails: string;
+ time: string;
+ userAvatar?: string;
+ onclick?: () => void;
+ modalOpen?: boolean;
+ setModalOpen?: React.Dispatch>;
+ children?: React.ReactNode;
+ className?: string;
+}
+
+const DanielPreviewContentAtom = ({
+ avatar,
+ name,
+ userDetails,
+ time,
+ userAvatar,
+ onclick,
+ modalOpen,
+ setModalOpen,
+ children,
+ className,
+}: PreviewProps) => {
+ const onClose = useCallback(() => {
+ modalOpen && setModalOpen?.(false);
+ // Checks modal state and close it if open, using optional chaining to check if the callback exists
+ }, [modalOpen, setModalOpen]);
+
+ return (
+ <>
+
+
+ {modalOpen && (
+
+ )}
+ >
+ );
+};
+
+export default DanielPreviewContentAtom;
diff --git a/src/components/Atoms/EmptyContentAtom/DanielPreviewDisplayAtom.tsx b/src/components/Atoms/EmptyContentAtom/DanielPreviewDisplayAtom.tsx
new file mode 100644
index 0000000..b0e486d
--- /dev/null
+++ b/src/components/Atoms/EmptyContentAtom/DanielPreviewDisplayAtom.tsx
@@ -0,0 +1,106 @@
+"use client";
+import Image from "next/image";
+import { useState } from "react";
+import DanielPreviewContentAtom from "./DanielPreviewContentAtom";
+
+const DanielPreviewDisplayAtom = () => {
+ // Track which modal is open; null means no open modal
+ const [isOpen, setIsOpen] = useState(null);
+
+ // Function to toggle modals by name
+ const toggleModal = (name: string) => {
+ setIsOpen(isOpen === name ? null : name); // Toggle modal based on the current state
+ };
+
+ // Data array for preview content; simplifies adding/removing items
+ const previewData = [
+ {
+ avatar: "/svgs/eth.svg",
+ name: "ETH",
+ time: "08:43 PM",
+ userDetails: "User: namulabs is a fantastic company...",
+ userAvatar: "N",
+ className:
+ "flex w-[300px] flex-col items-center justify-center space-y-3 bg-[#2C2D30] p-5 text-white",
+ content: (
+ <>
+
+ Transaction
processing
+
+
+
+
+
+
+
+ Uploading your transaction to the node. please wait for a moment...{" "}
+
This may take up to 2 minutes.
+
+ >
+ ),
+ },
+ {
+ avatar: "/svgs/nvir.svg",
+ name: "Nvir",
+ time: "08:42 AM",
+ userDetails: "User: namulabs is a fantastic company...",
+ content: (
+ <>
+
+ Transaction
processing
+
+
+
+
+
+
+
+ Uploading your transaction to the node. please wait for a moment...{" "}
+
This may take up to 2 minutes.
+
+ >
+ ),
+ },
+ ];
+
+ return (
+ <>
+
+
+ {previewData.map((data, index) => (
+ toggleModal(data.name)}
+ modalOpen={isOpen === data.name} // Conditional modal display
+ setModalOpen={() => setIsOpen(null)} // Close modal on demand
+ className='flex w-[300px] flex-col items-center justify-center space-y-3 bg-[#2C2D30] p-5 text-white'
+ >
+ {data.content}
+
+ ))}
+
+
+ >
+ );
+};
+
+export default DanielPreviewDisplayAtom;
diff --git a/src/components/Atoms/EmptyContentAtom/DanielStarredAtom.tsx b/src/components/Atoms/EmptyContentAtom/DanielStarredAtom.tsx
new file mode 100644
index 0000000..e972681
--- /dev/null
+++ b/src/components/Atoms/EmptyContentAtom/DanielStarredAtom.tsx
@@ -0,0 +1,22 @@
+import Image from "next/image";
+
+export const DanielStarredAtom = ({ name }: { name: string }) => {
+ return (
+ <>
+
+
+
+
+
+
+ {name ? name : "Proxima"}
+
+
+ >
+ );
+};
diff --git a/src/components/Atoms/FooterAtom/DanielFooterAtom.tsx b/src/components/Atoms/FooterAtom/DanielFooterAtom.tsx
new file mode 100644
index 0000000..88bdc57
--- /dev/null
+++ b/src/components/Atoms/FooterAtom/DanielFooterAtom.tsx
@@ -0,0 +1,53 @@
+import Link from "next/link";
+import { usePathname } from "next/navigation";
+import SVGAtom from "../SVGAtom/SVGAtom";
+
+interface FooterNavComponentProps {
+ icon: "currency" | "chat" | "wallet" | "history";
+ path: string;
+}
+
+const footerNavData: FooterNavComponentProps[] = [
+ {
+ icon: "currency",
+ path: "/",
+ },
+ {
+ icon: "chat",
+ path: "/",
+ },
+ {
+ icon: "wallet",
+ path: "/daniel/testPage1",
+ },
+ {
+ icon: "history",
+ path: "/",
+ },
+];
+
+export const DanielFooterAtom = () => {
+ const pathname = usePathname();
+
+ return (
+ <>
+
+
+ {footerNavData.map((data, i) => {
+ const { icon, path } = data;
+
+ return (
+
+
+
+
+
+ );
+ })}
+
+
+ >
+ );
+};
diff --git a/src/components/Atoms/HeaderAtom/DanielHeaderAtom.tsx b/src/components/Atoms/HeaderAtom/DanielHeaderAtom.tsx
new file mode 100644
index 0000000..ac2d4d5
--- /dev/null
+++ b/src/components/Atoms/HeaderAtom/DanielHeaderAtom.tsx
@@ -0,0 +1,36 @@
+import { SettingOutlined } from "@ant-design/icons";
+import SVGAtom from "../SVGAtom/SVGAtom";
+
+type Props = {
+ title: string;
+ onClickLeftIcon?: () => void;
+ onClickRightIcon?: () => void;
+};
+
+export const DanielHeaderAtom = (props: Props) => {
+ return (
+
+ {/* Sample using custom svg */}
+ {props.onClickLeftIcon && (
+
+
+
+ )}
+
+
{props.title}
+
+ {/* Sample using Antd icon */}
+ {props.onClickRightIcon && (
+
console.log("Antd icon clicked")}
+ >
+
+
+ )}
+
+ );
+};