16 | {ingredients} 17 |
18 |{textContent}
26 |{tel}
19 |{description}
31 |{description}
32 | 33 | 34 | Read More 35 | 36 |{about}
38 |36 | Custom description with HTML content. 37 |
38 | ), 39 | }; 40 | 41 | // Story with only title 42 | export const OnlyTitle = Template.bind({}); 43 | OnlyTitle.args = { 44 | title: "Title Only", 45 | description: "", 46 | }; 47 | 48 | // Story with only description 49 | export const OnlyDescription = Template.bind({}); 50 | OnlyDescription.args = { 51 | title: "", 52 | description: "Description Only", 53 | }; 54 | -------------------------------------------------------------------------------- /storybook-static/components-atoms-specialMealCard-SpecialMealCard-stories.52093414.iframe.bundle.js: -------------------------------------------------------------------------------- 1 | "use strict";(self.webpackChunkrestaurant_app=self.webpackChunkrestaurant_app||[]).push([[5106],{"./src/components/atoms/specialMealCard/SpecialMealCard.stories.tsx":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Default:()=>Default,__namedExportsOrder:()=>__namedExportsOrder,default:()=>__WEBPACK_DEFAULT_EXPORT__});var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/next/dist/compiled/react/jsx-runtime.js"),_SpecialMealCard__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./src/components/atoms/specialMealCard/SpecialMealCard.tsx");const Default={args:{image:"https://images.pexels.com/photos/1640777/pexels-photo-1640777.jpeg?auto=compress&cs=tinysrgb&w=600",title:"Hot Dogs"}},__WEBPACK_DEFAULT_EXPORT__={title:"Atoms/SpecialMealCard",component:_SpecialMealCard__WEBPACK_IMPORTED_MODULE_1__.A,tags:["autodocs"],excludeStories:/.*Data$/,decorators:[Story=>(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div",{style:{backgroundColor:"#fff8ee"},children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Story,{})})]},__namedExportsOrder=["Default"];Default.parameters={...Default.parameters,docs:{...Default.parameters?.docs,source:{originalSource:'{\n args: {\n image: "https://images.pexels.com/photos/1640777/pexels-photo-1640777.jpeg?auto=compress&cs=tinysrgb&w=600",\n title: "Hot Dogs"\n }\n}',...Default.parameters?.docs?.source}}}}}]); -------------------------------------------------------------------------------- /storybook-static/components-atoms-CarouselSlide-CarouselSlide-stories.3b7d37e4.iframe.bundle.js: -------------------------------------------------------------------------------- 1 | "use strict";(self.webpackChunkrestaurant_app=self.webpackChunkrestaurant_app||[]).push([[5550],{"./src/components/atoms/CarouselSlide/CarouselSlide.stories.tsx":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Default:()=>Default,__namedExportsOrder:()=>__namedExportsOrder,default:()=>__WEBPACK_DEFAULT_EXPORT__});var _CarouselSlide__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./src/components/atoms/CarouselSlide/CarouselSlide.tsx");const Default={args:{id:1,image:"/images/image1.png",dishname:"Burger",price:"10.89",link:"/",socialMedia:[{icon:"icons/instagram.svg",href:"/"},{icon:"icons/facebook.svg",href:"/"},{icon:"icons/twitter.svg",href:"/"},{icon:"icons/linkedin.svg",href:"/"}]}},__WEBPACK_DEFAULT_EXPORT__={title:"Atoms/CarouselSlide",component:_CarouselSlide__WEBPACK_IMPORTED_MODULE_0__.A,tags:["autodocs"],excludeStories:/.*Data$/},__namedExportsOrder=["Default"];Default.parameters={...Default.parameters,docs:{...Default.parameters?.docs,source:{originalSource:'{\n args: {\n id: 1,\n image: "/images/image1.png",\n dishname: "Burger",\n price: "10.89",\n link: "/",\n socialMedia: [{\n icon: "icons/instagram.svg",\n href: "/"\n }, {\n icon: "icons/facebook.svg",\n href: "/"\n }, {\n icon: "icons/twitter.svg",\n href: "/"\n }, {\n icon: "icons/linkedin.svg",\n href: "/"\n }]\n }\n}',...Default.parameters?.docs?.source}}}}}]); -------------------------------------------------------------------------------- /src/foundations/sass/_mixins.scss: -------------------------------------------------------------------------------- 1 | /* ============================================= 2 | = Mixins = 3 | ============================================= */ 4 | 5 | /** 6 | * 7 | * Helpful reusable function-like things that will be used to implement 8 | * styles for components. 9 | * 10 | */ 11 | @use "sass:map"; 12 | 13 | @mixin secondary-heading { 14 | font-family: Roboto, sans-serif; 15 | font-size: px-to-rem(35); 16 | font-weight: 700; 17 | } 18 | 19 | @mixin body-font { 20 | font-family: Roboto, sans-serif; 21 | font-size: px-to-rem(18); 22 | font-weight: 400; 23 | } 24 | 25 | @mixin center { 26 | align-items: center; 27 | display: flex; 28 | justify-content: center; 29 | } 30 | 31 | @mixin mobile { 32 | @media (max-width: map.get($breakpoints, "sm")) { 33 | @content; 34 | } 35 | } 36 | 37 | @mixin tablet { 38 | @media (max-width: map.get($breakpoints, "lg")) { 39 | @content; 40 | } 41 | } 42 | 43 | @mixin laptop { 44 | @media (max-width: map.get($breakpoints, "xl")) { 45 | @content; 46 | } 47 | } 48 | 49 | @mixin padding($space) { 50 | padding: map.get($spacing, $space); 51 | } 52 | 53 | @mixin margin($space) { 54 | margin: map.get($spacing, $space); 55 | } 56 | 57 | @mixin margin-bottom($space) { 58 | margin-bottom: map.get($spacing, $space); 59 | } 60 | 61 | @mixin padding-horizontal($space) { 62 | padding-left: map.get($spacing, $space); 63 | padding-right: map.get($spacing, $space); 64 | } 65 | 66 | @mixin padding-vertical($space) { 67 | padding-bottom: map.get($spacing, $space); 68 | padding-top: map.get($spacing, $space); 69 | } 70 | -------------------------------------------------------------------------------- /src/components/molecules/DeliverySection/DeliverySection.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../../foundations/sass/all"; 2 | 3 | .delivery-section { 4 | font-family: Roboto, sans-serif; 5 | margin: 1rem; 6 | padding: 2rem 0; 7 | 8 | &__sectionTitle { 9 | color: $delivery-section-color; 10 | font-size: $fs-lg; 11 | font-weight: $h-3-font-weight; 12 | margin-bottom: 1.688rem; 13 | padding-left: 10%; 14 | text-align: left; 15 | } 16 | 17 | &__content { 18 | align-items: flex-start; 19 | display: flex; 20 | flex-direction: row; 21 | gap: 4rem; 22 | justify-content: center; 23 | margin: 0 auto; 24 | max-width: 1400px; // Clave: limita el ancho máximo 25 | padding: 0 2rem; 26 | } 27 | 28 | &__left { 29 | display: flex; 30 | flex: 1; 31 | flex-direction: column; 32 | max-width: 600px; // The text will be not big. "Important" 33 | 34 | &__title { 35 | font-family: Roboto, sans-serif; 36 | font-size: 2.188rem; 37 | font-weight: 700; 38 | line-height: 2.564rem; 39 | margin-bottom: 1rem; 40 | 41 | & > span { 42 | color: $delivery-section-color; 43 | } 44 | } 45 | 46 | & > p { 47 | font-size: $fs-md; 48 | font-weight: $fw-normal; 49 | line-height: 1.6; 50 | margin: 1rem 0; 51 | } 52 | } 53 | 54 | &__image { 55 | flex-shrink: 0; 56 | height: auto; 57 | object-fit: contain; 58 | width: 28rem; // Fix size for the image 59 | } 60 | 61 | &__delivery-order-card { 62 | align-items: center; 63 | display: flex; 64 | gap: 1.5rem; 65 | margin: 1.5rem 0; 66 | } 67 | } -------------------------------------------------------------------------------- /src/components/molecules/memberCard/MemberCard.module.scss: -------------------------------------------------------------------------------- 1 | @import "../../../foundations/sass/all"; 2 | 3 | .member-card { 4 | align-items: center; 5 | color: $member-card-color; 6 | display: flex; 7 | flex-direction: column; 8 | font-family: Roboto, sans-serif; 9 | position: relative; 10 | transition: all 300ms ease; 11 | width: fit-content; 12 | 13 | &__info { 14 | align-items: center; 15 | aspect-ratio: 1; 16 | border: 3px solid $member-card-border-color; 17 | border-radius: $br-full; 18 | box-sizing: border-box; 19 | display: flex; 20 | flex-direction: column; 21 | gap: px-to-rem(10); 22 | height: auto; 23 | justify-content: end; 24 | max-width: px-to-rem(343); 25 | overflow: hidden; 26 | padding: px-to-rem(20); 27 | padding-bottom: px-to-rem(70); 28 | position: relative; 29 | text-align: center; 30 | 31 | &__name { 32 | color: $member-card-color; 33 | font-size: $fs-xl; 34 | font-weight: $fw-bold; 35 | } 36 | 37 | &__about { 38 | color: $member-card-color; 39 | font-size: $fs-md; 40 | font-weight: $fw-normal; 41 | } 42 | } 43 | 44 | &__image-container { 45 | border: 5px solid $member-card-border-color; 46 | border-radius: $br-full; 47 | left: 40%; 48 | overflow: hidden; 49 | position: absolute; 50 | top: -px-to-rem(50); 51 | transform: translate(25%, -25%); 52 | z-index: 100; 53 | 54 | &__image { 55 | height: px-to-rem(217); 56 | object-fit: cover; 57 | width: px-to-rem(217); 58 | } 59 | } 60 | 61 | &__social-media { 62 | margin-top: px-to-rem(10); 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/components/atoms/AchievementCard/AchievementCard.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import styles from "./AchievementCard.module.scss"; 3 | import Image from "next/image"; 4 | import Button from "../button/Button"; 5 | 6 | interface AchievementProps { 7 | title: string; 8 | description: string; 9 | image: string; 10 | } 11 | 12 | const AchievementCard: React.FC{description}
32 |{description}
32 |17 | Food Khan is a restaurant, bar and coffee roastery located on a busy 18 | corner site in Farringdon's Exmouth Market. With glazed 19 | frontage on two sides of the building, overlooking the market and a 20 | bustling London inteon. 21 |
22 |46 | Price: ${price} 47 |
48 |50 | Price: ${price} 51 |
52 |{address}
27 |Testimonial
14 |21 | For in this week, take your food, buy your best one. 22 |
23 |70 | Already have an account?{" "} 71 | 72 | login here... 73 | 74 |
75 |Food Items
20 |RICH & HEALTHY
10 |24 | Righteous indignation and dislike men who are so beguiled and 25 | demoralized by the charms of pleasure of the moment, so blinded by 26 | desires, that they cannot foresee. 27 |
28 |39 | Simple and easy to distinguish 40 |
41 |50 | Pleasure of the momentblinded desire 51 |
52 |61 | Able to do what we like best 62 |
63 |