From aad539e1a6bfb6d689acc9b5f3d68be8d2fb1901 Mon Sep 17 00:00:00 2001 From: AmirReza Jamali Date: Sat, 18 Oct 2025 20:44:30 +0330 Subject: [PATCH] feat: redesign homepage and early access page This commit introduces a comprehensive redesign of the homepage and refactors the "Contact Us" page into a dedicated "Get Early Access" page. Key changes include: - **Homepage:** A complete overhaul with new sections, including a hero, feature highlights, and a problem/solution section to better communicate the product's value proposition. - **Early Access Page:** The former "Contact Us" page is now repurposed for early access sign-ups, with updated copy and a more focused call-to-action. - **Component Refactoring:** - The `InputGroup` component has been extracted from the form into a reusable component (`app/_components/InputGroup.tsx`) for better modularity. - The `CenterFrame` component has been updated to support images and new props (`src`, `title`, `alt`) to fit the new homepage design. - **Layout Improvements:** The early access form now uses a two-column grid layout on larger screens for improved user experience. --- Dockerfile | 2 +- app/_components/ApexChart.tsx | 106 +++++++++++++ app/_components/InputGroup.tsx | 64 ++++++++ app/contact-us/form.tsx | 77 +--------- app/contact-us/page.tsx | 21 +-- app/layout.tsx | 154 ++++++++----------- app/page.tsx | 263 +++++++++++++++++++++++---------- package-lock.json | 135 +++++++++++++++++ package.json | 2 + public/Landing 11.svg | 24 +++ public/Landing 12.svg | 11 ++ public/Landing 13.svg | 23 +++ public/arrow-up.svg | 3 + public/clipboard.svg | 4 + public/clock.svg | 4 + public/document.svg | 4 + public/footer-bg.svg | 9 ++ public/footer-logo.svg | 14 ++ public/images/phone.png | Bin 0 -> 14602 bytes public/magnifier.svg | 4 + public/main-bg.svg | 25 ++++ public/mobile.svg | 75 ++++++++++ public/people.svg | 5 + public/shield-tick.svg | 4 + public/thumbs-up.svg | 5 + 25 files changed, 775 insertions(+), 263 deletions(-) create mode 100644 app/_components/ApexChart.tsx create mode 100644 app/_components/InputGroup.tsx create mode 100644 public/Landing 11.svg create mode 100644 public/Landing 12.svg create mode 100644 public/Landing 13.svg create mode 100644 public/arrow-up.svg create mode 100644 public/clipboard.svg create mode 100644 public/clock.svg create mode 100644 public/document.svg create mode 100644 public/footer-bg.svg create mode 100644 public/footer-logo.svg create mode 100644 public/images/phone.png create mode 100644 public/magnifier.svg create mode 100644 public/main-bg.svg create mode 100644 public/mobile.svg create mode 100644 public/people.svg create mode 100644 public/shield-tick.svg create mode 100644 public/thumbs-up.svg diff --git a/Dockerfile b/Dockerfile index f1afc53..5d74b1c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,7 +10,7 @@ RUN npm i COPY . . -RUN npm run build +RUN docker build . #--- diff --git a/app/_components/ApexChart.tsx b/app/_components/ApexChart.tsx new file mode 100644 index 0000000..9ae9333 --- /dev/null +++ b/app/_components/ApexChart.tsx @@ -0,0 +1,106 @@ +"use client"; + +import dynamic from "next/dynamic"; +import { useEffect, useState } from "react"; +import { ApexOptions } from "apexcharts"; +const ReactApexChart = dynamic(() => import("react-apexcharts"), { ssr: false }); + +interface ChartState { + series: { + name: string; + data: number[]; + }[]; + options: ApexOptions; +} + +const ApexChart = () => { + const [state, setState] = useState(null); + + useEffect(() => { + const initialState: ChartState = { + series: [ + { + name: "Sales", + data: [ + 182, 192, 230, 198, 243, 234, 244, 210, 274, 220, 225, 289, 265, + 304, + ], + }, + ], + options: { + chart: { + toolbar: { show: false }, + height: 350, + type: "line", + }, + forecastDataPoints: { + count: 0, + }, + stroke: { + width: 6, + curve: "smooth", + }, + fill: { + type: "gradient", + gradient: { + shade: "dark", + type: "horizontal", + shadeIntensity: 0.5, + gradientToColors: ["#99DDE5"], + inverseColors: false, + opacityFrom: 1, + opacityTo: 1, + stops: [0, 100], + }, + }, + colors: ["#0164FF"], + xaxis: { + type: "datetime", + categories: [ + "1/11/2024", + "2/11/2024", + "3/11/2024", + "5/11/2024", + "6/11/2024", + "7/11/2024", + "8/11/2024", + "9/11/2024", + "10/11/2024", + "11/11/2024", + "12/11/2024", + "1/11/2025", + "2/11/2025", + "3/11/2025", + ], + tickAmount: 0, + labels: { + formatter: function (value: any, timestamp: any, opts: any) { + return opts.dateFormatter(new Date(timestamp), "dd MMM"); + }, + }, + }, + }, + }; + setState(initialState); + }, []); + + if (!state) { + return
Loading...
; + } + + return ( +
+
+ +
+
+
+ ); +}; + +export default ApexChart; diff --git a/app/_components/InputGroup.tsx b/app/_components/InputGroup.tsx new file mode 100644 index 0000000..f210685 --- /dev/null +++ b/app/_components/InputGroup.tsx @@ -0,0 +1,64 @@ +"use client"; +import { HTMLInputTypeAttribute, useState } from "react"; +import { RegisterOptions, UseFormRegister } from "react-hook-form"; + +function InputGroup({ + id, + label, + register, + type, + validation, + error, +}: { + label: string; + id: string; + register: UseFormRegister; + type: HTMLInputTypeAttribute; + validation?: RegisterOptions; + error?: string; +}) { + const [isFocused, setIsFocused] = useState(false); + const [hasValue, setHasValue] = useState(false); + + const { onChange, ...rest } = register(id, validation); + + const handleChange = (e: React.ChangeEvent) => { + setHasValue(e.target.value !== ""); + onChange(e); + }; + + return ( +
+
+ setIsFocused(true)} + onBlur={() => setIsFocused(false)} + /> + +
+ {error &&

{error}

} +
+ ); +} + +export default InputGroup; diff --git a/app/contact-us/form.tsx b/app/contact-us/form.tsx index 4fe70a2..98a1b98 100644 --- a/app/contact-us/form.tsx +++ b/app/contact-us/form.tsx @@ -1,8 +1,8 @@ "use client"; import api from "@/service/api"; -import { HTMLInputTypeAttribute } from "react"; -import { RegisterOptions, useForm, UseFormRegister } from "react-hook-form"; +import { useForm } from "react-hook-form"; import { toast } from "react-toastify"; +import InputGroup from "../_components/InputGroup"; type TContactUsForm = { full_name: string; company_name: string; @@ -27,37 +27,29 @@ const ContactUsForm = () => { }; return (
{ }, }} /> - +
+ +
); }; export default ContactUsForm; -function InputGroup({ - icon, - id, - label, - placeholder, - register, - type, - validation, - error, -}: { - label: string; - id: string; - icon: () => React.JSX.Element; - placeholder: string; - register: UseFormRegister; - type: HTMLInputTypeAttribute; - validation?: RegisterOptions; - error?: string; -}) { - return ( - <> - -
- - - {icon()} - -
- {error &&

{error}

} - - ); -} -function UserIcon() { - return ( - - - - ); -} diff --git a/app/contact-us/page.tsx b/app/contact-us/page.tsx index 5bb4a81..c0834cd 100644 --- a/app/contact-us/page.tsx +++ b/app/contact-us/page.tsx @@ -2,25 +2,8 @@ import ContactUsForm from "./form"; const ContactUs = () => { return ( -
-
-
- Contact Us -
- -

Let's get in touch

-
-

- Or just reach out manually to -

- - info@opplens.com - -
-
-
+
+
diff --git a/app/layout.tsx b/app/layout.tsx index e12e3c4..0338475 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -3,7 +3,7 @@ import { Geist, Geist_Mono } from "next/font/google"; import Image from "next/image"; import Link from "next/link"; import { ToastContainer, Zoom } from "react-toastify"; -import HeaderButtons from "./_components/HeaderButtons"; +import ContactUs from "./contact-us/page"; import "./globals.css"; const geistSans = Geist({ variable: "--font-geist-sans", @@ -32,7 +32,7 @@ function ContactInfo({ ariaLabel: string; }) { return ( -
+
-
-
- - Opp lens logo - -
- - - -
-
- -
+ className={`${geistSans.variable} ${geistMono.variable} antialiased flex flex-col min-h-screen bg-[url('/main-bg.svg')] bg-cover bg-no-repeat`}> +
+ Shallow + +
+ + + +
{children}
+ +
+
+
- - {children} -
- Shallow -
-
-
- Opp lens logo -
-
- {contactInfo.map((item) => ( - +
+
+ Opp lens logo - ))} -
-
-

- Stockholm, Sweden © 2025 Opplens.com by PBL Partners AB. All - Rights Reserved. Democratizing Tender Access for SMEs. -

+

+ Democratizing Tender Access for SMEs. +

+

+ © 2025 Opplens.com by PBL Partners AB. All Rights Reserved. +

+
+
+ {contactInfo.map((contact, index) => ( + + ))} +
- -
+
+ ); diff --git a/app/page.tsx b/app/page.tsx index a91813f..ea3e953 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,6 +1,6 @@ import { Metadata } from "next"; import Image from "next/image"; - +import ApexChart from "./_components/ApexChart"; export const metadata: Metadata = { title: "Opp lens - AI-Powered Tender Management for SMEs | Win More Tenders", description: @@ -21,109 +21,208 @@ export const metadata: Metadata = { }; export default function Home() { - const centerFrameItems = [ + const centerFrames = [ { - header: 200, - text: "Users", - description: `Lacking the time, dedicated staff, and - expertise to constantly monitor the market - and prepare high-quality bids.`, + src: "/magnifier.svg", + title: "Discover with AI", + alt: "Magnifier", + description: + "Our intelligent platform scours thousands of sources to find the perfect, most relevant tender opportunities for your specific business and expertise", }, { - header: 520, - text: "Contracts", - description: `Navigating complex requirements and -processes designed for large corporations -with dedicated tender departments.`, + src: "/clipboard.svg", + title: "Prepare with Experts", + alt: "Clipboard", + description: + "Gain access to expert support and powerful tools to craft compelling, competitive, and high-quality bids that stand out from the competition.", }, { - header: 1500, - text: "Tenders", - description: `Did you know 68% of SMEs in Sweden -rarely or never win public tenders? It's time -to change that.`, + src: "/thumbs-up.svg", + title: "Win with a Partner", + alt: "thumbs-up", + description: + "We operate on a partnership model. We only succeed when you win. This aligns our goals and makes us a true partner in your growth.", }, ]; - return ( -
-
-
-

- AI-Powered -

- Opp lens platform interface on mobile device -
-

- Tender Management -

-

Win more tenders, automatically!

-

- Our platform finds tenders tailored to your business, automates - document handling, and sends real-time alerts. Win more - opportunities with less effort and zero manual search. -

-
+ <> +
+
+

+ $ + 12,345,678 +

+

total tender amount you missed today

+ +
+
+ phone
- Opp lens platform interface on desktop
-
-

- Platform Statistics -

- {centerFrameItems.map((item, index) => ( +
+

+ democratizing the world of tenders +

+

+ Opplens is your dedicated AI-powered partner, leveling the playing + field so you can win the public and private contracts you deserve. + Compete on your true strengths. +

+
+ +
+
+
+

+ your in-house tender department, powered by + ai +

+ + Opplens is the end-to-end solution that gives you the power to compete + and win. + +
+
+ {centerFrames.map((frame, index) => ( ))}
-
+
+
+

+ Tired of Complex Tenders & Lost Opportunities? +

+

+ The procurement market is tough for SMEs. We get it. You're facing + an uphill battle. +

+
+
+
+
+ clock icon +
+

Resource Drain

+

+ Lacking the time, dedicated staff, and expertise to constantly + monitor the market and prepare high-quality bids. +

+
+
+
+ clipboard icon +
+

Overwhelming Complexity

+

+ Navigating complex requirements and processes designed for large + corporations with dedicated tender departments. +

+
+
+
+ arrow-up icon +
+

Low Win Rates

+

+ Did you know 68% of SMEs in Sweden rarely or never win public + tenders? It's time to change that. +

+
+
+
+
+
+

The Opplens Advantage

+
+
+
+ people icon +
+

A True Partnership Model

+

+ Lower your risk with our performance-based options. Our success + is directly tied to yours, making us a dedicated partner + invested in your growth, not just a software provider. +

+
+
+
+ shield icon +
+

Unmatched Data Security

+

+ Your business data is critical. Our unique on premise AI engine + ensures your information remains 100% private and secure, unlike + cloud based services. Fully GDPR compliant by design. +

+
+
+
+
+ ); } function CenterFrame({ - header, - text, + src, + title, description, + alt, }: { - header: number; - text: string; + src: string; + title: string; description: string; + alt: string; }) { return ( -
-

- {header} -

-

{text}

-

{description}

-
+
+ {alt} +

{title}

+

{description}

+
); } diff --git a/package-lock.json b/package-lock.json index e700c70..8f1d9f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,9 +8,11 @@ "name": "tm-landing", "version": "0.1.0", "dependencies": { + "apexcharts": "^5.3.5", "axios": "^1.12.2", "next": "15.5.5", "react": "19.1.0", + "react-apexcharts": "^1.8.0", "react-dom": "19.1.0", "react-hook-form": "^7.65.0", "react-toastify": "^11.0.5" @@ -672,6 +674,62 @@ "node": ">= 10" } }, + "node_modules/@svgdotjs/svg.draggable.js": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/@svgdotjs/svg.draggable.js/-/svg.draggable.js-3.0.6.tgz", + "integrity": "sha512-7iJFm9lL3C40HQcqzEfezK2l+dW2CpoVY3b77KQGqc8GXWa6LhhmX5Ckv7alQfUXBuZbjpICZ+Dvq1czlGx7gA==", + "license": "MIT", + "peerDependencies": { + "@svgdotjs/svg.js": "^3.2.4" + } + }, + "node_modules/@svgdotjs/svg.filter.js": { + "version": "3.0.9", + "resolved": "https://registry.npmmirror.com/@svgdotjs/svg.filter.js/-/svg.filter.js-3.0.9.tgz", + "integrity": "sha512-/69XMRCDoam2HgC4ldHIaDgeQf1ViHIsa0Ld4uWgiXtZ+E24DWHe/9Ib6kbNiZ7WRIdlVokUDR1Fg0kjIpkfbw==", + "license": "MIT", + "dependencies": { + "@svgdotjs/svg.js": "^3.2.4" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@svgdotjs/svg.js": { + "version": "3.2.5", + "resolved": "https://registry.npmmirror.com/@svgdotjs/svg.js/-/svg.js-3.2.5.tgz", + "integrity": "sha512-/VNHWYhNu+BS7ktbYoVGrCmsXDh+chFMaONMwGNdIBcFHrWqk2jY8fNyr3DLdtQUIalvkPfM554ZSFa3dm3nxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Fuzzyma" + } + }, + "node_modules/@svgdotjs/svg.resize.js": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@svgdotjs/svg.resize.js/-/svg.resize.js-2.0.5.tgz", + "integrity": "sha512-4heRW4B1QrJeENfi7326lUPYBCevj78FJs8kfeDxn5st0IYPIRXoTtOSYvTzFWgaWWXd3YCDE6ao4fmv91RthA==", + "license": "MIT", + "engines": { + "node": ">= 14.18" + }, + "peerDependencies": { + "@svgdotjs/svg.js": "^3.2.4", + "@svgdotjs/svg.select.js": "^4.0.1" + } + }, + "node_modules/@svgdotjs/svg.select.js": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@svgdotjs/svg.select.js/-/svg.select.js-4.0.3.tgz", + "integrity": "sha512-qkMgso1sd2hXKd1FZ1weO7ANq12sNmQJeGDjs46QwDVsxSRcHmvWKL2NDF7Yimpwf3sl5esOLkPqtV2bQ3v/Jg==", + "license": "MIT", + "engines": { + "node": ">= 14.18" + }, + "peerDependencies": { + "@svgdotjs/svg.js": "^3.2.4" + } + }, "node_modules/@swc/helpers": { "version": "0.5.15", "resolved": "https://registry.npmmirror.com/@swc/helpers/-/helpers-0.5.15.tgz", @@ -987,6 +1045,26 @@ "@types/react": "^19.2.0" } }, + "node_modules/@yr/monotone-cubic-spline": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==", + "license": "MIT" + }, + "node_modules/apexcharts": { + "version": "5.3.5", + "resolved": "https://registry.npmmirror.com/apexcharts/-/apexcharts-5.3.5.tgz", + "integrity": "sha512-I04DY/WBZbJgJD2uixeV5EzyiL+J5LgKQXEu8rctqAwyRmKv44aDVeofJoLdTJe3ao4r2KEQfCgtVzXn6pqirg==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@svgdotjs/svg.draggable.js": "^3.0.4", + "@svgdotjs/svg.filter.js": "^3.0.8", + "@svgdotjs/svg.js": "^3.2.4", + "@svgdotjs/svg.resize.js": "^2.0.2", + "@svgdotjs/svg.select.js": "^4.0.1", + "@yr/monotone-cubic-spline": "^1.0.3" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", @@ -1323,6 +1401,12 @@ "jiti": "lib/jiti-cli.mjs" } }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, "node_modules/lightningcss": { "version": "1.30.1", "resolved": "https://registry.npmmirror.com/lightningcss/-/lightningcss-1.30.1.tgz", @@ -1562,6 +1646,18 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/magic-string": { "version": "0.30.19", "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.19.tgz", @@ -1723,6 +1819,15 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", @@ -1758,6 +1863,17 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -1773,6 +1889,19 @@ "node": ">=0.10.0" } }, + "node_modules/react-apexcharts": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/react-apexcharts/-/react-apexcharts-1.8.0.tgz", + "integrity": "sha512-MuEp56gc0NMO2UUgY94fxQzoBE4XEjmcCha4xYY0vJdRrc1yfFFZE4QrCekOt2wcS3nibghzca/q/CbgkAgN5w==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "apexcharts": ">=4.0.0", + "react": ">=0.13" + } + }, "node_modules/react-dom": { "version": "19.1.0", "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-19.1.0.tgz", @@ -1801,6 +1930,12 @@ "react": "^16.8.0 || ^17 || ^18 || ^19" } }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, "node_modules/react-toastify": { "version": "11.0.5", "resolved": "https://registry.npmmirror.com/react-toastify/-/react-toastify-11.0.5.tgz", diff --git a/package.json b/package.json index 24a8ffa..136babb 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,11 @@ "start": "next start" }, "dependencies": { + "apexcharts": "^5.3.5", "axios": "^1.12.2", "next": "15.5.5", "react": "19.1.0", + "react-apexcharts": "^1.8.0", "react-dom": "19.1.0", "react-hook-form": "^7.65.0", "react-toastify": "^11.0.5" diff --git a/public/Landing 11.svg b/public/Landing 11.svg new file mode 100644 index 0000000..374bb97 --- /dev/null +++ b/public/Landing 11.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/Landing 12.svg b/public/Landing 12.svg new file mode 100644 index 0000000..78b3d00 --- /dev/null +++ b/public/Landing 12.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/Landing 13.svg b/public/Landing 13.svg new file mode 100644 index 0000000..be71a4f --- /dev/null +++ b/public/Landing 13.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/arrow-up.svg b/public/arrow-up.svg new file mode 100644 index 0000000..2e182fb --- /dev/null +++ b/public/arrow-up.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/clipboard.svg b/public/clipboard.svg new file mode 100644 index 0000000..9d37de4 --- /dev/null +++ b/public/clipboard.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/clock.svg b/public/clock.svg new file mode 100644 index 0000000..c5db631 --- /dev/null +++ b/public/clock.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/document.svg b/public/document.svg new file mode 100644 index 0000000..72db25e --- /dev/null +++ b/public/document.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/footer-bg.svg b/public/footer-bg.svg new file mode 100644 index 0000000..c84c439 --- /dev/null +++ b/public/footer-bg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/footer-logo.svg b/public/footer-logo.svg new file mode 100644 index 0000000..027e8eb --- /dev/null +++ b/public/footer-logo.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/images/phone.png b/public/images/phone.png new file mode 100644 index 0000000000000000000000000000000000000000..e8a3a4d26a8bc1449b7be591ba578860b8bd3990 GIT binary patch literal 14602 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 literal 0 HcmV?d00001 diff --git a/public/magnifier.svg b/public/magnifier.svg new file mode 100644 index 0000000..a42e321 --- /dev/null +++ b/public/magnifier.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/main-bg.svg b/public/main-bg.svg new file mode 100644 index 0000000..4350d48 --- /dev/null +++ b/public/main-bg.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/mobile.svg b/public/mobile.svg new file mode 100644 index 0000000..2436784 --- /dev/null +++ b/public/mobile.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/people.svg b/public/people.svg new file mode 100644 index 0000000..ef97909 --- /dev/null +++ b/public/people.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/shield-tick.svg b/public/shield-tick.svg new file mode 100644 index 0000000..4c5d0e4 --- /dev/null +++ b/public/shield-tick.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/thumbs-up.svg b/public/thumbs-up.svg new file mode 100644 index 0000000..c0320a9 --- /dev/null +++ b/public/thumbs-up.svg @@ -0,0 +1,5 @@ + + + + +