Znfeoqm commited on
Commit
2fb64d9
·
verified ·
1 Parent(s): eef8679

Update src/App.jsx

Browse files
Files changed (1) hide show
  1. src/App.jsx +16 -13
src/App.jsx CHANGED
@@ -47,9 +47,9 @@ const QRGeneratorTab = ({
47
  }, [qrStyles, drawQrCode, styleCanvasRefs]);
48
 
49
  return (
50
- // Modified: Changed h-full to flex-grow to ensure it fills available space from parent
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 - Added flex-grow to make it fill available 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,11 +142,11 @@ const QRGeneratorTab = ({
142
  </div>
143
  </div>
144
 
145
- {/* Right Panel: Style Selection - Added h-full and flex-grow */}
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-full flex-grow`}>
147
  <label className={`mb-4 font-semibold ${currentThemeClasses.labelColor} font-inter`}>Choose Style:</label>
148
- {/* This inner div needs to scroll if content overflows. Added h-full */}
149
- <div className={`overflow-y-auto flex-grow rounded-xl p-2 ${currentThemeClasses.cardBg} custom-scrollbar h-full`}>
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
- <div className={`flex flex-col p-4 md:p-6 space-y-6 h-full ${currentThemeClasses.bg} ${currentThemeClasses.text}`}>
 
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
- <div className={`flex flex-col p-4 md:p-6 space-y-6 h-full ${currentThemeClasses.bg} ${currentThemeClasses.text}`}>
 
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: Set height to 100vh and added flex-col to enable vertical flex layout
1365
- <div className={`h-screen flex flex-col font-inter antialiased ${currentThemeClasses.bg} ${currentThemeClasses.text} transition-all duration-500 ease-in-out`}>
1366
- <div className="container mx-auto p-4 max-w-7xl flex flex-col flex-grow overflow-y-auto"> {/* Added overflow-y-auto here */}
 
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 and overflow-hidden */}
1400
- <div className="tab-content flex flex-col flex-grow overflow-hidden">
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}