responsive
Browse files- app/_components/gallery/index.tsx +4 -4
- app/_components/generation/index.tsx +5 -5
- app/_components/generation/step/brand.tsx +1 -1
- app/_components/generation/step/description.tsx +1 -1
- app/_components/generation/step/list.tsx +1 -1
- app/_components/hero-header.tsx +5 -5
- app/layout.tsx +1 -1
- assets/globals.css +1 -1
- components/_navigation/index.tsx +2 -2
- next.config.mjs +1 -12
app/_components/gallery/index.tsx
CHANGED
@@ -1,20 +1,20 @@
|
|
1 |
export const Gallery = ({ logos }: { logos: Array<number> }) => {
|
2 |
return (
|
3 |
-
<section id="gallery" className="w-full py-16">
|
4 |
<div className="mx-auto bg-amber-500/10 border border-amber-500/15 text-amber-500 px-3 py-1.5 rounded-full flex items-center gap-1 justify-center max-w-max text-xs mb-4">
|
5 |
<span className="text-xs">⚡</span>
|
6 |
Increase your creativity
|
7 |
</div>
|
8 |
-
<h3 className="max-w-4xl text-3xl text-[#aaaaaa] font-semibold mb-12 text-center mx-auto">
|
9 |
See our <span className="text-white">last designs</span>.
|
10 |
</h3>
|
11 |
-
<div className="flex items-start justify-center gap-6 flex-wrap">
|
12 |
{logos.map((index) => (
|
13 |
<img
|
14 |
key={index}
|
15 |
src={`/api/images/${index}`}
|
16 |
alt="Generated logo"
|
17 |
-
className="rounded-2xl size-72 object-cover"
|
18 |
/>
|
19 |
))}
|
20 |
</div>
|
|
|
1 |
export const Gallery = ({ logos }: { logos: Array<number> }) => {
|
2 |
return (
|
3 |
+
<section id="gallery" className="w-full py-10 lg:py-16">
|
4 |
<div className="mx-auto bg-amber-500/10 border border-amber-500/15 text-amber-500 px-3 py-1.5 rounded-full flex items-center gap-1 justify-center max-w-max text-xs mb-4">
|
5 |
<span className="text-xs">⚡</span>
|
6 |
Increase your creativity
|
7 |
</div>
|
8 |
+
<h3 className="max-w-4xl text-2xl lg:text-3xl text-[#aaaaaa] font-semibold mb-12 text-center mx-auto">
|
9 |
See our <span className="text-white">last designs</span>.
|
10 |
</h3>
|
11 |
+
<div className="max-lg:grid max-lg:grid-cols-2 lg:flex lg:items-start lg:justify-center gap-6 flex-wrap">
|
12 |
{logos.map((index) => (
|
13 |
<img
|
14 |
key={index}
|
15 |
src={`/api/images/${index}`}
|
16 |
alt="Generated logo"
|
17 |
+
className="rounded-2xl w-full lg:size-72 object-cover"
|
18 |
/>
|
19 |
))}
|
20 |
</div>
|
app/_components/generation/index.tsx
CHANGED
@@ -38,19 +38,19 @@ export const Generation = () => {
|
|
38 |
};
|
39 |
|
40 |
return (
|
41 |
-
<main id="generation" className="w-full py-20">
|
42 |
-
<h3 className="max-w-4xl text-3xl text-[#aaaaaa] font-semibold mb-12 text-center mx-auto">
|
43 |
Start your <span className="text-white">generation</span> here.
|
44 |
</h3>
|
45 |
<Steps form={form} />
|
46 |
-
<div className="grid grid-cols-3 gap-20">
|
47 |
<Brand form={form} setForm={setForm} />
|
48 |
<Description form={form} setForm={setForm} />
|
49 |
<Industry form={form} setForm={setForm} />
|
50 |
-
<div className="col-span-3 flex items-center justify-center">
|
51 |
<button
|
52 |
className={classNames(
|
53 |
-
"rounded-full bg-white text-zinc-950 font-medium text-sm px-6 py-3 hover:bg-opacity-80 transition-all duration-150 disabled:bg-zinc-500 disabled:text-zinc-700",
|
54 |
{
|
55 |
"animate-pulse": loading,
|
56 |
}
|
|
|
38 |
};
|
39 |
|
40 |
return (
|
41 |
+
<main id="generation" className="w-full py-10 lg:py-20">
|
42 |
+
<h3 className="max-w-4xl text-2xl lg:text-3xl text-[#aaaaaa] font-semibold mb-12 text-center mx-auto">
|
43 |
Start your <span className="text-white">generation</span> here.
|
44 |
</h3>
|
45 |
<Steps form={form} />
|
46 |
+
<div className="grid grid-cols-1 lg:grid-cols-3 gap-8 lg:gap-20">
|
47 |
<Brand form={form} setForm={setForm} />
|
48 |
<Description form={form} setForm={setForm} />
|
49 |
<Industry form={form} setForm={setForm} />
|
50 |
+
<div className="lg:col-span-3 flex items-center justify-center">
|
51 |
<button
|
52 |
className={classNames(
|
53 |
+
"max-lg:w-full rounded-full bg-white text-zinc-950 font-medium text-sm px-6 py-3 hover:bg-opacity-80 transition-all duration-150 disabled:bg-zinc-500 disabled:text-zinc-700",
|
54 |
{
|
55 |
"animate-pulse": loading,
|
56 |
}
|
app/_components/generation/step/brand.tsx
CHANGED
@@ -8,7 +8,7 @@ export const Brand = ({
|
|
8 |
setForm: React.Dispatch<React.SetStateAction<Form>>;
|
9 |
}) => {
|
10 |
return (
|
11 |
-
<div className="">
|
12 |
<label htmlFor="brand_name" className="text-zinc-300 mb-1 block text-sm">
|
13 |
Brand name
|
14 |
</label>
|
|
|
8 |
setForm: React.Dispatch<React.SetStateAction<Form>>;
|
9 |
}) => {
|
10 |
return (
|
11 |
+
<div className="w-full">
|
12 |
<label htmlFor="brand_name" className="text-zinc-300 mb-1 block text-sm">
|
13 |
Brand name
|
14 |
</label>
|
app/_components/generation/step/description.tsx
CHANGED
@@ -8,7 +8,7 @@ export const Description = ({
|
|
8 |
setForm: React.Dispatch<React.SetStateAction<Form>>;
|
9 |
}) => {
|
10 |
return (
|
11 |
-
<div className="">
|
12 |
<label htmlFor="description" className="text-zinc-300 mb-1 block text-sm">
|
13 |
Short Description
|
14 |
</label>
|
|
|
8 |
setForm: React.Dispatch<React.SetStateAction<Form>>;
|
9 |
}) => {
|
10 |
return (
|
11 |
+
<div className="w-full">
|
12 |
<label htmlFor="description" className="text-zinc-300 mb-1 block text-sm">
|
13 |
Short Description
|
14 |
</label>
|
app/_components/generation/step/list.tsx
CHANGED
@@ -32,7 +32,7 @@ const STEPS = [
|
|
32 |
|
33 |
export const Steps = ({ form }: { form: Form }) => {
|
34 |
return (
|
35 |
-
<div className="w-full flex items-center justify-center gap-2 mb-12">
|
36 |
{STEPS.map((s, i) => (
|
37 |
<>
|
38 |
<div
|
|
|
32 |
|
33 |
export const Steps = ({ form }: { form: Form }) => {
|
34 |
return (
|
35 |
+
<div className="max-lg:hidden w-full flex items-center justify-center gap-2 mb-12">
|
36 |
{STEPS.map((s, i) => (
|
37 |
<>
|
38 |
<div
|
app/_components/hero-header.tsx
CHANGED
@@ -23,8 +23,8 @@ export const HeroHeader = () => {
|
|
23 |
}, 2000);
|
24 |
|
25 |
return (
|
26 |
-
<header className="py-20 grid grid-cols-1 gap-5">
|
27 |
-
<h1 className="text-5xl font-semibold text-[#aaaaaa] max-w-max mx-auto text-center">
|
28 |
<span
|
29 |
className={classNames("transition-all duration-300 text-opacity-0", {
|
30 |
"text-white !text-opacity-100": selectedWord === "Think.",
|
@@ -52,16 +52,16 @@ export const HeroHeader = () => {
|
|
52 |
<h2 className="text-lg font-light text-center text-[#898989] max-w-sm mx-auto">
|
53 |
An AI powered tool that helps you create a logo for your brand.
|
54 |
</h2>
|
55 |
-
<div className="flex items-center justify-center gap-6 mt-3">
|
56 |
<a
|
57 |
href="#generation"
|
58 |
-
className="rounded-full bg-white text-zinc-950 font-medium text-base px-6 py-3 hover:bg-opacity-80 transition-all duration-150"
|
59 |
>
|
60 |
Start generation
|
61 |
</a>
|
62 |
<a
|
63 |
href="#gallery"
|
64 |
-
className="rounded-full text-zinc-300 bg-zinc-900 font-medium text-base px-6 py-3 hover:bg-opacity-80 transition-all duration-150"
|
65 |
>
|
66 |
View examples
|
67 |
</a>
|
|
|
23 |
}, 2000);
|
24 |
|
25 |
return (
|
26 |
+
<header className="py-14 lg:py-20 grid grid-cols-1 gap-5">
|
27 |
+
<h1 className="text-4xl lg:text-5xl font-semibold text-[#aaaaaa] max-w-max mx-auto text-center">
|
28 |
<span
|
29 |
className={classNames("transition-all duration-300 text-opacity-0", {
|
30 |
"text-white !text-opacity-100": selectedWord === "Think.",
|
|
|
52 |
<h2 className="text-lg font-light text-center text-[#898989] max-w-sm mx-auto">
|
53 |
An AI powered tool that helps you create a logo for your brand.
|
54 |
</h2>
|
55 |
+
<div className="max-lg:max-w-xs w-full max-lg:mx-auto max-lg:grid lg:flex lg:items-center lg:justify-center gap-6 mt-3 ">
|
56 |
<a
|
57 |
href="#generation"
|
58 |
+
className="rounded-full bg-white text-zinc-950 font-medium text-base px-6 py-3 hover:bg-opacity-80 transition-all duration-150 text-center max-lg:w-full"
|
59 |
>
|
60 |
Start generation
|
61 |
</a>
|
62 |
<a
|
63 |
href="#gallery"
|
64 |
+
className="rounded-full text-zinc-300 bg-zinc-900 font-medium text-base px-6 py-3 hover:bg-opacity-80 transition-all duration-150 text-center max-lg:w-full"
|
65 |
>
|
66 |
View examples
|
67 |
</a>
|
app/layout.tsx
CHANGED
@@ -53,7 +53,7 @@ export default function RootLayout({
|
|
53 |
<body
|
54 |
className={`${nohemiRegular.variable} ${geistMono.variable} antialiased`}
|
55 |
>
|
56 |
-
<div className="
|
57 |
<Navigation />
|
58 |
{children}
|
59 |
</div>
|
|
|
53 |
<body
|
54 |
className={`${nohemiRegular.variable} ${geistMono.variable} antialiased`}
|
55 |
>
|
56 |
+
<div className="h-screen w-full overflow-auto font-[family-name:var(--font-nohemi-sans)] p-6 scroll-smooth">
|
57 |
<Navigation />
|
58 |
{children}
|
59 |
</div>
|
assets/globals.css
CHANGED
@@ -22,7 +22,7 @@ body {
|
|
22 |
|
23 |
html,
|
24 |
body {
|
25 |
-
@apply
|
26 |
}
|
27 |
|
28 |
@keyframes jiggle {
|
|
|
22 |
|
23 |
html,
|
24 |
body {
|
25 |
+
@apply overflow-hidden;
|
26 |
}
|
27 |
|
28 |
@keyframes jiggle {
|
components/_navigation/index.tsx
CHANGED
@@ -5,7 +5,7 @@ import Logo from "@/assets/logo.png";
|
|
5 |
|
6 |
export const Navigation = () => {
|
7 |
return (
|
8 |
-
<div className="rounded-full bg-zinc-950 border border-white/10 px-6 py-4 flex items-center justify-between max-w-xl w-full mx-auto shadow-md relative">
|
9 |
<div className="flex items-center justify-center gap-3 relative">
|
10 |
<div className="relative">
|
11 |
<Image src={Logo} alt="logo" className="size-6" />
|
@@ -20,7 +20,7 @@ export const Navigation = () => {
|
|
20 |
</div>
|
21 |
<p className="font-semibold text-lg text-white">LogoAI</p>
|
22 |
</div>
|
23 |
-
<ul className="flex items-center justify-right gap-3 text-white"></ul>
|
24 |
</div>
|
25 |
);
|
26 |
};
|
|
|
5 |
|
6 |
export const Navigation = () => {
|
7 |
return (
|
8 |
+
<div className="rounded-full bg-zinc-950 border border-white/10 px-6 py-2.5 lg:py-4 flex items-center justify-center lg:justify-between max-w-max lg:max-w-xl lg:w-full mx-auto shadow-md relative">
|
9 |
<div className="flex items-center justify-center gap-3 relative">
|
10 |
<div className="relative">
|
11 |
<Image src={Logo} alt="logo" className="size-6" />
|
|
|
20 |
</div>
|
21 |
<p className="font-semibold text-lg text-white">LogoAI</p>
|
22 |
</div>
|
23 |
+
<ul className="hidden lg:flex items-center justify-right gap-3 text-white"></ul>
|
24 |
</div>
|
25 |
);
|
26 |
};
|
next.config.mjs
CHANGED
@@ -1,15 +1,4 @@
|
|
1 |
/** @type {import('next').NextConfig} */
|
2 |
-
const nextConfig = {
|
3 |
-
webpack: (config) => {
|
4 |
-
// Ignore node-specific modules when bundling for the browser
|
5 |
-
// See https://webpack.js.org/configuration/resolve/#resolvealias
|
6 |
-
config.resolve.alias = {
|
7 |
-
...config.resolve.alias,
|
8 |
-
sharp$: false,
|
9 |
-
"onnxruntime-node$": false,
|
10 |
-
};
|
11 |
-
return config;
|
12 |
-
},
|
13 |
-
};
|
14 |
|
15 |
export default nextConfig;
|
|
|
1 |
/** @type {import('next').NextConfig} */
|
2 |
+
const nextConfig = {};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
export default nextConfig;
|