Update src/App.jsx
Browse files- src/App.jsx +16 -13
src/App.jsx
CHANGED
|
@@ -47,9 +47,9 @@ const QRGeneratorTab = ({
|
|
| 47 |
}, [qrStyles, drawQrCode, styleCanvasRefs]);
|
| 48 |
|
| 49 |
return (
|
| 50 |
-
//
|
| 51 |
<div className="flex flex-col lg:flex-row p-4 md:p-6 space-y-6 lg:space-y-0 lg:space-x-6 flex-grow">
|
| 52 |
-
{/* Left Panel: Input and Controls -
|
| 53 |
<div className={`flex flex-col w-full lg:w-3/4 p-6 rounded-2xl border ${currentThemeClasses.glassBorder} ${currentThemeClasses.glassBg} shadow-2xl ${currentThemeClasses.shadow} transform transition-all duration-500 ease-in-out flex-grow`}>
|
| 54 |
<label className={`mb-2 font-semibold ${currentThemeClasses.labelColor} font-inter`}>Enter Content:</label>
|
| 55 |
<textarea
|
|
@@ -142,11 +142,11 @@ const QRGeneratorTab = ({
|
|
| 142 |
</div>
|
| 143 |
</div>
|
| 144 |
|
| 145 |
-
{/* Right Panel: Style Selection -
|
| 146 |
-
<div className={`w-full lg:w-1/4 p-6 rounded-2xl shadow-2xl border ${currentThemeClasses.glassBorder} ${currentThemeClasses.glassBg} ${currentThemeClasses.text} flex flex-col transform transition-all duration-500 ease-in-out h-
|
| 147 |
<label className={`mb-4 font-semibold ${currentThemeClasses.labelColor} font-inter`}>Choose Style:</label>
|
| 148 |
-
{/* This inner div needs to scroll if content overflows.
|
| 149 |
-
<div className={`overflow-y-auto flex-grow rounded-xl p-2 ${currentThemeClasses.cardBg} custom-scrollbar
|
| 150 |
<div className="grid grid-cols-2 gap-4">
|
| 151 |
{qrStyles.map((style, index) => (
|
| 152 |
<div
|
|
@@ -177,7 +177,8 @@ const QRDecoderTab = ({
|
|
| 177 |
currentThemeClasses
|
| 178 |
}) => {
|
| 179 |
return (
|
| 180 |
-
|
|
|
|
| 181 |
<div
|
| 182 |
className={`flex flex-col items-center justify-center p-10 border-2 border-dashed ${currentThemeClasses.glassBorder} rounded-2xl min-h-[200px] ${currentThemeClasses.glassBg} ${currentThemeClasses.text} transition-all duration-300 shadow-2xl ${currentThemeClasses.shadow} hover:scale-[1.01] hover:-translate-y-1`}
|
| 183 |
>
|
|
@@ -227,7 +228,8 @@ const QRDecoderTab = ({
|
|
| 227 |
// --- SettingsTab Component ---
|
| 228 |
const SettingsTab = ({ currentTheme, setCurrentTheme, currentThemeClasses, themes }) => {
|
| 229 |
return (
|
| 230 |
-
|
|
|
|
| 231 |
<div className={`p-6 rounded-2xl border ${currentThemeClasses.glassBorder} ${currentThemeClasses.glassBg} shadow-2xl ${currentThemeClasses.shadow} transform transition-all duration-500 ease-in-out`}>
|
| 232 |
<label className={`mb-2 font-semibold ${currentThemeClasses.labelColor} font-inter`}>Select Theme:</label>
|
| 233 |
<select
|
|
@@ -1361,9 +1363,10 @@ const App = () => {
|
|
| 1361 |
};
|
| 1362 |
|
| 1363 |
return (
|
| 1364 |
-
// Modified:
|
| 1365 |
-
<div className={`h-screen flex flex-col font-inter antialiased ${currentThemeClasses.bg} ${currentThemeClasses.text} transition-all duration-500 ease-in-out`}>
|
| 1366 |
-
|
|
|
|
| 1367 |
<h1 className={`text-4xl lg:text-5xl font-extrabold text-center mb-8 bg-clip-text text-transparent ${currentThemeClasses.headerGlow} font-orbitron`}>
|
| 1368 |
QuantumQR Studio
|
| 1369 |
</h1>
|
|
@@ -1396,8 +1399,8 @@ const App = () => {
|
|
| 1396 |
</button>
|
| 1397 |
</div>
|
| 1398 |
|
| 1399 |
-
{/* Tab Content - Added flex-grow
|
| 1400 |
-
<div className="tab-content flex flex-col flex-grow
|
| 1401 |
{activeTab === 'generator' && (
|
| 1402 |
<QRGeneratorTab
|
| 1403 |
content={content}
|
|
|
|
| 47 |
}, [qrStyles, drawQrCode, styleCanvasRefs]);
|
| 48 |
|
| 49 |
return (
|
| 50 |
+
// flex-grow ensures it takes available space in the tab-content
|
| 51 |
<div className="flex flex-col lg:flex-row p-4 md:p-6 space-y-6 lg:space-y-0 lg:space-x-6 flex-grow">
|
| 52 |
+
{/* Left Panel: Input and Controls - flex-grow to fill vertical space */}
|
| 53 |
<div className={`flex flex-col w-full lg:w-3/4 p-6 rounded-2xl border ${currentThemeClasses.glassBorder} ${currentThemeClasses.glassBg} shadow-2xl ${currentThemeClasses.shadow} transform transition-all duration-500 ease-in-out flex-grow`}>
|
| 54 |
<label className={`mb-2 font-semibold ${currentThemeClasses.labelColor} font-inter`}>Enter Content:</label>
|
| 55 |
<textarea
|
|
|
|
| 142 |
</div>
|
| 143 |
</div>
|
| 144 |
|
| 145 |
+
{/* Right Panel: Style Selection - Fixed height and flex-shrink-0 for scrollbar */}
|
| 146 |
+
<div className={`w-full lg:w-1/4 p-6 rounded-2xl shadow-2xl border ${currentThemeClasses.glassBorder} ${currentThemeClasses.glassBg} ${currentThemeClasses.text} flex flex-col transform transition-all duration-500 ease-in-out lg:h-[calc(100vh-250px)] flex-shrink-0`}>
|
| 147 |
<label className={`mb-4 font-semibold ${currentThemeClasses.labelColor} font-inter`}>Choose Style:</label>
|
| 148 |
+
{/* This inner div needs to scroll if content overflows. flex-grow and overflow-y-auto */}
|
| 149 |
+
<div className={`overflow-y-auto flex-grow rounded-xl p-2 ${currentThemeClasses.cardBg} custom-scrollbar`}>
|
| 150 |
<div className="grid grid-cols-2 gap-4">
|
| 151 |
{qrStyles.map((style, index) => (
|
| 152 |
<div
|
|
|
|
| 177 |
currentThemeClasses
|
| 178 |
}) => {
|
| 179 |
return (
|
| 180 |
+
// Added flex-grow to ensure it takes available vertical space
|
| 181 |
+
<div className={`flex flex-col p-4 md:p-6 space-y-6 flex-grow ${currentThemeClasses.bg} ${currentThemeClasses.text}`}>
|
| 182 |
<div
|
| 183 |
className={`flex flex-col items-center justify-center p-10 border-2 border-dashed ${currentThemeClasses.glassBorder} rounded-2xl min-h-[200px] ${currentThemeClasses.glassBg} ${currentThemeClasses.text} transition-all duration-300 shadow-2xl ${currentThemeClasses.shadow} hover:scale-[1.01] hover:-translate-y-1`}
|
| 184 |
>
|
|
|
|
| 228 |
// --- SettingsTab Component ---
|
| 229 |
const SettingsTab = ({ currentTheme, setCurrentTheme, currentThemeClasses, themes }) => {
|
| 230 |
return (
|
| 231 |
+
// Added flex-grow to ensure it takes available vertical space
|
| 232 |
+
<div className={`flex flex-col p-4 md:p-6 space-y-6 flex-grow ${currentThemeClasses.bg} ${currentThemeClasses.text}`}>
|
| 233 |
<div className={`p-6 rounded-2xl border ${currentThemeClasses.glassBorder} ${currentThemeClasses.glassBg} shadow-2xl ${currentThemeClasses.shadow} transform transition-all duration-500 ease-in-out`}>
|
| 234 |
<label className={`mb-2 font-semibold ${currentThemeClasses.labelColor} font-inter`}>Select Theme:</label>
|
| 235 |
<select
|
|
|
|
| 1363 |
};
|
| 1364 |
|
| 1365 |
return (
|
| 1366 |
+
// Modified: min-h-screen to allow page to grow, flex-col for vertical layout
|
| 1367 |
+
<div className={`min-h-screen flex flex-col font-inter antialiased ${currentThemeClasses.bg} ${currentThemeClasses.text} transition-all duration-500 ease-in-out`}>
|
| 1368 |
+
{/* Container for header, tabs, and tab content */}
|
| 1369 |
+
<div className="container mx-auto p-4 max-w-7xl flex flex-col flex-grow">
|
| 1370 |
<h1 className={`text-4xl lg:text-5xl font-extrabold text-center mb-8 bg-clip-text text-transparent ${currentThemeClasses.headerGlow} font-orbitron`}>
|
| 1371 |
QuantumQR Studio
|
| 1372 |
</h1>
|
|
|
|
| 1399 |
</button>
|
| 1400 |
</div>
|
| 1401 |
|
| 1402 |
+
{/* Tab Content - Added flex-grow to fill remaining space */}
|
| 1403 |
+
<div className="tab-content flex flex-col flex-grow">
|
| 1404 |
{activeTab === 'generator' && (
|
| 1405 |
<QRGeneratorTab
|
| 1406 |
content={content}
|