import React, { useState, useEffect, useRef, useCallback } from 'react'; import QRCode from 'qrcode'; import jsqr from 'jsqr'; // Changed import statement to lowercase 'jsqr' // Custom Alert Modal Component const CustomAlert = ({ message, onClose }) => { if (!message) return null; return (

{message}

); }; // --- QRGeneratorTab Component --- const QRGeneratorTab = ({ content, setContent, errorLevel, setErrorLevel, qrColor, setQrColor, suggestIdeas, downloadQrCode, qrCanvasRef, isInputFocused, setIsInputFocused, currentThemeClasses, qrStyles, selectedStyleIndex, setSelectedStyleIndex, styleCanvasRefs, drawQrCode, suggestedIdea, showSuggestedIdea, setShowSuggestedIdea, downloadResolution, setDownloadResolution }) => { // Effect to generate QR code on the main canvas (Generator Tab) useEffect(() => { // Preview canvas is always 256x256 drawQrCode(qrCanvasRef.current, content, qrColor, errorLevel, 256); }, [content, qrColor, errorLevel, drawQrCode, qrCanvasRef]); // Effect to generate QR codes for style previews (Style Selection Panel) useEffect(() => { qrStyles.forEach((style, index) => { const canvas = styleCanvasRefs.current[index]; // Use a generic sample for style previews, not actual content // For style previews, the 'light' color should always be black for contrast with the style's fg color drawQrCode(canvas, "Sample", style.fg, 'H', 80, '#000000'); }); }, [qrStyles, drawQrCode, styleCanvasRefs]); return ( // Modified: Changed lg:items-stretch to lg:items-start to allow independent heights
{/* Left Panel: Input and Controls - Removed flex-grow as it's not needed with items-start */}
{/* Suggested Ideas Panel */} {showSuggestedIdea && suggestedIdea && (
setShowSuggestedIdea(!showSuggestedIdea)}>

{suggestedIdea}

)} setQrColor(e.target.value)} /> {/* New: Download Resolution Selector */}
{!content && (

Enter content to see QR preview

)}
{/* Right Panel: Style Selection - Increased max-h slightly to 800px */}
{/* This inner div needs to scroll if content overflows. flex-grow and overflow-y-auto */}
{qrStyles.map((style, index) => (
{ setSelectedStyleIndex(index); setQrColor(style.fg); }} > styleCanvasRefs.current[index] = el} width="80" height="80" className="rounded-lg"> {style.name}
))}
); }; // --- QRDecoderTab Component --- const QRDecoderTab = ({ decodedContent, setDecodedContent, isSummarizing, summarizeContent, showAlert, decodeQrCode, currentThemeClasses }) => { return ( // Added flex-grow to ensure it takes available vertical space

