25 Commits

Author SHA1 Message Date
4464b8272b Update src/app/shop/page.tsx 2026-02-23 13:33:28 +00:00
72f4d88e5f Update src/app/shop/[id]/page.tsx 2026-02-23 13:33:28 +00:00
e2007aea74 Update src/app/page.tsx 2026-02-23 13:33:27 +00:00
d6244c9173 Update src/app/contact/page.tsx 2026-02-23 13:33:26 +00:00
9a3b3535a1 Update src/app/blog/page.tsx 2026-02-23 13:33:25 +00:00
978c9b0639 Update src/app/styles/variables.css 2026-02-23 13:30:52 +00:00
1aa012a41a Update src/app/shop/page.tsx 2026-02-23 13:30:52 +00:00
657ff63c61 Update src/app/shop/[id]/page.tsx 2026-02-23 13:30:51 +00:00
9d34b157e9 Update src/app/layout.tsx 2026-02-23 13:30:50 +00:00
40e5bd0493 Merge version_4 into main
Merge version_4 into main
2026-02-23 13:23:15 +00:00
b110a100d7 Update src/app/contact/page.tsx 2026-02-23 13:23:10 +00:00
c4991cddde Merge version_4 into main
Merge version_4 into main
2026-02-23 13:21:41 +00:00
99fd6621e6 Update src/app/page.tsx 2026-02-23 13:21:36 +00:00
3e7b28273c Update src/app/contact/page.tsx 2026-02-23 13:21:35 +00:00
6ca40ed1d0 Merge version_4 into main
Merge version_4 into main
2026-02-23 13:20:50 +00:00
46f47f0b85 Update src/app/shop/page.tsx 2026-02-23 13:20:46 +00:00
9909b8588a Update src/app/shop/[id]/page.tsx 2026-02-23 13:20:45 +00:00
06a491f1f8 Update src/app/blog/page.tsx 2026-02-23 13:20:44 +00:00
9bb38ebda5 Merge version_4 into main
Merge version_4 into main
2026-02-23 13:17:59 +00:00
c7f4657e46 Update src/app/shop/page.tsx 2026-02-23 13:17:54 +00:00
b86da720cf Update src/app/shop/[id]/page.tsx 2026-02-23 13:17:54 +00:00
a4018e8923 Update src/app/page.tsx 2026-02-23 13:17:53 +00:00
28019cfe35 Update src/app/contact/page.tsx 2026-02-23 13:17:52 +00:00
880e06f46e Update src/app/blog/page.tsx 2026-02-23 13:17:52 +00:00
a2db6472bb Merge version_3 into main
Merge version_3 into main
2026-02-23 13:12:09 +00:00
7 changed files with 62 additions and 87 deletions

View File

