diff --git a/package-lock.json b/package-lock.json index 3c65e57..96884b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@testing-library/user-event": "^13.5.0", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-router-dom": "^6.27.0", "react-scripts": "5.0.1", "web-vitals": "^2.1.4" } @@ -3085,6 +3086,14 @@ } } }, + "node_modules/@remix-run/router": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.20.0.tgz", + "integrity": "sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -13971,6 +13980,36 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.27.0.tgz", + "integrity": "sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==", + "dependencies": { + "@remix-run/router": "1.20.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.27.0.tgz", + "integrity": "sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==", + "dependencies": { + "@remix-run/router": "1.20.0", + "react-router": "6.27.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, "node_modules/react-scripts": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", @@ -18835,6 +18874,11 @@ "source-map": "^0.7.3" } }, + "@remix-run/router": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.20.0.tgz", + "integrity": "sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==" + }, "@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -26585,6 +26629,23 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==" }, + "react-router": { + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.27.0.tgz", + "integrity": "sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==", + "requires": { + "@remix-run/router": "1.20.0" + } + }, + "react-router-dom": { + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.27.0.tgz", + "integrity": "sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==", + "requires": { + "@remix-run/router": "1.20.0", + "react-router": "6.27.0" + } + }, "react-scripts": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", diff --git a/package.json b/package.json index 022d9bf..60d5689 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "@testing-library/user-event": "^13.5.0", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-router-dom": "^6.27.0", "react-scripts": "5.0.1", "web-vitals": "^2.1.4" }, diff --git a/src/App.css b/src/App.css index 74b5e05..d512e83 100644 --- a/src/App.css +++ b/src/App.css @@ -1,38 +1,152 @@ -.App { - text-align: center; +/* Reset some default browser styles */ +body, html, h1, h2, h3, p, ul, li { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: Arial, sans-serif; } -.App-logo { - height: 40vmin; - pointer-events: none; +/* Overall page styles */ +body { + background-color: #f4f4f4; + color: #333; + padding: 20px; } -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } +/* Style for the Header */ +.header { + background-color: #00aaff; + padding: 10px 20px; + text-align: center; } -.App-header { - background-color: #282c34; - min-height: 100vh; +.header a { + color: #fff; + text-decoration: none; + font-size: 24px; + font-weight: bold; +} + +/* Home Page Styles */ +.home { display: flex; flex-direction: column; align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); + gap: 20px; + margin-top: 30px; +} + +.home a { + text-align: center; + text-decoration: none; + color: #333; +} + +.home img { + width: 100%; + max-width: 300px; + border-radius: 10px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); +} + +.home h2 { + font-size: 20px; + margin-top: 10px; +} + +/* Beers List Styles */ +.beers-list { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); + gap: 20px; + margin-top: 20px; +} + +.beers-list div { + background-color: #fff; + padding: 10px; + border-radius: 10px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + text-align: center; +} + +.beers-list img { + height: 150px; + object-fit: contain; +} + +.beers-list h3 { + font-size: 18px; + margin-top: 10px; +} + +/* Beer Detail Page Styles */ +.beer-detail { + background-color: #fff; + padding: 20px; + margin: 20px auto; + max-width: 600px; + border-radius: 10px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); + text-align: center; +} + +.beer-detail img { + height: 250px; + margin-bottom: 20px; +} + +.beer-detail h2 { + font-size: 28px; + margin-bottom: 10px; +} + +.beer-detail p { + font-size: 16px; + line-height: 1.5; + margin-bottom: 10px; +} + +/* New Beer Form Styles */ +form { + background-color: #fff; + padding: 20px; + margin: 20px auto; + max-width: 400px; + border-radius: 10px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); +} + +form input, form textarea { + width: 100%; + padding: 10px; + margin: 10px 0; + border: 1px solid #ddd; + border-radius: 5px; + font-size: 16px; +} + +form button { + width: 100%; + padding: 10px; + background-color: #00aaff; color: white; + border: none; + border-radius: 5px; + font-size: 16px; + cursor: pointer; + transition: background-color 0.3s ease; +} + +form button:hover { + background-color: #0077cc; } -.App-link { - color: #61dafb; +/* General Utility Classes */ +.text-center { + text-align: center; } -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } +.mt-20 { + margin-top: 20px; } diff --git a/src/App.js b/src/App.js index 3784575..27d9907 100644 --- a/src/App.js +++ b/src/App.js @@ -1,25 +1,32 @@ -import logo from './logo.svg'; -import './App.css'; +// src/App.js +import React, { useState } from 'react'; +import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'; +import Home from './components/Home'; +import Beers from './components/Beers'; +import BeerDetail from './components/BeerDetail'; +import NewBeer from './components/NewBeer'; +import RandomBeer from './components/RandomBeer'; +import 'D:/Palak Jain/lab-react-FullStackDrinks/src/components/style.css'; -function App() { - return ( -
- Edit src/App.js and save to reload.
-
{beer.description}
+ABV: {beer.abv}%
+ > + ) : ( +Loading...
+ )} +{beer.description}
+{beer.description}
+ABV: {beer.abv}%
+ > + ) : ( +Loading...
+ )} +