BÜYÜKDEDE        
      {   "name": "web-app",   "type": "module",   "version": "0.0.0",   "private": true,   "scripts": {     "dev": "vite",     "build": "node tools/generate-llms.js || true && vite build",     "preview": "vite preview"   },   "dependencies": {     "@emotion/is-prop-valid": "^1.2.1",     "@radix-ui/react-alert-dialog": "^1.0.5",     "@radix-ui/react-avatar": "^1.0.3",     "@radix-ui/react-checkbox": "^1.0.4",     "@radix-ui/react-dialog": "^1.0.5",     "@radix-ui/react-dropdown-menu": "^2.0.5",     "@radix-ui/react-label": "^2.0.2",     "@radix-ui/react-slider": "^1.1.2",     "@radix-ui/react-slot": "^1.0.2",     "@radix-ui/react-tabs": "^1.0.4",     "@radix-ui/react-toast": "^1.1.5",     "class-variance-authority": "^0.7.0",     "clsx": "^2.0.0",     "framer-motion": "^10.16.4",     "lucide-react": "^0.285.0",     "react": "^18.2.0",     "react-dom": "^18.2.0",     "react-helmet": "^6.1.0",     "tailwind-merge": "^1.14.0",     "tailwindcss-animate": "^1.0.7"   },   "devDependencies": {     "@babel/generator": "^7.27.0",     "@babel/parser": "^7.27.0",     "@babel/traverse": "^7.27.0",     "@babel/types": "^7.27.0",     "@types/node": "^20.8.3",     "@types/react": "^18.2.15",     "@types/react-dom": "^18.2.7",     "@vitejs/plugin-react": "^4.0.3",     "autoprefixer": "^10.4.16",     "eslint": "^8.57.1",     "eslint-config-react-app": "^7.0.1",     "postcss": "^8.4.31",     "tailwindcss": "^3.3.3",     "terser": "^5.39.0",     "vite": "^4.4.5"   } } export default {   plugins: {     tailwindcss: {},     autoprefixer: {},   }, }; import React, { useState, useEffect } from 'react'; import { Helmet } from 'react-helmet'; import { motion, AnimatePresence } from 'framer-motion'; import AgeVerification from '@/components/AgeVerification'; import Sidebar from '@/components/Sidebar'; import Hero from '@/components/Hero'; import ContentGallery from '@/components/ContentGallery'; import Footer from '@/components/Footer'; import { Toaster } from '@/components/ui/toaster'; import Header from '@/components/Header'; import { toast } from '@/components/ui/use-toast'; function App() {   const [isVerified, setIsVerified] = useState(false);   const [showAgeVerification, setShowAgeVerification] = useState(false);   const [pendingContent, setPendingContent] = useState(null);   const [selectedCategory, setSelectedCategory] = useState('all');   const [isSidebarOpen, setSidebarOpen] = useState(false);   useEffect(() => {     const verified = localStorage.getItem('ageVerified');     if (verified === 'true') {       setIsVerified(true);     }   }, []);   const handleAgeVerificationSuccess = () => {     setIsVerified(true);     localStorage.setItem('ageVerified', 'true');     setShowAgeVerification(false);     if (pendingContent) {       toast({         title: "✅ Doğrulama Başarılı!",         description: Şimdi "${pendingContent.title}" içeriğini izleyebilirsiniz.,       });       setPendingContent(null);     }   };   const requestAgeVerification = (contentItem) => {     if (!isVerified) {       setPendingContent(contentItem);       setShowAgeVerification(true);     } else {       toast({         title: "🚧 Content Viewer Coming Soon!",         description: "This feature isn't implemented yet—but don't worry! You can request it in your next prompt! 🚀",       });     }   };   const websiteSchema = {     "@context": "https://schema.org",     "@type": "WebSite",     "name": "Büyükdede",     "url": "https://büyükdede.com",     "description": "Büyükdede, en yeni ve en popüler içerikleri bulabileceğiniz, yüksek kaliteli ve özel bir içerik platformudur.",     "inLanguage": "tr-TR",     "publisher": {       "@type": "Organization",       "name": "Büyükdede"     }   };   return (     <>                       Büyükdede - Kaliteli İçerik Platformu                                                                                                                                                                                                  
                  {showAgeVerification && (             setShowAgeVerification(false)}             />           )}                
                   
           
setSidebarOpen(!isSidebarOpen)} />            
                                       
           
         
       
                     
      ); } export default App; import React, { useState } from 'react'; import { motion } from 'framer-motion'; import { Shield, Calendar, X } from 'lucide-react'; import { Button } from '@/components/ui/button'; const AgeVerification = ({ onVerify, onCancel }) => {   const [birthDate, setBirthDate] = useState('');   const [error, setError] = useState('');   const handleVerification = () => {     if (!birthDate) {       setError('Lütfen doğum tarihinizi girin');       return;     }     const birth = new Date(birthDate);     const today = new Date();     let age = today.getFullYear() - birth.getFullYear();     const monthDiff = today.getMonth() - birth.getMonth();         if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birth.getDate())) {       age--;     }     if (age >= 18) {       onVerify();     } else {       setError('Bu içeriğe erişmek için 18 yaşında veya daha büyük olmalısınız');     }   };   return (                  
                                         

Yaş Doğrulaması Gerekiyor

         

            Bu web sitesi yetişkinlere yönelik içerik barındırmaktadır. Devam etmek için 18 yaşında veya daha büyük olmalısınız.          

       
       
         
                        {                 setBirthDate(e.target.value);                 setError('');               }}               className="w-full px-4 py-3 bg-gray-800/50 border border-gray-700 rounded-lg text-white placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"               max={new Date().toISOString().split('T')[0]}             />          
          {error && (                                         {error}                       )}          
                                 
       
       

          Devam ederek, yasal yaşta olduğunuzu ve yetişkinlere yönelik içeriği görüntülemeyi kabul ettiğinizi onaylarsınız.        

     
   
  ); }; export default AgeVerification; import React from 'react'; import { motion } from 'framer-motion'; const CallToAction = () => {   return (           Let's turn your ideas into reality.       ); }; export default CallToAction; import React from 'react'; import { motion } from 'framer-motion'; import { Tag } from 'lucide-react'; const categories = [   { id: 'onlyfans', name: 'OnlyFans' },   { id: 'turk', name: 'Türk' },   { id: 'turbanli', name: 'Türbanlı' },   { id: 'altyazili', name: 'Türkçe Altyazılı' },   { id: 'amateur', name: 'Amatör' },   { id: 'anal', name: 'Anal' },   { id: 'bbw', name: 'Büyük Beden' },   { id: 'blonde', name: 'Sarışın' },   { id: 'brunette', name: 'Esmer' },   { id: 'bdsm', name: 'BDSM' },   { id: 'couples', name: 'Çiftler' },   { id: 'ebony', name: 'Esmer Tenli' },   { id: 'fetish', name: 'Fetiş' },   { id: 'lesbian', name: 'Lezbiyen' },   { id: 'mature', name: 'Olgun' },   { id: 'solo', name: 'Solo' },   { id: 'teen', name: 'Genç (18+)' },   { id: 'threesome', name: 'Üçlü' },   { id: 'photos', name: 'Fotoğraflar' },   { id: 'videos', name: 'Videolar' }, ]; const CategoryBrowser = ({ onSelectCategory }) => {   const handleCategoryClick = (categoryId) => {     onSelectCategory(categoryId);     document.getElementById('gallery')?.scrollIntoView({ behavior: 'smooth' });   };   return (    
     
                 

            Kategorilere Göz At          

         

            Farklı kategorilerimizi keşfederek aradığınızı kolayca bulun.          

       
                  {categories.map((category, index) => (             handleCategoryClick(category.id)}               initial={{ opacity: 0, y: 20 }}               whileInView={{ opacity: 1, y: 0 }}               transition={{ duration: 0.5, delay: index * 0.05 }}               whileHover={{ scale: 1.05, y: -2 }}               className="flex items-center bg-gray-800/50 border border-gray-700 text-gray-200 hover:bg-blue-500/20 hover:text-white hover:border-blue-500 rounded-full px-4 py-2 text-sm font-medium transition-all"             >                             {category.name}                       ))}              
   
  ); }; export default CategoryBrowser; import React, { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { Filter, Grid, List, Heart, Eye, Clock, PlayCircle } from 'lucide-react'; import { Button } from '@/components/ui/button'; const allContentItems = [   { id: 1, title: 'Artistic Portrait Series', categories: ['photos', 'solo', 'brunette'], type: 'Photo Set', duration: '15 photos', views: '2.1k', likes: 89 },   { id: 2, title: 'Intimate Moments', categories: ['videos', 'couples', 'anal'], type: 'Video', duration: '12:34', views: '5.3k', likes: 156 },   { id: 3, title: 'Sensual Photography', categories: ['photos', 'lesbian', 'blonde'], type: 'Photo Set', duration: '22 photos', views: '3.7k', likes: 124 },   { id: 4, title: 'Daring Fetish Scene', categories: ['videos', 'fetish', 'bdsm'], type: 'Video', duration: '15:02', views: '8.9k', likes: 267 },   { id: 5, title: 'Behind the Scenes', categories: ['videos', 'amateur'], type: 'Video', duration: '8:21', views: '1.8k', likes: 73 },   { id: 6, title: 'Glamour Shots', categories: ['photos', 'blonde', 'solo'], type: 'Photo Set', duration: '18 photos', views: '4.2k', likes: 189 },   { id: 7, title: 'Passionate Ebony Couple', categories: ['videos', 'ebony', 'couples'], type: 'Video', duration: '11:45', views: '6.1k', likes: 210 },   { id: 8, title: 'Mature Beauty', categories: ['photos', 'mature', 'solo'], type: 'Photo Set', duration: '25 photos', views: '3.9k', likes: 150 },   { id: 9, title: 'Teen Spirit', categories: ['videos', 'teen', 'amateur'], type: 'Video', duration: '9:30', views: '7.5k', likes: 301 },   { id: 10, 'title': 'BBW Fun', categories: ['videos', 'bbw', 'solo'], type: 'Video', duration: '14:11', views: '4.8k', likes: 199 },   { id: 11, 'title': 'Wild Threesome', categories: ['videos', 'threesome', 'brunette', 'blonde'], type: 'Video', duration: '22:00', views: '10.2k', likes: 450 },   { id: 12, 'title': 'BDSM Exploration', categories: ['photos', 'bdsm', 'fetish'], type: 'Photo Set', duration: '30 photos', views: '5.5k', likes: 230 }, ]; const ContentGallery = ({ selectedCategory, onSelectCategory, requestAgeVerification }) => {   const quickFilters = [     { id: 'all', name: 'Tümü' },     { id: 'videos', name: 'Videolar' },     { id: 'photos', name: 'Fotoğraflar' },     { id: 'popular', name: 'Popüler' },   ];   const filteredContent = selectedCategory === 'all' || selectedCategory === 'popular'     ? [...allContentItems].sort((a, b) => selectedCategory === 'popular' ? b.likes - a.likes : a.id - b.id)     : allContentItems.filter(item => item.categories.includes(selectedCategory));   return (       ); }; export default ContentGallery; import React from 'react'; import { Film } from 'lucide-react'; import { toast } from '@/components/ui/use-toast'; const Footer = () => {   const handleLinkClick = (linkName) => {     toast({       title: "🚧 Page Coming Soon!",       description: "This feature isn't implemented yet—but don't worry! You can request it in your next prompt! 🚀",     });   };   const handleAgeVerificationReset = () => {     localStorage.removeItem('ageVerified');     window.location.reload();   };   return (       ); }; export default Footer; import React from 'react'; import { motion } from 'framer-motion'; import { Menu, Search, User } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { toast } from '@/components/ui/use-toast'; const Header = ({ onMenuClick }) => {   const handleFeatureClick = (feature) => {     toast({       title: "🚧 Feature Coming Soon!",       description: "This feature isn't implemented yet—but don't worry! You can request it in your next prompt! 🚀",     });   };   return (    
     
       
                   
                                 
       
     
   
  ); }; export default Header; import React from 'react'; import { motion } from 'framer-motion'; import { Search, PlayCircle } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { toast } from '@/components/ui/use-toast'; const Hero = () => {   const handleSearch = (e) => {     e.preventDefault();     toast({       title: "🚧 Search Coming Soon!",       description: "This feature isn't implemented yet—but don't worry! You can request it in your next prompt! 🚀",     });   };   return (    
     
        Abstract background with blue and purple lights        
       
     
     
                 

            Binlerce Videoyu Keşfet          

         

            Herkese İyi 31'ler Dilerim          

       
                 
                                 
       
     
   
  ); }; export default Hero; import React from 'react'; const HeroImage = () => {   return (    
      Hostinger Horizons    
  ); }; export default HeroImage; import React from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { Film, Tag, X } from 'lucide-react'; const categories = [   { id: 'all', name: 'Tümü' },   { id: 'popular', name: 'Popüler' },   { id: 'onlyfans', name: 'OnlyFans' },   { id: 'turk', name: 'Türk' },   { id: 'turbanli', name: 'Türbanlı' },   { id: 'altyazili', name: 'Türkçe Altyazılı' },   { id: 'amateur', name: 'Amatör' },   { id: 'anal', name: 'Anal' },   { id: 'bbw', name: 'Büyük Beden' },   { id: 'blonde', name: 'Sarışın' },   { id: 'brunette', name: 'Esmer' },   { id: 'bdsm', name: 'BDSM' },   { id: 'couples', name: 'Çiftler' },   { id: 'ebony', name: 'Esmer Tenli' },   { id: 'fetish', name: 'Fetiş' },   { id: 'lesbian', name: 'Lezbiyen' },   { id: 'mature', name: 'Olgun' },   { id: 'solo', name: 'Solo' },   { id: 'teen', name: 'Genç (18+)' },   { id: 'threesome', name: 'Üçlü' },   { id: 'photos', name: 'Fotoğraflar' },   { id: 'videos', name: 'Videolar' }, ]; const Sidebar = ({ selectedCategory, onSelectCategory, isSidebarOpen, setSidebarOpen }) => {   const handleCategoryClick = (categoryId) => {     onSelectCategory(categoryId);     if (window.innerWidth < 1024) {       setSidebarOpen(false);     }     document.getElementById('gallery')?.scrollIntoView({ behavior: 'smooth' });   };   const sidebarVariants = {     open: { x: 0 },     closed: { x: "-100%" },   };   const SidebarContent = () => (    
     
       
                                BÜYÜKDEDE                  
             
         
  );   return (     <>      
             
              {isSidebarOpen && (           <>             setSidebarOpen(false)}               className="lg:hidden fixed inset-0 bg-black/60 z-40"             />                                                         )}             ); }; export default Sidebar; Bursalı Patron, [18.11.2025 17:48] import React from 'react'; import { motion } from 'framer-motion'; const WelcomeMessage = () => {   return (           Hello there! I'm Horizons, your AI coding companion.       I'm here to help you build amazing web application!       ); }; export default WelcomeMessage; import { cn } from '@/lib/utils'; import { Slot } from '@radix-ui/react-slot'; import { cva } from 'class-variance-authority'; import React from 'react'; const buttonVariants = cva(   'inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',   {     variants: {       variant: {         default: 'bg-primary text-primary-foreground hover:bg-primary/90',         destructive:           'bg-destructive text-destructive-foreground hover:bg-destructive/90',         outline:           'border border-input bg-background hover:bg-accent hover:text-accent-foreground',         secondary:           'bg-secondary text-secondary-foreground hover:bg-secondary/80',         ghost: 'hover:bg-accent hover:text-accent-foreground',         link: 'text-primary underline-offset-4 hover:underline',       },       size: {         default: 'h-10 px-4 py-2',         sm: 'h-9 rounded-md px-3',         lg: 'h-11 rounded-md px-8',         icon: 'h-10 w-10',       },     },     defaultVariants: {       variant: 'default',       size: 'default',     },   }, ); const Button = React.forwardRef(({ className, variant, size, asChild = false, ...props }, ref) => {   const Comp = asChild ? Slot : 'button';   return (       ); }); Button.displayName = 'Button'; export { Button, buttonVariants }; import { cn } from '@/lib/utils'; import * as ToastPrimitives from '@radix-ui/react-toast'; import { cva } from 'class-variance-authority'; import { X } from 'lucide-react'; import React from 'react'; const ToastProvider = ToastPrimitives.Provider; const ToastViewport = React.forwardRef(({ className, ...props }, ref) => (   )); ToastViewport.displayName = ToastPrimitives.Viewport.displayName; const toastVariants = cva(   'data-[swipe=move]:transition-none group relative pointer-events-auto flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full data-[state=closed]:slide-out-to-right-full',   {     variants: {       variant: {         default: 'bg-background border',         destructive:           'group destructive border-destructive bg-destructive text-destructive-foreground',       },     },     defaultVariants: {       variant: 'default',     },   }, ); const Toast = React.forwardRef(({ className, variant, ...props }, ref) => {   return (       ); }); Toast.displayName = ToastPrimitives.Root.displayName; Bursalı Patron, [18.11.2025 17:48] const ToastAction = React.forwardRef(({ className, ...props }, ref) => (   )); ToastAction.displayName = ToastPrimitives.Action.displayName; const ToastClose = React.forwardRef(({ className, ...props }, ref) => (         )); ToastClose.displayName = ToastPrimitives.Close.displayName; const ToastTitle = React.forwardRef(({ className, ...props }, ref) => (   )); ToastTitle.displayName = ToastPrimitives.Title.displayName; const ToastDescription = React.forwardRef(({ className, ...props }, ref) => (   )); ToastDescription.displayName = ToastPrimitives.Description.displayName; export {   Toast,   ToastAction,   ToastClose,   ToastDescription,   ToastProvider,   ToastTitle,   ToastViewport, }; import {   Toast,   ToastClose,   ToastDescription,   ToastProvider,   ToastTitle,   ToastViewport, } from '@/components/ui/toast'; import { useToast } from '@/components/ui/use-toast'; import React from 'react'; export function Toaster() {   const { toasts } = useToast();   return (           {toasts.map(({ id, title, description, action, ...props }) => {         return (                      
              {title && {title}}               {description && (                 {description}               )}            
            {action}                      
        );       })}          
  ); } import { useState, useEffect } from "react" const TOAST_LIMIT = 1 let count = 0 function generateId() {   count = (count + 1) % Number.MAX_VALUE   return count.toString() } const toastStore = {   state: {     toasts: [],   },   listeners: [],     getState: () => toastStore.state,     setState: (nextState) => {     if (typeof nextState === 'function') {       toastStore.state = nextState(toastStore.state)     } else {       toastStore.state = { ...toastStore.state, ...nextState }     }         toastStore.listeners.forEach(listener => listener(toastStore.state))   },     subscribe: (listener) => {     toastStore.listeners.push(listener)     return () => {       toastStore.listeners = toastStore.listeners.filter(l => l !== listener)     }   } } export const toast = ({ ...props }) => {   const id = generateId()   const update = (props) =>     toastStore.setState((state) => ({       ...state,       toasts: state.toasts.map((t) =>         t.id === id ? { ...t, ...props } : t       ),     }))   const dismiss = () => toastStore.setState((state) => ({     ...state,     toasts: state.toasts.filter((t) => t.id !== id),   })) Bursalı Patron, [18.11.2025 17:48]   toastStore.setState((state) => ({     ...state,     toasts: [       { ...props, id, dismiss },       ...state.toasts,     ].slice(0, TOAST_LIMIT),   }))   return {     id,     dismiss,     update,   } } export function useToast() {   const [state, setState] = useState(toastStore.getState())     useEffect(() => {     const unsubscribe = toastStore.subscribe((state) => {       setState(state)     })         return unsubscribe   }, [])     useEffect(() => {     const timeouts = []     state.toasts.forEach((toast) => {       if (toast.duration === Infinity) {         return       }       const timeout = setTimeout(() => {         toast.dismiss()       }, toast.duration || 5000)       timeouts.push(timeout)     })     return () => {       timeouts.forEach((timeout) => clearTimeout(timeout))     }   }, [state.toasts])   return {     toast,     toasts: state.toasts,   } } Bursalı Patron, [18.11.2025 17:48] import { useState, useEffect } from "react" const TOAST_LIMIT = 1 let count = 0 function generateId() {   count = (count + 1) % Number.MAX_VALUE   return count.toString() } const toastStore = {   state: {     toasts: [],   },   listeners: [],     getState: () => toastStore.state,     setState: (nextState) => {     if (typeof nextState === 'function') {       toastStore.state = nextState(toastStore.state)     } else {       toastStore.state = { ...toastStore.state, ...nextState }     }         toastStore.listeners.forEach(listener => listener(toastStore.state))   },     subscribe: (listener) => {     toastStore.listeners.push(listener)     return () => {       toastStore.listeners = toastStore.listeners.filter(l => l !== listener)     }   } } export const toast = ({ ...props }) => {   const id = generateId()   const update = (props) =>     toastStore.setState((state) => ({       ...state,       toasts: state.toasts.map((t) =>         t.id === id ? { ...t, ...props } : t       ),     }))   const dismiss = () => toastStore.setState((state) => ({     ...state,     toasts: state.toasts.filter((t) => t.id !== id),   }))   toastStore.setState((state) => ({     ...state,     toasts: [       { ...props, id, dismiss },       ...state.toasts,     ].slice(0, TOAST_LIMIT),   }))   return {     id,     dismiss,     update,   } } export function useToast() {   const [state, setState] = useState(toastStore.getState())     useEffect(() => {     const unsubscribe = toastStore.subscribe((state) => {       setState(state)     })         return unsubscribe   }, [])     useEffect(() => {     const timeouts = []     state.toasts.forEach((toast) => {       if (toast.duration === Infinity) {         return       }       const timeout = setTimeout(() => {         toast.dismiss()       }, toast.duration || 5000)       timeouts.push(timeout)     })     return () => {       timeouts.forEach((timeout) => clearTimeout(timeout))     }   }, [state.toasts])   return {     toast,     toasts: state.toasts,   } } Bursalı Patron, [18.11.2025 17:51] import React, { createContext, useContext, useEffect, useState, useCallback, useMemo } from 'react'; import { supabase } from '@/lib/customSupabaseClient'; import { useToast } from '@/components/ui/use-toast'; const AuthContext = createContext(undefined); export const AuthProvider = ({ children }) => {   const { toast } = useToast();   const [user, setUser] = useState(null);   const [session, setSession] = useState(null);   const [loading, setLoading] = useState(true);   const handleSession = useCallback(async (session) => {     setSession(session);     setUser(session?.user ?? null);     setLoading(false);   }, []);   useEffect(() => {     const getSession = async () => {       const { data: { session } } = await supabase.auth.getSession();       handleSession(session);     };     getSession();     const { data: { subscription } } = supabase.auth.onAuthStateChange(       async (event, session) => {         handleSession(session);       }     );     return () => subscription.unsubscribe();   }, [handleSession]);   const signUp = useCallback(async (email, password, options) => {     const { error } = await supabase.auth.signUp({       email,       password,       options,     });     if (error) {       toast({         variant: "destructive",         title: "Sign up Failed",         description: error.message "Something went wrong",       });     }     return { error };   }, [toast]);   const signIn = useCallback(async (email, password) => {     const { error } = await supabase.auth.signInWithPassword({       email,       password,     });     if (error) {       toast({         variant: "destructive",         title: "Sign in Failed",         description: error.message "Something went wrong",       });     }     return { error };   }, [toast]);   const signOut = useCallback(async () => {     const { error } = await supabase.auth.signOut();     if (error) {       toast({         variant: "destructive",         title: "Sign out Failed",         description: error.message || "Something went wrong",       });     }     return { error };   }, [toast]);   const value = useMemo(() => ({     user,     session,     loading,     signUp,     signIn,     signOut,   }), [user, session, loading, signUp, signIn, signOut]);   return {children}; }; export const useAuth = () => {   const context = useContext(AuthContext);   if (context === undefined) {     throw new Error('useAuth must be used within an AuthProvider');   }   return context; }; @tailwind base; @tailwind components; @tailwind utilities; @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap'); :root {   --background: 222.2 84% 4.9%;   --foreground: 210 40% 98%;   --card: 222.2 84% 4.9%;   --card-foreground: 210 40% 98%;   --popover: 222.2 84% 4.9%;   --popover-foreground: 210 40% 98%;   --primary: 217.2 91.2% 59.8%;   --primary-foreground: 222.2 84% 4.9%;   --secondary: 217.2 32.6% 17.5%;   --secondary-foreground: 210 40% 98%;   --muted: 217.2 32.6% 17.5%;   --muted-foreground: 215 20.2% 65.1%;   --accent: 217.2 32.6% 17.5%;   --accent-foreground: 210 40% 98%;   --destructive: 0 62.8% 30.6%;   --destructive-foreground: 210 40% 98%;   --border: 217.2 32.6% 17.5%;   --input: 217.2 32.6% 17.5%;   --ring: 224.3 76.3% 94.1%; } * {   border-color: hsl(var(--border)); } body {   font-family: 'Inter', sans-serif;   background-color: #0a0a0a;   min-height: 100vh;   color: #e5e5e5;   overflow-x: hidden; } html {   scroll-behavior: smooth; } /* Custom scrollbar */ ::-webkit-scrollbar {   width: 8px; } ::-webkit-scrollbar-track {   background: #1a1a1a; } ::-webkit-scrollbar-thumb {   background: #007bff;   border-radius: 4px; } ::-webkit-scrollbar-thumb:hover {   background: #0056b3; } /* Age verification blur effect */ .age-blur {   filter: blur(20px);   pointer-events: none;   user-select: none; } Bursalı Patron, [18.11.2025 17:51] /* Content protection */ .no-select {   -webkit-user-select: none;   -moz-user-select: none;   -ms-user-select: none;   user-select: none;   -webkit-touch-callout: none;   -webkit-tap-highlight-color: transparent; } /* Disable right-click context menu */ .no-context {   -webkit-touch-callout: none;   -webkit-user-select: none;   -khtml-user-select: none;   -moz-user-select: none;   -ms-user-select: none;   user-select: none; } import { clsx } from 'clsx'; import { twMerge } from 'tailwind-merge'; export function cn(...inputs) {   return twMerge(clsx(inputs)); } import React from 'react'; import ReactDOM from 'react-dom/client'; import App from '@/App'; import '@/index.css'; ReactDOM.createRoot(document.getElementById('root')).render(         ); Bursalı Patron, [18.11.2025 17:51] / @type {import('tailwindcss').Config} */ module.exports = {   darkMode: ['class'],   content: [     './pages//*.{js,jsx}',     './components//*.{js,jsx}',     './app//*.{js,jsx}',     './src/**/*.{js,jsx}',   ],   theme: {     container: {       center: true,       padding: '2rem',       screens: {         '2xl': '1400px',       },     },     extend: {       colors: {         border: 'hsl(var(--border))',         input: 'hsl(var(--input))',         ring: 'hsl(var(--ring))',         background: 'hsl(var(--background))',         foreground: 'hsl(var(--foreground))',         primary: {           DEFAULT: 'hsl(var(--primary))',           foreground: 'hsl(var(--primary-foreground))',         },         secondary: {           DEFAULT: 'hsl(var(--secondary))',           foreground: 'hsl(var(--secondary-foreground))',         },         destructive: {           DEFAULT: 'hsl(var(--destructive))',           foreground: 'hsl(var(--destructive-foreground))',         },         muted: {           DEFAULT: 'hsl(var(--muted))',           foreground: 'hsl(var(--muted-foreground))',         },         accent: {           DEFAULT: 'hsl(var(--accent))',           foreground: 'hsl(var(--accent-foreground))',         },         popover: {           DEFAULT: 'hsl(var(--popover))',           foreground: 'hsl(var(--popover-foreground))',         },         card: {           DEFAULT: 'hsl(var(--card))',           foreground: 'hsl(var(--card-foreground))',         },       },       borderRadius: {         lg: 'var(--radius)',         md: 'calc(var(--radius) - 2px)',         sm: 'calc(var(--radius) - 4px)',       },       keyframes: {         'accordion-down': {           from: { height: 0 },           to: { height: 'var(--radix-accordion-content-height)' },         },         'accordion-up': {           from: { height: 'var(--radix-accordion-content-height)' },           to: { height: 0 },         },       },       animation: {         'accordion-down': 'accordion-down 0.2s ease-out',         'accordion-up': 'accordion-up 0.2s ease-out',       },     },   },   plugins: [require('tailwindcss-animate')], }; BÜYÜKDEDE Tüm içeriğin telif hakları site sahibine aittir. İzinsiz paylaşılması ve kopyalanması yasaktır. Hakkımızda 2025 yılından bu yana içerik performansı, gizlilik ve yasal uygunluk önceliğiyle hizmet veriyoruz. Hedefimiz, her cihazda hızlı açılan sayfalar, dengeli reklam deneyimi ve düzenli içerik akışı sağlamaktır. Telif Hakları İlgili Yasa: MADDE 5 (1) Yer Sağlayıcı, yer sağladığı içeriği kontrol etmek veya hukuka aykırı bir faaliyetin söz konusu olup olmadığını araştırmakla yükümlü değildir. (2) Yer Sağlayıcı, yer sağladığı hukuka aykırı içerikten, ceza sorumluluğu ile ilgili hükümler saklı kalmak kaydıyla, bu Kanunun 8 inci ve 9 uncu maddelerine göre haberdar edilmesi halinde ve teknik olarak imkan bulunduğu ölçüde hukuka aykırı içeriği yayından kaldırmakla yükümlüdür. Hukuksal büyükdede.com 5651 sayılı yasanın 5.maddesinde tanımlanan yer sağlayıcı olarak hizmet vermektedir. İlgili yasaya göre, web site yönetiminin hukuka aykırı içerikleri kontrol etme yükümlülüğü yoktur.Bu sebeple, sitemiz uyar ve kaldır prensibini benimsemiştir. Telif hakkına konu olan eserlerin yasal olmayan bir biçimde paylaşıldığını ve yasal haklarının çiğnendiğini düşünen hak sahipleri veya meslek birlikleri, dede0134@protonmail.com mail adresinden bize ulaşabilirler. Buraya ulaşan talep ve şikayetler hukuksal olarak incelenecek, şikayet yerinde görüldüğü takdirde, ihlal olduğu düşünülen içerikler sitemizden kaldırılacaktır. Kullanım Şartları Gizlilik Politikası Yaş Doğrulamasını Sıfırla © 2024 BÜYÜKDEDE. Tüm hakları saklıdır. Bu site 18 yaşından büyükler içindir. Sayfa bulunamadı – büyükdede

Page not found