@@ -4,8 +4,9 @@ import ReactLenis from "lenis/react";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import { useBlogPosts } from "@/hooks/useBlogPosts";
import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
import BlogCardTwo from '@/components/sections/blog/BlogCardTwo';
import BlogCardOne from '@/components/sections/blog/BlogCardOne';
import FooterBaseCard from '@/components/sections/footer/FooterBaseCard';
import Link from 'next/link';
export default function BlogPage() {
const { posts, isLoading } = useBlogPosts();
@@ -29,7 +30,6 @@ export default function BlogPage() {
brandName="Balka Flowers"
navItems={[
{ name: "Home", id: "/" },
{ name: "Blog", id: "/blog" },
{ name: "Contact", id: "/contact" }
]}
button={{ text: "Shop Now", href: "/shop" }}
@@ -46,7 +46,7 @@ export default function BlogPage() {
</div>
) : (
<div id="blog" data-section="blog">
<BlogCardTwo
<BlogCardOne
blogs={posts}
title="Latest Articles"
description="Insights and updates from our team"

View File

@@ -3,9 +3,9 @@
import ReactLenis from "lenis/react";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
import ContactCenter from '@/components/sections/contact/ContactCenter';
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
import FooterBaseCard from '@/components/sections/footer/FooterBaseCard';
import { Mail } from 'lucide-react';
import Link from 'next/link';
export default function ContactPage() {
return (
@@ -27,7 +27,6 @@ export default function ContactPage() {
brandName="Balka Flowers"
navItems={[
{ name: "Home", id: "/" },
{ name: "Blog", id: "/blog" },
{ name: "Contact", id: "/contact" }
]}
button={{ text: "Shop Now", href: "/shop" }}
@@ -39,29 +38,28 @@ export default function ContactPage() {
</div>
<div id="contact-main" data-section="contact-main">
<ContactCenter
tag="Get in Touch"
<ContactSplitForm
title="We'd love to hear from you."
description="Whether you have a custom order request, an event inquiry, or just want to say hello, our team is ready to assist you."
tagIcon={Mail}
inputPlaceholder="Your email address"
buttonText="Send Message"
termsText="By sending a message you're confirming that you agree with our Privacy Policy."
onSubmit={(email) => console.log("Contact form submitted with email:", email)}
background={{ variant: "plain" }}
inputs={[
{ name: 'name', type: 'text', placeholder: 'Name', required: true },
{ name: 'email', type: 'email', placeholder: 'Email', required: true },
]}
textarea={{ name: 'message', placeholder: 'Type your message...', rows: 5, required: true }}
useInvertedBackground={false}
imageSrc="https://img.b2bpic.net/free-photo/beautiful-flowers-bouquet-with-copy-space_23-2148911578.jpg"
mediaAnimation="slide-up"
mediaPosition="right"
buttonText="Send Message"
onSubmit={(data) => console.log("Contact form submitted with data:", data)}
ariaLabel="Contact section"
className="py-16 md:py-24"
containerClassName="max-w-screen-md mx-auto px-6 md:px-8"
contentClassName="bg-card rounded-soft shadow-lg p-8"
tagClassName="text-primary-cta text-sm font-semibold uppercase tracking-wider"
containerClassName="max-w-screen-xl mx-auto px-6 md:px-8"
formCardClassName="bg-card rounded-soft shadow-lg p-8"
titleClassName="text-foreground text-4xl md:text-5xl font-bold mb-4"
descriptionClassName="text-foreground/80 text-lg md:text-xl mb-8"
formWrapperClassName="mt-8"
formClassName="flex flex-col gap-4"
inputClassName="bg-background-accent/30 border border-border-color focus:border-primary-cta focus:ring-1 focus:ring-primary-cta transition-colors duration-200 rounded-md p-3"
buttonClassName="primary-button px-6 py-3"
buttonTextClassName="font-semibold"
termsClassName="text-foreground/60 text-sm mt-4"
/>
</div>

View File

@@ -1,51 +1,27 @@
import type { Metadata } from "next";
import { Plus_Jakarta_Sans } from "next/font/google";
import { Inter } from "next/font/google";
import "./globals.css";
import { ServiceWrapper } from "@/components/ServiceWrapper";
import Tag from "@/tag/Tag";
import './globals.css';
import type { Metadata } from 'next';
import { Inter_Tight } from "next/font/google";
const plusJakartaSans = Plus_Jakarta_Sans({
variable: "--font-plus-jakarta-sans", subsets: ["latin"],
});
const inter = Inter({
variable: "--font-inter", subsets: ["latin"],
const interTight = Inter_Tight({
variable: "--font-inter-tight", subsets: ["latin"],
weight: ["100", "200", "300", "400", "500", "600", "700", "800", "900"]
});
export const metadata: Metadata = {
title: "Balka Flowers Studio | Exquisite Floral Arrangements", description: "Discover stunning floral designs and custom arrangements from Balka Flowers, your local studio for fresh, handcrafted bouquets and event decor.", keywords: ["flowers", "floral studio", "bouquet", "arrangements", "custom flowers", "event decor", "florist", "Balka", "fresh flowers"],
openGraph: {
title: "Balka Flowers Studio | Exquisite Floral Arrangements", description: "Discover stunning floral designs and custom arrangements from Balka Flowers, your local studio for fresh, handcrafted bouquets and event decor.", url: "https://balkaflowers.com", siteName: "Balka Flowers", images: [
{
url: "https://img.b2bpic.net/free-photo/bouquet-pink-roses-with-green-leaves-inside-vase_114579-1439.jpg", alt: "Vibrant bouquet of fresh flowers"
}
],
type: "website"
},
twitter: {
card: "summary_large_image", title: "Balka Flowers Studio | Exquisite Floral Arrangements", description: "Discover stunning floral designs and custom arrangements from Balka Flowers, your local studio for fresh, handcrafted bouquets and event decor.", images: ["https://img.b2bpic.net/free-photo/bouquet-pink-roses-with-green-leaves-inside-vase_114579-1439.jpg"]
},
robots: {
index: true,
follow: true
}
};
title: 'Balka Flowers',
description: 'Exquisite floral arrangements for every occasion.',
}
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
}: {
children: React.ReactNode
}) {
return (
<html lang="en" suppressHydrationWarning>
<ServiceWrapper>
<body
className={`${plusJakartaSans.variable} ${inter.variable} antialiased`}
>
<Tag />
{children}
<html lang="en" className={`${interTight.variable}`}>
<body>
{children}
<script
dangerouslySetInnerHTML={{
__html: `
@@ -1413,7 +1389,6 @@ export default function RootLayout({
}}
/>
</body>
</ServiceWrapper>
</html>
);
)
}

View File

@@ -9,6 +9,7 @@ import TestimonialCardThirteen from '@/components/sections/testimonial/Testimoni
import ContactFaq from '@/components/sections/contact/ContactFaq';
import FooterBaseCard from '@/components/sections/footer/FooterBaseCard';
import { Mail } from 'lucide-react';
import Link from 'next/link';
export default function LandingPage() {
return (
@@ -29,7 +30,6 @@ export default function LandingPage() {
brandName="Balka Flowers"
navItems={[
{ name: "Home", id: "/" },
{ name: "Blog", id: "/blog" },
{ name: "Contact", id: "/contact" }
]}
button={{ text: "Shop Now", href: "/shop" }}
@@ -131,7 +131,7 @@ export default function LandingPage() {
testimonials={[
{ id: "1", name: "Sarah Johnson", handle: "@sarahj", testimonial: "Balka Flowers created the most breathtaking bouquet for my wedding day. Absolutely stunning and perfect in every way!", rating: 5, imageSrc: "https://img.b2bpic.net/free-photo/young-businesswoman-portrait-office_1262-1506.jpg", imageAlt: "Sarah Johnson" },
{ id: "2", name: "David Chen", handle: "@davidc", testimonial: "I ordered a custom arrangement for my anniversary, and it exceeded all expectations. The flowers were fresh and beautifully presented.", rating: 5, imageSrc: "https://img.b2bpic.net/free-photo/smiling-businessman-standing-airport_107420-85035.jpg", imageAlt: "David Chen" },
{ id: "3", name: "Emily Rodriguez", handle: "@emilyr", testimonial: "The team at Balka is incredibly talented and helpful. They captured my vision perfectly for a corporate event. Highly recommend!", rating: 5, imageSrc: "https://img.b2bpic.net/free-photo/caucasian-florist-woman-inside-flower-shop_53876-26300.jpg", imageAlt: "Emily Rodriguez" },
{ id: "3", name: "Emily Rodriguez", handle: "@emilyr", testimonial: "The team at Balka is incredibly talented and helpful. They captured my vision perfectly for a corporate event. Highly recommend!", rating: 5, imageSrc: "https://img.b2bpic.net/free-photo/caucasian-florist-woman-inside-flower-shop_53876-26300.jpg?_wi=1", imageAlt: "Emily Rodriguez" },
{ id: "4", name: "Michael Kim", handle: "@michaelk", testimonial: "Exceptional quality and service every time. Balka Flowers is my go-to for all my floral needs. Always a delightful experience.", rating: 5, imageSrc: "https://img.b2bpic.net/free-photo/healthy-lifestyle-sustained-home_23-2149362443.jpg", imageAlt: "Michael Kim" },
]}
className="py-16 md:py-24"
@@ -184,7 +184,7 @@ export default function LandingPage() {
<FooterBaseCard
logoText="Balka Flowers"
columns={[
{ title: "Shop", items: [{ label: "Bouquets", href: "#products" }, { label: "Events", href: "/contact" }, { label: "Custom Orders", href: "/contact" }] },
{ title: "Shop", items: [{ label: "Bouquets", href: "/shop" }, { label: "Events", href: "/contact" }, { label: "Custom Orders", href: "/contact" }] },
{ title: "Company", items: [{ label: "About Us", href: "/#about" }, { label: "Testimonials", href: "/#testimonials" }, { label: "Blog", href: "/blog" }] },
{ title: "Support", items: [{ label: "FAQ", href: "/contact" }, { label: "Contact", href: "/contact" }] },
]}

View File

@@ -11,6 +11,7 @@ import { useProductDetail } from "@/hooks/useProductDetail";
import { useCart } from "@/hooks/useCart";
import { useCheckout } from "@/hooks/useCheckout";
import FooterBaseCard from '@/components/sections/footer/FooterBaseCard';
import Link from 'next/link';
interface ProductPageProps {
params: Promise<{ id: string }>;
@@ -92,7 +93,7 @@ function ProductPageContent({ params }: ProductPageProps) {
<div id="navbar" data-section="navbar">
<NavbarLayoutFloatingInline
brandName="Balka Flowers"
navItems={[{ name: "Home", id: "/" }, { name: "Blog", id: "/blog" }, { name: "Shop", id: "/shop" }, { name: "Contact", id: "/contact" }]}
navItems={[{ name: "Home", id: "/" }, { name: "Contact", id: "/contact" }]}
className="py-4 px-6 md:px-8"
navItemClassName="text-foreground hover:text-primary-cta transition-colors"
buttonClassName="px-5 py-2"
@@ -126,7 +127,7 @@ function ProductPageContent({ params }: ProductPageProps) {
<div id="navbar" data-section="navbar">
<NavbarLayoutFloatingInline
brandName="Balka Flowers"
navItems={[{ name: "Home", id: "/" }, { name: "Blog", id: "/blog" }, { name: "Shop", id: "/shop" }, { name: "Contact", id: "/contact" }]}
navItems={[{ name: "Home", id: "/" }, { name: "Contact", id: "/contact" }]}
className="py-4 px-6 md:px-8"
navItemClassName="text-foreground hover:text-primary-cta transition-colors"
buttonClassName="px-5 py-2"
@@ -167,7 +168,7 @@ function ProductPageContent({ params }: ProductPageProps) {
<div id="navbar" data-section="navbar">
<NavbarLayoutFloatingInline
brandName="Balka Flowers"
navItems={[{ name: "Home", id: "/" }, { name: "Blog", id: "/blog" }, { name: "Shop", id: "/shop" }, { name: "Contact", id: "/contact" }]}
navItems={[{ name: "Home", id: "/" }, { name: "Contact", id: "/contact" }]}
className="py-4 px-6 md:px-8"
navItemClassName="text-foreground hover:text-primary-cta transition-colors"
buttonClassName="px-5 py-2"

View File

@@ -10,6 +10,7 @@ import ProductCart from "@/components/ecommerce/cart/ProductCart";
import { useCart } from "@/hooks/useCart";
import { useCheckout } from "@/hooks/useCheckout";
import FooterBaseCard from '@/components/sections/footer/FooterBaseCard';
import Link from 'next/link';
function ShopPageContent() {
const {
@@ -59,7 +60,7 @@ function ShopPageContent() {
<div id="navbar" data-section="navbar">
<NavbarLayoutFloatingInline
brandName="Balka Flowers"
navItems={[{ name: "Home", id: "/" }, { name: "Blog", id: "/blog" }, { name: "Shop", id: "/shop" }, { name: "Contact", id: "/contact" }]}
navItems={[{ name: "Home", id: "/" }, { name: "Contact", id: "/contact" }]}
className="py-4 px-6 md:px-8"
navItemClassName="text-foreground hover:text-primary-cta transition-colors"
buttonClassName="px-5 py-2"
@@ -92,7 +93,7 @@ function ShopPageContent() {
<div id="navbar" data-section="navbar">
<NavbarLayoutFloatingInline
brandName="Balka Flowers"
navItems={[{ name: "Home", id: "/" }, { name: "Blog", id: "/blog" }, { name: "Shop", id: "/shop" }, { name: "Contact", id: "/contact" }]}
navItems={[{ name: "Home", id: "/" }, { name: "Contact", id: "/contact" }]}
className="py-4 px-6 md:px-8"
navItemClassName="text-foreground hover:text-primary-cta transition-colors"
buttonClassName="px-5 py-2"

View File

@@ -2,23 +2,23 @@
/* Base units */
/* --vw is set by ThemeProvider */
/* --background: #fdfdff;;
--card: #ffffff;;
--foreground: #2a0f3d;;
--primary-cta: #e63946;;
--secondary-cta: #d1c4e9;;
--accent: #8b5cf6;;
--background-accent: #f8f0ff;; */
/* --background: #060000;;
--card: #1d0d0d;;
--foreground: #ffe6e6;;
--primary-cta: #ff3d4a;;
--secondary-cta: #1f0a0a;;
--accent: #7b2d2d;;
--background-accent: #b8111f;; */
--background: #fdfdff;;
--card: #ffffff;;
--foreground: #2a0f3d;;
--primary-cta: #e63946;;
--primary-cta-text: #f5f5f5;;
--secondary-cta: #d1c4e9;;
--secondary-cta-text: #1c1c1c;;
--accent: #8b5cf6;;
--background-accent: #f8f0ff;;
--background: #060000;;
--card: #1d0d0d;;
--foreground: #ffe6e6;;
--primary-cta: #ff3d4a;;
--primary-cta-text: #060000;;
--secondary-cta: #1f0a0a;;
--secondary-cta-text: #ffe6e6;;
--accent: #7b2d2d;;
--background-accent: #b8111f;;
/* text sizing - set by ThemeProvider */
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);