10 Commits

Author SHA1 Message Date
ad173733e7 Merge version_5_1782837874101 into main
Merge version_5_1782837874101 into main
2026-06-30 16:44:37 +00:00
0dcab611c1 Update theme fonts 2026-06-30 16:44:34 +00:00
eb61ced3b0 Merge version_4_1782837866107 into main
Merge version_4_1782837866107 into main
2026-06-30 16:44:30 +00:00
206fa5442d Update theme fonts 2026-06-30 16:44:26 +00:00
ebc323c366 Merge version_3_1782837106173 into main
Merge version_3_1782837106173 into main
2026-06-30 16:34:00 +00:00
kudinDmitriyUp
63e66be5cd Bob AI: Populate src/pages/ProductsPage.tsx (snippet builder, 2 sections) 2026-06-30 16:33:22 +00:00
kudinDmitriyUp
0f70d6efba Bob AI: Add products page 2026-06-30 16:32:43 +00:00
8e6c24d2cf Merge version_2_1782836945364 into main
Merge version_2_1782836945364 into main
2026-06-30 16:30:36 +00:00
kudinDmitriyUp
773cf32ac8 Bob AI: Add a products page to the site, ensure all buttons and inte 2026-06-30 16:30:32 +00:00
a8316ff36c Merge version_1_1782834976350 into main
Merge version_1_1782834976350 into main
2026-06-30 16:19:32 +00:00
6 changed files with 67 additions and 44 deletions

View File

