+
{/* Bottom area */}
{/* Copyrights note */}
- © 2024 Sign365.
+ © 2024 Bethel Farms
diff --git a/Frontend/components/GetStartedSectionButton.tsx b/Frontend/components/GetStartedSectionButton.tsx
index e7d8b31..47a71fb 100644
--- a/Frontend/components/GetStartedSectionButton.tsx
+++ b/Frontend/components/GetStartedSectionButton.tsx
@@ -36,7 +36,7 @@ export const GetStartedSectionButton = ({
) : (
router.push("/pricing")}
- className="px-10 py-2 text-base capitalize !rounded-3xl text-white bg-gradient-to-r from-pink-default to-purple-default hover:bg-gray-900 w-full sm:w-auto"
+ className="px-10 py-2 text-base capitalize !rounded-3xl text-white bg-gradient-to-r from-primary to-secondary hover:bg-gray-900 w-full sm:w-auto"
>
Upgrade
diff --git a/Frontend/components/Logo.tsx b/Frontend/components/Logo.tsx
index ec54832..e863152 100644
--- a/Frontend/components/Logo.tsx
+++ b/Frontend/components/Logo.tsx
@@ -1,6 +1,7 @@
import React from "react";
import logo from "@/images/icon.svg";
import Image from "next/image";
+import Icon from "./icon";
interface LogoProps {
label?: string;
@@ -19,7 +20,7 @@ function Logo({ label, className }: LogoProps) {
target={label !== undefined ? "_blank" : ""}
>
{/*
*/}
-
+
{label !== undefined ? (
{label}
diff --git a/Frontend/components/Modal.tsx b/Frontend/components/Modal.tsx
new file mode 100644
index 0000000..c8bffc1
--- /dev/null
+++ b/Frontend/components/Modal.tsx
@@ -0,0 +1,29 @@
+import React from "react";
+
+const Modal = () => {
+ return (
+ <>
+ {/* You can open the modal using document.getElementById('ID').showModal() method */}
+ document.getElementById("my_modal_4").showModal()}
+ >
+ open modal
+
+
+
+
Hello!
+
Click the button below to close
+
+
+
+
+
+ >
+ );
+};
+
+export default Modal;
diff --git a/Frontend/components/Navigation.tsx b/Frontend/components/Navigation.tsx
index 6b084a5..d57ad9b 100644
--- a/Frontend/components/Navigation.tsx
+++ b/Frontend/components/Navigation.tsx
@@ -49,7 +49,9 @@ function Navigation({ isUserLoggedIn }: { isUserLoggedIn: boolean }) {
- Climate
+
+ Contact
+
{isUserLoggedIn ? (
@@ -81,7 +83,7 @@ function Navigation({ isUserLoggedIn }: { isUserLoggedIn: boolean }) {
Blogs
- Climate
+ Contact
{isUserLoggedIn ? (
diff --git a/Frontend/components/Utilities/PageWrapper.tsx b/Frontend/components/Utilities/PageWrapper.tsx
index 38469a7..168216b 100644
--- a/Frontend/components/Utilities/PageWrapper.tsx
+++ b/Frontend/components/Utilities/PageWrapper.tsx
@@ -1,4 +1,4 @@
-import { WaitingListWithImageHero } from "@/sections/HeroSections";
+import { WaitingListWithImageHero } from "@/sections/Hero";
import React from "react";
function PageWrapper({ children }: { children: React.ReactNode }) {
diff --git a/Frontend/components/icon/Icon.tsx b/Frontend/components/icon/Icon.tsx
new file mode 100644
index 0000000..19d34e7
--- /dev/null
+++ b/Frontend/components/icon/Icon.tsx
@@ -0,0 +1,43 @@
+import React from "react";
+import * as FluentIcons from "@fluentui/react-icons";
+import { IconProps, iconSize } from "./types";
+import IconContainer from "./IconContainer";
+
+function Icon({
+ color,
+ size = "small",
+ isActive = true,
+ name,
+ nestedComponent,
+ style,
+}: IconProps) {
+ const fluentIcons = Object.assign(
+ {},
+ ...Object.keys(FluentIcons).map((name) => {
+ return {
+ [name]: (
+
+ {React.createElement(FluentIcons[name], {
+ color: isActive ? color ?? undefined : undefined,
+ style: { width: iconSize[size], height: iconSize[size] },
+ })}
+
+ ),
+ };
+ })
+ );
+
+ const icon = {
+ ...fluentIcons,
+ };
+
+ return icon[name];
+}
+
+export default Icon;
diff --git a/Frontend/components/icon/IconContainer.tsx b/Frontend/components/icon/IconContainer.tsx
new file mode 100644
index 0000000..ca9e817
--- /dev/null
+++ b/Frontend/components/icon/IconContainer.tsx
@@ -0,0 +1,61 @@
+import { IconContainerProps, Orientation, iconSize } from "./types";
+
+function IconContainer({
+ children,
+ color,
+ size = "small",
+ isActive,
+ nestedComponent,
+ style,
+}: IconContainerProps) {
+ const orientationStyle = {
+ [Orientation.BottomLeft]: {
+ bottom: `calc(-${iconSize[size]}/9)`,
+ left: `calc(-${iconSize[size]}/9)`,
+ },
+ [Orientation.BottomRight]: {
+ bottom: `calc(-${iconSize[size]}/9)`,
+ right: `calc(-${iconSize[size]}/9)`,
+ },
+ [Orientation.TopLeft]: {
+ top: `calc(-${iconSize[size]}/9)`,
+ left: `calc(-${iconSize[size]}/9)`,
+ },
+ [Orientation.TopRight]: {
+ top: `calc(-${iconSize[size]}/9)`,
+ right: `calc(-${iconSize[size]}/9)`,
+ },
+ };
+ return (
+
+ {children}
+ {nestedComponent?.node && (
+
+ {nestedComponent?.node ? nestedComponent.node : <>>}
+
+ )}
+
+ );
+}
+
+export default IconContainer;
diff --git a/Frontend/components/icon/index.ts b/Frontend/components/icon/index.ts
new file mode 100644
index 0000000..fc95e4b
--- /dev/null
+++ b/Frontend/components/icon/index.ts
@@ -0,0 +1,2 @@
+import Icon from "./Icon";
+export default Icon;
\ No newline at end of file
diff --git a/Frontend/components/icon/types.ts b/Frontend/components/icon/types.ts
new file mode 100644
index 0000000..7362312
--- /dev/null
+++ b/Frontend/components/icon/types.ts
@@ -0,0 +1,100 @@
+import { ReactNode } from "react";
+import * as FluentIcons from "@fluentui/react-icons";
+
+
+export type IconProps = {
+ color?: string;
+ size?:
+ | "small"
+ | "medium"
+ | "large"
+ | "xlarge"
+ | "xxlarge"
+ | "xxxlarge"
+ | "xxxxlarge";
+ isActive?: boolean;
+ name: IconName;
+ nestedComponent?: NestedComponent;
+ style?: React.CSSProperties;
+ };
+
+export type IconContainerProps = {
+ children: ReactNode;
+ color?: string;
+ size?:
+ | "small"
+ | "medium"
+ | "large"
+ | "xlarge"
+ | "xxlarge"
+ | "xxxlarge"
+ | "xxxxlarge";
+ isActive?: boolean;
+ nestedComponent?: NestedComponent;
+ style?: React.CSSProperties
+ }
+ type FluentIconNames = keyof typeof FluentIcons;
+ const fluentIconNames = Object.keys(FluentIcons) as FluentIconNames[];
+ export type IconName = typeof fluentIconNames[number];
+
+ export type NestedComponent = {
+ node: ReactNode;
+ options?: {
+ orientation?: Orientation;
+ backgroundColor?: string;
+ };
+ };
+
+ export const enum Orientation {
+ BottomLeft = "BottomLeft",
+ BottomRight = "BottomRight",
+ TopLeft = "TopLeft",
+ TopRight = "TopRight",
+ }
+
+ export const sizeScale = {
+ size: {
+ size_0: '0rem',
+ size_0_5: '0.25rem',
+ size_1: '0.5rem', /* 8px Base */
+ size_2: '1.0rem',
+ size_3: '1.5rem',
+ size_4: '2.0rem',
+ size_5: '2.5rem',
+ size_6: '3.0rem',
+ size_7: '3.5rem',
+ size_8: '4.0rem',
+ size_9: '4.5rem',
+ size_10: '5.0rem',
+ size_11: '5.5rem',
+ size_12: '6.0rem',
+ size_13: '6.5rem',
+ size_14: '7.0rem',
+ size_15: '7.5rem',
+ size_16: '8.0rem',
+ size_17: '8.5rem',
+ size_18: '9.0rem',
+ size_19: '9.5rem',
+ size_20: '10.0rem',
+ size_21: '10.5rem',
+ size_22: '11.0rem',
+ size_23: '11.5rem',
+ size_24: '12.0rem',
+ size_25: '12.5rem',
+ size_26: '13.0rem',
+ size_27: '13.5rem',
+ size_28: '14.0rem',
+ size_29: '14.5rem',
+ size_30: '15.0rem',
+ },
+ };
+
+ export const iconSize = {
+ small: sizeScale.size.size_2,
+ medium: sizeScale.size.size_3,
+ large: sizeScale.size.size_4,
+ xlarge: sizeScale.size.size_5,
+ xxlarge: sizeScale.size.size_6,
+ xxxlarge: sizeScale.size.size_7,
+ xxxxlarge: sizeScale.size.size_8,
+ };
\ No newline at end of file
diff --git a/Frontend/images/icon.svg b/Frontend/images/icon.svg
index 49415a6..878cfd4 100644
--- a/Frontend/images/icon.svg
+++ b/Frontend/images/icon.svg
@@ -1,4 +1,4 @@
-
-
+
diff --git a/Frontend/package-lock.json b/Frontend/package-lock.json
index fe45471..dac8e00 100644
--- a/Frontend/package-lock.json
+++ b/Frontend/package-lock.json
@@ -1,13 +1,14 @@
{
- "name": "sign365website",
+ "name": "fastpocket",
"version": "0.1.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
- "name": "sign365website",
+ "name": "fastpocket",
"version": "0.1.0",
"dependencies": {
+ "@fluentui/react-icons": "^2.0.227",
"@hookform/resolvers": "^3.2.0",
"@netlify/functions": "^2.1.0",
"@next/third-parties": "^14.1.0",
@@ -608,6 +609,11 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@emotion/hash": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
+ "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
+ },
"node_modules/@emotion/is-prop-valid": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz",
@@ -683,6 +689,51 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/@fluentui/react-icons": {
+ "version": "2.0.227",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.227.tgz",
+ "integrity": "sha512-KcuzBJvf1LL1YW7XBg7Y4RoCpFMUU2br9BPqwN5gZDKALHQF9RdHPtwdGTzxKsHacOTpHnNDQrbDW+NvxiEMVQ==",
+ "dependencies": {
+ "@griffel/react": "^1.0.0",
+ "tslib": "^2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0 <19.0.0"
+ }
+ },
+ "node_modules/@griffel/core": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.15.2.tgz",
+ "integrity": "sha512-RlsIXoSS3gaYykUgxFpwKAs/DV9cRUKp3CW1kt3iPAtsDTWn/o+8bT1jvBws/tMM2GBu/Uc0EkaIzUPqD7uA+Q==",
+ "dependencies": {
+ "@emotion/hash": "^0.9.0",
+ "@griffel/style-types": "^1.0.3",
+ "csstype": "^3.1.3",
+ "rtl-css-js": "^1.16.1",
+ "stylis": "^4.2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@griffel/react": {
+ "version": "1.5.20",
+ "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.20.tgz",
+ "integrity": "sha512-1P2yaPctENFSCwyPIYXBmgpNH68c0lc/jwSzPij1QATHDK1AASKuSeq6hW108I67RKjhRyHCcALshdZ3GcQXSg==",
+ "dependencies": {
+ "@griffel/core": "^1.15.2",
+ "tslib": "^2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0 <19.0.0"
+ }
+ },
+ "node_modules/@griffel/style-types": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@griffel/style-types/-/style-types-1.0.3.tgz",
+ "integrity": "sha512-AzbbYV/EobNIBtfMtyu2edFin895gjVxtu1nsRhTETUAIb0/LCZoue3Jd/kFLuPwe95rv5WRUBiQpVwJsrrFcw==",
+ "dependencies": {
+ "csstype": "^3.1.3"
+ }
+ },
"node_modules/@hookform/resolvers": {
"version": "3.3.2",
"license": "MIT",
@@ -2440,8 +2491,9 @@
}
},
"node_modules/csstype": {
- "version": "3.1.2",
- "license": "MIT"
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
"node_modules/daisyui": {
"version": "3.9.4",
@@ -5174,6 +5226,14 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/rtl-css-js": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz",
+ "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==",
+ "dependencies": {
+ "@babel/runtime": "^7.1.2"
+ }
+ },
"node_modules/run-parallel": {
"version": "1.2.0",
"funding": [
@@ -5675,6 +5735,11 @@
}
}
},
+ "node_modules/stylis": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz",
+ "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ=="
+ },
"node_modules/sucrase": {
"version": "3.34.0",
"license": "MIT",
@@ -6745,6 +6810,11 @@
"to-fast-properties": "^2.0.0"
}
},
+ "@emotion/hash": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
+ "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
+ },
"@emotion/is-prop-valid": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz",
@@ -6798,6 +6868,45 @@
"@eslint/js": {
"version": "8.54.0"
},
+ "@fluentui/react-icons": {
+ "version": "2.0.227",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.227.tgz",
+ "integrity": "sha512-KcuzBJvf1LL1YW7XBg7Y4RoCpFMUU2br9BPqwN5gZDKALHQF9RdHPtwdGTzxKsHacOTpHnNDQrbDW+NvxiEMVQ==",
+ "requires": {
+ "@griffel/react": "^1.0.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@griffel/core": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.15.2.tgz",
+ "integrity": "sha512-RlsIXoSS3gaYykUgxFpwKAs/DV9cRUKp3CW1kt3iPAtsDTWn/o+8bT1jvBws/tMM2GBu/Uc0EkaIzUPqD7uA+Q==",
+ "requires": {
+ "@emotion/hash": "^0.9.0",
+ "@griffel/style-types": "^1.0.3",
+ "csstype": "^3.1.3",
+ "rtl-css-js": "^1.16.1",
+ "stylis": "^4.2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@griffel/react": {
+ "version": "1.5.20",
+ "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.20.tgz",
+ "integrity": "sha512-1P2yaPctENFSCwyPIYXBmgpNH68c0lc/jwSzPij1QATHDK1AASKuSeq6hW108I67RKjhRyHCcALshdZ3GcQXSg==",
+ "requires": {
+ "@griffel/core": "^1.15.2",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@griffel/style-types": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@griffel/style-types/-/style-types-1.0.3.tgz",
+ "integrity": "sha512-AzbbYV/EobNIBtfMtyu2edFin895gjVxtu1nsRhTETUAIb0/LCZoue3Jd/kFLuPwe95rv5WRUBiQpVwJsrrFcw==",
+ "requires": {
+ "csstype": "^3.1.3"
+ }
+ },
"@hookform/resolvers": {
"version": "3.3.2",
"requires": {}
@@ -7716,7 +7825,9 @@
"version": "3.0.0"
},
"csstype": {
- "version": "3.1.2"
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
"daisyui": {
"version": "3.9.4",
@@ -9312,6 +9423,14 @@
}
}
},
+ "rtl-css-js": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz",
+ "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==",
+ "requires": {
+ "@babel/runtime": "^7.1.2"
+ }
+ },
"run-parallel": {
"version": "1.2.0",
"requires": {
@@ -9605,6 +9724,11 @@
"client-only": "0.0.1"
}
},
+ "stylis": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz",
+ "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ=="
+ },
"sucrase": {
"version": "3.34.0",
"requires": {
diff --git a/Frontend/package.json b/Frontend/package.json
index ab88b60..e2bb481 100644
--- a/Frontend/package.json
+++ b/Frontend/package.json
@@ -9,6 +9,7 @@
"lint": "next lint"
},
"dependencies": {
+ "@fluentui/react-icons": "^2.0.227",
"@hookform/resolvers": "^3.2.0",
"@netlify/functions": "^2.1.0",
"@next/third-parties": "^14.1.0",
diff --git a/Frontend/sections/AccountContent.tsx b/Frontend/sections/AccountContent.tsx
index bb9d7a6..9b906d3 100644
--- a/Frontend/sections/AccountContent.tsx
+++ b/Frontend/sections/AccountContent.tsx
@@ -166,7 +166,7 @@ function AccountContent({ user }: ManageSubscriptionProps) {
router.push("/pricing")}
- className="px-10 py-2 text-base capitalize !rounded-3xl text-white bg-gradient-to-r from-pink-default to-purple-default hover:bg-gray-900 w-full sm:w-auto"
+ className="px-10 py-2 text-base capitalize !rounded-3xl text-white bg-gradient-to-r from-primary to-secondary hover:bg-gray-900 w-full sm:w-auto"
>
Upgrade
diff --git a/Frontend/sections/BlogContent.tsx b/Frontend/sections/BlogContent.tsx
index 252cbf6..0aaf6c1 100644
--- a/Frontend/sections/BlogContent.tsx
+++ b/Frontend/sections/BlogContent.tsx
@@ -22,7 +22,7 @@ function BlogContent({ post }: BlogContentProps) {
{post.data.date}
-