Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7434c1ce3e | |||
| 1e8f26b377 | |||
| 0a6902cd3a | |||
| 7bd56d4f93 | |||
| 1e98688c71 | |||
| 302384c73c | |||
| 63d4649b9a | |||
| 629c2a8641 | |||
| 1439eddea3 |
43
src/app/about/page.tsx
Normal file
43
src/app/about/page.tsx
Normal file
@@ -0,0 +1,43 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import ReactLenis from "lenis/react";
|
||||
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
|
||||
import TestimonialAboutCard from '@/components/sections/about/TestimonialAboutCard';
|
||||
import FooterCard from '@/components/sections/footer/FooterCard';
|
||||
import { Star } from "lucide-react";
|
||||
|
||||
export default function AboutPage() {
|
||||
return (
|
||||
<ThemeProvider defaultButtonVariant="hover-bubble" defaultTextAnimation="reveal-blur" borderRadius="rounded" contentWidth="medium" sizing="medium" background="circleGradient" cardStyle="glass-elevated" primaryButtonStyle="gradient" secondaryButtonStyle="glass" headingFontWeight="normal">
|
||||
<ReactLenis root>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarStyleCentered
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Shop", id: "/shop" },
|
||||
{ name: "About", id: "/about" },
|
||||
{ name: "Contact", id: "/contact" },
|
||||
]}
|
||||
brandName="Florista de Tires"
|
||||
/>
|
||||
</div>
|
||||
<div id="about" data-section="about" className="pt-32">
|
||||
<TestimonialAboutCard
|
||||
useInvertedBackground={false}
|
||||
tag="About Ms. Ana"
|
||||
title="Passion in Every Petal"
|
||||
description="Welcome to Florista de Tires. I'm Ana, and I believe flowers have the power to tell stories and brighten lives. Every bouquet is crafted with care, inspired by the natural beauty of the garden."
|
||||
subdescription="With years of experience and a deep love for botany, I ensure only the freshest and most vibrant blooms make it into your hands."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/woman-gardner-looking-after-plants-greenhouse_1303-14066.jpg"
|
||||
mediaAnimation="blur-reveal"
|
||||
icon={Star}
|
||||
/>
|
||||
</div>
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterCard logoText="Florista de Tires" />
|
||||
</div>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
50
src/app/admin/dashboard/page.tsx
Normal file
50
src/app/admin/dashboard/page.tsx
Normal file
@@ -0,0 +1,50 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import { useState } from "react";
|
||||
import Input from "@/components/form/Input";
|
||||
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
|
||||
|
||||
export default function AdminDashboard() {
|
||||
const [product, setProduct] = useState({ name: "", price: "", description: "", image: "" });
|
||||
|
||||
const handleSubmit = (e: React.FormEvent) => {
|
||||
e.preventDefault();
|
||||
console.log("Saving product:", product);
|
||||
alert("Product saved successfully!");
|
||||
};
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="hover-bubble"
|
||||
defaultTextAnimation="reveal-blur"
|
||||
borderRadius="soft"
|
||||
contentWidth="mediumLarge"
|
||||
sizing="largeSmallSizeLargeTitles"
|
||||
background="blurBottom"
|
||||
cardStyle="gradient-bordered"
|
||||
primaryButtonStyle="flat"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="bold"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarStyleCentered
|
||||
navItems={[{ name: "Home", id: "/" }, { name: "Dashboard", id: "/admin/dashboard" }]}
|
||||
brandName="Florista de Tires Admin"
|
||||
/>
|
||||
</div>
|
||||
<div className="min-h-screen pt-32 px-6 max-w-4xl mx-auto">
|
||||
<h1 className="text-4xl font-bold mb-8">Product Management</h1>
|
||||
<form onSubmit={handleSubmit} className="space-y-6 bg-card p-8 rounded-lg shadow-sm border">
|
||||
<Input value={product.name} onChange={(v) => setProduct({ ...product, name: v })} placeholder="Product Name" />
|
||||
<Input value={product.price} onChange={(v) => setProduct({ ...product, price: v })} placeholder="Price (e.g. 25€)" />
|
||||
<Input value={product.description} onChange={(v) => setProduct({ ...product, description: v })} placeholder="Description" />
|
||||
<Input value={product.image} onChange={(v) => setProduct({ ...product, image: v })} placeholder="Image URL" />
|
||||
<button type="submit" className="bg-primary-cta text-white px-6 py-2 rounded-md">
|
||||
Save Product
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
54
src/app/contact/page.tsx
Normal file
54
src/app/contact/page.tsx
Normal file
@@ -0,0 +1,54 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import ReactLenis from "lenis/react";
|
||||
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
|
||||
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
|
||||
import FooterCard from '@/components/sections/footer/FooterCard';
|
||||
|
||||
export default function ContactPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="hover-bubble"
|
||||
defaultTextAnimation="reveal-blur"
|
||||
borderRadius="soft"
|
||||
contentWidth="mediumLarge"
|
||||
sizing="largeSmallSizeLargeTitles"
|
||||
background="blurBottom"
|
||||
cardStyle="gradient-bordered"
|
||||
primaryButtonStyle="flat"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="bold"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<NavbarStyleCentered
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Shop", id: "/#shop" },
|
||||
{ name: "About", id: "/#about" },
|
||||
{ name: "Reviews", id: "/reviews" },
|
||||
{ name: "Contact", id: "/contact" },
|
||||
]}
|
||||
brandName="Florista de Tires"
|
||||
/>
|
||||
<div className="pt-32 pb-20">
|
||||
<ContactSplitForm
|
||||
useInvertedBackground={true}
|
||||
title="Get in Touch / Order"
|
||||
description="We are located at Praça Fernando Lopes Graça 25 B, 2785-625 São Domingos de Rana. Call us at +351 927 577 511. Delivery available!"
|
||||
inputs={[
|
||||
{ name: "name", type: "text", placeholder: "Your Name" },
|
||||
{ name: "email", type: "email", placeholder: "Your Email" },
|
||||
]}
|
||||
textarea={{
|
||||
name: "message", placeholder: "Tell us what you're looking for...", rows: 4,
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/full-shot-woman-sitting-floor_23-2149591584.jpg"
|
||||
mediaAnimation="slide-up"
|
||||
/>
|
||||
</div>
|
||||
<FooterCard logoText="Florista de Tires" copyrightText="© 2025 Florista de Tires. All rights reserved." />
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
155
src/app/page.tsx
155
src/app/page.tsx
@@ -29,26 +29,12 @@ export default function LandingPage() {
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarStyleCentered
|
||||
navItems={[
|
||||
{
|
||||
name: "Home",
|
||||
id: "hero",
|
||||
},
|
||||
{
|
||||
name: "Shop",
|
||||
id: "shop",
|
||||
},
|
||||
{
|
||||
name: "About",
|
||||
id: "about",
|
||||
},
|
||||
{
|
||||
name: "Reviews",
|
||||
id: "reviews",
|
||||
},
|
||||
{
|
||||
name: "Contact",
|
||||
id: "contact",
|
||||
},
|
||||
{ name: "Home", id: "hero" },
|
||||
{ name: "Shop", id: "shop" },
|
||||
{ name: "About", id: "about" },
|
||||
{ name: "Reviews", id: "reviews" },
|
||||
{ name: "Contact", id: "contact" },
|
||||
{ name: "Admin", id: "/admin/dashboard" }
|
||||
]}
|
||||
brandName="Florista de Tires"
|
||||
/>
|
||||
@@ -56,65 +42,24 @@ export default function LandingPage() {
|
||||
|
||||
<div id="hero" data-section="hero">
|
||||
<HeroCentered
|
||||
background={{
|
||||
variant: "radial-gradient",
|
||||
}}
|
||||
background={{ variant: "radial-gradient" }}
|
||||
title="Bringing Garden Magic to São Domingos de Rana"
|
||||
description="Handpicked, artisanal floral arrangements for your special moments. Discover the beauty of natural, seasonal blooms."
|
||||
avatars={[
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/blue-white-lavenders-light-pink-wooden-background_24837-622.jpg",
|
||||
alt: "Floral arrangement 1",
|
||||
},
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/vase-with-fresh-summer-flowers-female-hands-white-background_169016-34804.jpg",
|
||||
alt: "Floral arrangement 2",
|
||||
},
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/various-blooming-flowers-vases_23-2147761209.jpg",
|
||||
alt: "Floral arrangement 3",
|
||||
},
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/anonymous-florist-holding-bunch-flowers_23-2147761023.jpg",
|
||||
alt: "Floral arrangement 4",
|
||||
},
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/full-shot-woman-sitting-floor_23-2149591584.jpg",
|
||||
alt: "Floral arrangement 5",
|
||||
},
|
||||
]}
|
||||
buttons={[
|
||||
{
|
||||
text: "Shop Flowers",
|
||||
href: "#shop",
|
||||
},
|
||||
{
|
||||
text: "Contact Us",
|
||||
href: "#contact",
|
||||
},
|
||||
{ src: "http://img.b2bpic.net/free-photo/blue-white-lavenders-light-pink-wooden-background_24837-622.jpg", alt: "Floral arrangement 1" },
|
||||
{ src: "http://img.b2bpic.net/free-photo/vase-with-fresh-summer-flowers-female-hands-white-background_169016-34804.jpg", alt: "Floral arrangement 2" },
|
||||
{ src: "http://img.b2bpic.net/free-photo/various-blooming-flowers-vases_23-2147761209.jpg", alt: "Floral arrangement 3" },
|
||||
{ src: "http://img.b2bpic.net/free-photo/anonymous-florist-holding-bunch-flowers_23-2147761023.jpg", alt: "Floral arrangement 4" },
|
||||
{ src: "http://img.b2bpic.net/free-photo/full-shot-woman-sitting-floor_23-2149591584.jpg", alt: "Floral arrangement 5" },
|
||||
]}
|
||||
buttons={[{ text: "Shop Flowers", href: "#shop" }, { text: "Contact Us", href: "#contact" }]}
|
||||
buttonAnimation="slide-up"
|
||||
marqueeItems={[
|
||||
{
|
||||
type: "text",
|
||||
text: "Fresh Seasonal Blooms",
|
||||
},
|
||||
{
|
||||
type: "text",
|
||||
text: "Artisanal Bouquets",
|
||||
},
|
||||
{
|
||||
type: "text",
|
||||
text: "Local Garden Flowers",
|
||||
},
|
||||
{
|
||||
type: "text",
|
||||
text: "Expert Floristry",
|
||||
},
|
||||
{
|
||||
type: "text",
|
||||
text: "Same-Day Delivery",
|
||||
},
|
||||
{ type: "text", text: "Fresh Seasonal Blooms" },
|
||||
{ type: "text", text: "Artisanal Bouquets" },
|
||||
{ type: "text", text: "Local Garden Flowers" },
|
||||
{ type: "text", text: "Expert Floristry" },
|
||||
{ type: "text", text: "Same-Day Delivery" },
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
@@ -139,24 +84,9 @@ export default function LandingPage() {
|
||||
gridVariant="three-columns-all-equal-width"
|
||||
useInvertedBackground={true}
|
||||
products={[
|
||||
{
|
||||
id: "1",
|
||||
name: "Spring Meadow Bouquet",
|
||||
price: "25€",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vase-with-fresh-summer-flowers-female-hands-white-background_169016-34804.jpg",
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
name: "Sunset Garden Arrangement",
|
||||
price: "35€",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/various-blooming-flowers-vases_23-2147761209.jpg",
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
name: "Classic White Elegance",
|
||||
price: "30€",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/anonymous-florist-holding-bunch-flowers_23-2147761023.jpg",
|
||||
},
|
||||
{ id: "1", name: "Spring Meadow Bouquet", price: "25€", imageSrc: "http://img.b2bpic.net/free-photo/vase-with-fresh-summer-flowers-female-hands-white-background_169016-34804.jpg" },
|
||||
{ id: "2", name: "Sunset Garden Arrangement", price: "35€", imageSrc: "http://img.b2bpic.net/free-photo/various-blooming-flowers-vases_23-2147761209.jpg" },
|
||||
{ id: "3", name: "Classic White Elegance", price: "30€", imageSrc: "http://img.b2bpic.net/free-photo/anonymous-florist-holding-bunch-flowers_23-2147761023.jpg" },
|
||||
]}
|
||||
title="Our Arrangements"
|
||||
description="Browse our latest creations, crafted daily with seasonal wildflowers."
|
||||
@@ -170,26 +100,11 @@ export default function LandingPage() {
|
||||
rating={5}
|
||||
author="Happy Customer"
|
||||
avatars={[
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/woman-gardner-looking-after-plants-greenhouse_1303-14066.jpg",
|
||||
alt: "Client 1",
|
||||
},
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/vase-with-fresh-summer-flowers-female-hands-white-background_169016-34804.jpg",
|
||||
alt: "Client 2",
|
||||
},
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/various-blooming-flowers-vases_23-2147761209.jpg",
|
||||
alt: "Client 3",
|
||||
},
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/anonymous-florist-holding-bunch-flowers_23-2147761023.jpg",
|
||||
alt: "Client 4",
|
||||
},
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/blue-white-lavenders-light-pink-wooden-background_24837-622.jpg",
|
||||
alt: "Client 5",
|
||||
},
|
||||
{ src: "http://img.b2bpic.net/free-photo/woman-gardner-looking-after-plants-greenhouse_1303-14066.jpg", alt: "Client 1" },
|
||||
{ src: "http://img.b2bpic.net/free-photo/vase-with-fresh-summer-flowers-female-hands-white-background_169016-34804.jpg", alt: "Client 2" },
|
||||
{ src: "http://img.b2bpic.net/free-photo/various-blooming-flowers-vases_23-2147761209.jpg", alt: "Client 3" },
|
||||
{ src: "http://img.b2bpic.net/free-photo/anonymous-florist-holding-bunch-flowers_23-2147761023.jpg", alt: "Client 4" },
|
||||
{ src: "http://img.b2bpic.net/free-photo/blue-white-lavenders-light-pink-wooden-background_24837-622.jpg", alt: "Client 5" },
|
||||
]}
|
||||
ratingAnimation="blur-reveal"
|
||||
avatarsAnimation="blur-reveal"
|
||||
@@ -202,22 +117,10 @@ export default function LandingPage() {
|
||||
title="Get in Touch / Order"
|
||||
description="We are located at Praça Fernando Lopes Graça 25 B, 2785-625 São Domingos de Rana. Call us at +351 927 577 511. Delivery available!"
|
||||
inputs={[
|
||||
{
|
||||
name: "name",
|
||||
type: "text",
|
||||
placeholder: "Your Name",
|
||||
},
|
||||
{
|
||||
name: "email",
|
||||
type: "email",
|
||||
placeholder: "Your Email",
|
||||
},
|
||||
{ name: "name", type: "text", placeholder: "Your Name" },
|
||||
{ name: "email", type: "email", placeholder: "Your Email" },
|
||||
]}
|
||||
textarea={{
|
||||
name: "message",
|
||||
placeholder: "Tell us what you're looking for...",
|
||||
rows: 4,
|
||||
}}
|
||||
textarea={{ name: "message", placeholder: "Tell us what you're looking for...", rows: 4 }}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/full-shot-woman-sitting-floor_23-2149591584.jpg"
|
||||
mediaAnimation="slide-up"
|
||||
/>
|
||||
|
||||
51
src/app/reviews/page.tsx
Normal file
51
src/app/reviews/page.tsx
Normal file
@@ -0,0 +1,51 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import ReactLenis from "lenis/react";
|
||||
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
|
||||
import TestimonialCardFifteen from '@/components/sections/testimonial/TestimonialCardFifteen';
|
||||
import FooterCard from '@/components/sections/footer/FooterCard';
|
||||
|
||||
export default function ReviewsPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="hover-bubble"
|
||||
defaultTextAnimation="reveal-blur"
|
||||
borderRadius="soft"
|
||||
contentWidth="mediumLarge"
|
||||
sizing="largeSmallSizeLargeTitles"
|
||||
background="blurBottom"
|
||||
cardStyle="gradient-bordered"
|
||||
primaryButtonStyle="flat"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="bold"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<NavbarStyleCentered
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Shop", id: "/#shop" },
|
||||
{ name: "About", id: "/#about" },
|
||||
{ name: "Reviews", id: "/reviews" },
|
||||
{ name: "Contact", id: "/contact" },
|
||||
]}
|
||||
brandName="Florista de Tires"
|
||||
/>
|
||||
<div className="pt-32 pb-20">
|
||||
<TestimonialCardFifteen
|
||||
useInvertedBackground={false}
|
||||
testimonial="Best service! Beautiful flowers and plenty of variety. Very friendly, professional, always ready to help."
|
||||
rating={5}
|
||||
author="Happy Customer"
|
||||
avatars={[
|
||||
{ src: "http://img.b2bpic.net/free-photo/woman-gardner-looking-after-plants-greenhouse_1303-14066.jpg", alt: "Client 1" },
|
||||
]}
|
||||
ratingAnimation="blur-reveal"
|
||||
avatarsAnimation="blur-reveal"
|
||||
/>
|
||||
</div>
|
||||
<FooterCard logoText="Florista de Tires" copyrightText="© 2025 Florista de Tires. All rights reserved." />
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
45
src/app/shop/page.tsx
Normal file
45
src/app/shop/page.tsx
Normal file
@@ -0,0 +1,45 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import ReactLenis from "lenis/react";
|
||||
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
|
||||
import ProductCardThree from '@/components/sections/product/ProductCardThree';
|
||||
import FooterCard from '@/components/sections/footer/FooterCard';
|
||||
|
||||
export default function ShopPage() {
|
||||
return (
|
||||
<ThemeProvider defaultButtonVariant="hover-bubble" defaultTextAnimation="reveal-blur" borderRadius="rounded" contentWidth="medium" sizing="medium" background="circleGradient" cardStyle="glass-elevated" primaryButtonStyle="gradient" secondaryButtonStyle="glass" headingFontWeight="normal">
|
||||
<ReactLenis root>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarStyleCentered
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Shop", id: "/shop" },
|
||||
{ name: "About", id: "/about" },
|
||||
{ name: "Contact", id: "/contact" },
|
||||
]}
|
||||
brandName="Florista de Tires"
|
||||
/>
|
||||
</div>
|
||||
<div id="shop" data-section="shop" className="pt-32">
|
||||
<ProductCardThree
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
gridVariant="three-columns-all-equal-width"
|
||||
useInvertedBackground={true}
|
||||
products={[
|
||||
{ id: "1", name: "Spring Meadow Bouquet", price: "25€", imageSrc: "http://img.b2bpic.net/free-photo/vase-with-fresh-summer-flowers-female-hands-white-background_169016-34804.jpg" },
|
||||
{ id: "2", name: "Sunset Garden Arrangement", price: "35€", imageSrc: "http://img.b2bpic.net/free-photo/various-blooming-flowers-vases_23-2147761209.jpg" },
|
||||
{ id: "3", name: "Classic White Elegance", price: "30€", imageSrc: "http://img.b2bpic.net/free-photo/anonymous-florist-holding-bunch-flowers_23-2147761023.jpg" },
|
||||
]}
|
||||
title="Our Arrangements"
|
||||
description="Browse our latest creations, crafted daily with seasonal wildflowers."
|
||||
/>
|
||||
</div>
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterCard logoText="Florista de Tires" />
|
||||
</div>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user