@@ -2,11 +2,13 @@ import { Routes, Route } from 'react-router-dom';
import Layout from './components/Layout';
import HomePage from './pages/HomePage';
import ProductsPage from "@/pages/ProductsPage";
export default function App() {
return (
<Routes>
<Route element={<Layout />}>
<Route path="/" element={<HomePage />} />
<Route path="/products" element={<ProductsPage />} />
</Route>
</Routes>
);

View File

@@ -34,7 +34,9 @@ export default function Layout() {
{
"name": "Faq",
"href": "#faq"
}
},
{ name: "Products", href: "/products" },
];
return (

View File

@@ -1,4 +1,4 @@
@import url('https://fonts.googleapis.com/css2?family=Public+Sans:wght@400;500;600;700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Libre+Baskerville:wght@400;500;600;700&display=swap');
@import "tailwindcss";
@import "./styles/masks.css";
@import "./styles/animations.css";
@@ -88,7 +88,7 @@
--color-background-accent: var(--background-accent);
/* Fonts */
--font-sans: 'Public Sans', sans-serif;
--font-sans: 'Inter', sans-serif;
--font-tight: "Inter Tight", sans-serif;
--font-mono: monospace;
@@ -137,7 +137,7 @@ body {
margin: 0;
background-color: var(--background);
color: var(--foreground);
font-family: 'Public Sans', sans-serif;
font-family: 'Inter', sans-serif;
position: relative;
min-height: 100vh;
overscroll-behavior: none;
@@ -150,7 +150,7 @@ h3,
h4,
h5,
h6 {
font-family: 'Public Sans', sans-serif;
font-family: 'Libre Baskerville', sans-serif;
}
/* Default card/button styles. Template theme.css imports come after this file

View File

@@ -13,10 +13,10 @@ export default function HomePage() {
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBrand
brand="Meet Your Registered Dietitian, Jamie"
description="Im a Registered Dietitian with over 10 years of experience in food and nutrition. Here youll find approachable healthy recipes and real-life nutrition advice."
primaryButton={{ text: "Browse Recipes", href: "#recipes" }}
secondaryButton={{ text: "Learn More", href: "#about" }}
brand="Kayıtlı Diyetisyeniniz Jamie ile Tanışın"
description="Gıda ve beslenme alanında 10 yılı aşkın deneyime sahip kayıtlı bir diyetisyenim. Burada ulaşılabilir sağlıklı tarifler, ürünler ve gerçek hayattan beslenme tavsiyeleri bulacaksınız."
primaryButton={{ text: "Ürünleri İncele", href: "/products" }}
secondaryButton={{ text: "Daha Fazla Bilgi", href: "#about" }}
imageSrc="http://img.b2bpic.net/free-photo/beautiful-blond-middle-aged-woman-dining-with-california-s-role-japanese-restaurant-summer-terrace_496169-2544.jpg"
/>
</SectionErrorBoundary>
@@ -25,8 +25,8 @@ export default function HomePage() {
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutText
title="Making Healthy Eating Easy and Enjoyable"
primaryButton={{ text: "Read My Story", href: "#about" }}
title="Sağlıklı Beslenmeyi Kolay ve Keyifli Hale Getirmek"
primaryButton={{ text: "Hikayemi Oku", href: "#about" }}
/>
</SectionErrorBoundary>
</div>
@@ -34,17 +34,17 @@ export default function HomePage() {
<div id="recipes" data-section="recipes">
<SectionErrorBoundary name="recipes">
<FeaturesImageBento
tag="My Favorites"
title="Dietitian-Approved Recipes"
description="These are the same recipes I eat myself and feed my family. Simple, healthy, and delicious."
tag="Favorilerim"
title="Diyetisyen Onaylı Tarifler"
description="Bunlar kendi yediğim ve aileme yedirdiğim tariflerin aynısı. Basit, sağlıklı ve lezzetli."
items={[
{ title: "Grinder Pasta Salad", description: "The best fresh pasta salad ever.", imageSrc: "http://img.b2bpic.net/free-photo/top-view-colored-bell-peppers-cutting-board-with-raw-pasta-knife-turquoise-surface_141793-18396.jpg" },
{ title: "Big Mac Sloppy Joes", description: "Healthier twist on a classic meal.", imageSrc: "http://img.b2bpic.net/free-photo/half-cheeseburger-with-tomatoes-salad_23-2148314191.jpg" },
{ title: "Whole Wheat Cookies", description: "Guilt-free sweet treat.", imageSrc: "http://img.b2bpic.net/free-photo/healthy-oatmeal-cookies-milks-wooden-table_123827-32964.jpg" },
{ title: "Healthy BLT Chicken Salad", description: "Balanced and filling lunch.", imageSrc: "http://img.b2bpic.net/free-photo/fresh-healthy-meat-vegetables-salad-wooden-table_482257-34234.jpg" },
{ title: "Breakfast Bowls", description: "Balanced start to your day.", imageSrc: "http://img.b2bpic.net/free-photo/morning-portrait-smiling-woman-eating-her-breakfast-holding-spoon-having-cereals-with-milk_1258-203865.jpg" },
{ title: "Green Nutrient Drink", description: "Energy-packed healthy drink.", imageSrc: "http://img.b2bpic.net/free-photo/still-life-tasty-summer-smoothie_23-2148197873.jpg" },
{ title: "Homemade Hummus Dips", description: "Perfect healthy snacks.", imageSrc: "http://img.b2bpic.net/free-photo/colorful-tasty-hummus-with-ingredients_23-2149401919.jpg" }
{ title: "Makarna Salatası", description: "Şimdiye kadarki en iyi taze makarna salatası.", imageSrc: "http://img.b2bpic.net/free-photo/top-view-colored-bell-peppers-cutting-board-with-raw-pasta-knife-turquoise-surface_141793-18396.jpg" },
{ title: "Sağlıklı Hamburger", description: "Klasik bir yemeğin daha sağlıklı hali.", imageSrc: "http://img.b2bpic.net/free-photo/half-cheeseburger-with-tomatoes-salad_23-2148314191.jpg" },
{ title: "Tam Buğdaylı Kurabiye", description: "Suçluluk hissettirmeyen tatlı kaçamağı.", imageSrc: "http://img.b2bpic.net/free-photo/healthy-oatmeal-cookies-milks-wooden-table_123827-32964.jpg" },
{ title: "Sağlıklı Tavuk Salatası", description: "Dengeli ve doyurucu bir öğle yemeği.", imageSrc: "http://img.b2bpic.net/free-photo/fresh-healthy-meat-vegetables-salad-wooden-table_482257-34234.jpg" },
{ title: "Kahvaltı Kaseleri", description: "Güne dengeli bir başlangıç.", imageSrc: "http://img.b2bpic.net/free-photo/morning-portrait-smiling-woman-eating-her-breakfast-holding-spoon-having-cereals-with-milk_1258-203865.jpg" },
{ title: "Yeşil Besin İçeceği", description: "Enerji dolu sağlıklı içecek.", imageSrc: "http://img.b2bpic.net/free-photo/still-life-tasty-summer-smoothie_23-2148197873.jpg" },
{ title: "Ev Yapımı Humus", description: "Mükemmel sağlıklı atıştırmalıklar.", imageSrc: "http://img.b2bpic.net/free-photo/colorful-tasty-hummus-with-ingredients_23-2149401919.jpg" }
]}
/>
</SectionErrorBoundary>
@@ -53,15 +53,15 @@ export default function HomePage() {
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialOverlayCards
tag="Community"
title="What Readers Are Saying"
description="Join our community and start feeling your best."
tag="Topluluk"
title="Okuyucularımız Ne Diyor"
description="Topluluğumuza katılın ve en iyi halinizi hissetmeye başlayın."
testimonials={[
{ name: "Sarah J.", role: "Reader", company: "Community", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/sportswoman-smiling-listening-music_23-2147600806.jpg" },
{ name: "Mike D.", role: "Reader", company: "Community", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/happy-mature-businessman-showing-thumb-up_1262-3024.jpg" },
{ name: "Elena R.", role: "Reader", company: "Community", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/vertical-portrait-young-good-looking-cheerful-dark-skinned-africal-female-student-with-wavy-hair-blue-shirt-sitting-coffee-shop-drinking-latte-smiling-looking-camera-with-happy-rela_176420-12401.jpg" },
{ name: "David K.", role: "Reader", company: "Community", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/young-beautiful-woman-sporting-suit-after-workout-yoga_1153-6140.jpg" },
{ name: "Jamie L.", role: "Reader", company: "Community", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/healthy-fitness-concept-beautiful-american-african-lady-fitness-clothes-diet-eating-fresh-salad-isolated-white-background_1258-105787.jpg" }
{ name: "Sarah J.", role: "Okuyucu", company: "Topluluk", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/sportswoman-smiling-listening-music_23-2147600806.jpg" },
{ name: "Mike D.", role: "Okuyucu", company: "Topluluk", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/happy-mature-businessman-showing-thumb-up_1262-3024.jpg" },
{ name: "Elena R.", role: "Okuyucu", company: "Topluluk", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/vertical-portrait-young-good-looking-cheerful-dark-skinned-africal-female-student-with-wavy-hair-blue-shirt-sitting-coffee-shop-drinking-latte-smiling-looking-camera-with-happy-rela_176420-12401.jpg" },
{ name: "David K.", role: "Okuyucu", company: "Topluluk", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/young-beautiful-woman-sporting-suit-after-workout-yoga_1153-6140.jpg" },
{ name: "Jamie L.", role: "Okuyucu", company: "Topluluk", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/healthy-fitness-concept-beautiful-american-african-lady-fitness-clothes-diet-eating-fresh-salad-isolated-white-background_1258-105787.jpg" }
]}
/>
</SectionErrorBoundary>
@@ -70,13 +70,13 @@ export default function HomePage() {
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSplitMedia
tag="Help"
title="Common Nutrition Questions"
description="Everything you need to know about starting your healthy eating journey."
tag="Yardım"
title="Sıkça Sorulan Beslenme Soruları"
description="Sağlıklı beslenme yolculuğunuza başlamak hakkında bilmeniz gereken her şey."
items={[
{ question: "What is your approach to nutrition?", answer: "I believe in balance, not restriction, focusing on wholesome food." },
{ question: "Are your recipes gluten-free?", answer: "Many are, or offer simple modifications for gluten-free diets." },
{ question: "How often do you post recipes?", answer: "I aim to share new balanced recipes every week." }
{ question: "Beslenme yaklaşımınız nedir?", answer: "Kısıtlamaya değil dengeye inanıyorum, sağlıklı gıdalara odaklanıyorum." },
{ question: "Tarifleriniz glutensiz mi?", answer: "Birçoğu öyle veya glutensiz diyetler için basit değişiklikler sunuyor." },
{ question: "Ne sıklıkla tarif paylaşıyorsunuz?", answer: "Her hafta yeni dengeli tarifler paylaşmayı hedefliyorum." }
]}
imageSrc="http://img.b2bpic.net/free-photo/woman-cuts-cabbage-cucumbers-wooden-board-closeup_169016-50022.jpg"
/>
@@ -86,10 +86,10 @@ export default function HomePage() {
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Connect"
text="Have a media inquiry or general nutrition question? I'd love to hear from you."
primaryButton={{ text: "Contact Me", href: "#" }}
secondaryButton={{ text: "Shop Favorites", href: "#" }}
tag="İletişim"
text="Medya ile ilgili bir sorunuz veya genel bir beslenme sorunuz mu var? Sizden haber almayı çok isterim."
primaryButton={{ text: "Benimle İletişime Geçin", href: "mailto:merhaba@ornek.com" }}
secondaryButton={{ text: "Ürünleri İncele", href: "/products" }}
/>
</SectionErrorBoundary>
</div>
@@ -97,13 +97,13 @@ export default function HomePage() {
<div id="footer" data-section="footer">
<SectionErrorBoundary name="footer">
<FooterSimpleCard
brand="Jamie's Nutrition"
brand="Jamie Beslenme"
columns={[
{ title: "Navigation", items: [{ label: "About", href: "#" }, { label: "Recipes", href: "#" }] },
{ title: "Resources", items: [{ label: "Handbooks", href: "#" }, { label: "Shop Favorites", href: "#" }] }
{ title: "Menü", items: [{ label: "Hakkımda", href: "#about" }, { label: "Tarifler", href: "#recipes" }] },
{ title: "Kaynaklar", items: [{ label: "El Kitapları", href: "/products" }, { label: "Favori Ürünler", href: "/products" }] }
]}
copyright="© 2024 Jamie's Nutrition. All rights reserved."
links={[{ label: "Privacy Policy", href: "#" }]}
copyright="© 2024 Jamie Beslenme. Tüm hakları saklıdır."
links={[{ label: "Gizlilik Politikası", href: "#" }]}
/>
</SectionErrorBoundary>
</div>

View File

@@ -0,0 +1,18 @@
import Button from "@/components/ui/Button";
import HeroBackgroundSlot from "@/components/ui/HeroBackgroundSlot";
import TextAnimation from "@/components/ui/TextAnimation";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
import ScrollReveal from "@/components/ui/ScrollReveal";
import AvatarGroup from "@/components/ui/AvatarGroup";
import { ArrowUpRight, Loader2 } from "lucide-react";
import GridOrCarousel from "@/components/ui/GridOrCarousel";
import useProducts from "@/hooks/useProducts";
export default function ProductsPage() {
return (
<>
<div data-webild-section="HeroBillboard"><section aria-label="Hero section" className="relative pt-25 pb-20 md:pt-30"><HeroBackgroundSlot /><div className="flex flex-col gap-12 md:gap-15 w-content-width mx-auto"><div className="flex flex-col items-center gap-3 text-center"><AvatarGroup avatarsSrc={["https://img.freepik.com/free-photo/portrait-young-woman-smiling-isolated_23-2149158610.jpg","https://img.freepik.com/free-photo/handsome-young-man-with-new-stylish-haircut_176420-19637.jpg","https://img.freepik.com/free-photo/young-beautiful-woman-pink-warm-sweater-natural-look-smiling-portrait-isolated-long-hair_285396-896.jpg"]} label="10+ yıllık deneyim" className="mb-1" /><TextAnimation text="Ürünler" variant="slide-up" gradientText={true} tag="h1" className="md:max-w-8/10 text-7xl 2xl:text-8xl leading-[1.15] font-semibold text-center text-balance" /><TextAnimation text="Sağlıklı beslenmeyi günlük hayatınıza pratik bir şekilde entegre etmenize yardımcı olacak, özenle seçilmiş favori ürünlerim." variant="slide-up" gradientText={false} tag="p" className="md:max-w-7/10 text-lg md:text-xl leading-snug text-balance" /><div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3"><Button text="Tümünü Gör" href="#all-products" variant="primary" /><Button text="Tariflere Göz At" href="/recipes" variant="secondary" animationDelay={0.1} /></div></div><ScrollReveal variant="fade-blur" delay={0.2} className="w-full p-2 xl:p-3 2xl:p-4 card rounded overflow-hidden"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/top-view-healthy-food-arrangement_23-2148890539.jpg" className="aspect-4/5 md:aspect-video" /></ScrollReveal></div></section></div>
<div data-webild-section="ProductMediaCards"><section aria-label="Products section" className="py-20"><div className="w-content-width mx-auto flex justify-center"><Loader2 className="size-8 animate-spin text-foreground" strokeWidth={1.5} /></div></section></div>
</>
);
}

View File

@@ -6,4 +6,5 @@ export interface Route {
export const routes: Route[] = [
{ path: '/', label: 'Home', pageFile: 'HomePage' },
{ path: '/products', label: 'Products', pageFile: 'ProductsPage' },
];