From ac937b56389f176bc71d290651e038304e9ff95b Mon Sep 17 00:00:00 2001 From: VIDYANKSHINI Date: Tue, 31 Mar 2026 16:12:53 +0530 Subject: [PATCH] Add app directory structure and update components --- app/global.css | 173 ++++++++++++++++++ app/layout.tsx | 0 app/page.tsx | 0 components/natyasetu/artist-profile-modal.tsx | 49 ----- lib/auth-context.tsx | 6 +- lib/search-data.ts | 18 +- 6 files changed, 185 insertions(+), 61 deletions(-) create mode 100644 app/global.css create mode 100644 app/layout.tsx create mode 100644 app/page.tsx delete mode 100644 components/natyasetu/artist-profile-modal.tsx diff --git a/app/global.css b/app/global.css new file mode 100644 index 0000000..4b5777c --- /dev/null +++ b/app/global.css @@ -0,0 +1,173 @@ +@import 'tailwindcss'; +@import 'tw-animate-css'; + +@custom-variant dark (&:is(.dark *)); + +:root { + --background: oklch(0.985 0.002 65); + --foreground: oklch(0.18 0.03 25); + --card: oklch(1 0 0); + --card-foreground: oklch(0.18 0.03 25); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.18 0.03 25); + --primary: oklch(0.38 0.14 20); + --primary-foreground: oklch(0.98 0.005 60); + --secondary: oklch(0.72 0.11 50); + --secondary-foreground: oklch(0.18 0.03 25); + --muted: oklch(0.95 0.008 60); + --muted-foreground: oklch(0.48 0.02 30); + --accent: oklch(0.68 0.14 48); + --accent-foreground: oklch(0.18 0.03 25); + --destructive: oklch(0.577 0.245 27.325); + --destructive-foreground: oklch(0.577 0.245 27.325); + --border: oklch(0.90 0.015 55); + --input: oklch(0.96 0.008 60); + --ring: oklch(0.38 0.14 20); + --chart-1: oklch(0.38 0.14 20); + --chart-2: oklch(0.68 0.14 48); + --chart-3: oklch(0.72 0.11 50); + --chart-4: oklch(0.55 0.1 40); + --chart-5: oklch(0.45 0.08 30); + --radius: 0.75rem; + --sidebar: oklch(0.985 0.002 65); + --sidebar-foreground: oklch(0.18 0.03 25); + --sidebar-primary: oklch(0.38 0.14 20); + --sidebar-primary-foreground: oklch(0.98 0.005 60); + --sidebar-accent: oklch(0.95 0.008 60); + --sidebar-accent-foreground: oklch(0.18 0.03 25); + --sidebar-border: oklch(0.90 0.015 55); + --sidebar-ring: oklch(0.38 0.14 20); +} + +.dark { + --background: oklch(0.13 0.025 22); + --foreground: oklch(0.96 0.005 55); + --card: oklch(0.17 0.02 22); + --card-foreground: oklch(0.96 0.005 55); + --popover: oklch(0.17 0.02 22); + --popover-foreground: oklch(0.96 0.005 55); + --primary: oklch(0.72 0.11 50); + --primary-foreground: oklch(0.13 0.025 22); + --secondary: oklch(0.24 0.025 25); + --secondary-foreground: oklch(0.96 0.005 55); + --muted: oklch(0.22 0.025 25); + --muted-foreground: oklch(0.65 0.015 55); + --accent: oklch(0.68 0.14 48); + --accent-foreground: oklch(0.13 0.025 22); + --destructive: oklch(0.396 0.141 25.723); + --destructive-foreground: oklch(0.637 0.237 25.331); + --border: oklch(0.26 0.025 25); + --input: oklch(0.22 0.025 25); + --ring: oklch(0.72 0.11 50); + --chart-1: oklch(0.55 0.12 22); + --chart-2: oklch(0.72 0.11 50); + --chart-3: oklch(0.68 0.14 48); + --chart-4: oklch(0.55 0.1 40); + --chart-5: oklch(0.45 0.08 30); + --sidebar: oklch(0.15 0.025 22); + --sidebar-foreground: oklch(0.96 0.005 55); + --sidebar-primary: oklch(0.72 0.11 50); + --sidebar-primary-foreground: oklch(0.13 0.025 22); + --sidebar-accent: oklch(0.22 0.025 25); + --sidebar-accent-foreground: oklch(0.96 0.005 55); + --sidebar-border: oklch(0.26 0.025 25); + --sidebar-ring: oklch(0.72 0.11 50); +} + +@theme inline { + --font-sans: var(--font-sans), 'Inter', system-ui, sans-serif; + --font-serif: var(--font-serif), 'Playfair Display', Georgia, serif; + --font-mono: 'Geist Mono', 'Geist Mono Fallback'; + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} + +/* Custom Animations */ +@keyframes float { + 0%, 100% { transform: translateY(0); } + 50% { transform: translateY(-10px); } +} + +@keyframes glow { + 0%, 100% { opacity: 0.5; } + 50% { opacity: 1; } +} + +@keyframes shimmer { + 0% { background-position: -200% 0; } + 100% { background-position: 200% 0; } +} + +.animate-float { + animation: float 6s ease-in-out infinite; +} + +.animate-glow { + animation: glow 3s ease-in-out infinite; +} + +.animate-shimmer { + background: linear-gradient(90deg, transparent, rgba(255,255,255,0.1), transparent); + background-size: 200% 100%; + animation: shimmer 2s infinite; +} + +/* Smooth Scrolling */ +html { + scroll-behavior: smooth; +} + +/* Better focus states */ +:focus-visible { + outline: 2px solid var(--ring); + outline-offset: 2px; +} + +/* Selection styling */ +::selection { + background: oklch(0.38 0.14 20 / 0.3); + color: var(--foreground); +} diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..e69de29 diff --git a/app/page.tsx b/app/page.tsx new file mode 100644 index 0000000..e69de29 diff --git a/components/natyasetu/artist-profile-modal.tsx b/components/natyasetu/artist-profile-modal.tsx deleted file mode 100644 index 8ad65ca..0000000 --- a/components/natyasetu/artist-profile-modal.tsx +++ /dev/null @@ -1,49 +0,0 @@ -"use client" - -import { useState } from "react" -import { X, MapPin, Users, Star, Globe, Calendar, Award, Play, ExternalLink } from "lucide-react" -import { Button } from "@/components/ui/button" -import { Badge } from "@/components/ui/badge" -import { useAuth } from "@/lib/auth-context" -import type { Artist } from "@/lib/search-data" - -type ArtistProfileModalProps = { - artist: Artist | null - isOpen: boolean - onClose: () => void -} - -export function ArtistProfileModal({ artist, isOpen, onClose }: ArtistProfileModalProps) { - const { isAuthenticated, openAuthModal } = useAuth() - const [isFollowing, setIsFollowing] = useState(false) - - if (!isOpen || !artist) return null - - const handleFollow = () => { - if (!isAuthenticated) { - openAuthModal("signup") - return - } - setIsFollowing(!isFollowing) - } - - // Sample upcoming shows - const upcomingShows = [ - { title: "Natsamrat Revival", date: "15 Apr 2026", venue: "NCPA Mumbai" }, - { title: "New Production", date: "28 Apr 2026", venue: "Prithvi Theatre" }, - ] - - // Sample achievements - const achievements = [ - "Maharashtra State Drama Award 2024", - "Best Theatre Group - Zee Theatre Awards", - "Featured at National Theatre Festival", - ] - - return ( -
-
- {/* Modal content goes here */} -
-
- ) \ No newline at end of file diff --git a/lib/auth-context.tsx b/lib/auth-context.tsx index 06d1d3e..cc507f9 100644 --- a/lib/auth-context.tsx +++ b/lib/auth-context.tsx @@ -66,9 +66,9 @@ export function AuthProvider({ children }: { children: ReactNode }) { // Simulate Google login await new Promise((resolve) => setTimeout(resolve, 1000)) setUser({ - id: "google", - name: "Vidyankshini", - email: "vidyankshini@gmail.com", + id: "google-1", + name: "Theatre Lover", + email: "user@gmail.com", avatar: "https://api.dicebear.com/7.x/avataaars/svg?seed=google", }) setShowAuthModal(false) diff --git a/lib/search-data.ts b/lib/search-data.ts index 865b049..52d3090 100644 --- a/lib/search-data.ts +++ b/lib/search-data.ts @@ -43,16 +43,16 @@ export const events: Event[] = [ { id: 2, type: "event", - title: "Jar Tar Chi Goshta", - description: "A contemporary take on relationships and the 'ifs and buts' of life. A critically acclaimed modern Marathi drama.", - location: "Ram Krishna More Auditorium, Pune", + title: "Tughlaq", + description: "Girish Karnad's masterpiece exploring the complex character of Muhammad bin Tughlaq.", + location: "Ravindra Natya Mandir, Pune", city: "Pune", - date: "28 Mar 2026 onwards", - time: "Varies", - language: "Marathi", - genre: "Drama", - image: "https://images.unsplash.com/photo-1503095396549-807059418b0e?w=800&q=80", - price: "Rs. 400", + date: "18 Apr 2026", + time: "6:30 PM", + language: "Hindi", + genre: "Historical", + image: "https://images.unsplash.com/photo-1503095396549-807759245b35?w=800&q=80", + price: "Rs. 399", }, { id: 3,