diff --git a/.github/workflows/nextjs.yml b/.github/workflows/nextjs.yml index 750c2f3..ed74736 100644 --- a/.github/workflows/nextjs.yml +++ b/.github/workflows/nextjs.yml @@ -7,7 +7,7 @@ name: Deploy Next.js site to Pages on: # Runs on pushes targeting the default branch push: - branches: ["ps-updates"] + branches: ["main"] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9b61219 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules +.next +next-env.d.ts \ No newline at end of file diff --git a/app/accommodation/[id]/page.tsx b/app/accommodation/[id]/page.tsx deleted file mode 100644 index 6239d53..0000000 --- a/app/accommodation/[id]/page.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import RoomPage from "@/templates/Accommodation/RoomPage"; - -const Room = ({ params }: { params: { id: string } }) => { - return ; -}; - -export default Room; diff --git a/app/accommodation/page.tsx b/app/accommodation/page.tsx deleted file mode 100644 index f48b719..0000000 --- a/app/accommodation/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import type { NextPage } from "next"; -import AccommodationPage from "@/templates/Accommodation/AccommodationPage"; - -const Accommodation: NextPage = () => { - return ; -}; - -export default Accommodation; diff --git a/app/dining/[id]/page.tsx b/app/dining/[id]/page.tsx deleted file mode 100644 index 0f81437..0000000 --- a/app/dining/[id]/page.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import DetailsPage from "@/templates/Dining/DetailsPage"; - -const Details = ({ params }: { params: { id: string } }) => { - return ; -}; - -export default Details; diff --git a/app/dining/page.tsx b/app/dining/page.tsx deleted file mode 100644 index 4b00e87..0000000 --- a/app/dining/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import type { NextPage } from "next"; -import DiningPage from "@/templates/Dining/DiningPage"; - -const Dining: NextPage = () => { - return ; -}; - -export default Dining; diff --git a/app/experiences/[id]/page.tsx b/app/experiences/[id]/page.tsx deleted file mode 100644 index fb70bff..0000000 --- a/app/experiences/[id]/page.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import ExperiencePage from "@/templates/Experiences/ExperiencePage"; - -const Experience = ({ params }: { params: { id: string } }) => { - return ; -}; - -export default Experience; diff --git a/app/experiences/page.tsx b/app/experiences/page.tsx deleted file mode 100644 index 01a45da..0000000 --- a/app/experiences/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import type { NextPage } from "next"; -import ExperiencesPage from "@/templates/Experiences/ExperiencesPage"; - -const Experiences: NextPage = () => { - return ; -}; - -export default Experiences; diff --git a/app/history/page.tsx b/app/history/page.tsx deleted file mode 100644 index b014f58..0000000 --- a/app/history/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import type { NextPage } from "next"; -import HistoryPage from "@/templates/HistoryPage"; - -const History: NextPage = () => { - return ; -}; - -export default History; diff --git a/app/layout.tsx b/app/layout.tsx index b39ca61..064c9cd 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -3,135 +3,135 @@ import { DM_Serif_Display, DM_Sans, Libre_Bodoni } from "next/font/google"; import "./globals.css"; const dmSerif = DM_Serif_Display({ - weight: ["400"], - subsets: ["latin"], - display: "block", - variable: "--font-dm-serif", + weight: ["400"], + subsets: ["latin"], + display: "block", + variable: "--font-dm-serif", }); const dmSans = DM_Sans({ - weight: ["400", "500", "700"], - style: ["normal", "italic"], - subsets: ["latin"], - display: "block", - variable: "--font-dm-sans", + weight: ["400", "500", "700"], + style: ["normal", "italic"], + subsets: ["latin"], + display: "block", + variable: "--font-dm-sans", }); const libreBodoni = Libre_Bodoni({ - weight: ["700"], - subsets: ["latin"], - display: "block", - variable: "--font-libre-bodoni", + weight: ["700"], + subsets: ["latin"], + display: "block", + variable: "--font-libre-bodoni", }); export const metadata: Metadata = { - title: "Hidden Oasis", - description: "Hidden Oasis - Hotel & Resort Website Coded Template", + title: "Hidden Oasis", + description: "Hidden Oasis - Hotel & Resort Website Coded Template", }; export default function RootLayout({ - children, + children, }: Readonly<{ - children: React.ReactNode; + children: React.ReactNode; }>) { - return ( - - - {/* Description no longer than 155 characters */} - + return ( + + + {/* Description no longer than 155 characters */} + - {/* Product Name */} - + {/* Product Name */} + - {/* Twitter Card data */} - - - - - - {/* Twitter Summary card images must be at least 120x120px */} - + {/* Twitter Card data */} + + + + + + {/* Twitter Summary card images must be at least 120x120px */} + - {/* Open Graph data for Facebook */} - - - - - - - + {/* Open Graph data for Facebook */} + + + + + + + - {/* Open Graph data for LinkedIn */} - - - - + {/* Open Graph data for LinkedIn */} + + + + - {/* Open Graph data for Pinterest */} - - - - - - - {children} - - - ); + {/* Open Graph data for Pinterest */} + + + + + + + {children} + + + ); } diff --git a/app/news/[id]/page.tsx b/app/news/[id]/page.tsx deleted file mode 100644 index fff48e0..0000000 --- a/app/news/[id]/page.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import ArticlePage from "@/templates/News/ArticlePage"; - -const Article = ({ params }: { params: { id: string } }) => { - return ; -}; - -export default Article; diff --git a/app/request-for-proposal/page.tsx b/app/request-for-proposal/page.tsx deleted file mode 100644 index 72e905f..0000000 --- a/app/request-for-proposal/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import type { NextPage } from "next"; -import RequestForProposalPage from "@/templates/RequestForProposalPage"; - -const RequestForProposal: NextPage = () => { - return ; -}; - -export default RequestForProposal; diff --git a/components/AccommodationItem/index.tsx b/components/AccommodationItem/index.tsx deleted file mode 100644 index eef2d75..0000000 --- a/components/AccommodationItem/index.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import Image from "@/components/Image"; -import Explore from "@/components/Explore"; - -type ItemType = { - id: string; - category: string; - title: string; - image: string; -}; - -type AccommodationItemProps = { - className?: string; - item: ItemType; -}; - -const AccommodationItem = ({ className, item }: AccommodationItemProps) => ( -
-
- -
-
{item.category}
-
- {item.title} -
- -
-); - -export default AccommodationItem; diff --git a/components/DiningItem/index.tsx b/components/DiningItem/index.tsx deleted file mode 100644 index f88d17a..0000000 --- a/components/DiningItem/index.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import Link from "next/link"; -import Image from "@/components/Image"; - -type ItemType = { - id: string; - title: string; - details: string; - food: string; - operatingHours: string; - image: string; -}; - -type DiningItemProps = { - className?: string; - item: ItemType; - row?: boolean; -}; - -const DiningItem = ({ className, item, row }: DiningItemProps) => ( -
-
- -
-
-
{item.title}
-
{item.details}
-
-
-
- -
- {item.food} -
-
-
- -
- Operating Hours: {item.operatingHours} -
-
- - VIEW DETAILS - -
-
-); - -export default DiningItem; diff --git a/components/ExperiencesItem/index.tsx b/components/ExperiencesItem/index.tsx deleted file mode 100644 index b9bc22f..0000000 --- a/components/ExperiencesItem/index.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import Image from "@/components/Image"; -import Explore from "@/components/Explore"; - -type ItemType = { - id: string; - image: string; - title: string; - content: string; -}; - -type ExperiencesItemProps = { - className?: string; - classContent?: string; - item: ItemType; -}; - -const ExperiencesItem = ({ - className, - classContent, - item, -}: ExperiencesItemProps) => ( -
-
- -
-
{item.title}
-
{item.content}
- -
-); - -export default ExperiencesItem; diff --git a/components/Footer/index.tsx b/components/Footer/index.tsx index 6e0d320..3a5465f 100644 --- a/components/Footer/index.tsx +++ b/components/Footer/index.tsx @@ -11,79 +11,43 @@ import { menu } from "@/constants/navigation"; type FooterProps = {}; const Footer = ({}: FooterProps) => { - return ( -
-
-
-
- {socials.map((social) => ( - - - - ))} -
- - BEST PRICE GUARANTEE - -
+ return ( +
+
+
+
+ {socials.map((social) => ( + + + + ))} +
+
+
+
+
+
+
Contact Us
+
+

ADVANCECAMP, INC.

+

1169 Sentinel Court, Merced, CA 95340-0677

+

phone: 925-303-9689

+

email: executivedirector@advancecamp.com

-
-
- {menu.map((group) => ( - - ))} -
-
- Contact Us -
-
-

Yen Ninh, Binh Son, Ninh Chu, Phan Rang,

-

Ninh Thuan 59000 Vietnam

-

Tel: +84 654 343 543

-

For reservations: +84 344 195 678

-

Mail: contact@naturalparadise.com

-
- -
-
-
-
-
-
- Copyright © 2023 - Hidden Oasis Resort. All rights - reserved -
- - - -
-
- Choose your language -
- -
-
-
-
- ); +
+ + +
+ ); }; export default Footer; diff --git a/components/Header/Dropdown/index.tsx b/components/Header/Dropdown/index.tsx index d7dea10..e8aa5c6 100644 --- a/components/Header/Dropdown/index.tsx +++ b/components/Header/Dropdown/index.tsx @@ -7,43 +7,18 @@ import { navigation } from "@/constants/navigation"; type DropdownProps = {}; const Dropdown = ({}: DropdownProps) => ( - + ); export default Dropdown; diff --git a/components/Header/index.tsx b/components/Header/index.tsx index 9bf02e1..08c06cf 100644 --- a/components/Header/index.tsx +++ b/components/Header/index.tsx @@ -4,49 +4,41 @@ import Language from "@/components/Language"; import Dropdown from "./Dropdown"; type HeaderProps = { - onClick: () => void; + onClick: () => void; }; const Header = ({ onClick }: HeaderProps) => { - return ( -
-
-
- - - - -
- - Register - -
-
-
-
-
- -
-
-
- ); + return ( +
+
+
+ + + + +
+
+
+
+ +
+
+
+ ); }; export default Header; diff --git a/components/Layout/index.tsx b/components/Layout/index.tsx index 7861598..396aee6 100644 --- a/components/Layout/index.tsx +++ b/components/Layout/index.tsx @@ -1,59 +1,59 @@ import { useState, useEffect } from "react"; import { usePathname } from "next/navigation"; import { - enablePageScroll, - disablePageScroll, - clearQueueScrollLocks, + enablePageScroll, + disablePageScroll, + clearQueueScrollLocks, } from "scroll-lock"; import Header from "@/components/Header"; import Sidebar from "@/components/Sidebar"; import Footer from "@/components/Footer"; type LayoutProps = { - children: React.ReactNode; + children: React.ReactNode; }; const Layout = ({ children }: LayoutProps) => { - const [visible, setVisible] = useState(false); - - const onOpenSidebar = () => { - setVisible(true); - disablePageScroll(); - }; - - const onCloseSidebar = () => { - setVisible(false); - enablePageScroll(); - }; - - const pathname = usePathname(); - - useEffect(() => { - clearQueueScrollLocks(); - enablePageScroll(); - }, [pathname]); - - return ( - <> -
-
-
{children}
-
-
- -
- - ); + const [visible, setVisible] = useState(false); + + const onOpenSidebar = () => { + setVisible(true); + disablePageScroll(); + }; + + const onCloseSidebar = () => { + setVisible(false); + enablePageScroll(); + }; + + const pathname = usePathname(); + + useEffect(() => { + clearQueueScrollLocks(); + enablePageScroll(); + }, [pathname]); +//TODO: might have to fix overflow-hidden to lg:overflow-hidden + return ( + <> +
+
+
{children}
+
+
+ +
+ + ); }; export default Layout; diff --git a/components/PricingTiers/index.tsx b/components/PricingTiers/index.tsx new file mode 100644 index 0000000..e331a78 --- /dev/null +++ b/components/PricingTiers/index.tsx @@ -0,0 +1,17 @@ +import Image from "@/components/Image"; +import Explore from "@/components/Explore"; + +type tierType = { + id: string; + price: number; + title: string; +}; + +const PricingTier = ({tier}: {tier: tierType}) => ( +
+

{tier.price}

+
{tier.title}
+
+); +export default PricingTier; diff --git a/components/Rooms/index.tsx b/components/Rooms/index.tsx deleted file mode 100644 index 171f649..0000000 --- a/components/Rooms/index.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { Swiper, SwiperSlide } from "swiper/react"; -import { Scrollbar } from "swiper/modules"; -import "swiper/css/scrollbar"; -import "swiper/css"; -import AccommodationItem from "@/components/AccommodationItem"; - -import { accommodation } from "@/mocks/accommodation"; - -type RoomsProps = {}; - -const Rooms = ({}: RoomsProps) => ( -
-
-
- You Might Be Interested. -
- - {accommodation.map((room) => ( - - - - ))} - -
-
-); - -export default Rooms; diff --git a/components/Sidebar/index.tsx b/components/Sidebar/index.tsx index 4860038..2595967 100644 --- a/components/Sidebar/index.tsx +++ b/components/Sidebar/index.tsx @@ -5,70 +5,46 @@ import Icon from "@/components/Icon"; import { navigation } from "@/constants/navigation"; type SidebarProps = { - className: string; - onClick: () => void; + className: string; + onClick: () => void; }; const Sidebar = ({ className, onClick }: SidebarProps) => ( -
-
- - - - -
-
- {navigation.map((link) => - link.dropdown ? ( -
-
- {link.title} -
-
- {link.dropdown.map((item) => ( - - {item.title} - - ))} -
-
- ) : ( - - {link.title} - - ) - )} -
- - Book a Tour - +
+
+ + + +
+
+ {navigation.map((link) => ( + + {link.title} + + ) + )} +
+
); export default Sidebar; diff --git a/components/Team/team.tsx b/components/Team/team.tsx new file mode 100644 index 0000000..7533024 --- /dev/null +++ b/components/Team/team.tsx @@ -0,0 +1,81 @@ +import Image from "@/components/Image"; + +type TeamMember = { + id: string; + name: string; + title: string; + email: string; + notables: string[]; + awards: string[]; + children: string[]; + description: string; + image: string; +}; + +type MemberProps = { + member: TeamMember; +}; + +const Member = ({ member }: MemberProps) => { + return ( +
+
+
+
{member.title}
+ {`Image +

{member.name}

+
+

{member.email}

+
+
+
+ {member.notables && member.notables.length > 0 && ( +
+ Notables: +
    + {member.notables.map((note, index) => ( +
  • {note}
  • + ))} +
+
+ )} + {member.awards && member.awards.length > 0 && ( +
+ Awards: +
    + {member.awards.map((award, index) => ( +
  • {award}
  • + ))} +
+
+ )} + {member.children && member.children.length > 0 && ( +
+ Children: +
    + {member.children.map((child, index) => ( +
  • {child}
  • + ))} +
+
+ )} + {member.description && ( +

+ Description: {member.description} +

+ )} +
+
+
+ ); +}; + +const Team = ({ team }: { team: TeamMember[] }) => ( +
+ {team.map(member => ( + + ))} +
+); + +export default Team; \ No newline at end of file diff --git a/constants/navigation.tsx b/constants/navigation.tsx index 9335d1b..732f8aa 100644 --- a/constants/navigation.tsx +++ b/constants/navigation.tsx @@ -7,31 +7,10 @@ export const navigation = [ { id: "2", title: "About Us", - url: "/accommodation", + url: "/about-us", }, { id: "3", - title: "Camping", - url: "/accommodation", - }, - { - id: "4", - title: "Courses", - dropdown: [ - { - id: "0", - title: "Merit Badge Courses", - url: "/dining", - }, - { - id: "1", - title: "Adult Leader Training", - url: "/wedding-and-events", - }, - ], - }, - { - id: "5", title: "Contact Us", url: "/contact-us", }, @@ -52,98 +31,119 @@ export const menu = [ title: "Contact Us", url: "/contact-us", }, + { id: "2", - title: "Gift Card", - url: "/vouchers", - }, - { - id: "3", - title: "Careers", - url: "/career", - }, - { - id: "4", - title: "Privacy Notice", - url: "/policy", - }, - { - id: "5", - title: "Legal Noice", - url: "/policy", - }, - { - id: "6", title: "Leadership", - url: "/history", - }, - ], - }, - { - id: "1", - title: "Our Products", - items: [ - { - id: "0", - title: "Essentials", - url: "/", - }, - { - id: "1", - title: "e-Gifting", - url: "/", - }, - { - id: "2", - title: "Accommodation", - url: "/accommodation", - }, - { - id: "3", - title: "Dining", - url: "/dining", - }, - { - id: "4", - title: "Spa & Fitness", - url: "/wellness", - }, - { - id: "5", - title: "Offers", - url: "/special-offers", - }, - { - id: "6", - title: "Events", - url: "/wedding-and-events", - }, - ], - }, - { - id: "2", - title: "Other Page", - items: [ - { - id: "0", - title: "Reservation", - url: "/reservation", - }, - { - id: "1", - title: "Image Gallery", - url: "/gallery", - }, - { - id: "2", - title: "Cookie Preferences", - url: "/", - }, - { - id: "3", - title: "Best Rate Guarantee", - url: "/", + url: "/about-us", }, ], }, + ]; + + + + +// { +// id: "3", +// title: "Camping", +// url: "/accomodation", +// }, +// { +// id: "4", +// title: "Courses", +// dropdown: [ +// { +// id: "0", +// title: "Merit Badge Courses", +// url: "/merit-badges", +// }, +// { +// id: "1", +// title: "Adult Leader Training", +// url: "/adult-leader-training", +// }, +// ], +// }, + + +// { +// id: "2", +// title: "Other Page", +// items: [ +// { +// id: "0", +// title: "Reservation", +// url: "/reservation", +// }, +// { +// id: "1", +// title: "Image Gallery", +// url: "/gallery", +// }, +// { +// id: "2", +// title: "Cookie Preferences", +// url: "/", +// }, +// { +// id: "3", +// title: "Best Rate Guarantee", +// url: "/", +// }, +// ], +// }, + +// { +// id: "1", +// title: "Our Products", +// items: [ +// { +// id: "0", +// title: "Essentials", +// url: "/", +// }, +// { +// id: "1", +// title: "e-Gifting", +// url: "/", +// }, +// { +// id: "2", +// title: "Accommodation", +// url: "/accommodation", +// }, +// { +// id: "3", +// title: "Dining", +// url: "/dining", +// }, +// { +// id: "4", +// title: "Spa & Fitness", +// url: "/wellness", +// }, +// { +// id: "5", +// title: "Offers", +// url: "/special-offers", +// }, +// { +// id: "6", +// title: "Events", +// url: "/wedding-and-events", +// }, +// ], +// }, + +// { +// id: "3", +// title: "Privacy Notice", +// url: "/policy", +// }, +// { +// id: "4", +// title: "Legal Noice", +// url: "/policy", +// }, \ No newline at end of file diff --git a/constants/socials.tsx b/constants/socials.tsx index 32e6342..5b6372b 100644 --- a/constants/socials.tsx +++ b/constants/socials.tsx @@ -1,50 +1,20 @@ -export const socials = [ - { - id: "0", - icon: "facebook", - url: "https://www.facebook.com/ui8.net/", - }, - { - id: "1", - icon: "instagram", - url: "https://www.instagram.com/ui8net", - }, - { - id: "2", - icon: "linkedin", - url: "https://www.linkedin.com/company/ui8", - }, - { - id: "3", - icon: "play", - url: "https://www.youtube.com/channel/UCaNaGdLWRfjoX681zIkstfg", - }, - { - id: "4", - icon: "weibo", - url: "https://ui8.net/", - }, - { - id: "5", - icon: "wechat", - url: "https://ui8.net/", - }, -]; +interface Social { + id: string; + icon: string; + url: string; +} -export const socialsPost = [ - { - id: "0", - icon: "facebook", - url: "https://www.facebook.com/ui8.net/", - }, - { - id: "1", - icon: "instagram", - url: "https://www.instagram.com/ui8net", - }, - { - id: "2", - icon: "linkedin", - url: "https://www.linkedin.com/company/ui8", - }, +export const socials: Social[] = [ + { + id: "0", + icon: "facebook", + url: "https://www.facebook.com/advancecamp", + }, + { + id: "1", + icon: "instagram", + url: "https://www.instagram.com/advancecamp", + }, ]; + +export const socialsPost: Social[] = []; diff --git a/constants/tiers.tsx b/constants/tiers.tsx new file mode 100644 index 0000000..05b52a5 --- /dev/null +++ b/constants/tiers.tsx @@ -0,0 +1,23 @@ +export const tiers = [ + { + id: "0", + title: "Early Registration", + price: parseFloat("$65"), + startDate: "", + endDate: "" + }, + { + id: "1", + title: "Regular Registration", + price: parseFloat("$85"), + startDate: "", + endDate: "" + }, + { + id: "2", + title: "Late Registration", + price: parseFloat("$105"), + startDate: "", + endDate: "" + }, + ]; \ No newline at end of file diff --git a/mocks/announcements.tsx b/mocks/announcements.tsx new file mode 100644 index 0000000..c288e02 --- /dev/null +++ b/mocks/announcements.tsx @@ -0,0 +1,8 @@ +export const announcements = [ + { + "id": "0", + "title": "Golden Gate Area Council (GGAC) and AdvanceCamp, Inc. are thrilled to announce their merger", + "content": "Following unanimous votes by both the GGAC and Advance Camp boards. This strategic alliance will see AdvanceCamp forming a new committee within our GGAC Program committees, ensuring the annual AdvanceCamp event continues to thrive and grow.\nMark your calendars for the 24th AdvanceCamp, taking place on September 27-28, 2024 at the Solano County Fairgrounds. The event attracts Scouts from across California and Nevada, and this merger promises to expand our reach even further. Since its inception in 1998, AdvanceCamp has served over 30,000 Scouts, providing a platform for them to complete partials for unusual merit badges. The event has grown from 300 Scouts and 15 merit badges to a major annual gathering, thanks to the tireless efforts of Steve Hoagland, the Executive Director of AdvanceCamp.\nAs we continue to regain momentum post-COVID, we're excited to see the growing partnership between GGAC and AdvanceCamp, with more volunteers than ever before. Registration for AdvanceCamp opens in early June, with more details about this year’s event coming soon. If you're interested in volunteering, click the button below to learn more!\nWe can't wait to see you there!" + } +]; + \ No newline at end of file diff --git a/mocks/services.tsx b/mocks/services.tsx deleted file mode 100644 index 979c90e..0000000 --- a/mocks/services.tsx +++ /dev/null @@ -1,26 +0,0 @@ -export const services = [ - { - id: "0", - title: "Wedding & Events", - content: - "Hidden Oasis resort is the perfect location for weddings and events. The resort offers a variety of event spaces, from intimate beachside ceremonies to grand ballroom receptions. The professional staff provides personalized attention to every detail, ensuring a memorable and stress-free experience for all guests.", - image: "/images/content/services-pic-1.jpg", - url: "/wedding-and-events", - }, - { - id: "1", - title: "Dining", - content: - "Hidden Oasis resort offers a variety of dining options from beachside cafes to fine dining restaurants with fresh seafood and international cuisine. The restaurants offer breathtaking views of natural beauty, creating a serene atmosphere for all guests.", - image: "/images/content/services-pic-2.jpg", - url: "/dining", - }, - { - id: "2", - title: "Beauty & Wellness", - content: - "Hidden Oasis resort offers a rejuvenating spa and wellness experience for guests. The resort has a variety of treatments, from traditional massages to aromatherapy, all designed to restore and invigorate the mind and body. The professional staff provides personalized attention to each guest, ensuring a relaxing and memorable experience.", - image: "/images/content/services-pic-3.jpg", - url: "/wellness", - }, -]; diff --git a/mocks/team.tsx b/mocks/team.tsx new file mode 100644 index 0000000..3a4f8f5 --- /dev/null +++ b/mocks/team.tsx @@ -0,0 +1,106 @@ +export const team = [ + { + id: "0", + name: "Steve R. Hoagland, Sr", + title: "Executive Director", + email: "executivedirector@advancecamp.com", + notables: ["Began scouting: 1965", "Assistant Scoutmaster; Committee Chair Troop 48; Charter", "Organization Representative Troop 48; District Committee", "Program Chair- Delta District, Black Diamond District; District", "FOS Chair- Muir District"], + awards: ["Eagle Scout Troop 267 (1974)", "District Award of Merit (2003)", "Silver Beaver (2010)", "Outstanding Eagle Award (2013)"], + children: ["Steven (son), Eagle Scout (2001)"], + image: "/images/content/advance-camp-headshots/steve-hoagland-sr.jpeg", + description: "Founded AdvanceCamp with the help from adult volunteers in the Delta District in 1999" + }, + { + id: "1", + name: "Mike Long", + title: "Vice-President & Aquatics Director", + email: "diveboy01@comcast.net", + notables: ["Den Leader Tiger Cub through Webelos Pack 134 (2001-2005)", "Pack Committee Chair Pack 134 (2003-2005)", + "Assistant Scoutmaster Troop 100 (2006-2009, 2012-present)", "Crew Advisor-Philmont Scout Ranch (2009, 2012)", + "District Training Team-Herms District (2012-present)", "District Camporee Chair-Herms (2012-present)", "District Eagle Board of Review Member- Herms (2013-present)" + ], + awards: ["District Award of Merit (2013)"], + children: ["Son, Michael (Eagle 2012)"], + image: "/images/content/advance-camp-headshots/mike-long.jpeg", + description: "Began scouting: 2001 Pack 134 El Sobrante. Joined AdvanceCamp Board: 2013. " + }, + { + id: "2", + name: "Marcia Molina", + title: "Finance & Registration Director", + email: "advancecampregistration@yahoo.com", + notables: ["Founding member and Advisor of Crew 48, Pittsburg", "Former Assistant Scoutmaster Troop 48, Pittsburg", "Former Associate Advisor for Communications for the MDSC Venturing Officers Association", + "Former Associate Advisor for Communications Western Region Area 3 Venturing Officers Association" + ], + awards: [ + "Council Venturing Leadership Award (2010)","Area 3 Venturing Leadership Award (2017)" + ], + children: ["Son, David, Eagle Scout 2011"], + image: "/images/content/advance-camp-headshots/marcia-molina.png", + description: "Began scouting: 2008 in Pittsburg, CA. Joined AdvanceCamp Board: 2017" + }, + { + id: "3", + name: "Steven A. Hoagland", + title: "Merit Badge Staff Director", + email: "advancecampstaff@gmail.com", + notables: [], + awards: ["Eagle Scout(2001)"], + children: [], + image: "/images/content/advance-camp-headshots/steve-jr.jpeg", + description: "Joined AdvanceCamp Board: 1999" + }, + { + id: "4", + name: "Richard Byle", + title: "Trailhead Director", + email: "gryphon97@gmail.com", + notables: [], + awards: [], + children: [], + image: "/images/content/advance-camp-headshots/rich-byle.png", + description: "Joined AdvanceCamp Board: 2022. U. S. Navy Veteran (1976-1984). Began Scouting in 1964, Pack 342, Santa Clara Council" + }, + { + id: "5", + name: "Maria Salazar-Vega", + title: "Board Secretary & Food Services Director", + email: "gryphon97@gmail.com", + notables: ["Assistant Advisor Crew 48"], + awards: [], + children: ["Son, Alex, Eagle Scout (2015)"], + image: "/images/content/advance-camp-headshots/maria-salazar.png", + description: "Joined AdvanceCamp Board (2018). Began Scouting in 2010." + }, + { + id: "6", + name: "Deborah Long", + title: "Building Coordinators Director", + email: "gryphon97@gmail.com", + notables: ["Assistant Advisor Crew 48"], + awards: [ + "Den Leader Tiger Cub through Webelos Pack 134(2001-2005)", + "Staff MDSC Woodbadge (2009)", + "Pack Advancement Chair Pack 134 (2003-2005)", + "Assistant Scoutmaster Troop 100 (2006-present)", + "Philmont Training Center Attendee (2009)", + "Coordinator-Herms District Den Chief Training Team (2009-2012)", + "Scoutmaster Troop 623( 2009-2012)", + "Program Chair Herms District (2011-2013)" + ], + children: ["Michael (son); Eagle Scout (2012)"], + image: "/images/content/advance-camp-headshots/deborah-long.jpeg", + description: "Joined AdvanceCamp Board (2013). Began scouting(2001). Pack 134 El Sobrante." + }, + { + id: "7", + name: "Andrew Gonzalez", + title: "Logistics Director", + email: "andrew141767@gmail.com", + notables: [], + awards: [], + children: [], + image: "/images/content/advance-camp-headshots/andrew-gonzalez.jpeg", + description: "" + }, +]; diff --git a/mocks/testimonials.tsx b/mocks/testimonials.tsx new file mode 100644 index 0000000..bf7e122 --- /dev/null +++ b/mocks/testimonials.tsx @@ -0,0 +1,16 @@ +export const testimonials = [ + { + id: "0", + title: "Steve Hoagland, Executive Director of AdvanceCamp", + content: + "I have been blessed over the years to work with many wonderful volunteers and now with the merger of AdvanceCamp into the wheel of GGAC success we feel a common goal and desire to see our Scouts working in the program expand.", + image: "/images/content/advance-camp-headshots/steve-hoagland-sr.jpeg", + }, + { + id: "1", + title: "Tom Weibert, President of the GGAC Executive Board", + content: + "AdvanceCamp is an amazing event that brings Scouts from all over together to work on Merit Badges and other advancement activities. This is exciting to be able to bring the strength of the AdvanceCamp team together with the structure and volunteers of the Council to ensure this event continues well into the future.", + image: "/images/content/advance-camp-headshots/tom-weibert-and-daughter.jpeg", + }, +]; diff --git a/next.config.mjs b/next.config.mjs index 4678774..1546df8 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,4 +1,9 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = {}; +// next.config.js -export default nextConfig; +const nextConfig = { + output: "export", // <=== enables static exports + reactStrictMode: true, + }; + + export default nextConfig; + \ No newline at end of file diff --git a/public/images/content/advance-camp-headshots/andrew-gonzalez.jpeg b/public/images/content/advance-camp-headshots/andrew-gonzalez.jpeg new file mode 100644 index 0000000..8d16904 Binary files /dev/null and b/public/images/content/advance-camp-headshots/andrew-gonzalez.jpeg differ diff --git a/public/images/content/advance-camp-headshots/deborah-long.jpeg b/public/images/content/advance-camp-headshots/deborah-long.jpeg new file mode 100644 index 0000000..9ff0767 Binary files /dev/null and b/public/images/content/advance-camp-headshots/deborah-long.jpeg differ diff --git a/public/images/content/advance-camp-headshots/marcia-molina.png b/public/images/content/advance-camp-headshots/marcia-molina.png new file mode 100644 index 0000000..145709f Binary files /dev/null and b/public/images/content/advance-camp-headshots/marcia-molina.png differ diff --git a/public/images/content/advance-camp-headshots/maria-salazar.png b/public/images/content/advance-camp-headshots/maria-salazar.png new file mode 100644 index 0000000..cf0de2c Binary files /dev/null and b/public/images/content/advance-camp-headshots/maria-salazar.png differ diff --git a/public/images/content/advance-camp-headshots/mike-long.jpeg b/public/images/content/advance-camp-headshots/mike-long.jpeg new file mode 100644 index 0000000..eec55c7 Binary files /dev/null and b/public/images/content/advance-camp-headshots/mike-long.jpeg differ diff --git a/public/images/content/advance-camp-headshots/rich-byle.png b/public/images/content/advance-camp-headshots/rich-byle.png new file mode 100644 index 0000000..7fae946 Binary files /dev/null and b/public/images/content/advance-camp-headshots/rich-byle.png differ diff --git a/public/images/content/advance-camp-headshots/steve-hoagland-sr.jpeg b/public/images/content/advance-camp-headshots/steve-hoagland-sr.jpeg new file mode 100644 index 0000000..cf308f4 Binary files /dev/null and b/public/images/content/advance-camp-headshots/steve-hoagland-sr.jpeg differ diff --git a/public/images/content/advance-camp-headshots/steve-jr.jpeg b/public/images/content/advance-camp-headshots/steve-jr.jpeg new file mode 100644 index 0000000..78ee957 Binary files /dev/null and b/public/images/content/advance-camp-headshots/steve-jr.jpeg differ diff --git a/public/images/content/advance-camp-headshots/tom-weibert-and-daughter.jpeg b/public/images/content/advance-camp-headshots/tom-weibert-and-daughter.jpeg new file mode 100644 index 0000000..40aeb5e Binary files /dev/null and b/public/images/content/advance-camp-headshots/tom-weibert-and-daughter.jpeg differ diff --git a/public/images/content/advcamplogo.png b/public/images/content/advcamplogo.png new file mode 100644 index 0000000..201e00b Binary files /dev/null and b/public/images/content/advcamplogo.png differ diff --git a/public/images/content/scoutshirt.jpg b/public/images/content/scoutshirt.jpg new file mode 100644 index 0000000..91dbb50 Binary files /dev/null and b/public/images/content/scoutshirt.jpg differ diff --git a/tailwind.config.ts b/tailwind.config.ts index 1c63b8f..d104a9a 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -10,21 +10,12 @@ const config: Config = { ], theme: { screens: { - 'hover-hover': {'raw': '(hover: hover)'}, - // => @media (hover: hover) { ... } - "3xl": { max: "1719px" }, - // => @media (max-width: 1719px) { ... } - "2xl": { max: "1419px" }, - // => @media (max-width: 1419px) { ... } - xl: { max: "1179px" }, - // => @media (max-width: 1179px) { ... } - lg: { max: "1023px" }, - // => @media (max-width: 1023px) { ... } - md: { max: "767px" }, - // => @media (max-width: 767px) { ... } - sm: { max: "480px" }, - // => @media (max-width: 480px) { ... } - }, + 'sm': {'min': '640px'}, // Styles apply for screens 640px wide and above + 'md': {'min': '768px'}, // Styles apply for screens 768px wide and above + 'lg': {'min': '1024px'}, // Styles apply for screens 1024px wide and above + 'xl': {'min': '1280px'}, // Styles apply for screens 1280px wide and above + '2xl': {'min': '1536px'} // Styles apply for screens 1536px wide and above + }, extend: { colors: { primary: { diff --git a/templates/AboutUsPage/Main/index.tsx b/templates/AboutUsPage/Main/index.tsx index 34c960e..5262182 100644 --- a/templates/AboutUsPage/Main/index.tsx +++ b/templates/AboutUsPage/Main/index.tsx @@ -1,115 +1,28 @@ import Image from "@/components/Image"; +import Team from "@/components/Team/team"; +import { team } from "@/mocks/team"; type MainProps = {}; const Main = ({}: MainProps) => (
-
-
- NINH THUAN, VIETNAM -
+
- Luxury Living in Pagadise. -
-
-

- Hidden Oasis is a beautiful resort in Ninh Thuan, Vietnam. - It's surrounded by mountains and the ocean, with lush - greenery and colorful flowers. The rooms are spacious and - luxurious with modern amenities. There are many activities - to enjoy, and the dining experience is exceptional. The - resort also has a world-class spa for relaxation and - rejuvenation. It's a paradise on earth and an - unforgettable destination in Vietnam. -

-
- -
-

- Escape to a world of natural beauty and luxurious comfort at - our Hidden Oasis resort. Nestled in a secluded area, our - resort offers the perfect getaway from the stresses of - modern life. Surrounded by lush greenery and the stunning - ocean, our accommodations are designed to provide the - ultimate in comfort and relaxation.

Whether - you're traveling alone, with a partner, or with a group - of friends or family, we have the perfect accommodation to - suit your needs. Our spacious villas offer plenty of room to - spread out, while our cozy bungalows provide a more intimate - setting. All of our accommodations feature private balconies - or terraces with breathtaking views of the surrounding - nature.

At our resort, you'll never run out of - things to do. Start your day with a refreshing hike through - the nearby trails, where you can enjoy the sights and sounds - of the local wildlife. If you prefer water activities, take - a kayaking excursion or simply relax on the pristine - beaches. In the evening, wind down with a restorative yoga - class or a dip in our infinity pool.

For those - seeking a more indulgent experience, our spa offers a range - of treatments and massages to soothe your body and mind. - From traditional Balinese massages to rejuvenating facials, - our skilled therapists will help you feel refreshed and - revitalized. -

-
-
- -
-
- -
-
-

- When it comes to dining, our resort offers a range of - options to satisfy any palate. Sample local delicacies at - our restaurant, or enjoy a romantic dinner for two on the - beach. If you prefer a more private dining experience, we - can arrange for a chef to prepare a gourmet meal in your - villa or bungalow.

Our Hidden Oasis resort is the - perfect destination for those seeking a peaceful and - luxurious escape. Book your stay today and experience the - beauty of nature in style. -

-

- For those seeking a more indulgent experience, our spa - offers a range of treatments and massages to soothe your - body and mind. From traditional Balinese massages to - rejuvenating facials, our skilled therapists will help you - feel refreshed and revitalized. -

When it comes to dining, our resort offers a range - of options to satisfy any palate. Sample local delicacies at - our restaurant, or enjoy a romantic dinner for two on the - beach. If you prefer a more private dining experience, we - can arrange for a chef to prepare a gourmet meal in your - villa or bungalow. -

At our Hidden Oasis resort, you'll have the - opportunity to disconnect from the outside world and connect - with nature. It's the perfect place to escape the - stresses of modern life and recharge your batteries. Whether - you're seeking adventure, relaxation, or a little bit - of both, our resort is the perfect destination for you. -

+ Advance Camp
+
+

The mission of the AdvanceCamp is to support educational opportunities for youth and to provide an effective program that: develops personal/mental/emotional fitness, gives opportunities to develop self-reliance, develops a keen respect for the basic rights of others and prepares scouts for participating and giving leadership within their community and world.

+ +

AdvanceCamp began in 1998 when a scout talked to Steve Hoagland because he had a number of partials of unusual merit badges from summer camps he had attended. He wanted to finish them but could not find a merit badge counselor for them. The first camp was held at Contra Costa Fairgrounds in Antioch, then Contra Loma Park in Antioch, then Ambrose Park in Bay Point before returning to the Contra Costa Fairgrounds. In our first year there were about 300 scouts and only about 15 merit badges. AdvanceCamp moved to the Solano County Fairgrounds in 2019.

+ +

Since our inception, AdvanceCamp has served over 30,000 scouts. We have over 200 counselors, offering 60 merit badges trailhead advancement. We also offer adult leader trainings.

+ +

AdvanceCamp is run by registered volunteer Scouters who serve without compensation. 100% of all funds collected goes towards the program.

+
Advance Camp Board
+ +
); export default Main; diff --git a/templates/Accommodation/AccommodationPage/index.tsx b/templates/Accommodation/AccommodationPage/index.tsx deleted file mode 100644 index 23ffaa8..0000000 --- a/templates/Accommodation/AccommodationPage/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -"use client"; - -import Layout from "@/components/Layout"; -import AccommodationItem from "@/components/AccommodationItem"; - -import { accommodation } from "@/mocks/accommodation"; - -const AccommodationPage = () => { - return ( - -
-
-
-
Accommodation.
-
- Each accommodation is designed with modern amenities - and decorated with local crafts, providing a - comfortable and authentic experience. Tucked away - from the hustle and bustle of the city, Hidden Oasis - is the perfect escape for those seeking peace and - tranquility. -
-
-
- {accommodation.map((room) => ( - - ))} -
-
-
-
- ); -}; - -export default AccommodationPage; diff --git a/templates/Accommodation/RoomPage/Main/index.tsx b/templates/Accommodation/RoomPage/Main/index.tsx deleted file mode 100644 index 71553d7..0000000 --- a/templates/Accommodation/RoomPage/Main/index.tsx +++ /dev/null @@ -1,147 +0,0 @@ -import Link from "next/link"; -import Image from "@/components/Image"; -import Icon from "@/components/Icon"; - -import { optionsRoom } from "@/mocks/accommodation"; - -type MainProps = { - id: any; -}; - -const Main = ({ id }: MainProps) => ( -
-
-
- -
-
-
- As soon as you step into Hidden Oasis Resort, you'll - feel inspired by the beauty of our beach resort. Our Classic - Rooms are designed in a traditional Vietnamese style and - feature unique touches that will delight you at every turn. - Relax in the comfortable indoor-outdoor living areas and - enjoy the refreshing sea breeze. You can also indulge in the - oversized marble tub or unwind on the extra-comfortable king - or queen beds. And, if you're in the mood for some - socializing, invite your friends over for evening drinks on - your terrace overlooking the lush gardens and sparkling sea. -
-
- {optionsRoom.map((option) => ( -
-
-
- -
- {option.title} -
-
- {option.value} -
-
- ))} -
-
-
- Benefits -
-
    -
  • - As a guest staying in a Classic Room at Hidden Oasis - Resort, you will enjoy exclusive access to our - stunning beach and all of its associated amenities, - including exciting beach games. -
  • -
  • - In addition, there are plenty of recreational - activities available for you to participate in, such - as non-motorized water sports (such as kayaking, - sailing, and stand-up paddleboarding), as well as - tennis courts, beach games, and daily yoga and tai - chi classes. -
  • -
  • - For those who want to stay fit and healthy during - their stay, our state-of-the-art Soar Gym fitness - center is available to use at any time. -
  • -
  • - Children under the age of six can enjoy - complimentary meals from the Kid's Menu, while - adults can relax and unwind with a game of billiards - or table tennis at Long Bar. -
  • -
  • - There's also something for animal lovers with - our one-hour Wildlife Workshop, led by our resident - zoologist. -
  • -
  • - Movie enthusiasts can indulge in scheduled film - screenings at our Cinema, and parents can relax - knowing that their children are in good hands at our - Planet Trekkers Kids Club. -
  • -
  • - Guests who need to stay connected can access - computers and wireless internet throughout the - resort at our Business Center. -
  • -
-
-
-
- Amenities -
-
    -
  • Ocean views
  • -
  • Private pool
  • -
  • Timber sun deck
  • -
  • King-size bed
  • -
  • Living area with sofa, writing desk
  • -
  • Bathroom with bathtub, twin vanities
  • -
  • Separate shower/toilet
  • -
  • Sun deck with sun loungers
  • -
  • WiFi, TV, Netflix, Bose sound system, safe
  • -
  • Personal bar
  • -
-
-
- - Make a Reservation - -
-
-
1/9
- - -
-
-
-
-); - -export default Main; diff --git a/templates/Accommodation/RoomPage/index.tsx b/templates/Accommodation/RoomPage/index.tsx deleted file mode 100644 index 52a6239..0000000 --- a/templates/Accommodation/RoomPage/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -"use client"; - -import Layout from "@/components/Layout"; -import Rooms from "@/components/Rooms"; -import Main from "./Main"; - -const RoomPage = ({ id }: any) => { - return ( - -
- - - ); -}; - -export default RoomPage; diff --git a/templates/Career/BidPage/Form/Result/index.tsx b/templates/Career/BidPage/Form/Result/index.tsx deleted file mode 100644 index 648a17a..0000000 --- a/templates/Career/BidPage/Form/Result/index.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import Link from "next/link"; -import Image from "@/components/Image"; - -type ResultProps = {}; - -const Result = ({}: ResultProps) => ( - <> -
-
-
- -
- Thank You For Submitting Your Resume -
-
Dear Nguyen,
-
- We appreciate your interest in joining our team.

Our - recruitment team is currently reviewing your application and - will be in touch with you soon. We encourage you to check your - email regularly for updates on the status of your application. -

Thank you again for considering Hidden Oasis Resort as - your potential employer. If you have any questions or concerns, - please do not hesitate to reach out to us. -
-
Best regards,
-
Hidden Oasis Recruitment Team
-
-
- - Return to Careers Page - -
- -); - -export default Result; diff --git a/templates/Career/BidPage/Form/index.tsx b/templates/Career/BidPage/Form/index.tsx deleted file mode 100644 index 06338df..0000000 --- a/templates/Career/BidPage/Form/index.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import { useState } from "react"; -import Field from "@/components/Field"; -import Result from "./Result"; - -type FormProps = {}; - -const Form = ({}: FormProps) => { - const [success, setSuccess] = useState(false); - const [firstName, setFirstName] = useState(""); - const [lastName, setLastName] = useState(""); - const [phone, setPhone] = useState(""); - const [email, setEmail] = useState(""); - const [region, setRegion] = useState(""); - const [city, setCity] = useState(""); - - return ( -
-
- {success ? ( - - ) : ( -
console.log("Submit")} - > -
- Director of Sales & Marketing. -
-
- setFirstName(e.target.value)} - required - /> - setLastName(e.target.value)} - required - /> -
-
- setPhone(e.target.value)} - required - /> - setEmail(e.target.value)} - required - /> -
-
- setRegion(e.target.value)} - required - /> - setCity(e.target.value)} - required - /> -
-
- Upload Your Resume* -
-
-
-
- -
-
-
-
- -
-
- )} -
-
- ); -}; - -export default Form; diff --git a/templates/Career/BidPage/index.tsx b/templates/Career/BidPage/index.tsx deleted file mode 100644 index b548f3d..0000000 --- a/templates/Career/BidPage/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -"use client"; - -import Layout from "@/components/Layout"; -import Hero from "@/components/Hero"; -import Form from "./Form"; - -const BidPage = () => { - return ( - - -
- - ); -}; - -export default BidPage; diff --git a/templates/Career/CareerPage/Career/Position/index.tsx b/templates/Career/CareerPage/Career/Position/index.tsx deleted file mode 100644 index 889ffc1..0000000 --- a/templates/Career/CareerPage/Career/Position/index.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import Link from "next/link"; - -type ItemType = { - id: string; - title: string; - location: string; - employment: string; - date: string; -}; - -type PositionProps = { - item: ItemType; -}; - -const Position = ({ item }: PositionProps) => ( -
-
- {item.title} -
-
- {item.location} -
-
-
{item.employment}
-
{item.date}
-
- - Apply Now - -
-); - -export default Position; diff --git a/templates/Career/CareerPage/Career/index.tsx b/templates/Career/CareerPage/Career/index.tsx deleted file mode 100644 index 1353ae9..0000000 --- a/templates/Career/CareerPage/Career/index.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import { useState } from "react"; -import Field from "@/components/Field"; -import Select from "@/components/Select"; -import Checkbox from "@/components/Checkbox"; -import Position from "./Position"; - -import { career } from "@/mocks/career"; - -const regions = [ - { - id: "0", - title: "All Region", - }, - { - id: "1", - title: "Asia", - }, - { - id: "2", - title: "Europe", - }, -]; - -type CareerProps = {}; - -const Career = ({}: CareerProps) => { - const [search, setSearch] = useState(""); - const [region, setRegion] = useState(regions[0]); - - const [checkboxes, setCheckboxes] = useState([ - { - id: "0", - title: "Contract", - isChecked: false, - }, - { - id: "1", - title: "Full-time", - isChecked: false, - }, - { - id: "2", - title: "Intership", - isChecked: false, - }, - { - id: "3", - title: "Part-time", - isChecked: false, - }, - { - id: "4", - title: "Temporary", - isChecked: false, - }, - ]); - - const handleCheckboxChange = (checkboxId: string) => { - const updatedCheckboxes = [...checkboxes]; - const checkboxIndex = updatedCheckboxes.findIndex( - (checkbox) => checkbox.id === checkboxId - ); - updatedCheckboxes[checkboxIndex].isChecked = - !updatedCheckboxes[checkboxIndex].isChecked; - setCheckboxes(updatedCheckboxes); - }; - - return ( -
-
-
- setSearch(e.target.value)} - required - /> - -
- setBridesName(e.target.value)} - required - /> - setGroomsName(e.target.value)} - required - /> -
-
- setEmail(e.target.value)} - required - /> - setAddress(e.target.value)} - required - /> -
-
-
-
- About The Wedding -
- setCounter(e.target.value)} - required - /> -
- setStartDate(date as Date)} - /> - setDuration(e.target.value)} - required - /> -
-
-
- setMessage(e.target.value)} - required - textarea - /> -
-
- -
- - ); -}; - -export default Form; diff --git a/templates/RequestForProposalPage/index.tsx b/templates/RequestForProposalPage/index.tsx deleted file mode 100644 index d7c1ed3..0000000 --- a/templates/RequestForProposalPage/index.tsx +++ /dev/null @@ -1,36 +0,0 @@ -"use client"; - -import { useRouter } from "next/navigation"; -import Layout from "@/components/Layout"; -import Icon from "@/components/Icon"; -import Сommunication from "@/components/Сommunication"; -import Form from "./Form"; - -const RequestForProposalPage = () => { - const router = useRouter(); - - return ( - -
-
- -
-
- <Сommunication className="shrink-0 w-[25.75rem] 2xl:w-[24rem] xl:w-[22rem] lg:w-full" /> -
-
-
-
- ); -}; - -export default RequestForProposalPage; diff --git a/templates/ReservationConfirmedPage/index.tsx b/templates/ReservationConfirmedPage/index.tsx deleted file mode 100644 index 63cd770..0000000 --- a/templates/ReservationConfirmedPage/index.tsx +++ /dev/null @@ -1,107 +0,0 @@ -"use client"; - -import Link from "next/link"; -import Layout from "@/components/Layout"; -import Image from "@/components/Image"; - -const ReservationConfirmedPage = () => { - return ( - -
-
-
-
-
- -
-
-
- Booking Confirmed -
-
- We're excited to confirm your resort - stay! Please review the check-in - instructions for a seamless experience. Let - us know of any special requirements or - requests beforehand. We look forward to - welcoming you! -
-
-
-
-
-
- Booking ID: 98B26032023 -
-
    -
  • Mr. Nguyen Van Nam
  • -
  • Phone number: 0334244651
  • -
  • Email: vannam89gmail.com
  • -
  • - Address: 85 Nguyen Xi, Phuong 25, Quan - Binh Thanh, Ho Chi Minh, Vietnam 700000 -
  • -
-
-
-
Check-in
-
After 2:00 PM
-
-
-
Check-out
-
Before 12:00 PM
-
-
-
- Sun, Mar 26, 2023 - Tue, Mar 28, - 2023 -
-
2 Adults
-
-
-
-
- 1 King Bed Junior Suite -
-
Best Available Rate
-
-
-
Total: $1,120.00
-
- Payment Method: Creadit Card (Master - Card) -
-
-
-
- -
-
-
-
- - Return to Homepage - -
-
-
-
- ); -}; - -export default ReservationConfirmedPage; diff --git a/templates/ReservationDetailsPage/Policies/index.tsx b/templates/ReservationDetailsPage/Policies/index.tsx deleted file mode 100644 index c9b3a57..0000000 --- a/templates/ReservationDetailsPage/Policies/index.tsx +++ /dev/null @@ -1,37 +0,0 @@ -type PoliciesProps = {}; - -const Policies = ({}: PoliciesProps) => ( -
-
Policies
-
-
-
Check-in
-
After 2:00 PM
-
-
-
Check-out
-
Before 12:00 PM
-
-
-
1 King Bed Junior Suite
-
-
Guarantee Policy
-
- A credit card is required to guarantee a booking. Full - prepayment is required 14 days prior to arrival. -
-
-
-
Cancel Policy
-
- Reservations can be cancelled or modified up to 14 days prior to - arrival free of charge | 13-7 days before arrival 1 night charge - | 6-3 days before arrival 50% charge of total amount | - cancellation 2 days before, no-show or early departure 100% - charge. -
-
-
-); - -export default Policies; diff --git a/templates/ReservationDetailsPage/Success/index.tsx b/templates/ReservationDetailsPage/Success/index.tsx deleted file mode 100644 index afc5f76..0000000 --- a/templates/ReservationDetailsPage/Success/index.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import Image from "@/components/Image"; - -type SuccessProps = {}; - -const Success = ({}: SuccessProps) => ( -
-
- -
-
- Payment Success -
-
- Great news! Your payment has been successfully processed and we'll - now take you directly to the booking confirmation page. Sit back, - relax, and enjoy your seamless user experience with us! -
-
-); - -export default Success; diff --git a/templates/ReservationDetailsPage/YourStay/index.tsx b/templates/ReservationDetailsPage/YourStay/index.tsx deleted file mode 100644 index 0741e1e..0000000 --- a/templates/ReservationDetailsPage/YourStay/index.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { useState } from "react"; -import Select from "@/components/Select"; - -const durations = [ - { - id: "0", - title: "2 Nights", - }, - { - id: "1", - title: "3 Nights", - }, - { - id: "2", - title: "4 Nights", - }, -]; - -type YourStayProps = {}; - -const YourStay = ({}: YourStayProps) => { - const [duration, setDuration] = useState(durations[0]); - - return ( -
-
Your Stay
-
-
-
Check-in
-
After 2:00 PM
-
-
-
Check-out
-
Before 12:00 PM
-
-
-
-
- Sun, Mar 26, 2023 - Tue, Mar 28, 2023 -
-
2 Adults
-
-
-
-
1 King Bed Junior Suite
-
$1,120.00
-
-
Best Available Rate
-
- - - setFirstName(e.target.value) - } - required - /> -
- - setLastName(e.target.value) - } - required - /> -
-
- - setPhone(e.target.value) - } - required - /> - - setEmail(e.target.value) - } - required - /> -
-
-
-
- Address -
-
- -
- - setStartDate(date as Date) - } - selectsStart - startDate={startDate} - endDate={endDate} - /> - - setEndDate(date as Date) - } - selectsEnd - startDate={startDate} - endDate={endDate} - minDate={startDate} - /> - - - setFirstName(e.target.value) - } - required - /> -
- - setLastName(e.target.value) - } - required - /> -
-
- setPhone(e.target.value)} - required - /> - setEmail(e.target.value)} - required - /> -
-
- -
- - )} -
-
- - ); -}; - -export default ReservationNotPaymentPage; diff --git a/templates/ReservationPage/ListRooms/Filters/Slider/index.tsx b/templates/ReservationPage/ListRooms/Filters/Slider/index.tsx deleted file mode 100644 index c4bee68..0000000 --- a/templates/ReservationPage/ListRooms/Filters/Slider/index.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import { Range, getTrackBackground } from "react-range"; - -type SliderProps = { - values: number[]; - onChange: (values: number[]) => void; -}; - -const Slider = ({ values, onChange }: SliderProps) => { - const stepPrice = 100; - const minPrice = 0; - const maxPrice = 15000; - - const handleInputChange = (index: number, inputValue: string) => { - const newValue = parseInt(inputValue.replace(/\D/g, ""), 10) || 0; - const newValues = [...values]; - newValues[index] = newValue; - onChange(newValues); - }; - - return ( -
-
- onChange(newValues)} - renderTrack={({ props, children }) => ( -
-
- {children} -
-
- )} - renderThumb={({ props, isDragged }) => ( -
- )} - /> -
-
-
-
Price range from
-
- - handleInputChange(0, e.target.value) - } - /> -
-
-
-
Price range to
-
- - handleInputChange(1, e.target.value) - } - /> -
-
-
-
- ); -}; - -export default Slider; diff --git a/templates/ReservationPage/ListRooms/Filters/index.tsx b/templates/ReservationPage/ListRooms/Filters/index.tsx deleted file mode 100644 index 8c8180b..0000000 --- a/templates/ReservationPage/ListRooms/Filters/index.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import { useRef, useState } from "react"; -import { CSSTransition } from "react-transition-group"; -import Icon from "@/components/Icon"; -import Checkbox from "@/components/Checkbox"; -import Slider from "./Slider"; - -import { filters } from "@/constants/filters"; - -type FiltersProps = { - visible: boolean; - onClose: () => void; -}; - -const Filters = ({ visible, onClose }: FiltersProps) => { - const [checkboxes, setCheckboxes] = useState(filters); - const [values, setValues] = useState([2000, 10000]); - - const ref = useRef(null); - - const handleCheckboxChange = (groupId: string, checkboxId: string) => { - const updatedCheckboxes = [...checkboxes]; - const groupIndex = updatedCheckboxes.findIndex( - (group) => group.id === groupId - ); - const checkboxIndex = updatedCheckboxes[groupIndex].checkboxs.findIndex( - (checkbox) => checkbox.id === checkboxId - ); - updatedCheckboxes[groupIndex].checkboxs[checkboxIndex].isChecked = - !updatedCheckboxes[groupIndex].checkboxs[checkboxIndex].isChecked; - setCheckboxes(updatedCheckboxes); - }; - - return ( - -
-
-
Filter
- -
-
- {checkboxes.map((group) => ( -
-
- {group.title} -
-
- {group.checkboxs.map((checkbox) => ( - - handleCheckboxChange( - group.id, - checkbox.id - ) - } - /> - ))} -
-
- ))} -
-
- Price (avg./night) -
- setValues(newValues)} - /> -
-
-
-
- 18 matching rooms -
- -
-
-
- ); -}; - -export default Filters; diff --git a/templates/ReservationPage/ListRooms/Form/index.tsx b/templates/ReservationPage/ListRooms/Form/index.tsx deleted file mode 100644 index 8407449..0000000 --- a/templates/ReservationPage/ListRooms/Form/index.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import { useState } from "react"; -import AnimateHeight from "react-animate-height"; -import Select from "@/components/Select"; -import MyDatePicker from "@/components/MyDatePicker"; -import Icon from "@/components/Icon"; -import Field from "@/components/Field"; - -const guests = [ - { - id: "0", - title: "1 Adult", - }, - { - id: "1", - title: "2 Adults", - }, - { - id: "2", - title: "2 Adult + 1 Child", - }, -]; - -const promocodes = [ - { - id: "0", - title: "Promo Code 1", - }, - { - id: "1", - title: "Promo Code 2", - }, - { - id: "2", - title: "Promo Code 3", - }, -]; - -type FormProps = {}; - -const Form = ({}: FormProps) => { - const [startDate, setStartDate] = useState(null); - const [endDate, setEndDate] = useState(null); - const [guest, setGuest] = useState(""); - const [promocode, setPromocode] = useState(""); - const [code, setCode] = useState(""); - const [height, setHeight] = useState(0); - - return ( -
-
- setStartDate(date as Date)} - selectsStart - startDate={startDate} - endDate={endDate} - /> - setEndDate(date as Date)} - selectsEnd - startDate={startDate} - endDate={endDate} - minDate={startDate} - /> - - setCode(e.target.value)} - required - /> -
-
- - -
- -
- ); -}; - -export default Form; diff --git a/templates/ReservationPage/ListRooms/Room/index.tsx b/templates/ReservationPage/ListRooms/Room/index.tsx deleted file mode 100644 index 1b132d3..0000000 --- a/templates/ReservationPage/ListRooms/Room/index.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import Link from "next/link"; -import Image from "@/components/Image"; - -type ItemType = { - id: string; - category: string; - title: string; - price: string; - options: Array; - image: string; -}; - -type RoomProps = { - className?: string; - item: ItemType; -}; - -const Room = ({ className, item }: RoomProps) => ( -
-
-
- -
-
-
- {item.category} -
-
{item.title}
-
- From {item.price} -
-
- {item.options.map((option, index) => ( -
- {option} -
- ))} -
- - Room Details - - - Book Now - -
-
-
-); - -export default Room; diff --git a/templates/ReservationPage/ListRooms/SelectRoom/index.tsx b/templates/ReservationPage/ListRooms/SelectRoom/index.tsx deleted file mode 100644 index e8b375e..0000000 --- a/templates/ReservationPage/ListRooms/SelectRoom/index.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import { useState } from "react"; -import Select from "@/components/Select"; -import Icon from "@/components/Icon"; -import Filters from "../Filters"; - -const options = [ - { - id: "0", - title: "Special Codes or Rates", - }, - { - id: "1", - title: "Rooms", - }, - { - id: "2", - title: "Rates", - }, -]; - -const sorting = [ - { - id: "0", - title: "Special Codes or Rates", - }, - { - id: "1", - title: "Lowest Price", - }, - { - id: "2", - title: "Highest Price", - }, -]; - -type SelectRoomProps = {}; - -const SelectRoom = ({}: SelectRoomProps) => { - const [option, setOption] = useState(options[0]); - const [sort, setSort] = useState(""); - const [visibleFilters, setVisibleFilters] = useState(false); - - return ( -
-
- Select a Room -
-
-
-
- View Result By -
- -
-
- -
-
- setVisibleFilters(false)} - /> -
- ); -}; - -export default SelectRoom; diff --git a/templates/ReservationPage/ListRooms/YourStay/index.tsx b/templates/ReservationPage/ListRooms/YourStay/index.tsx deleted file mode 100644 index 8507efb..0000000 --- a/templates/ReservationPage/ListRooms/YourStay/index.tsx +++ /dev/null @@ -1,30 +0,0 @@ -type YourStayProps = {}; - -const YourStay = ({}: YourStayProps) => ( -
-
Your Stay
-
-
-
Check-in
-
After 2:00 PM
-
-
-
Check-out
-
Before 12:00 PM
-
-
-
-
- Sun, Mar 26, 2023 -{" "} - Tue, Mar 28, 2023 -
-
2 Adults
-
-
-
Total:
-
$0.00
-
-
-); - -export default YourStay; diff --git a/templates/ReservationPage/ListRooms/index.tsx b/templates/ReservationPage/ListRooms/index.tsx deleted file mode 100644 index f247aac..0000000 --- a/templates/ReservationPage/ListRooms/index.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import YourStay from "./YourStay"; -import Form from "./Form"; -import SelectRoom from "./SelectRoom"; -import Room from "./Room"; - -import { rooms } from "@/mocks/accommodation"; - -type ListRoomsProps = {}; - -const ListRooms = ({}: ListRoomsProps) => ( -
-
-
-
- -
- {rooms.map((room) => ( - - ))} -
-
- -
-
-); - -export default ListRooms; diff --git a/templates/ReservationPage/Main/index.tsx b/templates/ReservationPage/Main/index.tsx deleted file mode 100644 index bf83297..0000000 --- a/templates/ReservationPage/Main/index.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import Image from "@/components/Image"; - -type MainProps = {}; - -const Main = ({}: MainProps) => ( -
-
- -
-
-
-
Hidden Oasis.
-
-

- Yen Ninh, Binh Son, Ninh Chu, Phan Rang, Ninh Thuan - 59000 Vietnam -

-

Tel: +84 654 343 543

-

For reservations: +84 344 195 678

-

Mail: contact@naturalparadise.com

-
-
-
-
-); - -export default Main; diff --git a/templates/ReservationPage/index.tsx b/templates/ReservationPage/index.tsx deleted file mode 100644 index 8f6938f..0000000 --- a/templates/ReservationPage/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -"use client"; - -import Layout from "@/components/Layout"; -import Main from "./Main"; -import ListRooms from "./ListRooms"; - -const ReservationPage = () => { - return ( - -
- - - ); -}; - -export default ReservationPage; diff --git a/templates/SpecialOffers/OfferPage/Main/index.tsx b/templates/SpecialOffers/OfferPage/Main/index.tsx deleted file mode 100644 index 0d43c5c..0000000 --- a/templates/SpecialOffers/OfferPage/Main/index.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import Image from "@/components/Image"; - -import { offers } from "@/mocks/offers"; - -type MainProps = { - id: any; -}; - -const Main = ({ id }: MainProps) => { - const offer = offers.find((offer) => offer.id === id); - - return offer ? ( -
-
-
{offer.title}
-
- Posted on March 26, 2023 -
-
“{offer.info}”
-
-

- Escape to our Hidden Oasis Resort and enjoy the ultimate - flexibility with our Fully Flexible Rate. Whether - you're planning a romantic getaway or a family - vacation, our fully flexible rate allows you to change - or cancel your reservation up to 24 hours before your - arrival date without any penalty.

Our resort - offers a range of comfortable accommodations, including - traditional bungalows and luxurious villas, all equipped - with modern amenities for your ultimate comfort. Wake up - to stunning views of lush greenery, pristine rivers, and - serene mountains, and indulge in delicious local cuisine - made from fresh ingredients. -

-
- -
-

- Escape to our Hidden Oasis Resort and enjoy the ultimate - flexibility with our Fully Flexible Rate. Whether - you're planning a romantic getaway or a family - vacation, our fully flexible rate allows you to change - or cancel your reservation up to 24 hours before your - arrival date without any penalty.

Our resort - offers a range of comfortable accommodations, including - traditional bungalows and luxurious villas, all equipped - with modern amenities for your ultimate comfort. Wake up - to stunning views of lush greenery, pristine rivers, and - serene mountains, and indulge in delicious local cuisine - made from fresh ingredients.

Take part in a - variety of outdoor activities, such as hiking, fishing, - and kayaking, or simply relax by the pool and soak up - the tranquillity of the natural surroundings. Our fully - flexible rate ensures that you can plan your vacation - with complete peace of mind, knowing that you can change - or cancel your reservation if your plans change. -

Book now and enjoy the ultimate flexibility at - our Hidden Oasis Resort with our Fully Flexible Rate. -

-
-
-
- ) : null; -}; - -export default Main; diff --git a/templates/SpecialOffers/OfferPage/Offers/index.tsx b/templates/SpecialOffers/OfferPage/Offers/index.tsx deleted file mode 100644 index 084dafe..0000000 --- a/templates/SpecialOffers/OfferPage/Offers/index.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import OffersItem from "@/components/OffersItem"; - -import { offers } from "@/mocks/offers"; - -type OffersProps = {}; - -const Offers = ({}: OffersProps) => { - return ( -
-
-
More Offers.
-
- {offers.slice(1, 4).map((offer) => ( - - ))} -
-
-
- ); -}; - -export default Offers; diff --git a/templates/SpecialOffers/OfferPage/index.tsx b/templates/SpecialOffers/OfferPage/index.tsx deleted file mode 100644 index b8a1563..0000000 --- a/templates/SpecialOffers/OfferPage/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -"use client"; - -import Layout from "@/components/Layout"; -import Main from "./Main"; -import Offers from "./Offers"; - -const OfferPage = ({ id }: any) => { - return ( - -
- - - ); -}; - -export default OfferPage; diff --git a/templates/SpecialOffers/SpecialOffersPage/Offers/index.tsx b/templates/SpecialOffers/SpecialOffersPage/Offers/index.tsx deleted file mode 100644 index 3dc4a8c..0000000 --- a/templates/SpecialOffers/SpecialOffersPage/Offers/index.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { useState } from "react"; -import Tabs from "@/components/Tabs"; -import OffersItem from "@/components/OffersItem"; - -import { offers } from "@/mocks/offers"; - -type OffersProps = {}; - -const Offers = ({}: OffersProps) => { - const [type, setType] = useState< - | "overview" - | "accommodation" - | "dining" - | "spa-and-fitness" - | "weddings-and-events" - >("overview"); - - const typeOffers = [ - { - title: "Overview", - active: type === "overview", - onClick: () => setType("overview"), - }, - { - title: "Accommodation", - active: type === "accommodation", - onClick: () => setType("accommodation"), - }, - { - title: "Dining", - active: type === "dining", - onClick: () => setType("dining"), - }, - { - title: "Spa & Fitness", - active: type === "spa-and-fitness", - onClick: () => setType("spa-and-fitness"), - }, - { - title: "Weddings & Events", - active: type === "weddings-and-events", - onClick: () => setType("weddings-and-events"), - }, - ]; - - return ( -
-
- -
- {offers.map((offer) => ( - - ))} -
-
-
- ); -}; - -export default Offers; diff --git a/templates/SpecialOffers/SpecialOffersPage/index.tsx b/templates/SpecialOffers/SpecialOffersPage/index.tsx deleted file mode 100644 index ac444a0..0000000 --- a/templates/SpecialOffers/SpecialOffersPage/index.tsx +++ /dev/null @@ -1,20 +0,0 @@ -"use client"; - -import Layout from "@/components/Layout"; -import Hero from "@/components/Hero"; -import Offers from "./Offers"; - -const SpecialOffersPage = () => { - return ( - - - - - ); -}; - -export default SpecialOffersPage; diff --git a/templates/Vouchers/ConfirmedPage/index.tsx b/templates/Vouchers/ConfirmedPage/index.tsx deleted file mode 100644 index 02297ce..0000000 --- a/templates/Vouchers/ConfirmedPage/index.tsx +++ /dev/null @@ -1,61 +0,0 @@ -"use client"; - -import Link from "next/link"; -import Layout from "@/components/Layout"; -import Image from "@/components/Image"; - -const ConfirmedPage = () => { - return ( - -
-
-
-
-
- -
-
-
- Gift Card Purchase Request Received -
-
-

- We are delighted to inform you that we - have received your gift card purchase - request for our Stay & Dine Package. - Thank you for choosing to give the gift - of relaxation and fine dining to your - loved one or yourself. -

-

- Our team is currently processing your - request, and we will send you a - confirmation email with the gift card - details once the transaction is - complete. -

-
-
-
-
-
- - Return to Homepage - -
-
-
-
- ); -}; - -export default ConfirmedPage; diff --git a/templates/Vouchers/DetailsPage/Main/Form/index.tsx b/templates/Vouchers/DetailsPage/Main/Form/index.tsx deleted file mode 100644 index ec0049a..0000000 --- a/templates/Vouchers/DetailsPage/Main/Form/index.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import { useState } from "react"; -import Link from "next/link"; -import Select from "@/components/Select"; -import Field from "@/components/Field"; - -const prefixes = [ - { - id: "0", - title: "Prefix 1", - }, - { - id: "1", - title: "Prefix 2", - }, - { - id: "2", - title: "Prefix 3", - }, -]; - -type FormProps = {}; - -const Form = ({}: FormProps) => { - const [prefix, setPrefix] = useState(); - const [firstName, setFirstName] = useState(""); - const [lastName, setLastName] = useState(""); - const [phone, setPhone] = useState(""); - const [email, setEmail] = useState(""); - const [message, setMessage] = useState(""); - - return ( - console.log("Submit")} - > -
- Contact Info -
-
-
-