diff --git a/package-lock.json b/package-lock.json index 8197e6f22..8e973868b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,10 @@ "name": "react-hotel", "version": "0.1.0", "dependencies": { + "moment": "^2.29.4", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-router-dom": "^6.22.1", "react-scripts": "^5.0.1" }, "devDependencies": { @@ -3056,6 +3058,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@remix-run/router": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.1.tgz", + "integrity": "sha512-zcU0gM3z+3iqj8UX45AmWY810l3oUmXM7uH4dt5xtzvMhRtYVhKGOmgOd1877dOPPepfCjUv57w+syamWIYe7w==", + "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", @@ -11681,6 +11691,14 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -14054,6 +14072,36 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "6.22.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.1.tgz", + "integrity": "sha512-0pdoRGwLtemnJqn1K0XHUbnKiX0S4X8CgvVVmHGOWmofESj31msHo/1YiqcJWK7Wxfq2a4uvvtS01KAQyWK/CQ==", + "dependencies": { + "@remix-run/router": "1.15.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.22.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.1.tgz", + "integrity": "sha512-iwMyyyrbL7zkKY7MRjOVRy+TMnS/OPusaFVxM2P11x9dzSzGmLsebkCvYirGq0DWB9K9hOspHYYtDz33gE5Duw==", + "dependencies": { + "@remix-run/router": "1.15.1", + "react-router": "6.22.1" + }, + "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", diff --git a/package.json b/package.json index e3e1562a7..d38148e75 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,10 @@ "version": "0.1.0", "private": true, "dependencies": { + "moment": "^2.29.4", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-router-dom": "^6.22.1", "react-scripts": "^5.0.1" }, "scripts": { diff --git a/public/.index.html.icloud b/public/.index.html.icloud new file mode 100644 index 000000000..55648e149 Binary files /dev/null and b/public/.index.html.icloud differ diff --git a/src/.App.css.icloud b/src/.App.css.icloud new file mode 100644 index 000000000..b895cba05 Binary files /dev/null and b/src/.App.css.icloud differ diff --git a/src/App.css b/src/App.css index 05fe2d52e..0b4b53def 100644 --- a/src/App.css +++ b/src/App.css @@ -1,57 +1,68 @@ -.App { - text-align: left; +.btn-custom { + background-color: #ff7f50; + /* Custom color */ + border-color: #ff7f50; + /* Custom border color */ + transition: background-color 0.3s, border-color 0.3s; + /* Smooth transition on hover */ } -.App-logo { - animation: App-logo-spin infinite 20s linear; - height: 80px; +.btn-custom:hover { + background-color: #ff6347; + /* Darker shade on hover */ + border-color: #ff6347; + /* Darker shade on hover */ } -.App-header { - background-color: #222; - height: 50px; - padding: 20px; - color: white; - text-align: left; - font-family: Arial, Helvetica, sans-serif; - font-size: 1em; - font-weight: bold; +.service-card { + transition: all 0.3s ease; + /* Apply transition effect to all properties */ } -.App-title { - font-size: 1.5em; +.service-card:hover { + transform: scale(1.05); + /* Grow the card slightly on hover */ + background-color: #f8f9fa; + /* Change background color on hover */ } -.App-content { - padding-top: 20px; - font-size: large; +/* Bookings.css */ +.loading-container { + display: flex; + flex-direction: column; + align-items: center; } -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} -.search { - padding: 5px 0 20px 0; +.blink_me { + font-size: 24px; + color: #333; + text-transform: uppercase; + letter-spacing: 2px; + animation: blink 1s infinite alternate; } -tr { - color: #5b5757; -} +@keyframes blink { + 0% { + opacity: 0.2; + } -.results { - padding-top: 15px; + 100% { + opacity: 1; + } } -.footer { - padding-top: 20px; - text-align: center; +.loading-spinner { + border: 4px solid rgba(0, 0, 0, 0.1); + border-left-color: #333; + border-radius: 50%; + width: 40px; + height: 40px; + animation: spin 1s linear infinite; + margin-top: 20px; } -.card { - width: 18rem; -} +@keyframes spin { + 100% { + transform: rotate(360deg); + } +} \ No newline at end of file diff --git a/src/App.js b/src/App.js index 953c98560..bcb7d9a87 100644 --- a/src/App.js +++ b/src/App.js @@ -1,13 +1,23 @@ import React from "react"; - -import Bookings from "./Bookings"; +import Bookings from "./Components/Bookings"; import "./App.css"; +import Heading from "./Components/Heading"; +import Footer from "./Components/Footer"; +import TouristInfoCards from "./Components/TouristInfoCards"; +import Restaurant from "./Components/Restaurant"; +import HotelServices from "./Components/HotelServices"; +import RoomTypes from "./Components/RoomTypes"; const App = () => { return (
Loading...
; // Display loading message while fetching data + } + + // Assuming customerData is an array + const customer = customerData[0]; // Assuming the data for the customer is at the first index of the array + + return ( +Customer ID | +Title | +First Name | +Surname | +VIP | +Phone number | +|
---|---|---|---|---|---|---|
{props.id} | +{customer.title} | +{customer.firstName} | +{customer.surname} | +{customer.email} | +{customer.vip ? "Yes" : "No"} | +{customer.phoneNumber} | +
+ Stay connected with our high-speed Wi-Fi available throughout + the hotel. +
++ Relax and unwind by our poolside lounge area with refreshing + drinks and snacks. +
++ Our dedicated concierge team is available 24/7 to assist you + with all your needs. +
++ Comfortable and spacious room equipped with all the necessary + amenities for a pleasant stay. +
++ Luxurious room with additional amenities and elegant decor for a + truly indulgent experience. +
++ Spacious suite with separate living and sleeping areas, perfect + for families or extended stays. +
+id | +Title | +First name | +Surname | +Room id | +Check in date | +Check out date | +Number of nights | +Actions | +|
---|---|---|---|---|---|---|---|---|---|
{result.id} | +{result.title} | +{result.firstName} | +{result.surname} | +{result.email} | +{result.roomId} | +{result.checkInDate} | +{result.checkOutDate} | ++ {moment(result.checkOutDate).diff(result.checkInDate, "days")} + | ++ + | +