Spaces:
Running
Running
Update src/App.js
Browse files- src/App.js +26 -17
src/App.js
CHANGED
|
@@ -105,49 +105,58 @@ const HoroscopeApp = () => {
|
|
| 105 |
}`}>
|
| 106 |
<div className="max-w-6xl mx-auto p-5">
|
| 107 |
{/* Header Controls */}
|
| 108 |
-
<div className="flex justify-between items-center mb-8">
|
| 109 |
{/* Theme Toggle */}
|
| 110 |
<button
|
| 111 |
onClick={toggleTheme}
|
| 112 |
-
className={`flex items-center gap-2 px-4 py-2 rounded-full font-medium transition-all duration-300 ${
|
| 113 |
isDarkMode
|
| 114 |
? 'bg-white bg-opacity-10 text-white hover:bg-opacity-20'
|
| 115 |
: 'bg-white bg-opacity-90 text-gray-700 hover:bg-opacity-100'
|
| 116 |
} shadow-lg hover:scale-105`}
|
| 117 |
>
|
| 118 |
<span className="text-xl">{isDarkMode ? 'โ๏ธ' : '๐'}</span>
|
| 119 |
-
{isDarkMode ? 'Light Mode' : 'Dark Mode'}
|
| 120 |
</button>
|
| 121 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 122 |
{/* Gender Selection */}
|
| 123 |
<div className={`flex rounded-full p-1 shadow-lg ${
|
| 124 |
isDarkMode ? 'bg-white bg-opacity-10' : 'bg-white bg-opacity-90'
|
| 125 |
}`}>
|
| 126 |
<button
|
| 127 |
onClick={() => setSelectedGender('female')}
|
| 128 |
-
className={`px-6 py-2 rounded-full font-medium transition-all ${
|
| 129 |
selectedGender === 'female'
|
| 130 |
? 'bg-pink-400 text-white shadow-md'
|
| 131 |
: isDarkMode ? 'text-white hover:text-pink-300' : 'text-gray-600 hover:text-pink-400'
|
| 132 |
}`}
|
| 133 |
>
|
| 134 |
-
Female
|
|
|
|
| 135 |
</button>
|
| 136 |
<button
|
| 137 |
onClick={() => setSelectedGender('male')}
|
| 138 |
-
className={`px-6 py-2 rounded-full font-medium transition-all ${
|
| 139 |
selectedGender === 'male'
|
| 140 |
? 'bg-blue-400 text-white shadow-md'
|
| 141 |
: isDarkMode ? 'text-white hover:text-blue-300' : 'text-gray-600 hover:text-blue-400'
|
| 142 |
}`}
|
| 143 |
>
|
| 144 |
-
Male
|
|
|
|
| 145 |
</button>
|
| 146 |
</div>
|
| 147 |
</div>
|
| 148 |
|
| 149 |
-
{/* App Title */}
|
| 150 |
-
<div className="text-center mb-10">
|
| 151 |
<div className="inline-flex items-center justify-center w-16 h-16 bg-gradient-to-r from-blue-400 to-purple-500 rounded-full mb-4 shadow-lg">
|
| 152 |
<span className="text-2xl text-white">๐ฎ</span>
|
| 153 |
</div>
|
|
@@ -155,14 +164,14 @@ const HoroscopeApp = () => {
|
|
| 155 |
</div>
|
| 156 |
|
| 157 |
{/* Zodiac Signs Grid - Single Row */}
|
| 158 |
-
<div className="flex justify-center gap-3 mb-10 overflow-x-auto pb-4">
|
| 159 |
{zodiacSigns.map((sign) => (
|
| 160 |
<div
|
| 161 |
key={sign.id}
|
| 162 |
onClick={() => setSelectedSign(sign.id)}
|
| 163 |
className="flex flex-col items-center cursor-pointer transition-all duration-300 hover:scale-105 min-w-max"
|
| 164 |
>
|
| 165 |
-
<div className={`w-
|
| 166 |
selectedSign === sign.id
|
| 167 |
? 'shadow-lg'
|
| 168 |
: ''
|
|
@@ -197,7 +206,7 @@ const HoroscopeApp = () => {
|
|
| 197 |
</div>
|
| 198 |
|
| 199 |
{/* Period Selection */}
|
| 200 |
-
<div className="flex justify-center mb-8">
|
| 201 |
<div className={`flex rounded-full p-1 shadow-lg ${
|
| 202 |
isDarkMode ? 'bg-white bg-opacity-10' : 'bg-white bg-opacity-90'
|
| 203 |
}`}>
|
|
@@ -205,7 +214,7 @@ const HoroscopeApp = () => {
|
|
| 205 |
<button
|
| 206 |
key={period.id}
|
| 207 |
onClick={() => setSelectedPeriod(period.id)}
|
| 208 |
-
className={`px-6 py-3 rounded-full font-medium transition-all ${
|
| 209 |
selectedPeriod === period.id
|
| 210 |
? 'bg-blue-400 text-white shadow-md'
|
| 211 |
: isDarkMode ? 'text-white hover:text-blue-300' : 'text-gray-600 hover:text-blue-400'
|
|
@@ -218,12 +227,12 @@ const HoroscopeApp = () => {
|
|
| 218 |
</div>
|
| 219 |
|
| 220 |
{/* Category Selection */}
|
| 221 |
-
<div className="flex justify-center flex-wrap gap-3 mb-10">
|
| 222 |
{categories.map((category) => (
|
| 223 |
<button
|
| 224 |
key={category.id}
|
| 225 |
onClick={() => setSelectedCategory(category.id)}
|
| 226 |
-
className={`flex items-center gap-2 px-4 py-2 rounded-full font-medium transition-all duration-300 shadow-lg hover:scale-105 ${
|
| 227 |
selectedCategory === category.id
|
| 228 |
? 'bg-purple-400 text-white shadow-lg'
|
| 229 |
: isDarkMode
|
|
@@ -244,7 +253,7 @@ const HoroscopeApp = () => {
|
|
| 244 |
: 'bg-white bg-opacity-95'
|
| 245 |
}`}>
|
| 246 |
<div className="flex items-center gap-6 mb-8">
|
| 247 |
-
<div className="w-
|
| 248 |
style={{
|
| 249 |
background: 'linear-gradient(135deg, #1D3249 0%, #96D1E2 100%)'
|
| 250 |
}}>
|
|
@@ -339,4 +348,4 @@ const HoroscopeApp = () => {
|
|
| 339 |
);
|
| 340 |
};
|
| 341 |
|
| 342 |
-
export default HoroscopeApp;
|
|
|
|
| 105 |
}`}>
|
| 106 |
<div className="max-w-6xl mx-auto p-5">
|
| 107 |
{/* Header Controls */}
|
| 108 |
+
<div className="flex justify-between items-center mb-6 md:mb-8">
|
| 109 |
{/* Theme Toggle */}
|
| 110 |
<button
|
| 111 |
onClick={toggleTheme}
|
| 112 |
+
className={`flex items-center gap-2 px-3 md:px-4 py-2 rounded-full font-medium transition-all duration-300 ${
|
| 113 |
isDarkMode
|
| 114 |
? 'bg-white bg-opacity-10 text-white hover:bg-opacity-20'
|
| 115 |
: 'bg-white bg-opacity-90 text-gray-700 hover:bg-opacity-100'
|
| 116 |
} shadow-lg hover:scale-105`}
|
| 117 |
>
|
| 118 |
<span className="text-xl">{isDarkMode ? 'โ๏ธ' : '๐'}</span>
|
| 119 |
+
<span className="hidden sm:inline">{isDarkMode ? 'Light Mode' : 'Dark Mode'}</span>
|
| 120 |
</button>
|
| 121 |
|
| 122 |
+
{/* App Icon - Visible on mobile */}
|
| 123 |
+
<div className="sm:hidden">
|
| 124 |
+
<div className="inline-flex items-center justify-center w-12 h-12 bg-gradient-to-r from-blue-400 to-purple-500 rounded-full shadow-lg">
|
| 125 |
+
<span className="text-xl text-white">๐ฎ</span>
|
| 126 |
+
</div>
|
| 127 |
+
</div>
|
| 128 |
+
|
| 129 |
{/* Gender Selection */}
|
| 130 |
<div className={`flex rounded-full p-1 shadow-lg ${
|
| 131 |
isDarkMode ? 'bg-white bg-opacity-10' : 'bg-white bg-opacity-90'
|
| 132 |
}`}>
|
| 133 |
<button
|
| 134 |
onClick={() => setSelectedGender('female')}
|
| 135 |
+
className={`px-3 md:px-6 py-2 rounded-full font-medium transition-all ${
|
| 136 |
selectedGender === 'female'
|
| 137 |
? 'bg-pink-400 text-white shadow-md'
|
| 138 |
: isDarkMode ? 'text-white hover:text-pink-300' : 'text-gray-600 hover:text-pink-400'
|
| 139 |
}`}
|
| 140 |
>
|
| 141 |
+
<span className="hidden sm:inline">Female</span>
|
| 142 |
+
<span className="sm:hidden">โ</span>
|
| 143 |
</button>
|
| 144 |
<button
|
| 145 |
onClick={() => setSelectedGender('male')}
|
| 146 |
+
className={`px-3 md:px-6 py-2 rounded-full font-medium transition-all ${
|
| 147 |
selectedGender === 'male'
|
| 148 |
? 'bg-blue-400 text-white shadow-md'
|
| 149 |
: isDarkMode ? 'text-white hover:text-blue-300' : 'text-gray-600 hover:text-blue-400'
|
| 150 |
}`}
|
| 151 |
>
|
| 152 |
+
<span className="hidden sm:inline">Male</span>
|
| 153 |
+
<span className="sm:hidden">โ</span>
|
| 154 |
</button>
|
| 155 |
</div>
|
| 156 |
</div>
|
| 157 |
|
| 158 |
+
{/* App Title - Hidden on mobile */}
|
| 159 |
+
<div className="text-center mb-6 md:mb-10 hidden sm:block">
|
| 160 |
<div className="inline-flex items-center justify-center w-16 h-16 bg-gradient-to-r from-blue-400 to-purple-500 rounded-full mb-4 shadow-lg">
|
| 161 |
<span className="text-2xl text-white">๐ฎ</span>
|
| 162 |
</div>
|
|
|
|
| 164 |
</div>
|
| 165 |
|
| 166 |
{/* Zodiac Signs Grid - Single Row */}
|
| 167 |
+
<div className="flex justify-center gap-2 md:gap-3 mb-6 md:mb-10 overflow-x-auto pb-4">
|
| 168 |
{zodiacSigns.map((sign) => (
|
| 169 |
<div
|
| 170 |
key={sign.id}
|
| 171 |
onClick={() => setSelectedSign(sign.id)}
|
| 172 |
className="flex flex-col items-center cursor-pointer transition-all duration-300 hover:scale-105 min-w-max"
|
| 173 |
>
|
| 174 |
+
<div className={`w-20 h-20 md:w-24 md:h-24 rounded-full p-0.5 transition-all ${
|
| 175 |
selectedSign === sign.id
|
| 176 |
? 'shadow-lg'
|
| 177 |
: ''
|
|
|
|
| 206 |
</div>
|
| 207 |
|
| 208 |
{/* Period Selection */}
|
| 209 |
+
<div className="flex justify-center mb-6 md:mb-8">
|
| 210 |
<div className={`flex rounded-full p-1 shadow-lg ${
|
| 211 |
isDarkMode ? 'bg-white bg-opacity-10' : 'bg-white bg-opacity-90'
|
| 212 |
}`}>
|
|
|
|
| 214 |
<button
|
| 215 |
key={period.id}
|
| 216 |
onClick={() => setSelectedPeriod(period.id)}
|
| 217 |
+
className={`px-4 md:px-6 py-2 md:py-3 rounded-full font-medium transition-all text-sm md:text-base ${
|
| 218 |
selectedPeriod === period.id
|
| 219 |
? 'bg-blue-400 text-white shadow-md'
|
| 220 |
: isDarkMode ? 'text-white hover:text-blue-300' : 'text-gray-600 hover:text-blue-400'
|
|
|
|
| 227 |
</div>
|
| 228 |
|
| 229 |
{/* Category Selection */}
|
| 230 |
+
<div className="flex justify-center flex-wrap gap-2 md:gap-3 mb-6 md:mb-10">
|
| 231 |
{categories.map((category) => (
|
| 232 |
<button
|
| 233 |
key={category.id}
|
| 234 |
onClick={() => setSelectedCategory(category.id)}
|
| 235 |
+
className={`flex items-center gap-2 px-3 md:px-4 py-2 rounded-full font-medium transition-all duration-300 shadow-lg hover:scale-105 text-sm md:text-base ${
|
| 236 |
selectedCategory === category.id
|
| 237 |
? 'bg-purple-400 text-white shadow-lg'
|
| 238 |
: isDarkMode
|
|
|
|
| 253 |
: 'bg-white bg-opacity-95'
|
| 254 |
}`}>
|
| 255 |
<div className="flex items-center gap-6 mb-8">
|
| 256 |
+
<div className="w-20 h-20 rounded-full p-0.5 shadow-lg"
|
| 257 |
style={{
|
| 258 |
background: 'linear-gradient(135deg, #1D3249 0%, #96D1E2 100%)'
|
| 259 |
}}>
|
|
|
|
| 348 |
);
|
| 349 |
};
|
| 350 |
|
| 351 |
+
export default HoroscopeApp;
|