Drag & Drop QR Image Here

); }; // --- SettingsTab Component --- const SettingsTab = ({ currentTheme, setCurrentTheme, currentThemeClasses, themes }) => { return ( // Added flex-grow to ensure it takes available vertical space
); }; // --- Main App component --- const App = () => { const [activeTab, setActiveTab] = useState('generator'); const [content, setContent] = useState(''); const [errorLevel, setErrorLevel] = useState('L'); // Default QR color set to neon cyan const [qrColor, setQrColor] = useState('#00FFFF'); const [decodedContent, setDecodedContent] = useState(''); const [selectedStyleIndex, setSelectedStyleIndex] = useState(0); const [currentTheme, setCurrentTheme] = useState('dark'); const [isSummarizing, setIsSummarizing] = useState(false); const [suggestedIdea, setSuggestedIdea] = useState(''); const [showSuggestedIdea, setShowSuggestedIdea] = useState(false); const [alertMessage, setAlertMessage] = useState(null); const [isInputFocused, setIsInputFocused] = useState(false); const [downloadResolution, setDownloadResolution] = useState(512); // Suggested ideas now directly within App.jsx const [allSuggestedIdeas, setAllSuggestedIdeas] = useState([ "โค๏ธ๐Ÿ“ž My Girlfriend's Mobile Number", "โค๏ธ๐Ÿ‘ฉ My Girlfriend's Name", "โค๏ธ๐Ÿ  My Girlfriend's Address", "๐Ÿ ๐Ÿ“ My Home Address", "๐Ÿ“ž๐Ÿ“ฑ My Mobile Number", "๐Ÿ“งโœ‰๏ธ My Email Address", "๐ŸŒ๐Ÿ”— My Website URL", "๐Ÿ‘”๐Ÿ”— My LinkedIn Profile", "๐Ÿ’ญโœจ My Favorite Quote", "๐Ÿ“ก๐Ÿ”‘ Wi-Fi Network: MyHomeWiFi; Pass: MySecretPass", "๐Ÿ’ฐ๐Ÿ’ณ UPI ID: myname@bank", "๐ŸŽ‰๐Ÿ—“๏ธ Event: Birthday Party, Date: 2025-12-25, Location: My House", "๐Ÿ›๏ธ๐Ÿ›’ Product Link: https://www.google.com/search?q=example.com/product/xyz", "๐Ÿ—บ๏ธโžก๏ธ Directions: geo:34.0522,-118.2437?q=Los Angeles", "๐Ÿคซโœจ Secret Message: You are awesome!", "๐Ÿ“‡๐Ÿ’ผ My Business Card Info", "๐ŸŽจ๐Ÿ’ป Link to my Portfolio", "๐Ÿ‘จโ€๐Ÿ’ป๐Ÿ™ My GitHub Repository", "๐ŸŽถ๐ŸŽง My Favorite Song on Spotify", "๐Ÿคฒ๐Ÿ’– A Donation Link", "๐Ÿšจ๐Ÿ“ž Emergency Contact: John Doe, 9876543210", "๐Ÿฅ๐Ÿฉธ Medical Info: Blood Type O+, Allergies: Penicillin", "๐Ÿพ๐Ÿ†” Pet's Microchip ID: 1234567890", "๐Ÿ๐Ÿ“ Favorite Recipe: Pasta Carbonara Ingredients", "๐Ÿ“š๐Ÿ’ก Book Recommendation: 'Dune' by Frank Herbert", "๐ŸŽฌ๐Ÿฟ Movie to Watch: 'Inception'", "๐ŸŽฎ๐Ÿ†” Game ID: PlayerOne#1234", "โ‚ฟ๐Ÿ‘› Crypto Wallet Address (ETH): 0x...", "๐Ÿ–ผ๏ธ๐Ÿ”— NFT Collection Link", "๐Ÿ“œ๐Ÿ”— Smart Contract Address", "๐Ÿ—ณ๏ธ๐Ÿ’ก DAO Proposal Link", "๐Ÿ”—โœจ Web3 DApp URL", "๐Ÿ†”๐ŸŒ Decentralized Identity (DID)", "๐Ÿ”‘๐Ÿ”’ My Public Key", "๐Ÿ—„๏ธ๐Ÿ”— IPFS Hash of a Document", "โ›“๏ธโœ… Blockchain Transaction ID", "๐ŸŒŒ๐Ÿ“ Metaverse Coordinates: X:100, Y:200, Z:50", "๐Ÿ‘“๐Ÿ”— VR Experience Link", "๐Ÿ“ธโœจ AR Filter Link", "๐ŸŽจ๐ŸŒ Digital Art Gallery URL", "โœ…๐Ÿ—“๏ธ Event RSVP Link", "๐Ÿ“๐Ÿ’ก Feedback Form Link", "๐Ÿ“Šโ“ Survey Link", "๐Ÿ’ฌ๐Ÿค Customer Support Chat Link", "๐ŸŽโฌ‡๏ธ Download App Link (iOS)", "๐Ÿค–โฌ‡๏ธ Download App Link (Android)", "๐Ÿ“–๐Ÿ”ง Product Manual Link", "๐Ÿ“„๐Ÿ›ก๏ธ Warranty Information", "โ†ฉ๏ธ๐Ÿ“œ Return Policy URL", "๐Ÿข๐Ÿ“ž Company Contact Info", "๐Ÿ’ผโœ๏ธ Job Application Link", "๐Ÿ“„โฌ‡๏ธ Resume Download Link", "๐Ÿ—“๏ธ๐Ÿค Interview Schedule", "๐Ÿ“…๐ŸŽค Conference Agenda", "๐Ÿ—ฃ๏ธ๐Ÿ“„ Speaker Bio Link", "โœ๏ธ๐Ÿ’ก Workshop Registration", "๐Ÿฝ๏ธ๐Ÿ“œ Restaurant Menu", "๐Ÿฝ๏ธ๐Ÿ—“๏ธ Table Reservation Link", "๐Ÿ“ฆ๐Ÿšš Delivery Order Tracking", "๐ŸŽฅ๐Ÿณ Recipe Video Link", "๐Ÿ’ช๐Ÿ—“๏ธ Workout Plan", "๐Ÿฅ—๐Ÿ—“๏ธ Diet Plan", "โค๏ธโ€๐Ÿฉน๐Ÿ“Š Health Tracker Link", "๐Ÿšจ๐Ÿš‘ Emergency Services Number", "๐Ÿพ๐Ÿ” Lost Pet Poster Link", "๐Ÿ”Ž๐Ÿ“ž Found Item Contact", "๐Ÿ“š๐Ÿ’ณ Public Library Card Number", "๐Ÿ›๏ธ๐Ÿ–ผ๏ธ Museum Exhibit Info", "๐Ÿ—ฝ๐Ÿ—บ๏ธ Tourist Attraction Details", "๐Ÿ—“๏ธ๐ŸŽ‰ Local Event Calendar", "๐ŸšŒโฐ Public Transport Schedule", "๐Ÿ…ฟ๏ธ๐Ÿ“ Parking Spot Locator", "๐Ÿš—๐Ÿค Car Share Booking Link", "๐Ÿšฒ rent Bike Rental Info", "๐Ÿ›ด๐Ÿ”“ Scooter Share Unlock Code", "โšก๐Ÿ“ Charging Station Locator", "๐Ÿ”Œ๐Ÿš— Electric Vehicle Info", "โ™ป๏ธ๐Ÿ“ Recycling Center Address", "๐ŸŒฑ๐Ÿ—‘๏ธ Compost Drop-off Location", "๐Ÿ’ง๐Ÿ’ก Water Conservation Tips", "๐Ÿ’ก๐Ÿ’ฐ Energy Saving Advice", "๐Ÿค๐Ÿ’– Volunteer Opportunity", "๐ŸŽโค๏ธ Charity Donation Link", "๐Ÿง‘โ€๐ŸŒพ๐Ÿฅ• Community Garden Info", "๐Ÿฅ•๐Ÿ—“๏ธ Local Farmers Market Schedule", "๐ŸŽจโœ๏ธ Art Class Registration", "๐ŸŽถ๐Ÿ—“๏ธ Music Lesson Booking", "๐Ÿ’ƒ๐Ÿ—“๏ธ Dance Studio Schedule", "๐Ÿง˜โ€โ™€๏ธ๐Ÿ—“๏ธ Yoga Class Info", "๐Ÿ‹๏ธโ€โ™€๏ธ๐Ÿ—“๏ธ Fitness Class Booking", "โšฝโœ๏ธ Sports League Sign-up", "๐ŸŒณ๐Ÿ—บ๏ธ Outdoor Activity Guide", "โ›ฐ๏ธ๐Ÿ—บ๏ธ Hiking Trail Map", "๐Ÿ•๏ธ๐Ÿ—“๏ธ Camping Site Reservation", "๐ŸŽฃ๐Ÿ“œ Fishing License Info", "๐Ÿน๐Ÿ“œ Hunting License Info", "๐Ÿšค๐Ÿ“œ Boating Regulations", "โ›ท๏ธโ„๏ธ Ski Resort Conditions", "๐Ÿ‚โ„๏ธ Snowboarding Park Info", "๐Ÿ„โ€โ™€๏ธ๐ŸŒŠ Surf Report", "๐Ÿคฟ๐Ÿ  Scuba Diving Spot", "๐Ÿช‚๐Ÿ—“๏ธ Paragliding Booking", "๐ŸŽˆ๐Ÿ—“๏ธ Hot Air Balloon Ride", "๐Ÿช‚โœจ Skydiving Experience", "๐ŸŒฒ๐ŸŽข Zipline Adventure", "๐Ÿชข๐Ÿคธ Bungee Jumping Spot", "๐Ÿง—โ€โ™€๏ธ๐Ÿ“ Rock Climbing Gym", "๐Ÿ”๐Ÿ—“๏ธ Escape Room Booking", "๐ŸŽฒโ˜• Board Game Cafe", "๐Ÿ“š๐Ÿ—“๏ธ Book Club Meeting Details", "๐ŸŽค๐Ÿ“œ Poetry Slam Event", "๐ŸŽ™๏ธ๐Ÿ—“๏ธ Open Mic Night", "๐Ÿ˜‚๐ŸŽŸ๏ธ Comedy Show Tickets", "๐ŸŽญ๐Ÿ—“๏ธ Theater Play Schedule", "๐ŸŽถ๐ŸŽŸ๏ธ Concert Tickets", "๐ŸŽจ๐Ÿ—“๏ธ Art Exhibition Info", "๐Ÿ“ธ๐Ÿ’ก Photography Workshop", "๐Ÿณโœ๏ธ Cooking Class Registration", "๐Ÿฐ๐Ÿ“ Baking Recipe", "๐Ÿน๐Ÿ“ Cocktail Recipe", "๐Ÿท๐Ÿ—“๏ธ Wine Tasting Event", "๐Ÿบ๐Ÿญ Beer Brewery Tour", "โ˜•๐Ÿ’ณ Coffee Shop Loyalty Program", "๐Ÿ›๏ธ๐ŸŽจ Local Craft Market", "๐Ÿ›๏ธ๐Ÿ•ฐ๏ธ Vintage Store Address", "๐Ÿ‘•โ™ป๏ธ Thrift Shop Location", "๐Ÿบ๐Ÿ•ฐ๏ธ Antique Shop Info", "๐Ÿ’ฟ๐Ÿ“ Record Store Address", "๐Ÿ“š๐Ÿฆธ Comic Book Store", "๐ŸŽฒ๐Ÿ›๏ธ Board Game Store", "๐Ÿ› ๏ธ๐Ÿ›๏ธ Hobby Shop Inventory", "๐Ÿ”จ๐Ÿ’ก DIY Project Instructions", "๐Ÿง‘โ€๐ŸŒพ๐Ÿ’ก Gardening Tips", "๐Ÿชด๐Ÿ“– Plant Care Guide", "๐Ÿ’๐Ÿšš Flower Shop Delivery", "๐Ÿพโœ‚๏ธ Pet Grooming Appointment", "๐Ÿถ๐Ÿ“ž Veterinarian Contact", "๐Ÿพโค๏ธ Animal Shelter Donation", "๐Ÿ•๐ŸŒณ Dog Park Location", "๐Ÿˆโ˜• Cat Cafe Details", "๐Ÿฆ๐ŸŒณ Bird Watching Spot", "๐ŸฆŒ๐ŸŒณ Wildlife Sanctuary Info", "๐Ÿ ๐ŸŽŸ๏ธ Aquarium Tickets", "๐Ÿฆ๐ŸŽŸ๏ธ Zoo Visit Booking", "๐Ÿšœ๐Ÿ—“๏ธ Farm Tour Schedule", "๐ŸŽ๐Ÿ—“๏ธ Orchard Picking Season", "๐Ÿ‡๐Ÿท Vineyard Tour & Tasting", "๐Ÿ›’๐Ÿท๏ธ Local Market Deals", "๐Ÿ’ป๐Ÿ’ฐ Online Store Discount Code", "๐Ÿ”‘๐Ÿ“บ Subscription Service Login", "๐Ÿ’ป๐Ÿ”‘ Software License Key", "๐ŸŽฎโฌ‡๏ธ Game Download Code", "๐Ÿ“šโฌ‡๏ธ E-book Download Link", "๐ŸŽง๐Ÿ“– Audiobook Chapter List", "๐ŸŽ™๏ธ๐Ÿ”— Podcast Series Link", "โ–ถ๏ธ๐Ÿ”— YouTube Channel Link", "๐ŸŽฎ๐Ÿ”ด Twitch Stream Link", "๐Ÿ’ฌ๐ŸŽฎ Discord Server Invite", "โœˆ๏ธ๐Ÿ’ฌ Telegram Group Link", "๐ŸŸข๐Ÿ’ฌ WhatsApp Group Invite", "๐Ÿ”’๐Ÿ’ฌ Signal Group Link", "๐Ÿ‘๐Ÿ‘ฅ Facebook Group Link", "๐Ÿ“ธ๐Ÿ‘ค Instagram Profile", "๐Ÿฆโœ๏ธ Twitter Handle", "๐ŸŽต๐Ÿ’ƒ TikTok Profile", "๐Ÿ‘ป๐Ÿ“ธ Snapchat Username", "๐Ÿ“Œ๐Ÿ–ผ๏ธ Pinterest Board Link", "๐Ÿ‘ฝ๐Ÿ’ฌ Reddit Community", "โ“๐Ÿ’ก Quora Profile", "๐Ÿ’ปโ“ Stack Overflow Profile", "โœ๏ธ๐Ÿ’ป Dev.to Article Link", "โœ๏ธ๐Ÿ“– Medium Article Link", "โœ‰๏ธ๐Ÿ“ฐ Substack Newsletter", "๐Ÿ’–๐Ÿค Patreon Page", "โ˜•๐Ÿ’– Ko-fi Link", "โ˜•๐ŸŽ Buy Me a Coffee Link", "๐Ÿ‘•๐Ÿ›๏ธ Merchandise Store Link", "๐ŸŽŸ๏ธ๐Ÿ—“๏ธ Eventbrite Ticket Link", "๐Ÿ’ป๐Ÿค Zoom Meeting ID", "๐Ÿ’ป๐Ÿ’ฌ Google Meet Link", "๐Ÿ’ป๐Ÿ“Š Microsoft Teams Meeting", "๐Ÿ’ปโœ๏ธ Webinar Registration", "๐ŸŽ“๐Ÿ’ป Online Course Link", "๐ŸŽฅ๐Ÿ’ก Tutorial Video Link", "๐Ÿ“„๐Ÿ“– Documentation Link", "๐Ÿ”—๐Ÿ’ป API Endpoint URL", "โฌ†๏ธ๐Ÿ’ป Software Update Link", "๐Ÿ›๐Ÿ“ Bug Report Form", "โœจ๐Ÿ“ Feature Request Form", "๐ŸŽซ๐Ÿค Support Ticket System", "๐Ÿ“š๐Ÿ’ก Knowledge Base Article", "โ“๐Ÿ“„ FAQ Page", "๐Ÿ› ๏ธ๐Ÿ“– Troubleshooting Guide", "๐Ÿ“–๐Ÿ”ง User Manual", "๐Ÿš€๐Ÿ“– Quick Start Guide", "โฌ‡๏ธ๐Ÿ› ๏ธ Installation Instructions", "๐Ÿ’ปโœ… System Requirements", "โœ…๐Ÿ”— Compatibility List", "๐Ÿ“โœจ Release Notes", "๐Ÿ“œ๐Ÿ”„ Changelog", "๐ŸŒณ๐Ÿ’ป Version Control Repository", "โœ…๐Ÿ“Š Build Status Page", "๐Ÿš€๐Ÿ“Š Deployment Pipeline Status", "๐Ÿ–ฅ๏ธโœ… Server Status Page", "๐ŸŒ๐Ÿ—บ๏ธ Network Diagram", "๐Ÿ”’๐Ÿ“œ Security Policy", "๐Ÿ•ต๏ธโ€โ™€๏ธ๐Ÿ“œ Privacy Policy", "๐Ÿ“„๐Ÿค Terms of Service", "๐Ÿช๐Ÿ“œ Cookie Policy", "๐Ÿ‡ช๐Ÿ‡บโœ… GDPR Compliance Info", "โ™ฟ๐Ÿ“œ Accessibility Statement", "๐Ÿ—บ๏ธ๐ŸŒ Sitemap", "๐Ÿค–๐Ÿ“„ Robots.txt Content", "๐Ÿ’ก๐Ÿ’ป Open Source Project Page", "๐Ÿค๐Ÿ“ Contributor Guidelines", "๐Ÿค๐Ÿ“œ Code of Conduct", "๐Ÿ“œโœ… License Information", "๐Ÿ’ฐ๐Ÿ› Bug Bounty Program", "๐Ÿšจ๐Ÿ”’ Security Vulnerability Report", "๐Ÿ›ก๏ธ๐Ÿ“Š Penetration Test Report", "โœ…๐Ÿ“Š Compliance Audit Report", "๐Ÿ†๐Ÿ“œ Certification Details", "๐Ÿ†โœจ Awards and Recognition", "๐Ÿ“ฐโฌ‡๏ธ Press Kit Download", "๐Ÿ“ž๐Ÿ“ฐ Media Contact Info", "๐Ÿ“ˆ๐Ÿค Investor Relations Page", "๐Ÿ“Š๐Ÿ—“๏ธ Annual Report", "๐Ÿ“ž๐Ÿ“ˆ Quarterly Earnings Call", "๐Ÿ“ˆ๐Ÿ’ฐ Stock Information", "๐Ÿง‘โ€๐Ÿ’ผ๐Ÿ‘ฉโ€๐Ÿ’ผ Board of Directors", "๐Ÿ“œ๐Ÿ•ฐ๏ธ Company History", "๐ŸŽฏโœจ Mission Statement", "๐Ÿ”ญโœจ Vision Statement", "๐Ÿ’–๐Ÿ“œ Values Statement", "๐Ÿ’ผโœจ Career Opportunities", "๐Ÿ“–๐Ÿง‘โ€๐Ÿ’ผ Employee Handbook", "๐Ÿ“ž๐Ÿ‘ฉโ€๐Ÿ’ผ HR Contact Info", "๐Ÿ’ฐ๐Ÿฅ Benefits Information", "๐Ÿ“š๐Ÿ’ก Training Resources", "๐Ÿ“š๐ŸŒ Internal Wiki Link", "๐Ÿ“Š๐Ÿ› ๏ธ Project Management Tool", "๐Ÿ’ฌ๐Ÿค Team Communication Channel", "๐Ÿ“๐Ÿ—“๏ธ Meeting Notes Link", "๐Ÿ“๐Ÿค Shared Document Folder", "๐Ÿ—“๏ธโœ๏ธ Time Off Request Form", "๐Ÿ’ฐ๐Ÿ“ Expense Report System", "๐Ÿ–ฅ๏ธ๐Ÿค IT Support Portal", "๐Ÿข๐Ÿ—บ๏ธ Office Location Map", "๐Ÿ…ฟ๏ธ๐Ÿ“ Parking Instructions", "๐Ÿ“ก๐Ÿ”‘ Visitor Wi-Fi Password", "๐Ÿšจ๐Ÿ—บ๏ธ Emergency Evacuation Plan", "๐Ÿฉน๐Ÿ“ First Aid Kit Location", "defibrillator AED Location", "๐Ÿ”ฅ๐Ÿ“ Fire Extinguisher Location", "โš ๏ธ๐Ÿ“œ Safety Guidelines", "๐Ÿšช๐Ÿ”‘ Building Access Code", "๐Ÿ‘ฎ๐Ÿ“ž Security Guard Contact", "๐Ÿงน๐Ÿ—“๏ธ Cleaning Schedule", "๐Ÿ”ง๐Ÿ“ Maintenance Request Form", "๐Ÿ“ฆ๐Ÿ“ Supply Order Form", "โ˜•๐Ÿ“– Coffee Machine Instructions", "๐Ÿ–จ๏ธ๐Ÿ“– Printer Setup Guide", "๐ŸŒ๐Ÿ› ๏ธ Network Troubleshooting Steps", "๐Ÿ’ปโฌ‡๏ธ Software Installation Guide", "๐Ÿ”’๐ŸŒ VPN Connection Details", "๐Ÿ–ฅ๏ธ๐Ÿ”— Remote Desktop Access", "๐Ÿ“ž๐Ÿค Help Desk Contact", "๐Ÿ“๐Ÿ“Š Feedback Survey for Employees", "๐Ÿ’ก๐Ÿ—ณ๏ธ Suggestion Box Link", "๐Ÿ—“๏ธ๐ŸŽ‰ Company Event Calendar", "๐Ÿค๐ŸŽ‰ Team Building Activity Info", "๐ŸŽ„๐Ÿ—“๏ธ Holiday Schedule", "๐Ÿ‘”๐Ÿ“œ Dress Code Policy", "โœˆ๏ธ๐Ÿ“œ Travel Policy", "๐Ÿ’ฐ๐Ÿ“œ Expense Reimbursement Policy", "๐Ÿ’ป๐Ÿ“Š IT Asset Management System", "๐Ÿ’ป๐Ÿ“ฆ Software Inventory", "๐Ÿ–ฅ๏ธ๐Ÿ“ฆ Hardware Inventory", "๐Ÿท๏ธ๐Ÿ“œ Asset Tagging Guidelines", "โ™ป๏ธ๐Ÿ’ป Disposal Procedures for Electronics", "๐Ÿ’พ๐Ÿ—“๏ธ Data Backup Schedule", "๐Ÿšจ๐Ÿ’พ Disaster Recovery Plan", "๐Ÿšจ๐Ÿ“ Incident Report Form", "๐Ÿ”„๐Ÿ“œ Change Management Process", "๐Ÿ“Š๐Ÿ“ Project Plan Document", "โœ…๐Ÿ“ Task List for Project", "๐Ÿƒโ€โ™‚๏ธ๐Ÿ“ Sprint Backlog", "๐Ÿ“‰๐Ÿ“Š Burndown Chart Link", "๐Ÿ“๐Ÿ’ก Retrospective Notes", "๐Ÿ‘ฅ๐Ÿ“œ Team Roster", "โœ…๐Ÿง‘โ€๐Ÿ’ป Onboarding Checklist", "โœ…๐Ÿ‘‹ Offboarding Checklist", "๐Ÿ“š๐Ÿ”— Training Module Link", "๐Ÿ†๐Ÿ“Š Certification Tracking", "๐Ÿ“๐Ÿ“ˆ Performance Review Form", "๐ŸŽฏ๐Ÿ“ Goal Setting Worksheet", "๐Ÿค๐Ÿ’ก Mentorship Program Info", "๐Ÿ“ˆ๐Ÿ“š Career Development Resources", "๐ŸŒŸ๐Ÿ‘ Employee Recognition Program", "๐Ÿง˜โ€โ™€๏ธ๐Ÿ’– Wellness Program Details", "๐Ÿง ๐Ÿ’– Mental Health Resources", "๐Ÿ’ชโœ๏ธ Fitness Challenge Sign-up", "๐Ÿฅ—๐Ÿ“– Nutrition Guide", "๐Ÿช‘โœ… Ergonomics Checklist", "๐Ÿ ๐Ÿ’ป Work From Home Policy", "๐Ÿ—“๏ธโœ๏ธ Flexible Work Arrangement Request", "๐ŸšŒ๐Ÿ’ฐ Commuter Benefits Info", "๐Ÿ“ฐโœ๏ธ Company Newsletter Sign-up", "๐Ÿ’ผ๐Ÿ“ข Internal Job Postings", "๐Ÿค๐Ÿ’ฐ Referral Program Details", "๐ŸŒ๐Ÿค Diversity & Inclusion Initiatives", "โ™ป๏ธ๐Ÿ“Š Sustainability Report", "๐Ÿค๐ŸŒ Corporate Social Responsibility", "๐Ÿ“ˆ๐Ÿ“„ Investor Deck", "๐Ÿ“ฐ๐Ÿ—„๏ธ Press Release Archive", "๐ŸŽจ๐Ÿ“œ Brand Guidelines", "๐Ÿ–ผ๏ธโฌ‡๏ธ Logo Download Page", "๐Ÿ“š๐Ÿ“ˆ Marketing Collateral Library", "๐Ÿ“ˆ๐Ÿ“– Sales Playbook", "๐Ÿค๐Ÿ’ป Customer Relationship Management (CRM) Login", "๐Ÿ“ˆ๐Ÿ“Š Sales Forecasting Dashboard", "โœ๏ธ๐Ÿ’ก Lead Generation Form", "๐Ÿค๐Ÿ“œ Partnership Program Details", "๐Ÿ”—๐Ÿ’ฐ Affiliate Program Info", "๐Ÿคโœ๏ธ Reseller Application", "๐Ÿค๐Ÿ’ป Vendor Portal Login", "๐Ÿ›’๐Ÿ“œ Procurement Policy", "๐Ÿงพ๐Ÿ’ป Invoice Submission Portal", "๐Ÿ’ฐโœ… Payment Status Checker", "๐Ÿ“Š๐Ÿ’ฐ Budget Tracking Spreadsheet", "๐Ÿ“ˆ๐Ÿ“„ Financial Report Access", "๐Ÿ“œ๐Ÿ“š Legal Document Library", "๐Ÿ“๐Ÿค Contract Review Request", "ยฎ๏ธ๐Ÿ“œ Trademark Registration Info", "๐Ÿ’ก๐Ÿ“œ Patent Application Status", "โœ…๐Ÿ“š Compliance Training Module", "โš ๏ธ๐Ÿ“Š Risk Assessment Report", "๐Ÿ—“๏ธ๐Ÿ”Ž Audit Schedule", "๐Ÿ”Ž๐Ÿ“ Internal Audit Findings", "๐Ÿ“Š๐Ÿ“œ External Audit Report", "๐Ÿ“œ๐Ÿ”„ Regulatory Updates", "๐Ÿ“๐Ÿ“– Industry Standards Guide", "โœจ๐Ÿ“– Best Practices Document", "๐Ÿ”ฌ๐Ÿ”— Research Paper Link", "๐Ÿ“Šโฌ‡๏ธ Case Study Download", "๐Ÿ“„๐Ÿ’ก Whitepaper Access", "๐ŸŽฅ๐Ÿ’ป Webinar Recording", "๐ŸŽง๐Ÿ”— Podcast Series Link", "โœ๏ธ๐Ÿ“š Blog Post Archive", "๐Ÿ“ฐโœจ News Article About Us", "๐Ÿ—ฃ๏ธ๐ŸŒŸ Customer Testimonials", "โญ๐Ÿ“ Product Reviews", "๐Ÿ’ฌ๐ŸŒ User Forum Link", "๐Ÿค๐Ÿ“œ Community Guidelines", "๐Ÿ›ก๏ธ๐Ÿ“œ Moderation Policy", "๐Ÿšจ๐Ÿ“ Report Abuse Form", "โš™๏ธ๐Ÿ‘ค Account Settings Page", "๐Ÿ”‘๐Ÿ”„ Password Reset Link", "๐Ÿ”’๐Ÿ“ฑ Two-Factor Authentication Setup", "๐Ÿ””โš™๏ธ Notification Preferences", "๐Ÿ’ณโš™๏ธ Payment Methods Management", "๐Ÿ“ฆ๐Ÿ“œ Order History", "๐Ÿšš๐Ÿ“ Shipping Tracking", "โ†ฉ๏ธ๐Ÿ’ฐ Returns & Refunds Policy", "๐Ÿ’–๐Ÿ›๏ธ Wishlist Link", "๐Ÿ›’๐Ÿ›๏ธ Shopping Cart Link", "๐Ÿ“š๐Ÿ›๏ธ Product Catalog", "๐Ÿ—“๏ธ๐Ÿค Service Booking Page", "๐Ÿ—“๏ธโœ๏ธ Appointment Scheduling", "๐Ÿ—“๏ธ๐Ÿ“š Class Schedule", "๐Ÿ—“๏ธ๐ŸŽ‰ Event Calendar", "๐ŸŽŸ๏ธ๐Ÿ›๏ธ Ticket Purchase Link", "๐Ÿ—บ๏ธ๐Ÿ“ Venue Map", "๐Ÿ’บ๐Ÿ—บ๏ธ Seating Chart", "โžก๏ธ๐Ÿ“ Directions to Venue", "๐Ÿ…ฟ๏ธ๐Ÿ“ Parking Information", "๐ŸšŒ๐ŸšŠ Public Transport Options", "๐Ÿจ๐Ÿ—“๏ธ Hotel Booking Link", "โœˆ๏ธ๐Ÿ—“๏ธ Flight Information", "๐Ÿš—๐Ÿ—“๏ธ Car Rental Booking", "โœˆ๏ธ๐Ÿ›ก๏ธ Travel Insurance Info", "๐Ÿ›‚๐Ÿ“– Passport Renewal Guide", "๐Ÿ›‚๐Ÿ“ Visa Application Requirements", "๐Ÿ’ฑ๐Ÿ“Š Currency Exchange Rates", "๐ŸŒ๐Ÿค Local Customs Guide", "โš ๏ธโœˆ๏ธ Travel Advisory Updates", "๐Ÿšจ๐Ÿ“ž Emergency Travel Contacts", "๐Ÿงณ๐Ÿ“ Lost Luggage Report", "๐Ÿ—บ๏ธ๐Ÿ—“๏ธ Travel Itinerary", "โœ…๐Ÿงณ Packing Checklist", "๐Ÿฅโœˆ๏ธ Travel Health Information", "๐Ÿ’‰โœ… Vaccination Requirements", "๐Ÿ›ก๏ธโœˆ๏ธ Travel Safety Tips", "๐Ÿฝ๏ธ๐Ÿ—บ๏ธ Local Cuisine Guide", "๐Ÿฝ๏ธโญ Restaurant Recommendations", "โ˜•๐Ÿ—บ๏ธ Cafe Directory", "๐Ÿป๐Ÿ—บ๏ธ Bar & Pub Guide", "๐ŸŒƒ๐ŸŽ‰ Nightlife Events", "๐Ÿ›๏ธ๐Ÿ—บ๏ธ Shopping Districts", "๐Ÿ›’๐Ÿ—บ๏ธ Local Markets", "๐ŸŽ๐Ÿ—บ๏ธ Souvenir Shop Locations", "๐Ÿ›๏ธ๐Ÿ–ผ๏ธ Museums & Galleries", "๐Ÿ“œ๐Ÿ›๏ธ Historical Sites", "๐ŸŒณ๐ŸŒท Parks & Gardens", "๐Ÿ–๏ธ๐ŸŒŠ Beaches & Lakes", "โ›ฐ๏ธ๐Ÿšฒ Hiking & Biking Trails", "๐ŸŸ๏ธโšฝ Sports Facilities", "๐ŸŽค๐ŸŸ๏ธ Concert Venues", "๐ŸŽญ๐Ÿ“ Theater & Performance Spaces", "๐ŸŽฌโฐ Cinema Showtimes", "๐Ÿ“š๐Ÿ“ Library Branches", "โœ‰๏ธ๐Ÿ“ Post Office Locations", "๐Ÿฆ๐Ÿง Bank & ATM Locations", "๐Ÿ’Š๐Ÿ—บ๏ธ Pharmacy Directory", "๐Ÿฅ๐Ÿ—บ๏ธ Hospital & Clinic Finder", "๐Ÿš“๐Ÿ“ž Police Station Contact", "๐Ÿš’๐Ÿ“ž Fire Station Contact", "๐Ÿข๐ŸŒ Embassy/Consulate Info", "๐Ÿ›๏ธ๐Ÿค Local Government Services", "๐Ÿ—“๏ธ๐ŸŽ‰ Public Holidays Calendar", "๐Ÿซ๐Ÿ“š School Directory", "๐ŸŽ“๐Ÿ“š University Course Catalog", "๐Ÿ‘ถ๐Ÿ  Childcare Services", "๐Ÿ‘ต๐Ÿ  Elderly Care Resources", "โ™ฟ๐Ÿค Disability Support Services", "โš–๏ธ๐Ÿค Legal Aid Services", "๐Ÿ’ฐ๐Ÿค Financial Advisor Contact", "๐Ÿ›ก๏ธ๐Ÿ“ž Insurance Agent Info", "๐Ÿ ๐Ÿ“ž Real Estate Agent Contact", "๐Ÿ“ฆโœ… Moving Checklist", "๐Ÿ’ก๐Ÿ“ž Utility Provider Contacts", "๐ŸŒ๐Ÿ“ž Internet Service Provider Info", "๐Ÿ“บ๐Ÿ“ž Cable TV Provider Info", "๐Ÿ—‘๏ธ๐Ÿ—“๏ธ Waste Collection Schedule", "โ™ป๏ธ๐Ÿ“œ Recycling Guidelines", "๐Ÿ›‹๏ธ๐Ÿ“ Bulk Item Pickup Request", "๐Ÿงน๐Ÿ—“๏ธ Street Cleaning Schedule", "๐Ÿคซ๐Ÿ“ Noise Complaint Form", "๐Ÿ”Ž๐Ÿ“ Lost & Found Reporting", "๐Ÿ‘€๐Ÿ  Neighborhood Watch Info", "๐Ÿ—“๏ธ๐ŸŽ‰ Community Events Calendar", "๐Ÿ“ฐ๐ŸŒ Local News Feed", "โ˜€๏ธโ˜๏ธ Weather Forecast Link", "๐Ÿšฆ๐Ÿš— Traffic Updates", "๐Ÿšจ๐Ÿ“ข Public Safety Alerts", "๐Ÿ›ก๏ธ๐Ÿ’ก Crime Prevention Tips", "๐Ÿšจ๐Ÿ“– Emergency Preparedness Guide", "๐Ÿ†˜๐Ÿค Disaster Relief Resources", "๐Ÿค๐Ÿ’– Volunteer Opportunities", "๐Ÿ’–๐Ÿข Charitable Organizations", "๐ŸŽ๐Ÿฅซ Food Bank Locations", "๐Ÿ ๐Ÿค Homeless Shelter Info", "๐Ÿพโค๏ธ Animal Rescue Groups", "๐ŸŒณ๐Ÿ›ก๏ธ Environmental Protection Agencies", "๐ŸŒฑ๐Ÿค Conservation Programs", "โ˜€๏ธโšก Renewable Energy Initiatives", "โ™ป๏ธ๐Ÿ  Sustainable Living Tips", "๐ŸŒฑ๐Ÿข Green Building Certifications", "โ™ป๏ธ๐Ÿ›๏ธ Eco-Friendly Product List", "๐Ÿค๐Ÿ›๏ธ Fair Trade Product Info", "๐Ÿ“œ๐Ÿค Ethical Sourcing Policy", "Rights๐Ÿค Human Rights Organizations", "โš–๏ธ๐Ÿค Social Justice Initiatives", "๐Ÿง ๐Ÿ“ž Mental Health Support Hotlines", "๐Ÿšจ๐Ÿค Crisis Intervention Services", "๐Ÿšญ๐Ÿค Addiction Recovery Resources", "๐Ÿค๐Ÿ’ฌ Support Groups Directory", "๐Ÿ›‹๏ธ๐Ÿ”Ž Therapist/Counselor Finder", "๐Ÿง˜โ€โ™€๏ธ๐Ÿ’ก Stress Management Techniques", "๐Ÿง˜โ€โ™‚๏ธโœจ Mindfulness Exercises", "๐Ÿง˜โ€โ™€๏ธ๐Ÿ“ฑ Meditation Apps", "๐Ÿ˜ด๐Ÿ’ก Sleep Hygiene Tips", "๐ŸŽ๐Ÿ“– Healthy Eating Guide", "๐Ÿ’ช๐Ÿ—“๏ธ Exercise Routines", "๐Ÿ‹๏ธโ€โ™€๏ธ๐Ÿ“ž Personal Trainer Contact", "๐Ÿ‹๏ธโ€โ™€๏ธ๐Ÿ’ณ Gym Membership Info", "โšฝ๐Ÿ—“๏ธ Sports Team Schedule", "๐ŸŽŸ๏ธ๐ŸŸ๏ธ Game Tickets Purchase", "fanatic Fan Club Registration", "๐Ÿ‘•๐Ÿ›๏ธ Team Merchandise Store", "๐Ÿ“Šโ›น๏ธ Player Statistics", "๐Ÿ†๐Ÿ“Š League Standings", "๐ŸŽฅโšฝ Match Highlights Video", "๐Ÿ“ฐโšฝ Sports News Feed", "๐ŸŽฎ๐Ÿ† Fantasy Sports League", "๐ŸŽฒ๐Ÿ’ฐ Betting Odds", "๐Ÿป๐Ÿ“ Sports Bar Locator", "๐ŸŸ๏ธ๐Ÿ—“๏ธ Stadium Tour Booking", "๐Ÿ…๐Ÿ‘ค Athlete Bio", "๐Ÿง‘โ€๐Ÿซ๐Ÿ‘ฅ Coaching Staff Directory", "๐Ÿ“œ๐Ÿ† Team History", "๐Ÿ†โœจ Hall of Fame Inductees", "๐Ÿ–ผ๏ธ๐Ÿ’ฐ Memorabilia Auction", "โœ๏ธ๐Ÿ—“๏ธ Autograph Session Details", "๐Ÿค๐ŸŽ‰ Fan Meetup Info", "๐ŸŽŸ๏ธ๐ŸŒŸ Season Ticket Holder Benefits", "โœจ๐ŸŽŸ๏ธ VIP Experience Packages", "๐Ÿค๐Ÿ’ฐ Sponsorship Opportunities", "๐Ÿ“ฐโœ๏ธ Media Accreditation Form", "๐ŸŽค๐Ÿ—“๏ธ Press Conference Schedule", "๐ŸŽ™๏ธ๐Ÿค Post-Game Interview Access", "๐Ÿ”„๐Ÿ‘ฅ Team Roster Changes", "๐Ÿฉน๐Ÿ“Š Injury Report", "๐Ÿ”„๐Ÿ’ฌ Trade Rumors", "๐Ÿ“ˆ๐Ÿ’ก Draft Pick Analysis", "๐Ÿ”Ž๐Ÿ“ Scouting Reports", "๐Ÿ‘ถโšฝ Youth Sports Programs", "๐Ÿง‘โ€๐Ÿซ๐Ÿ† Coaching Certification Courses", "โš–๏ธ๐Ÿ† Referee Training Programs", "๐Ÿ›๏ธโšฝ Sports Equipment Store", "๐Ÿ‘•๐Ÿ›๏ธ Sports Apparel Shop", "๐Ÿ’Š๐Ÿ’ช Nutritional Supplements Info", "๐Ÿฅ๐Ÿฉน Sports Injury Clinic", "๐Ÿšถโ€โ™€๏ธ๐Ÿฉน Physical Therapy Services", "๐Ÿง ๐Ÿ’ช Sports Psychology Resources", "๐Ÿ“ˆ๐Ÿง‘โ€๐Ÿซ Performance Coaching", "๐Ÿ…โœ๏ธ Athlete Sponsorship Application", "๐ŸŽ“๐Ÿ’ฐ Sports Scholarship Info", "๐Ÿ”ฌ๐Ÿ’ช Sports Science Research", "๐Ÿ”ฌ๐Ÿšถ Biomechanics Lab Access", "๐Ÿ“Š๐Ÿ’ป Sports Analytics Tools", "โŒš๐Ÿ’ช Wearable Tech for Athletes", "๐Ÿ˜ด๐Ÿฉน Recovery Techniques", "๐Ÿ’ง๐Ÿ’ก Hydration Guidelines", "๐Ÿ˜ดโœจ Sleep Optimization Tips", "๐Ÿ’ชโฐ Pre-Workout Routine", "๐Ÿฝ๏ธ๐Ÿ’ช Post-Workout Meal Ideas", "๐Ÿ›ก๏ธ๐Ÿ’ช Injury Prevention Exercises", "๐Ÿ”ฅ๐Ÿ’ช Warm-up Drills", "๐ŸŒฌ๏ธ๐Ÿง˜ Cool-down Stretches", "๐Ÿ”„๐Ÿ’ช Cross-Training Ideas", "๐Ÿ‹๏ธโ€โ™€๏ธ๐Ÿ—“๏ธ Strength Training Program", "๐Ÿƒโ€โ™€๏ธ๐Ÿ—“๏ธ Cardio Workout Plan", "๐Ÿคธโ€โ™€๏ธ๐Ÿง˜ Flexibility Exercises", "โš–๏ธ๐Ÿคธ Balance Training Drills", "โšก๐Ÿƒ Agility Training Drills", "๐Ÿ’จ๐Ÿƒ Speed Training Workouts", "wytrwalosc Endurance Training Tips", "๐Ÿ’ฅ๐Ÿ’ช Plyometric Exercises", "๐Ÿ’ช๐Ÿง˜ Core Strength Workouts", "๐Ÿ’ชโฌ†๏ธ Upper Body Workout", "๐Ÿ’ชโฌ‡๏ธ Lower Body Workout", "๐Ÿ’ช๐ŸŒ Full Body Workout", "๐Ÿ˜ด๐ŸŒณ Rest Day Activities", "๐Ÿšถโ€โ™€๏ธ๐Ÿฉน Active Recovery Ideas", "๐Ÿง˜โ€โ™€๏ธ๐Ÿคธ Stretching Routine", "roll Foam Rolling Techniques", "๐Ÿ’†โ€โ™€๏ธ๐Ÿ—“๏ธ Massage Therapy Booking", "โ„๏ธ๐Ÿฉน Cryotherapy Benefits", "๐Ÿง–โ€โ™€๏ธ๐Ÿ”ฅ Sauna Session Info", "๐Ÿ’ง๐Ÿฉน Hydrotherapy Benefits", "๐Ÿ“๐Ÿฉน Acupuncture Clinic", "๐Ÿฆด๐Ÿ“ž Chiropractor Contact", "๐Ÿšถโ€โ™€๏ธ๐Ÿ“ž Physical Therapist Contact", "๐Ÿฅ๐Ÿ“ž Sports Doctor Contact", "๐Ÿฅ—๐Ÿ“ž Dietitian Consultation", "๐ŸŽ๐Ÿ“ž Sports Nutritionist", "๐Ÿง ๐Ÿง‘โ€๐Ÿซ Mental Performance Coach", "๐Ÿง ๐Ÿ“ž Sports Psychologist", "๐Ÿง˜โ€โ™€๏ธ๐Ÿ’ช Yoga for Athletes", "๐Ÿคธโ€โ™€๏ธ๐Ÿ’ช Pilates for Core Strength", "๐Ÿ‹๏ธโ€โ™€๏ธ๐Ÿ—“๏ธ CrossFit WODs", "โฑ๏ธ๐Ÿ’ช HIIT Workout Examples", "โฑ๏ธ๐Ÿ‹๏ธโ€โ™€๏ธ Tabata Training Guide", "๐Ÿ”„๐Ÿ’ช Circuit Training Ideas", "๐Ÿคธโ€โ™€๏ธ๐Ÿ’ช Bodyweight Exercises", "elastic Resistance Band Workouts", "kettlebell Kettlebell Training", "dumbbell Dumbbell Exercises", "barbell Barbell Workouts", "โš™๏ธ๐Ÿ’ช Gym Machine Guide", "๐ŸŒณ๐Ÿ’ช Outdoor Workout Spots", "๐Ÿƒโ€โ™€๏ธ๐Ÿ—บ๏ธ Running Routes", "๐Ÿšฒ๐Ÿ—บ๏ธ Cycling Trails", "๐ŸŠโ€โ™€๏ธ๐Ÿ—“๏ธ Swimming Pool Schedule", "๐Ÿ€๐Ÿ“ Basketball Court Locator", "๐ŸŽพ๐Ÿ—“๏ธ Tennis Court Booking", "๐Ÿ๐Ÿ“ Volleyball Court Info", "๐Ÿธ๐Ÿ—“๏ธ Badminton Court Booking", "squash Squash Court Booking", "๐Ÿ“๐Ÿ“ Table Tennis Club", "๐ŸŽณ๐Ÿ“ Bowling Alley Info", "โ›ธ๏ธ๐Ÿ“ Ice Skating Rink", "๐Ÿ›ผ๐Ÿ“ Roller Skating Rink", "๐Ÿ›น๐Ÿ“ Skate Park Location", "๐Ÿง—โ€โ™€๏ธ๐Ÿ“ Climbing Wall Gym", "๐Ÿง—โ€โ™‚๏ธ๐Ÿ“ Bouldering Gym", "๐Ÿฅ‹๐Ÿ“ Martial Arts Dojo", "๐ŸฅŠ๐Ÿ“ Boxing Gym", "๐Ÿคบ๐Ÿ“ Fencing Club", "๐Ÿน๐Ÿ“ Archery Range", "๐Ÿ”ซ๐Ÿ“ Shooting Range", "โ›ณ๐Ÿ—“๏ธ Golf Course Booking", "โ›ณ๐Ÿ“ Mini Golf Course", "๐ŸŒ๏ธโ€โ™‚๏ธ๐Ÿ“ Driving Range", "๐ŸŽ๐Ÿ—“๏ธ Horse Riding Lessons", "๐ŸŽ๐Ÿ“ Equestrian Center" ]); // No need for isFetchingIdeas state or useEffect for fetching ideas anymore const [isFetchingIdeas, setIsFetchingIdeas] = useState(false); const qrCanvasRef = useRef(null); const styleCanvasRefs = useRef(Array(12).fill(null)); // Define QR code styles (remains in App as it's static data used by QRGeneratorTab) const qrStyles = [ { name: "Classic", fg: "#FFFFFF" }, // Changed to white for visibility { name: "Neon Green", fg: "#39FF14" }, // Vibrant Neon Green { name: "Electric Blue", fg: "#00BFFF" }, // Bright Sky Blue { name: "Radiant Pink", fg: "#FF007F" }, // Hot Pink { name: "Cyber Purple", fg: "#BF00FF" }, // Bright Purple { name: "Gold Spark", fg: "#FFD700" }, // Gold { name: "Aqua Glow", fg: "#00FFFF" }, // Cyan (default) { name: "Fire Orange", fg: "#FF4500" }, // Orange-Red { name: "Lava Red", fg: "#FF2400" }, // Bright Red { name: "Lime Zing", fg: "#7FFF00" }, // Chartreuse { name: "Deep Teal", fg: "#008080" }, // Teal { name: "Violet Ray", fg: "#8A2BE2" }, // Blue-Violet { name: "Emerald", fg: "#00C957" }, // Deep Green { name: "Sapphire", fg: "#082567" }, // Deep Blue { name: "Ruby", fg: "#E0115F" }, // Deep Red { name: "Amethyst", fg: "#9966CC" }, // Medium Purple { name: "Sunshine", fg: "#FFD300" }, // Bright Yellow { name: "Ocean Wave", fg: "#007FFF" }, // Medium Blue { name: "Forest Mist", fg: "#A8C3BC" }, // Light Greenish-Gray { name: "Crimson Tide", fg: "#DC143C" }, // Crimson { name: "Midnight Blue", fg: "#191970" }, // Dark Blue { name: "Rose Gold", fg: "#B76E79" }, // Rose Gold { name: "Spring Green", fg: "#00FF7F" }, // Spring Green { name: "Royal Purple", fg: "#7851A9" }, // Royal Purple { name: "Azure", fg: "#007FFF" }, // Azure Blue { name: "Coral", fg: "#FF7F50" }, // Coral Orange { name: "Mint Green", fg: "#98FF98" }, // Light Mint Green { name: "Lavender", fg: "#E6E6FA" }, // Light Lavender { name: "Chocolate", fg: "#D2691E" }, // Chocolate Brown { name: "Silver", fg: "#C0C0C0" }, // Silver { name: "Bronze", fg: "#CD7F32" }, // Bronze { name: "Copper", fg: "#B87333" }, // Copper { name: "Plum", fg: "#8E4585" }, // Plum Purple { name: "Olive", fg: "#808000" }, // Olive Green { name: "Maroon", fg: "#800000" }, // Maroon Red { name: "Teal Blue", fg: "#367588" }, // Teal Blue { name: "Sky Blue", fg: "#87CEEB" }, // Sky Blue { name: "Slate Gray", fg: "#708090" }, // Slate Gray { name: "Dark Green", fg: "#006400" }, // Dark Green { name: "Dark Red", fg: "#8B0000" }, // Dark Red { name: "Dark Blue", fg: "#00008B" }, // Dark Blue { name: "Dark Cyan", fg: "#008B8B" }, // Dark Cyan { name: "Dark Magenta", fg: "#8B008B" }, // Dark Magenta { name: "Dark Yellow", fg: "#8B8B00" }, // Dark Yellow { name: "Light Gray", fg: "#D3D3D3" }, // Light Gray { name: "Light Blue", fg: "#ADD8E6" }, // Light Blue { name: "Light Green", fg: "#90EE90" }, // Light Green { name: "Light Pink", fg: "#FFB6C1" }, // Light Pink { name: "Light Yellow", fg: "#FFFFE0" }, // Light Yellow { name: "Pale Green", fg: "#98FB98" }, // Pale Green { name: "Pale Blue", fg: "#AFEEEE" }, // Pale Blue { name: "Pale Red", fg: "#F08080" }, // Pale Red { name: "Pale Yellow", fg: "#FFFF99" }, // Pale Yellow { name: "Deep Orange", fg: "#FF6600" }, // Deep Orange { name: "Deep Pink", fg: "#FF1493" }, // Deep Pink { name: "Deep Purple", fg: "#800080" }, // Deep Purple { name: "Deep Sky Blue", fg: "#00BFFF" }, // Deep Sky Blue { name: "Medium Sea Green", fg: "#3CB371" }, // Medium Sea Green { name: "Medium Slate Blue", fg: "#7B68EE" }, // Medium Slate Blue { name: "Medium Spring Green", fg: "#00FA9A" }, // Medium Spring Green { name: "Medium Turquoise", fg: "#48D1CC" }, // Medium Turquoise { name: "Medium Violet Red", fg: "#C71585" }, // Medium Violet Red { name: "Dark Goldenrod", fg: "#B8860B" }, // Dark Goldenrod { name: "Dark Orchid", fg: "#9932CC" }, // Dark Orchid { name: "Dark Salmon", fg: "#E9967A" }, // Dark Salmon { name: "Dark Sea Green", fg: "#8FBC8F" }, // Dark Sea Green { name: "Dark Slate Blue", fg: "#483D8B" }, // Dark Slate Blue { name: "Dark Slate Gray", fg: "#2F4F4F" }, // Dark Slate Gray { name: "Dark Turquoise", fg: "#00CED1" }, // Dark Turquoise { name: "Dark Violet", fg: "#9400D3" }, // Dark Violet { name: "Light Coral", fg: "#F08080" }, // Light Coral { name: "Light Cyan", fg: "#E0FFFF" }, // Light Cyan { name: "Light Goldenrod Yellow", fg: "#FAFAD2" }, // Light Goldenrod Yellow { name: "Light Green", fg: "#90EE90" }, // Light Green { name: "Light Pink", fg: "#FFB6C1" }, // Light Pink { name: "Light Salmon", fg: "#FFA07A" }, // Light Salmon { name: "Light Sea Green", fg: "#20B2AA" }, // Light Sea Green { name: "Light Sky Blue", fg: "#87CEFA" }, // Light Sky Blue { name: "Light Slate Gray", fg: "#778899" }, // Light Slate Gray { name: "Light Steel Blue", fg: "#B0C4DE" }, // Light Steel Blue { name: "Light Yellow", fg: "#FFFFE0" }, // Light Yellow { name: "Hot Pink", fg: "#FF69B4" }, // Hot Pink { name: "Indian Red", fg: "#CD5C5C" }, // Indian Red { name: "Indigo", fg: "#4B0082" }, // Indigo { name: "Khaki", fg: "#F0E68C" }, // Khaki { name: "Lavender Blush", fg: "#FFF0F5" }, // Lavender Blush { name: "Lemon Chiffon", fg: "#FFFACD" }, // Lemon Chiffon { name: "Lime Green", fg: "#32CD32" }, // Lime Green { name: "Linen", fg: "#FAF0E6" }, // Linen { name: "Medium Aqua Marine", fg: "#66CDAA" }, // Medium Aqua Marine { name: "Medium Blue", fg: "#0000CD" }, // Medium Blue { name: "Medium Orchid", fg: "#BA55D3" }, // Medium Orchid { name: "Medium Purple", fg: "#9370DB" }, // Medium Purple { name: "Medium Violet Red", fg: "#C71585" }, // Medium Violet Red { name: "Misty Rose", fg: "#FFE4E1" }, // Misty Rose { name: "Moccasin", fg: "#FFE4B5" }, // Moccasin { name: "Navajo White", fg: "#FFDEAD" }, // Navajo White { name: "Old Lace", fg: "#FDF5E6" }, // Old Lace { name: "Olive Drab", fg: "#6B8E23" }, // Olive Drab { name: "Orange Red", fg: "#FF4500" }, // Orange Red { name: "Orchid", fg: "#DA70D6" }, // Orchid { name: "Pale Goldenrod", fg: "#EEE8AA" }, // Pale Goldenrod { name: "Pale Turquoise", fg: "#AFEEEE" }, // Pale Turquoise { name: "Pale Violet Red", fg: "#DB7093" }, // Pale Violet Red { name: "Papaya Whip", fg: "#FFEFD5" }, // Papaya Whip { name: "Peach Puff", fg: "#FFDAB9" }, // Peach Puff { name: "Peru", fg: "#CD853F" }, // Peru { name: "Pink", fg: "#FFC0CB" }, // Pink { name: "Plum", fg: "#DDA0DD" }, // Plum { name: "Powder Blue", fg: "#B0E0E6" }, // Powder Blue { name: "Rosy Brown", fg: "#BC8F8F" }, // Rosy Brown { name: "Royal Blue", fg: "#4169E1" }, // Royal Blue { name: "Saddle Brown", fg: "#8B4513" }, // Saddle Brown { name: "Salmon", fg: "#FA8072" }, // Salmon { name: "Sandy Brown", fg: "#F4A460" }, // Sandy Brown { name: "Sea Green", fg: "#2E8B57" }, // Sea Green { name: "Sea Shell", fg: "#FFF5EE" }, // Sea Shell { name: "Sienna", fg: "#A0522D" }, // Sienna { name: "Sky Blue", fg: "#87CEEB" }, // Sky Blue { name: "Slate Blue", fg: "#6A5ACD" }, // Slate Blue { name: "Slate Gray", fg: "#708090" }, // Slate Gray { name: "Snow", fg: "#FFFAFA" }, // Snow { name: "Spring Green", fg: "#00FF7F" }, // Spring Green { name: "Steel Blue", fg: "#4682B4" }, // Steel Blue { name: "Tan", fg: "#D2B48C" }, // Tan { name: "Thistle", fg: "#D8BFD8" }, // Thistle { name: "Tomato", fg: "#FF6347" }, // Tomato { name: "Turquoise", fg: "#40E0D0" }, // Turquoise { name: "Violet", fg: "#EE82EE" }, // Violet { name: "Wheat", fg: "#F5DEB3" }, // Wheat { name: "White Smoke", fg: "#F5F5F5" }, // White Smoke { name: "Yellow Green", fg: "#9ACD32" }, // Yellow Green ]; // Define themes (remains in App) const themes = { dark: { // Deeper, more consistent dark background bg: 'bg-gradient-to-br from-[#050505] via-[#100515] to-[#050505] animate-gradient-shift', text: 'text-gray-100', // More vibrant neon accents primaryAccent: 'from-cyan-500 to-blue-600', secondaryAccent: 'from-fuchsia-500 to-purple-600', glassBg: 'bg-white/5 backdrop-blur-3xl', glassBorder: 'border-white/10', shadow: 'shadow-blue-500/20', glow: 'shadow-lg shadow-cyan-400/40', // Stronger neon glow buttonGlow: 'hover:shadow-xl hover:shadow-cyan-300/50', // Stronger button glow success: 'text-green-400', alert: 'text-pink-500', inputBg: 'bg-white/5', inputBorder: 'border-white/10', tabActive: 'bg-white/10 border-cyan-500 shadow-lg shadow-cyan-500/20', // Neon active tab tabInactive: 'bg-transparent border-transparent', cardBg: 'bg-white/5 backdrop-blur-md', cardBorder: 'border-white/10', // Ensure QR preview background is very dark for neon contrast qrPreviewBorder: 'border-cyan-500/50', qrPreviewBg: 'bg-gradient-to-br from-gray-950/40 to-gray-900/40 backdrop-blur-md', headerGlow: 'animate-quantum-flux' }, light: { bg: 'bg-gradient-to-br from-[#F8F8F8] via-[#E8E8E8] to-[#F8F8F8] animate-gradient-shift-light', text: 'text-gray-800', primaryAccent: 'from-blue-400 to-purple-500', secondaryAccent: 'from-cyan-300 to-teal-400', glassBg: 'bg-white/80 backdrop-blur-3xl', glassBorder: 'border-gray-200', shadow: 'shadow-gray-400/20', glow: 'shadow-lg shadow-blue-300/40', buttonGlow: 'hover:shadow-xl hover:shadow-blue-300/50', success: 'text-green-600', alert: 'text-red-600', inputBg: 'bg-white/90', inputBorder: 'border-gray-300', tabActive: 'bg-white/90 border-blue-500 shadow-lg shadow-blue-300/20', tabInactive: 'bg-transparent border-transparent', cardBg: 'bg-white/90 backdrop-blur-md', cardBorder: 'border-gray-200', qrPreviewBorder: 'border-blue-400/50', qrPreviewBg: 'bg-gradient-to-br from-gray-100/60 to-gray-200/60 backdrop-blur-md', headerGlow: 'animate-quantum-flux-light' }, 'forest-green': { bg: 'bg-gradient-to-br from-[#0A2A1A] via-[#1A4A3A] to-[#0A3A2A] animate-gradient-shift', text: 'text-white', primaryAccent: 'from-green-500 to-emerald-600', secondaryAccent: 'from-lime-400 to-green-500', glassBg: 'bg-green-900/40 backdrop-blur-3xl', glassBorder: 'border-green-800/20', shadow: 'shadow-green-500/20', glow: 'shadow-lg shadow-green-500/40', buttonGlow: 'hover:shadow-xl hover:shadow-green-400/50', success: 'text-lime-400', alert: 'text-red-400', inputBg: 'bg-green-950/30', inputBorder: 'border-green-900/15', tabActive: 'bg-green-800/20 border-green-500 shadow-lg shadow-green-500/20', tabInactive: 'bg-transparent border-transparent', cardBg: 'bg-green-950/30 backdrop-blur-md', cardBorder: 'border-green-900/15', qrPreviewBorder: 'border-green-500/50', qrPreviewBg: 'bg-gradient-to-br from-green-900/30 to-green-800/30 backdrop-blur-md', headerGlow: 'animate-quantum-flux' }, 'ocean-blue': { bg: 'bg-gradient-to-br from-[#001A33] via-[#003366] to-[#002A5A] animate-gradient-shift', text: 'text-white', primaryAccent: 'from-blue-600 to-indigo-700', secondaryAccent: 'from-sky-400 to-cyan-500', glassBg: 'bg-blue-900/40 backdrop-blur-3xl', glassBorder: 'border-blue-800/20', shadow: 'shadow-blue-600/20', glow: 'shadow-lg shadow-blue-600/40', buttonGlow: 'hover:shadow-xl hover:hover:shadow-blue-500/50', success: 'text-sky-400', alert: 'text-red-400', inputBg: 'bg-blue-950/30', inputBorder: 'border-blue-900/15', tabActive: 'bg-blue-800/20 border-blue-500 shadow-lg shadow-blue-600/20', tabInactive: 'bg-transparent border-transparent', cardBg: 'bg-blue-950/30 backdrop-blur-md', cardBorder: 'border-blue-900/15', qrPreviewBorder: 'border-blue-600/50', qrPreviewBg: 'bg-gradient-to-br from-blue-950/30 to-blue-900/30 backdrop-blur-md', headerGlow: 'animate-quantum-flux' }, 'warm-grey': { bg: 'bg-gradient-to-br from-[#202020] via-[#404040] to-[#303030] animate-gradient-shift', text: 'text-gray-100', primaryAccent: 'from-gray-500 to-gray-700', secondaryAccent: 'from-yellow-400 to-orange-500', glassBg: 'bg-gray-700/40 backdrop-blur-3xl', glassBorder: 'border-gray-600/20', shadow: 'shadow-gray-500/20', glow: 'shadow-lg shadow-gray-500/40', buttonGlow: 'hover:shadow-xl hover:shadow-gray-400/50', success: 'text-lime-400', alert: 'text-red-400', inputBg: 'bg-gray-800/30', inputBorder: 'border-gray-700/15', tabActive: 'bg-gray-600/20 border-gray-500 shadow-lg shadow-gray-500/20', tabInactive: 'bg-transparent border-transparent', cardBg: 'bg-gray-800/30 backdrop-blur-md', cardBorder: 'border-gray-700/15', qrPreviewBorder: 'border-gray-500/50', qrPreviewBg: 'bg-gradient-to-br from-gray-800/30 to-gray-700/30 backdrop-blur-md', headerGlow: 'animate-quantum-flux' }, 'deep-purple': { bg: 'bg-gradient-to-br from-[#100830] via-[#201040] to-[#180C38] animate-gradient-shift', text: 'text-white', primaryAccent: 'from-purple-600 to-fuchsia-700', secondaryAccent: 'from-pink-400 to-purple-500', glassBg: 'bg-purple-900/40 backdrop-blur-3xl', glassBorder: 'border-purple-800/20', shadow: 'shadow-purple-600/20', glow: 'shadow-lg shadow-purple-600/40', buttonGlow: 'hover:shadow-xl hover:hover:shadow-purple-500/50', success: 'text-lime-400', alert: 'text-red-400', inputBg: 'bg-purple-950/30', inputBorder: 'border-purple-900/15', tabActive: 'bg-purple-800/20 border-purple-500 shadow-lg shadow-purple-600/20', tabInactive: 'bg-transparent border-transparent', cardBg: 'bg-purple-950/30 backdrop-blur-md', cardBorder: 'border-purple-900/15', qrPreviewBorder: 'border-purple-600/50', qrPreviewBg: 'bg-gradient-to-br from-purple-950/30 to-purple-900/30 backdrop-blur-md', headerGlow: 'animate-quantum-flux' }, 'sunrise-orange': { bg: 'bg-gradient-to-br from-[#A0300A] via-[#D0501A] to-[#B84012] animate-gradient-shift', text: 'text-white', primaryAccent: 'from-orange-600 to-red-700', secondaryAccent: 'from-yellow-400 to-orange-500', glassBg: 'bg-orange-800/40 backdrop-blur-3xl', glassBorder: 'border-orange-700/20', shadow: 'shadow-orange-600/20', glow: 'shadow-lg shadow-orange-600/40', buttonGlow: 'hover:shadow-xl hover:hover:shadow-orange-500/50', success: 'text-lime-400', alert: 'text-red-400', inputBg: 'bg-orange-900/30', inputBorder: 'border-orange-800/15', tabActive: 'bg-orange-700/20 border-orange-500 shadow-lg shadow-orange-600/20', tabInactive: 'bg-transparent border-transparent', cardBg: 'bg-orange-900/30 backdrop-blur-md', cardBorder: 'border-orange-800/15', qrPreviewBorder: 'border-orange-600/50', qrPreviewBg: 'bg-gradient-to-br from-orange-900/30 to-orange-800/30 backdrop-blur-md', headerGlow: 'animate-quantum-flux' }, }; const currentThemeClasses = themes[currentTheme]; // Function to show custom alert const showAlert = (message) => { setAlertMessage(message); }; // Callback to generate QR code on a given canvas // Added a new parameter `lightColorOverride` to explicitly set the light module color const drawQrCode = useCallback((canvas, text, color, errorLevel, size = 256, lightColorOverride = null) => { if (!canvas) { console.warn("Canvas element is null, cannot draw QR code."); return; } if (!QRCode) { console.error("QRCode library is not loaded."); const context = canvas.getContext('2d'); context.clearRect(0, 0, canvas.width, canvas.height); context.fillStyle = 'red'; context.font = '10px Arial'; context.fillText('QR Lib Error', 10, 20); return; } const context = canvas.getContext('2d'); context.clearRect(0, 0, canvas.width, canvas.height); // Determine the light module color: white if QR color is black, otherwise black const effectiveLightColor = lightColorOverride || (color === '#000000' ? '#FFFFFF' : '#000000'); if (text.trim() !== '') { QRCode.toCanvas(canvas, text, { errorCorrectionLevel: errorLevel, width: size, color: { dark: color, light: effectiveLightColor // Use the determined light color } }, function (error) { if (error) console.error("QR Code drawing error:", error); }); } }, []); // Function to download the generated QR code const downloadQrCode = () => { if (content.trim() === '') { showAlert('Please enter content to generate QR code.'); return; } // Create a temporary canvas for high-resolution download const tempCanvas = document.createElement('canvas'); tempCanvas.width = downloadResolution; tempCanvas.height = downloadResolution; // Determine the light module color for download: white if QR color is black, otherwise black const effectiveLightColorForDownload = qrColor === '#000000' ? '#FFFFFF' : '#000000'; QRCode.toCanvas(tempCanvas, content, { errorCorrectionLevel: errorLevel, width: downloadResolution, color: { dark: qrColor, light: effectiveLightColorForDownload // Use the determined light color for download } }, function (error) { if (error) console.error("QR Code drawing error for download:", error); const pngUrl = tempCanvas.toDataURL("image/png"); const downloadLink = document.createElement('a'); downloadLink.href = pngUrl; downloadLink.download = `qrcode_${downloadResolution}x${downloadResolution}.png`; document.body.appendChild(downloadLink); downloadLink.click(); document.body.removeChild(downloadLink); showAlert(`QR Code saved as ${downloadResolution}x${downloadResolution} PNG!`); }); }; // Function to decode QR code from an uploaded image const decodeQrCode = (event) => { const file = event.target.files[0]; if (!file) return; const reader = new FileReader(); reader.onload = (e) => { const img = new Image(); img.onload = () => { const canvas = document.createElement('canvas'); const context = canvas.getContext('2d'); canvas.width = img.width; canvas.height = img.height; context.drawImage(img, 0, 0, img.width, img.height); const imageData = context.getImageData(0, 0, canvas.width, canvas.height); // Use jsqr (lowercase) here if (jsqr) { let code = jsqr(imageData.data, imageData.width, imageData.height); if (!code) { // Attempt to invert colors and try again for (let i = 0; i < imageData.data.length; i += 4) { imageData.data[i] = 255 - imageData.data[i]; imageData.data[i + 1] = 255 - imageData.data[i + 1]; imageData.data[i + 2] = 255 - imageData.data[i + 2]; } code = jsqr(imageData.data, imageData.width, imageData.height); } if (code) { setDecodedContent(code.data); setSuggestedIdea(''); // Clear previous suggestions when new QR is decoded setShowSuggestedIdea(false); } else { setDecodedContent('No QR code detected.'); setSuggestedIdea(''); setShowSuggestedIdea(false); } } else { showAlert('QR decoder library (jsqr) not loaded. Please try again or check internet connection.'); setSuggestedIdea(''); setShowSuggestedIdea(false); } }; img.src = e.target.result; }; reader.readAsDataURL(file); }; // Function to summarize content using Gemini API const summarizeContent = async () => { if (!decodedContent.trim() || decodedContent === 'No QR code detected.') { showAlert('Please decode a QR code first to summarize its content.'); return; } setIsSummarizing(true); try { let chatHistory = []; // Prompt to handle various content types for summarization const prompt = `Summarize the following text concisely. If the text appears to be in XML, JSON, or another large structured format, extract the key information and present it as plain text. If it's a very long plain text, provide a brief summary. Text to summarize: "${decodedContent}"`; chatHistory.push({ role: "user", parts: [{ text: prompt }] }); const payload = { contents: chatHistory }; const apiKey = ""; // Canvas will provide this at runtime const apiUrl = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${apiKey}`; const response = await fetch(apiUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }); const result = await response.json(); if (result.candidates && result.candidates.length > 0 && result.candidates[0].content && result.candidates[0].content.parts && result.candidates[0].content.parts.length > 0) { const text = result.candidates[0].content.parts[0].text; setContent(text); // Update the generator's input field with summarized content showAlert('Content summarized and moved to QR Generator tab!'); } else { showAlert("Failed to summarize content. Please try again."); } } catch (error) { console.error("Error summarizing content:", error); showAlert("An error occurred while summarizing content."); } finally { setIsSummarizing(false); } }; // Function to suggest ideas for QR code generation from the local array const suggestIdeas = () => { if (allSuggestedIdeas.length > 0) { const randomIndex = Math.floor(Math.random() * allSuggestedIdeas.length); const randomIdea = allSuggestedIdeas[randomIndex]; setSuggestedIdea(randomIdea); // Display the randomly selected idea setContent(randomIdea); // Set the QR content to the suggested idea setShowSuggestedIdea(true); // Ensure the ideas panel is shown } else { // This case should ideally not be hit if allSuggestedIdeas is hardcoded setSuggestedIdea("No ideas available in the local list."); setShowSuggestedIdea(true); } }; return ( // Modified: min-h-screen to allow page to grow, flex-col for vertical layout
{/* Container for header, tabs, and tab content */}

QuantumQR Studio

{/* Tabs Navigation */}
{/* Tab Content - Added flex-grow to fill remaining space */}
{activeTab === 'generator' && ( )} {activeTab === 'decoder' && ( )} {activeTab === 'settings' && ( )}
{/* Added padding to the bottom of the container to ensure space below content */}
{/* Custom Alert Modal */} setAlertMessage(null)} /> {/* Font Awesome for Icons */} {/* Google Fonts - Inter & Orbitron */} {/* Tailwind CSS CDN - Ensure this is loaded */} {/* Custom Scrollbar Styles */}
); }; export default App;