Skip to content

Commit ac11436

Browse files
authored
Merge pull request #79 from sparrow-js/feature-landingpage
feature landingpage
2 parents 3d5dc1b + fd6a826 commit ac11436

File tree

12 files changed

+341
-7
lines changed

12 files changed

+341
-7
lines changed

components/components/Header.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ export default () => {
1616

1717
return (
1818
<header className="flex items-center p-4 justify-between relative">
19-
<div className="flex">
19+
<div className="flex items-center">
2020
<img className="w-[40px] h-[40px] left-5" src="/logo.png" />
21+
<span className="ml-2">ancodeai</span>
2122
</div>
2223
<div className="flex items-center">
2324
<div className="flex-1">
@@ -65,11 +66,11 @@ export default () => {
6566
<BsGithub className="text-xl" />
6667
</a>
6768
</li>
68-
<li className="mx-2">
69+
{/* <li className="mx-2">
6970
<a href="https://www.buymeacoffee.com/sparrowwhtl" target="_blank">
7071
<SiBuymeacoffee className="text-xl"/>
7172
</a>
72-
</li>
73+
</li> */}
7374
</ul>
7475
</div>
7576
</div>

components/components/chatInput/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ export default function ChatInput({openWhiteboard, showAnim}: props) {
7575
{/* animate-wiggle */}
7676
<div
7777
className={classNames(
78-
"sm:max-w-lg m-auto shadow-lg divide-zinc-600 min-h-12 bg-gray-900 shadow-black/40 rounded-[24px] overflow-hidden max-w-[90%] flex items-center flex-1 min-w-0 px-3 md:pl-4 bg-gray-900 absolute z-10 bottom-0",
78+
"sm:max-w-lg m-auto shadow-lg divide-zinc-600 min-h-12 bg-violet-950 shadow-black/40 rounded-[24px] overflow-hidden max-w-[90%] flex items-center flex-1 min-w-0 px-3 md:pl-4 bg-gray-900 absolute z-10 bottom-0",
7979
{
8080
"animate-wiggle": showAnim,
8181
}

components/footer/index.tsx

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import Image from "next/image";
2+
3+
const Footer = () => {
4+
return (
5+
<footer className="bg-base-200 border-t">
6+
<div className="max-w-7xl mx-auto px-4 py-24">
7+
<div className=" flex lg:items-start md:flex-row md:flex-nowrap flex-wrap flex-col">
8+
<div className="w-74 flex-shrink-0 md:mx-0 mx-auto text-center md:text-left">
9+
<a aria-current="page" className="flex gap-2 justify-center md:justify-start items-center" href="/#">
10+
<Image alt="" src={'/logo.png'} width={30} height={30} />
11+
<strong className="font-semibold tracking-tight text-base md:text-lg">ancodeai</strong></a>
12+
<p className="mt-3 text-sm text-base-content-secondary">By using OpenAI technologies to generate code.</p>
13+
<p className="mt-3 text-sm text-base-content-secondary/80">© Copyright 2024 ancodeai. All rights reserved.</p></div>
14+
<div className="flex-grow flex flex-wrap md:pl-24 -mb-10 md:mt-0 mt-10 text-center">
15+
<div className="lg:w-1/3 md:w-1/2 w-full px-4">
16+
<div className="footer-title font-medium text-base-content tracking-widest text-sm md:text-left mb-3">LEGAL</div>
17+
<div className="flex flex-col justify-center items-center md:items-start gap-2 mb-10 text-sm">
18+
<a className="link link-hover" href="/tos">Terms of services</a>
19+
<a className="link link-hover" href="/privacy-policy">Privacy policy</a>
20+
</div>
21+
</div>
22+
<div className="lg:w-1/3 md:w-1/2 w-full px-4">
23+
<div className="footer-title font-medium text-base-content tracking-widest text-sm md:text-left mb-3">SOCIAL</div>
24+
<div className="flex flex-col justify-center items-center md:items-start gap-2 mb-10 text-sm">
25+
<a className="link link-hover" href="mailto:sparrowwht7@gmail.com">email</a>
26+
<a target="_blank" rel="noopener" className="link link-hover" href="https://twitter.com/haitaowu18">
27+
<svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="20px" width="20px" xmlns="http://www.w3.org/2000/svg"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M4 4l11.733 16h4.267l-11.733 -16z"></path><path d="M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772"></path></svg>
28+
</a>
29+
</div>
30+
</div>
31+
</div>
32+
</div>
33+
</div>
34+
</footer>
35+
);
36+
}
37+
38+
export default Footer;

components/hero-text/index.tsx

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import Image from "next/image";
2+
import { PiTextTBold } from "react-icons/pi";
3+
4+
export default function HeroText () {
5+
return (
6+
<section className="overflow-hidden py-20 sm:py-32 lg:pb-32 xl:pb-36">
7+
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
8+
<div className="lg:grid lg:grid-cols-12 lg:gap-x-8 lg:gap-y-20">
9+
<div className="relative z-10 mx-auto max-w-2xl lg:col-span-6 lg:max-w-none lg:pt-6 xl:col-span-6">
10+
<h1 className="text-4xl font-medium tracking-tight text-gray-900 flex items-center">
11+
<PiTextTBold className="mr-2"/>text
12+
</h1>
13+
<p className="mt-6 text-lg text-gray-600">Convert any text to code. Describe your needs in detail, click the generate button and wait a few seconds to output the code for multiple frameworks.</p>
14+
{/* <div className="mt-8 flex flex-wrap gap-x-6 gap-y-4">
15+
<div className="flex justify-center mt-2">
16+
<span className="bg-black text-teal-400 px-4 py-2 font-bold rounded-md">
17+
git clone site-maker
18+
</span>
19+
</div>
20+
</div> */}
21+
</div>
22+
<div className="relative mt-10 sm:mt-20 lg:col-span-6 lg:row-span-2 lg:mt-0 xl:col-span-6">
23+
<div className="-mx-4 h-[448px] px-9 sm:mx-0 lg:absolute lg:-inset-x-10 lg:-bottom-20 lg:-top-10 lg:h-auto lg:px-0 lg:pt-10 xl:-bottom-32">
24+
<div className="relative aspect-[1648/1272] mx-auto max-w-[450px]">
25+
<Image alt="" height={1080} width={1080} src={'/text.png'}/>
26+
</div>
27+
</div>
28+
</div>
29+
</div>
30+
</div>
31+
</section>
32+
);
33+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import Image from "next/image";
2+
import { LiaPencilRulerSolid } from "react-icons/lia";
3+
4+
export default function HeroWhiteboard () {
5+
return (
6+
<section className="overflow-hidden py-20 sm:py-32 lg:pb-32 xl:pb-36">
7+
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
8+
<div className="lg:grid lg:grid-cols-12 lg:gap-x-8 lg:gap-y-20">
9+
<div className="relative z-10 mx-auto max-w-2xl lg:col-span-6 lg:max-w-none lg:pt-6 xl:col-span-6">
10+
<h1 className="text-4xl font-medium tracking-tight text-gray-900 flex items-center">
11+
<LiaPencilRulerSolid className="mr-2"/>whiteboard
12+
</h1>
13+
<p className="mt-6 text-lg text-gray-600">Convert any whiteboard into code. Use excalidraw to draw a sketch of the user interface you want, and then wait a few seconds to output the code for multiple frameworks.</p>
14+
{/* <div className="mt-8 flex flex-wrap gap-x-6 gap-y-4">
15+
<div className="flex justify-center mt-2">
16+
<span className="bg-black text-teal-400 px-4 py-2 font-bold rounded-md">
17+
git clone site-maker
18+
</span>
19+
</div>
20+
</div> */}
21+
</div>
22+
<div className="relative mt-10 sm:mt-20 lg:col-span-6 lg:row-span-2 lg:mt-0 xl:col-span-6">
23+
<div className="-mx-4 h-[448px] px-9 sm:mx-0 lg:absolute lg:-inset-x-10 lg:-bottom-20 lg:-top-10 lg:h-auto lg:px-0 lg:pt-10 xl:-bottom-32">
24+
<div className="relative aspect-[1648/1272] mx-auto max-w-[450px]">
25+
<Image alt="" height={1080} width={1080} src={'/excalidraw.png'}/>
26+
</div>
27+
</div>
28+
</div>
29+
</div>
30+
</div>
31+
</section>
32+
);
33+
}

components/hero/index.tsx

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import Image from "next/image";
2+
import { RiScreenshotFill } from "react-icons/ri";
3+
4+
export default function Hero () {
5+
return (
6+
<section className="overflow-hidden py-20 sm:py-32 lg:pb-32 xl:pb-36">
7+
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
8+
<div className="lg:grid lg:grid-cols-12 lg:gap-x-8 lg:gap-y-20">
9+
<div className="relative z-10 mx-auto max-w-2xl lg:col-span-6 lg:max-w-none lg:pt-6 xl:col-span-6">
10+
<h1 className="text-4xl font-medium tracking-tight text-gray-900 flex items-center">
11+
<RiScreenshotFill className="mr-2"/>screenshot
12+
</h1>
13+
<p className="mt-6 text-lg text-gray-600">Convert any screenshot or design into code. You can directly drag an image to the website and wait for a few seconds to output the result. It supports multiple framework code outputs.</p>
14+
{/* <div className="mt-8 flex flex-wrap gap-x-6 gap-y-4">
15+
<div className="flex justify-center mt-2">
16+
<span className="bg-black text-teal-400 px-4 py-2 font-bold rounded-md">
17+
git clone site-maker
18+
</span>
19+
</div>
20+
</div> */}
21+
</div>
22+
<div className="relative mt-10 sm:mt-20 lg:col-span-6 lg:row-span-2 lg:mt-0 xl:col-span-6">
23+
<div className="-mx-4 h-[448px] px-9 sm:mx-0 lg:absolute lg:-inset-x-10 lg:-bottom-20 lg:-top-10 lg:h-auto lg:px-0 lg:pt-10 xl:-bottom-32">
24+
<div className="relative aspect-[1648/1272] mx-auto max-w-[450px]">
25+
<Image alt="" height={1080} width={1080} src={'/screenshot.png'}/>
26+
</div>
27+
</div>
28+
</div>
29+
</div>
30+
</div>
31+
</section>
32+
);
33+
}

pages/index.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ import { useRouter } from 'next/router';
99
import classNames from 'classnames';
1010
import templates from '../templates/templates';
1111
import { FaGithubSquare } from "react-icons/fa";
12-
12+
import Footer from '@/components/footer';
13+
import Hero from '@/components/hero';
14+
import HeroWhiteboard from '@/components/hero-whiteboard';
15+
import HeroText from '@/components/hero-text';
1316

1417
import dynamic from "next/dynamic";
1518
import { GeneratedCodeConfig } from '@/components/types';
@@ -198,8 +201,13 @@ export default function Dashboard() {
198201
<TemplatePanel key={'TemplatePanel'} settings={settings} setSettings={setSettings}/>
199202
</div>
200203
</div>
201-
<div className="mt-[50px] w-[100%] p-2">
202-
<p className='text-slate-300 text-center'>© Copyright <a className='text-sky-400 hover:text-sky-600' href="https://www.ancodeai.com/">ancodeAI</a> All rights reserved.</p>
204+
<div>
205+
<Hero />
206+
<HeroWhiteboard />
207+
<HeroText />
208+
</div>
209+
<div className='mt-6'>
210+
<Footer />
203211
</div>
204212
</main>
205213

pages/privacy-policy/index.tsx

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
export default function PrivacyPolicy() {
2+
return (
3+
<div className="max-w-xl mx-auto">
4+
<div className="p-5">
5+
<a className="inline-flex items-center rounded text-white px-4 py-2 bg-purple-700 hover:bg-purple-900" href="/">
6+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"
7+
className="w-5 h-5">
8+
<path fill-rule="evenodd" d="M15 10a.75.75 0 01-.75.75H7.612l2.158 1.96a.75.75 0 11-1.04 1.08l-3.5-3.25a.75.75 0 010-1.08l3.5-3.25a.75.75 0 111.04 1.08L7.612 9.25h6.638A.75.75 0 0115 10z"
9+
clip-rule="evenodd">
10+
</path>
11+
</svg>
12+
Back
13+
</a>
14+
<h1 className="text-3xl font-medium pb-6">
15+
Privacy Policy
16+
</h1>
17+
<div className="leading-relaxed">
18+
Your privacy is important to us. It is ancodeai's policy to respect your
19+
privacy regarding any information we may collect from you across our website,
20+
and other sites we own and operate.
21+
<br />
22+
<br />
23+
We only ask for personal information when we truly need it to provide
24+
a service to you. We collect it by fair and lawful means, with your knowledge
25+
and consent. We also let you know why we're collecting it and how it will
26+
be used.
27+
<br />
28+
<br />
29+
You can sign up with your Google account so your ancodeai's account username
30+
will be prefilled with your name and your public profile picture.
31+
<br />
32+
<br />
33+
We only retain collected information for as long as necessary to provide
34+
you with your requested service. What data we store, we'll protect within
35+
commercially acceptable means to prevent loss and theft, as well as unauthorised
36+
access, disclosure, copying, use or modification.
37+
<br />
38+
<br />
39+
We don't share any personally identifying information publicly or with
40+
third-parties, except when required to by law.
41+
<br />
42+
<br />
43+
We act in the capacity of a data controller and a data processor with
44+
regard to the personal data processed through ancodeai and the services
45+
in terms of the applicable data protection laws, including the EU General
46+
Data Protection Regulation (GDPR).
47+
<br />
48+
<br />
49+
Our website may link to external sites that are not operated by us. Please
50+
be aware that we have no control over the content and practices of these
51+
sites, and cannot accept responsibility or liability for their respective
52+
privacy policies.
53+
<br />
54+
<br />
55+
You are free to refuse our request for your personal information, with
56+
the understanding that we may be unable to provide you with some of your
57+
desired services.
58+
<br />
59+
<br />
60+
Your continued use of our website will be regarded as acceptance of our
61+
practices around privacy and personal information. If you have any questions
62+
about how we handle user data and personal information, feel free to contact
63+
us.
64+
<br />
65+
<br />
66+
This policy is effective as of 02 March 2024.
67+
</div>
68+
</div>
69+
</div>
70+
)
71+
}

pages/tos/index.tsx

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
export default function Tos() {
2+
return (
3+
<div className="max-w-xl mx-auto">
4+
<div className="p-5">
5+
<a className="inline-flex items-center rounded text-white px-4 py-2 bg-purple-700 hover:bg-purple-900" href="/">
6+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"
7+
className="w-5 h-5">
8+
<path fill-rule="evenodd" d="M15 10a.75.75 0 01-.75.75H7.612l2.158 1.96a.75.75 0 11-1.04 1.08l-3.5-3.25a.75.75 0 010-1.08l3.5-3.25a.75.75 0 111.04 1.08L7.612 9.25h6.638A.75.75 0 0115 10z"
9+
clip-rule="evenodd">
10+
</path>
11+
</svg>
12+
Back
13+
</a>
14+
<h1 className="text-3xl font-medium pb-6">
15+
Terms and Conditions
16+
</h1>
17+
<div className="leading-relaxed">
18+
1. Introduction
19+
<br />
20+
By using ancodeai you confirm your acceptance of, and agree to be bound
21+
by, these terms and conditions.
22+
<br />
23+
<br />
24+
2. Agreement to Terms and Conditions
25+
<br />
26+
This Agreement takes effect on the date on which you first use the ancodeai
27+
application.
28+
<br />
29+
<br />
30+
3. Term and Termination.
31+
<br />
32+
Term and Termination. The term of this Agreement shall commence on the Effective
33+
Date and shall continue for one (1) month (the “Initial Subscription Term”) and
34+
such term will automatically renew for successive monthly periods from the
35+
Effective Date (a “Renewal Subscription Term”) unless you cancel before
36+
the expiration of the then-current term. You may downgrade Your
37+
Subscription Plan to a free plan as set forth in the Product.
38+
“Subscription Term” shall mean the Initial Subscription Term and subsequent
39+
Renewal Subscription Term(s). We also reserve the right to change any of
40+
the terms of this Agreement for any and all Renewal Subscription Terms.
41+
You may also terminate this Agreement at any time by ceasing use of the
42+
Product. This Agreement will terminate immediately upon written notice from
43+
ancodeai if You fail to comply with any provision of this Agreement. Except
44+
for Section 2 (“License Grant”), all Sections of this Agreement shall
45+
survive termination. On termination of this Agreement, You and each of
46+
Your employee users must cease using the Solution and ancodeai may destroy
47+
all of Your prompts, queries and/or data that You have submitted to the Solution.
48+
Notwithstanding the foregoing, You may continue to use Your Generated Code on termination
49+
in accordance with the terms of this Agreement which shall survive
50+
as to Your use of such Generated Code.
51+
<br />
52+
Termination. Credits included in a Subscription Plan that are not used within Your then-current Subscription
53+
Term will not roll over for use in the subsequent Renewal Subscription Term.
54+
“On-demand” Credits purchased outside of a Subscription Plan must be used within thirty (30) days of purchase
55+
and will expire on the thirty (30th) day. All Credits are “use it or lose it.”
56+
<br />
57+
<br />
58+
4. Refunds
59+
<br />
60+
Due to the nature of digital products, the ancodeai boilerplate cannot
61+
be refunded or exchanged once access is granted.
62+
<br />
63+
<br />
64+
5. Disclaimer
65+
<br />
66+
It is not warranted that ancodeai will meet your requirements or that
67+
its operation will be uninterrupted or error free. All express and implied
68+
warranties or conditions not stated in this Agreement (including without
69+
limitation, loss of profits, loss or corruption of data, business interruption
70+
or loss of contracts), so far as such exclusion or disclaimer is permitted
71+
under the applicable law are excluded and expressly disclaimed. This Agreement
72+
does not affect your statutory rights.
73+
<br />
74+
<br />
75+
6. Warranties and Limitation of Liability
76+
<br />
77+
ancodeai does not give any warranty, guarantee or other term as to the
78+
quality, fitness for purpose or otherwise of the software. ancodeaishall
79+
not be liable to you by reason of any representation (unless fraudulent),
80+
or any implied warranty, condition or other term, or any duty at common
81+
law, for any loss of profit or any indirect, special or consequential loss,
82+
damage, costs, expenses or other claims (whether caused by ancodeai's negligence
83+
or the negligence of its servants or agents or otherwise) which arise out
84+
of or in connection with the provision of any goods or services by ancodeai.
85+
ancodeai shall not be liable or deemed to be in breach of contract by reason
86+
of any delay in performing, or failure to perform, any of its obligations
87+
if the delay or failure was due to any cause beyond its reasonable control.
88+
Notwithstanding contrary clauses in this Agreement, in the event thatancodeai
89+
are deemed liable to you for breach of this Agreement, you agree that ancodeai's
90+
liability is limited to the amount actually paid by you for your services
91+
or software, which amount calculated in reliance upon this clause. You
92+
hereby release ancodeai from any and all obligations, liabilities and claims
93+
in excess of this limitation.
94+
<br />
95+
<br />
96+
7. Responsibilities
97+
<br />
98+
ancodeai is not responsible for what the user does with the user-generated
99+
content.
100+
<br />
101+
<br />
102+
8. General Terms and Law
103+
<br />
104+
This Agreement is governed by the laws of Singapore. You acknowledge that
105+
no joint venture, partnership, employment, or agency relationship exists
106+
between you and ancodeai as a result of your use of these services. You
107+
agree not to hold yourself out as a representative, agent or employee of
108+
ancodeai. You agree that ancodeai will not be liable by reason of any representation,
109+
act or omission to act by you.
110+
<br />
111+
<br />
112+
Last updated: 02 March 2024.
113+
</div>
114+
</div>
115+
</div>
116+
)
117+
}

public/excalidraw.png

328 KB
Loading

0 commit comments

Comments
 (0)