Merge version_2 into main

Merge version_2 into main
This commit was merged in pull request #1.
This commit is contained in:
2026-04-01 16:28:49 +00:00
6 changed files with 262 additions and 126 deletions

39
src/app/about/page.tsx Normal file
View File

@@ -0,0 +1,39 @@
"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>
<ReactLenis root>
<NavbarStyleCentered
navItems={[
{ name: "Home", id: "/" },
{ name: "Shop", id: "/shop" },
{ name: "About", id: "/about" },
{ name: "Contact", id: "contact" },
]}
brandName="Florista de Tires"
/>
<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>
<FooterCard logoText="Florista de Tires" />
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,48 @@
"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"
>
<NavbarStyleCentered
navItems={[{ name: "Home", id: "/" }, { name: "Dashboard", id: "/admin/dashboard" }]}
brandName="Florista de Tires Admin"
/>
<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
View 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>
);
}

View File

@@ -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
View 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>
);
}

41
src/app/shop/page.tsx Normal file
View File

@@ -0,0 +1,41 @@
"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>
<ReactLenis root>
<NavbarStyleCentered
navItems={[
{ name: "Home", id: "/" },
{ name: "Shop", id: "/shop" },
{ name: "About", id: "/about" },
{ name: "Contact", id: "contact" },
]}
brandName="Florista de Tires"
/>
<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>
<FooterCard logoText="Florista de Tires" />
</ReactLenis>
</ThemeProvider>
);
}