Update src/App.jsx
Browse files- src/App.jsx +1 -110
src/App.jsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
import React, { useState, useEffect, useRef, useCallback } from 'react';
|
| 2 |
import QRCode from 'qrcode';
|
| 3 |
import jsQR from 'jsqr';
|
|
|
|
| 4 |
|
| 5 |
// Custom Alert Modal Component
|
| 6 |
const CustomAlert = ({ message, onClose }) => {
|
|
@@ -748,116 +749,6 @@ const App = () => {
|
|
| 748 |
|
| 749 |
{/* Tailwind CSS CDN - Ensure this is loaded */}
|
| 750 |
<script src="https://cdn.tailwindcss.com"></script>
|
| 751 |
-
|
| 752 |
-
{/* Custom Tailwind Configuration (if any) - Place after CDN for overrides */}
|
| 753 |
-
<style>
|
| 754 |
-
{`
|
| 755 |
-
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Orbitron:wght@400;500;600;700;800;900&display=swap');
|
| 756 |
-
|
| 757 |
-
.font-inter {
|
| 758 |
-
font-family: 'Inter', sans-serif;
|
| 759 |
-
}
|
| 760 |
-
.font-orbitron {
|
| 761 |
-
font-family: 'Orbitron', sans-serif;
|
| 762 |
-
}
|
| 763 |
-
|
| 764 |
-
/* Custom scrollbar for style selection */
|
| 765 |
-
.custom-scrollbar::-webkit-scrollbar {
|
| 766 |
-
width: 8px;
|
| 767 |
-
}
|
| 768 |
-
|
| 769 |
-
.custom-scrollbar::-webkit-scrollbar-track {
|
| 770 |
-
background: rgba(255, 255, 255, 0.05);
|
| 771 |
-
border-radius: 10px;
|
| 772 |
-
}
|
| 773 |
-
|
| 774 |
-
.custom-scrollbar::-webkit-scrollbar-thumb {
|
| 775 |
-
background: rgba(100, 100, 255, 0.5);
|
| 776 |
-
border-radius: 10px;
|
| 777 |
-
}
|
| 778 |
-
|
| 779 |
-
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
|
| 780 |
-
background: rgba(100, 100, 255, 0.7);
|
| 781 |
-
}
|
| 782 |
-
|
| 783 |
-
/* Scan line animation */
|
| 784 |
-
.scan-line {
|
| 785 |
-
position: absolute;
|
| 786 |
-
top: 0;
|
| 787 |
-
left: 0;
|
| 788 |
-
width: 100%;
|
| 789 |
-
height: 5px;
|
| 790 |
-
background: linear-gradient(to right, transparent, rgba(0, 255, 255, 0.8), transparent);
|
| 791 |
-
animation: scan 3s infinite linear;
|
| 792 |
-
transform-origin: top;
|
| 793 |
-
}
|
| 794 |
-
|
| 795 |
-
@keyframes scan {
|
| 796 |
-
0% { top: 0%; }
|
| 797 |
-
50% { top: calc(100% - 5px); }
|
| 798 |
-
100% { top: 0%; }
|
| 799 |
-
}
|
| 800 |
-
|
| 801 |
-
/* Fade in up animation for alert */
|
| 802 |
-
@keyframes fade-in-up {
|
| 803 |
-
from {
|
| 804 |
-
opacity: 0;
|
| 805 |
-
transform: translateY(20px);
|
| 806 |
-
}
|
| 807 |
-
to {
|
| 808 |
-
opacity: 1;
|
| 809 |
-
transform: translateY(0);
|
| 810 |
-
}
|
| 811 |
-
}
|
| 812 |
-
.animate-fade-in-up {
|
| 813 |
-
animation: fade-in-up 0.3s ease-out forwards;
|
| 814 |
-
}
|
| 815 |
-
|
| 816 |
-
/* Gradient shift animation */
|
| 817 |
-
@keyframes gradient-shift {
|
| 818 |
-
0% { background-position: 0% 50%; }
|
| 819 |
-
50% { background-position: 100% 50%; }
|
| 820 |
-
100% { background-position: 0% 50%; }
|
| 821 |
-
}
|
| 822 |
-
|
| 823 |
-
.animate-gradient-shift {
|
| 824 |
-
background-size: 400% 400%;
|
| 825 |
-
animation: gradient-shift 15s ease infinite;
|
| 826 |
-
}
|
| 827 |
-
|
| 828 |
-
@keyframes gradient-shift-light {
|
| 829 |
-
0% { background-position: 0% 50%; }
|
| 830 |
-
50% { background-position: 100% 50%; }
|
| 831 |
-
100% { background-position: 0% 50%; }
|
| 832 |
-
}
|
| 833 |
-
|
| 834 |
-
.animate-gradient-shift-light {
|
| 835 |
-
background-size: 400% 400%;
|
| 836 |
-
animation: gradient-shift-light 15s ease infinite;
|
| 837 |
-
}
|
| 838 |
-
|
| 839 |
-
/* Quantum Flux Header Animation */
|
| 840 |
-
@keyframes quantum-flux {
|
| 841 |
-
0% { text-shadow: 0 0 5px rgba(135, 206, 250, 0.5), 0 0 10px rgba(70, 130, 180, 0.5); }
|
| 842 |
-
50% { text-shadow: 0 0 15px rgba(135, 206, 250, 0.8), 0 0 25px rgba(70, 130, 180, 0.8); }
|
| 843 |
-
100% { text-shadow: 0 0 5px rgba(135, 206, 250, 0.5), 0 0 10px rgba(70, 130, 180, 0.5); }
|
| 844 |
-
}
|
| 845 |
-
|
| 846 |
-
.animate-quantum-flux {
|
| 847 |
-
animation: quantum-flux 4s infinite ease-in-out;
|
| 848 |
-
}
|
| 849 |
-
|
| 850 |
-
@keyframes quantum-flux-light {
|
| 851 |
-
0% { text-shadow: 0 0 3px rgba(0, 123, 255, 0.3), 0 0 6px rgba(0, 86, 179, 0.3); }
|
| 852 |
-
50% { text-shadow: 0 0 10px rgba(0, 123, 255, 0.6), 0 0 18px rgba(0, 86, 179, 0.6); }
|
| 853 |
-
100% { text-shadow: 0 0 3px rgba(0, 123, 255, 0.3), 0 0 6px rgba(0, 86, 179, 0.3); }
|
| 854 |
-
}
|
| 855 |
-
|
| 856 |
-
.animate-quantum-flux-light {
|
| 857 |
-
animation: quantum-flux-light 4s infinite ease-in-out;
|
| 858 |
-
}
|
| 859 |
-
`}
|
| 860 |
-
</style>
|
| 861 |
</div>
|
| 862 |
);
|
| 863 |
};
|
|
|
|
| 1 |
import React, { useState, useEffect, useRef, useCallback } from 'react';
|
| 2 |
import QRCode from 'qrcode';
|
| 3 |
import jsQR from 'jsqr';
|
| 4 |
+
import './index.css'; // Import the external CSS file
|
| 5 |
|
| 6 |
// Custom Alert Modal Component
|
| 7 |
const CustomAlert = ({ message, onClose }) => {
|
|
|
|
| 749 |
|
| 750 |
{/* Tailwind CSS CDN - Ensure this is loaded */}
|
| 751 |
<script src="https://cdn.tailwindcss.com"></script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 752 |
</div>
|
| 753 |
);
|
| 754 |
};
|