diff --git a/.firebase/hosting.ZGlzdA.cache b/.firebase/hosting.ZGlzdA.cache index 4cd8895..c564305 100644 --- a/.firebase/hosting.ZGlzdA.cache +++ b/.firebase/hosting.ZGlzdA.cache @@ -1,6 +1,6 @@ vite.svg,1713755213475,59ec4b6085a0cb1bf712a5e48dd5f35b08e34830d49c2026c18241be04e05d5a leetmigo waifu 1.png,1719180166792,e196e9e48be328b15c212d370e23a5ea33186361619ee1dfe7a6b05136ff4f5a gendonotevil1.png,1716715413819,87612e12215c5df3dd01be8177bbdd74734b0f76f7eb0c5ef72dcfa81a7766d9 -index.html,1724519372624,990e9c4883f5c2f61d7e820aea835f614698a2ca3c2cbbcb59a3aa137ee87704 -assets/index-BvQ6TMY8.js,1724519372623,50737d9aa1473a057e4bbc149da0f718542e172b0290288c420f30cff296b85d -assets/LeetMigo_banner_main_01-B7g23Qd-.png,1724519372623,4ada8c13ac119d2ab923d7e00d6def14e3326c0b0938c8a79afa7176075f773a +index.html,1724588508243,97772e31b8e0d46bc0ac7c73343d634095f9bb6ccb9bd17173e1b400bf077b90 +assets/index-TXoG1jib.js,1724588508243,2a2d0533a8fc7f66015f18835ad510662f60b8d17e8a42ef36e48a47fd6f69fb +assets/LeetMigo_banner_main_01-B7g23Qd-.png,1724588508243,4ada8c13ac119d2ab923d7e00d6def14e3326c0b0938c8a79afa7176075f773a diff --git a/public/LeetMigo_banner_main_01.png b/public/LeetMigo_banner_main_01.png new file mode 100644 index 0000000..a91c7a6 Binary files /dev/null and b/public/LeetMigo_banner_main_01.png differ diff --git a/src/AppContent.jsx b/src/AppContent.jsx index 35049ae..fc90ede 100644 --- a/src/AppContent.jsx +++ b/src/AppContent.jsx @@ -16,12 +16,16 @@ import { Container, AspectRatio, Spinner, + useClipboard, } from '@chakra-ui/react'; import bannerImage from './LeetMigo_banner_main_01.png'; +import { v4 as uuidv4 } from 'uuid'; // Mock DID generation using UUID const AppContent = () => { const [gdprAccepted, setGdprAccepted] = useState(false); const [isPrivacyPolicyOpen, setIsPrivacyPolicyOpen] = useState(false); + const [did, setDid] = useState(''); + const { hasCopied, onCopy } = useClipboard(did); const widgetRef = useRef(null); const handleGdprAccept = () => { @@ -40,10 +44,14 @@ const AppContent = () => { script.src = 'https://getlaunchlist.com/js/widget.js'; script.async = true; script.defer = true; + script.loading = 'lazy'; script.onload = () => { if (window.LaunchListWidget) { window.LaunchListWidget.init(); widgetRef.current = true; + setTimeout(() => { + widgetRef.current = false; + }, 500); } }; document.body.appendChild(script); @@ -56,14 +64,25 @@ const AppContent = () => { } }, []); + useEffect(() => { + // Generate DID automatically on mount (mock implementation) + const generatedDid = `did:web5:${uuidv4()}`; + setDid(generatedDid); + }, []); + const commonButtonStyles = { - colorScheme: 'blue', - variant: 'solid', + colorScheme: 'orange', + bg: 'orange.400', + color: 'black', size: 'lg', borderRadius: 'full', - width: '100%', - maxW: { base: '100%', md: '300px' }, - _hover: { transform: 'scale(1.05)', boxShadow: 'lg' }, + paddingX: 8, + paddingY: 6, + fontSize: 'lg', + textDecoration: 'none', // Remove underline + transition: 'all 0.2s ease-in-out', + _hover: { bg: 'orange.500', transform: 'scale(1.1)', boxShadow: '2xl' }, + _active: { bg: 'orange.600' }, _focus: { boxShadow: 'outline' }, }; @@ -71,15 +90,17 @@ const AppContent = () => { - - + {/* Title Section */} + + LeetMigo πŸ‘Ύ - + the world's first decentralized platform for dsa interview prep, made for non-trad, cracked techies and frens - + + {/* Banner Image */} { /> - {!widgetRef.current && } - + {/* LaunchList Widget and CTA */} + {!widgetRef.current && } + {widgetRef.current && ( + + Widget loaded successfully + + )} +
- - - - + + + don’t miss out! πŸš€ get free early access and be part of the first wave of cracked techies. sign up now! + + +
+
+
+ + {/* LeetCode 75 Button */} + + + + + {/* Features Section */} + + features coming soon: - - - + + + {/* DID Login Section */} + + + your DID has been generated! πŸŽ‰ + + + DID: {did} + + + + save your DID for future logins using your username. + +
@@ -135,10 +199,10 @@ const AppContent = () => { > we use cookies for a based experience. continue to use this site and we'll assume you think it's kino. - - @@ -151,7 +215,10 @@ const AppContent = () => { Privacy Policy - {/* Privacy policy content here */} + + This is where your privacy policy content will be displayed. Make sure to + include all necessary details regarding data usage, storage, and user rights. +