├── now.json ├── screenshot.png ├── .gitignore ├── guest_list.sample.csv ├── public └── assets │ ├── images │ ├── favicon.png │ ├── ring-svg.png │ ├── shape-1.png │ ├── shape-2.png │ ├── aw-ring-logo.png │ ├── section_shape.png │ ├── oval-hotel-map.png │ ├── wedding-ornament.png │ ├── oval-hotel-map-horizontal.png │ └── heart.svg │ ├── video │ └── aw-ring-logo-ticker.mp4 │ ├── js │ ├── plugins.js │ ├── jquery.easing.min.js │ ├── waypoints.min.js │ ├── vendor │ │ └── modernizr-3.7.1.min.js │ └── bootstrap.min.js │ └── css │ ├── default.css │ ├── style.css │ └── animate.css ├── scripts ├── createGuessId.js └── guestListFromCsv.js ├── pages ├── guest_list.sample.json ├── guest-checkin.jsx └── index.jsx ├── .babelrc ├── src ├── i18n │ ├── lang │ │ ├── en.json │ │ └── id.json │ └── index.js ├── utils │ └── resolvePath.js ├── config │ └── app.sample.js └── components │ └── Head.jsx ├── README.md └── package.json /now.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 2, 3 | "public": false, 4 | "name": "wedding" 5 | } -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzulfikar/nextjs-wedding-invite/HEAD/screenshot.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .next 2 | src/config/app.js 3 | now.*.json 4 | node_modules 5 | guest_list.csv 6 | pages/guest_list.json -------------------------------------------------------------------------------- /guest_list.sample.csv: -------------------------------------------------------------------------------- 1 | guestId,guestUrl,name,greeting 2 | DQatlWff,https://my-wedding.now.sh/?u=DQatlWff,John Doe, 3 | -------------------------------------------------------------------------------- /public/assets/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzulfikar/nextjs-wedding-invite/HEAD/public/assets/images/favicon.png -------------------------------------------------------------------------------- /public/assets/images/ring-svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzulfikar/nextjs-wedding-invite/HEAD/public/assets/images/ring-svg.png -------------------------------------------------------------------------------- /public/assets/images/shape-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzulfikar/nextjs-wedding-invite/HEAD/public/assets/images/shape-1.png -------------------------------------------------------------------------------- /public/assets/images/shape-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzulfikar/nextjs-wedding-invite/HEAD/public/assets/images/shape-2.png -------------------------------------------------------------------------------- /public/assets/images/aw-ring-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzulfikar/nextjs-wedding-invite/HEAD/public/assets/images/aw-ring-logo.png -------------------------------------------------------------------------------- /public/assets/images/section_shape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzulfikar/nextjs-wedding-invite/HEAD/public/assets/images/section_shape.png -------------------------------------------------------------------------------- /public/assets/images/oval-hotel-map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzulfikar/nextjs-wedding-invite/HEAD/public/assets/images/oval-hotel-map.png -------------------------------------------------------------------------------- /public/assets/images/wedding-ornament.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzulfikar/nextjs-wedding-invite/HEAD/public/assets/images/wedding-ornament.png -------------------------------------------------------------------------------- /public/assets/video/aw-ring-logo-ticker.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzulfikar/nextjs-wedding-invite/HEAD/public/assets/video/aw-ring-logo-ticker.mp4 -------------------------------------------------------------------------------- /public/assets/images/oval-hotel-map-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzulfikar/nextjs-wedding-invite/HEAD/public/assets/images/oval-hotel-map-horizontal.png -------------------------------------------------------------------------------- /scripts/createGuessId.js: -------------------------------------------------------------------------------- 1 | const shortid = require("shortid"); 2 | 3 | // Create 100 random guest id 4 | for (let i = 0; i < 100; i++) { 5 | const id = shortid.generate(); 6 | console.log(id); 7 | } 8 | -------------------------------------------------------------------------------- /pages/guest_list.sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "meta": { 3 | "lastUpdatedAt": "2020-01-28T02:39:45.220Z" 4 | }, 5 | "data": [ 6 | { 7 | "guestId": "DQatlWff", 8 | "guestUrl": "https://wedding-invite-demo.wzulfikar.now.sh/?u=DQatlWff", 9 | "name": "John Doe", 10 | "greeting": "", 11 | "locale": "" 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["next/babel"], 3 | "plugins": [ 4 | [ 5 | "module-resolver", 6 | { 7 | "root": [ 8 | "./" 9 | ], 10 | "alias": { 11 | "@src": "./src" 12 | }, 13 | "extensions": [ 14 | ".js", 15 | ".jsx" 16 | ] 17 | } 18 | ] 19 | ] 20 | } -------------------------------------------------------------------------------- /src/i18n/lang/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "siteIntro": "WE ARE GETTING MARRIED", 3 | "eventDate": "Event Date", 4 | "invitationGreeting": "Dear", 5 | "invitationIntro": "You Are Cordially Invited", 6 | "invitationContent": "Our joy will be more complete with your presence in our special day.", 7 | "invitationContentTextAlign": "left", 8 | "invitationOutro": "We are looking forward to seeing you.", 9 | "btnAddToMyCalendar": "Add to my calendar", 10 | "guestCheckin": { 11 | "pleaseScanInvitation": "Please scan your invitation.." 12 | } 13 | } -------------------------------------------------------------------------------- /scripts/guestListFromCsv.js: -------------------------------------------------------------------------------- 1 | // Example usage: 2 | // node ./scripts/guestListFromCsv.js guest_list.csv > pages/guess_list.json 3 | 4 | const fs = require("fs"); 5 | const csv = require("csv-parser"); 6 | 7 | const csvFile = process.argv[2]; 8 | 9 | let guestList = []; 10 | fs.createReadStream(csvFile) 11 | .pipe(csv()) 12 | .on("data", function(data) { 13 | guestList.push(data); 14 | }) 15 | .on("end", function() { 16 | const guestListJson = { 17 | meta: { 18 | lastUpdatedAt: new Date().toISOString() 19 | }, 20 | data: guestList 21 | }; 22 | console.log(JSON.stringify(guestListJson, null, 2)); 23 | }); 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

NextJS Wedding Invitation Template

2 | 3 | ### Features 4 | 5 | - configurable parameters (e.g. map url, event date). see: `config/app.sample.js` 6 | - autoplay animation in footer 7 | - optional qr scanner 8 | - optional unique links per guest (based on csv) 9 | - i18n 10 | - og tags 11 | 12 | **Try in codesandbox:** 13 | 14 | - Visit https://codesandbox.io/s/github/wzulfikar/nextjs-wedding-invite 15 | - Rename `src/config/app.sample.js` to `src/config/app.js` 16 | - Rename `pages/guest_list.sample.json` to `pages/guest_list.json` 17 | - Change any value in `src/config/app.js` to see it updated in real time 18 | 19 | **Live Demo:** 20 | https://wedding-invite-demo.wzulfikar.now.sh 21 | 22 | **Screenshot:** 23 | 24 | ![screenshot.png](screenshot.png) 25 | -------------------------------------------------------------------------------- /src/i18n/lang/id.json: -------------------------------------------------------------------------------- 1 | { 2 | "siteIntro": "UNDANGAN PERNIKAHAN", 3 | "eventDate": "Hari & Tanggal", 4 | "invitationGreeting": "Kepada Yang Terhormat", 5 | "invitationIntro": "﷽", 6 | "invitationContent": "Dengan memohon rahmat Allah SWT, kami mengundang Bapak, Ibu, Saudara/Saudari untuk menghadiri resepsi pernikahan putra-putri kami yang in-syaa-Allah akan diadakan di:", 7 | "invitationContentTextAlign": "center", 8 | "invitationOutro": "", 9 | "invitationClosing": "Kehadiran serta doa restu Bapak/Ibu/Saudara/i merupakan suatu kehormatan dan kebahagian bagi kami.

Wassalamu'alaikum Warahmatullahi Wabarakatuh.", 10 | "btnAddToMyCalendar": "Tambahkan ke kalender saya", 11 | "guestCheckin": { 12 | "pleaseScanInvitation": "Please scan your invitation.." 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /public/assets/js/plugins.js: -------------------------------------------------------------------------------- 1 | // Avoid `console` errors in browsers that lack a console. 2 | (function() { 3 | var method; 4 | var noop = function () {}; 5 | var methods = [ 6 | 'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error', 7 | 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', 8 | 'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd', 9 | 'timeline', 'timelineEnd', 'timeStamp', 'trace', 'warn' 10 | ]; 11 | var length = methods.length; 12 | var console = (window.console = window.console || {}); 13 | 14 | while (length--) { 15 | method = methods[length]; 16 | 17 | // Only stub undefined methods. 18 | if (!console[method]) { 19 | console[method] = noop; 20 | } 21 | } 22 | }()); 23 | 24 | // Place any jQuery/helper plugins in here. 25 | -------------------------------------------------------------------------------- /src/utils/resolvePath.js: -------------------------------------------------------------------------------- 1 | const fallbackHost = "http://localhost:3000"; 2 | 3 | export default (path, headers) => { 4 | if (path.startsWith("http")) { 5 | return path; 6 | } 7 | 8 | // Use browser's `window` if headers is not provided 9 | if (!headers && process.browser) { 10 | if (typeof window === "undefined") { 11 | throw new Error( 12 | "could not resolve path without request headers: window is undefined" 13 | ); 14 | } 15 | const { protocol, host } = window.location; 16 | return `${protocol}//${host}${path}`; 17 | } 18 | const host = headers 19 | ? headers["x-now-deployment-url"] || 20 | headers["x-forwarded-host"] || 21 | headers.host 22 | : null; 23 | const scheme = 24 | headers && headers["x-forwarded-proto"] 25 | ? headers["x-forwarded-proto"] 26 | : "http"; 27 | return host ? `${scheme}://${host}${path}` : `${fallbackHost}${path}`; 28 | }; 29 | -------------------------------------------------------------------------------- /public/assets/images/heart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "html-template--uideck-wedding-day", 3 | "license": "MIT", 4 | "scripts": { 5 | "dev": "next", 6 | "build": "next build", 7 | "start": "next start", 8 | "sync-guest-list": "node ./scripts/guestListFromCsv.js guest_list.csv > pages/guest_list.json", 9 | "now:deploy": "yarn sync-guest-list && now --prod" 10 | }, 11 | "dependencies": { 12 | "csv-parser": "^2.3.2", 13 | "gensync": "^1.0.0-beta.1", 14 | "i18n-js": "^3.5.1", 15 | "next": "^9.2.0", 16 | "qrcode.react": "^1.0.0", 17 | "react": "^16.12.0", 18 | "react-add-to-calendar": "^0.1.5", 19 | "react-dom": "^16.12.0", 20 | "react-qr-reader": "^2.2.1", 21 | "shortid": "^2.2.15", 22 | "swr": "^0.1.16" 23 | }, 24 | "devDependencies": { 25 | "babel-plugin-import": "^1.13.0", 26 | "babel-plugin-module-resolver": "^4.0.0", 27 | "cross-env": "^5.1.1", 28 | "now": "^16.7.3" 29 | }, 30 | "peerDependencies": { 31 | "gensync": "^1.0.0-beta.1" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/i18n/index.js: -------------------------------------------------------------------------------- 1 | import I18n from "i18n-js"; 2 | import en from "./lang/en"; 3 | import id from "./lang/id"; 4 | 5 | const supportedLanguages = [ 6 | { 7 | code: "en", 8 | label: "English", 9 | translations: en 10 | }, 11 | { 12 | code: "id", 13 | label: "Indonesia", 14 | translations: id 15 | } 16 | ]; 17 | 18 | I18n.defaultLocale = "en"; 19 | supportedLanguages.forEach(lang => { 20 | I18n.translations[lang.code] = lang.translations; 21 | }); 22 | 23 | export const languageOptions = supportedLanguages.map(lang => ({ 24 | value: lang.code, 25 | label: lang.label 26 | })); 27 | 28 | export const setLocale = locale => { 29 | I18n.locale = locale; 30 | }; 31 | 32 | export const t = (name, params = {}) => { 33 | return I18n.t(name, params); 34 | }; 35 | 36 | export const Trans = props => ( 37 | 40 | ); 41 | 42 | export const defaultLocale = I18n.defaultLocale; 43 | 44 | export const useTranslation = locale => { 45 | I18n.locale = locale; 46 | return I18n.t; 47 | }; 48 | -------------------------------------------------------------------------------- /src/config/app.sample.js: -------------------------------------------------------------------------------- 1 | const baseConfig = { 2 | weddingDay: "Saturday", 3 | weddingTime: "19.00 - 21.00", 4 | weddingDate: "Feb 22, 2020", 5 | showBuiltWithInfo: true, 6 | showQrCode: false, 7 | calendarInfo: { 8 | timeStartISO: "2020-02-22T19:00:00+08:00", 9 | timeEndISO: "2020-02-22T21:00:00+08:00" 10 | }, 11 | coupleInfo: { 12 | brideName: "Aida", 13 | groomName: "Wildan", 14 | coupleNameFormat: "GROOM_FIRST" 15 | }, 16 | venue: { 17 | name: "Oval Hotel", 18 | addressLine1: "Jalan Diponegoro No.23,", 19 | addressLine2: "Surabaya, East Java 60241,", 20 | city: "Surabaya", 21 | country: "Indonesia", 22 | mapUrl: "https://maps.app.goo.gl/pCUqr9AjSN8dxzS57" 23 | }, 24 | logo: { 25 | headerLogo: "/assets/images/ring-svg.png", 26 | footerLogo: "/assets/video/aw-ring-logo-ticker.mp4", 27 | footerLogoType: "mp4" 28 | }, 29 | ogTags: { 30 | logo: "/assets/images/aw-ring-logo.png", 31 | siteName: "wedding.wzulfikar.com", 32 | publishedTime: "2020-01-25" 33 | } 34 | }; 35 | 36 | const lang = { 37 | id: { 38 | weddingDay: "Sabtu", 39 | weddingDate: "22 Februari 2020", 40 | venue: { 41 | ...baseConfig.venue, 42 | name: "Hotel Oval", 43 | addressLine2: "Surabaya, Jawa Timur, 60241,", 44 | } 45 | } 46 | }; 47 | 48 | export default { 49 | ...baseConfig, 50 | lang 51 | }; 52 | -------------------------------------------------------------------------------- /src/components/Head.jsx: -------------------------------------------------------------------------------- 1 | import Head from 'next/head'; 2 | import resolvePath from '@src/utils/resolvePath'; 3 | 4 | export default ({ title, description, url, logo, author, siteName, publishedTime, modifiedTime }) => { 5 | return ( 6 | 7 | {title} 8 | 9 | 10 | 11 | 12 | 13 | 14 | {publishedTime && } 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | {/* FOR IE9 below */} 27 | {/* [if lt IE 9]> */} 28 | 29 | 30 | 31 | 32 | 33 | ); 34 | }; 35 | -------------------------------------------------------------------------------- /pages/guest-checkin.jsx: -------------------------------------------------------------------------------- 1 | import { useState } from 'react' 2 | import dynamic from 'next/dynamic' 3 | 4 | import guessList from './guest_list.json' 5 | import { t } from '@src/i18n' 6 | 7 | const QrReader = dynamic(import('react-qr-reader'), { ssr: false }) 8 | 9 | export default () => { 10 | const scannerZoomScale = 3 11 | const [qrResult, setQrResult] = useState() 12 | const handleScan = data => { 13 | if (data) { 14 | setQrResult(data) 15 | // TODO: 16 | // - check guessList 17 | // - if exists mark "çheckin time" 18 | } 19 | } 20 | const handleError = err => { 21 | console.error("[ERROR] could not scan qr:", err) 22 | } 23 | return ( 24 |
31 | 42 |
45 | 51 |
52 |
55 |
60 |

{t('guestCheckin.pleaseScanInvitation')}

64 |
65 |
66 |
67 | ) 68 | } -------------------------------------------------------------------------------- /public/assets/js/jquery.easing.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ 3 | * 4 | * Uses the built in easing capabilities added In jQuery 1.1 5 | * to offer multiple easing options 6 | * 7 | * TERMS OF USE - EASING EQUATIONS 8 | * 9 | * Open source under the BSD License. 10 | * 11 | * Copyright © 2001 Robert Penner 12 | * All rights reserved. 13 | * 14 | * TERMS OF USE - jQuery Easing 15 | * 16 | * Open source under the BSD License. 17 | * 18 | * Copyright © 2008 George McGinley Smith 19 | * All rights reserved. 20 | * 21 | * Redistribution and use in source and binary forms, with or without modification, 22 | * are permitted provided that the following conditions are met: 23 | * 24 | * Redistributions of source code must retain the above copyright notice, this list of 25 | * conditions and the following disclaimer. 26 | * Redistributions in binary form must reproduce the above copyright notice, this list 27 | * of conditions and the following disclaimer in the documentation and/or other materials 28 | * provided with the distribution. 29 | * 30 | * Neither the name of the author nor the names of contributors may be used to endorse 31 | * or promote products derived from this software without specific prior written permission. 32 | * 33 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 34 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 35 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 36 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 37 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 38 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 39 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 40 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 41 | * OF THE POSSIBILITY OF SUCH DAMAGE. 42 | * 43 | */ 44 | jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,f,a,h,g){return jQuery.easing[jQuery.easing.def](e,f,a,h,g)},easeInQuad:function(e,f,a,h,g){return h*(f/=g)*f+a},easeOutQuad:function(e,f,a,h,g){return -h*(f/=g)*(f-2)+a},easeInOutQuad:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f+a}return -h/2*((--f)*(f-2)-1)+a},easeInCubic:function(e,f,a,h,g){return h*(f/=g)*f*f+a},easeOutCubic:function(e,f,a,h,g){return h*((f=f/g-1)*f*f+1)+a},easeInOutCubic:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f+a}return h/2*((f-=2)*f*f+2)+a},easeInQuart:function(e,f,a,h,g){return h*(f/=g)*f*f*f+a},easeOutQuart:function(e,f,a,h,g){return -h*((f=f/g-1)*f*f*f-1)+a},easeInOutQuart:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f+a}return -h/2*((f-=2)*f*f*f-2)+a},easeInQuint:function(e,f,a,h,g){return h*(f/=g)*f*f*f*f+a},easeOutQuint:function(e,f,a,h,g){return h*((f=f/g-1)*f*f*f*f+1)+a},easeInOutQuint:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f*f+a}return h/2*((f-=2)*f*f*f*f+2)+a},easeInSine:function(e,f,a,h,g){return -h*Math.cos(f/g*(Math.PI/2))+h+a},easeOutSine:function(e,f,a,h,g){return h*Math.sin(f/g*(Math.PI/2))+a},easeInOutSine:function(e,f,a,h,g){return -h/2*(Math.cos(Math.PI*f/g)-1)+a},easeInExpo:function(e,f,a,h,g){return(f==0)?a:h*Math.pow(2,10*(f/g-1))+a},easeOutExpo:function(e,f,a,h,g){return(f==g)?a+h:h*(-Math.pow(2,-10*f/g)+1)+a},easeInOutExpo:function(e,f,a,h,g){if(f==0){return a}if(f==g){return a+h}if((f/=g/2)<1){return h/2*Math.pow(2,10*(f-1))+a}return h/2*(-Math.pow(2,-10*--f)+2)+a},easeInCirc:function(e,f,a,h,g){return -h*(Math.sqrt(1-(f/=g)*f)-1)+a},easeOutCirc:function(e,f,a,h,g){return h*Math.sqrt(1-(f=f/g-1)*f)+a},easeInOutCirc:function(e,f,a,h,g){if((f/=g/2)<1){return -h/2*(Math.sqrt(1-f*f)-1)+a}return h/2*(Math.sqrt(1-(f-=2)*f)+1)+a},easeInElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g=0;s={horizontal:{},vertical:{}};f=1;a={};u="waypoints-context-id";p="resize.waypoints";y="scroll.waypoints";v=1;w="waypoints-waypoint-ids";g="waypoint";m="waypoints";o=function(){function t(t){var e=this;this.$element=t;this.element=t[0];this.didResize=false;this.didScroll=false;this.id="context"+f++;this.oldScroll={x:t.scrollLeft(),y:t.scrollTop()};this.waypoints={horizontal:{},vertical:{}};t.data(u,this.id);a[this.id]=this;t.bind(y,function(){var t;if(!(e.didScroll||c)){e.didScroll=true;t=function(){e.doScroll();return e.didScroll=false};return r.setTimeout(t,n[m].settings.scrollThrottle)}});t.bind(p,function(){var t;if(!e.didResize){e.didResize=true;t=function(){n[m]("refresh");return e.didResize=false};return r.setTimeout(t,n[m].settings.resizeThrottle)}})}t.prototype.doScroll=function(){var t,e=this;t={horizontal:{newScroll:this.$element.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.$element.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};if(c&&(!t.vertical.oldScroll||!t.vertical.newScroll)){n[m]("refresh")}n.each(t,function(t,r){var i,o,l;l=[];o=r.newScroll>r.oldScroll;i=o?r.forward:r.backward;n.each(e.waypoints[t],function(t,e){var n,i;if(r.oldScroll<(n=e.offset)&&n<=r.newScroll){return l.push(e)}else if(r.newScroll<(i=e.offset)&&i<=r.oldScroll){return l.push(e)}});l.sort(function(t,e){return t.offset-e.offset});if(!o){l.reverse()}return n.each(l,function(t,e){if(e.options.continuous||t===l.length-1){return e.trigger([i])}})});return this.oldScroll={x:t.horizontal.newScroll,y:t.vertical.newScroll}};t.prototype.refresh=function(){var t,e,r,i=this;r=n.isWindow(this.element);e=this.$element.offset();this.doScroll();t={horizontal:{contextOffset:r?0:e.left,contextScroll:r?0:this.oldScroll.x,contextDimension:this.$element.width(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:r?0:e.top,contextScroll:r?0:this.oldScroll.y,contextDimension:r?n[m]("viewportHeight"):this.$element.height(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};return n.each(t,function(t,e){return n.each(i.waypoints[t],function(t,r){var i,o,l,s,f;i=r.options.offset;l=r.offset;o=n.isWindow(r.element)?0:r.$element.offset()[e.offsetProp];if(n.isFunction(i)){i=i.apply(r.element)}else if(typeof i==="string"){i=parseFloat(i);if(r.options.offset.indexOf("%")>-1){i=Math.ceil(e.contextDimension*i/100)}}r.offset=o-e.contextOffset+e.contextScroll-i;if(r.options.onlyOnScroll&&l!=null||!r.enabled){return}if(l!==null&&l<(s=e.oldScroll)&&s<=r.offset){return r.trigger([e.backward])}else if(l!==null&&l>(f=e.oldScroll)&&f>=r.offset){return r.trigger([e.forward])}else if(l===null&&e.oldScroll>=r.offset){return r.trigger([e.forward])}})})};t.prototype.checkEmpty=function(){if(n.isEmptyObject(this.waypoints.horizontal)&&n.isEmptyObject(this.waypoints.vertical)){this.$element.unbind([p,y].join(" "));return delete a[this.id]}};return t}();l=function(){function t(t,e,r){var i,o;r=n.extend({},n.fn[g].defaults,r);if(r.offset==="bottom-in-view"){r.offset=function(){var t;t=n[m]("viewportHeight");if(!n.isWindow(e.element)){t=e.$element.height()}return t-n(this).outerHeight()}}this.$element=t;this.element=t[0];this.axis=r.horizontal?"horizontal":"vertical";this.callback=r.handler;this.context=e;this.enabled=r.enabled;this.id="waypoints"+v++;this.offset=null;this.options=r;e.waypoints[this.axis][this.id]=this;s[this.axis][this.id]=this;i=(o=t.data(w))!=null?o:[];i.push(this.id);t.data(w,i)}t.prototype.trigger=function(t){if(!this.enabled){return}if(this.callback!=null){this.callback.apply(this.element,t)}if(this.options.triggerOnce){return this.destroy()}};t.prototype.disable=function(){return this.enabled=false};t.prototype.enable=function(){this.context.refresh();return this.enabled=true};t.prototype.destroy=function(){delete s[this.axis][this.id];delete this.context.waypoints[this.axis][this.id];return this.context.checkEmpty()};t.getWaypointsByElement=function(t){var e,r;r=n(t).data(w);if(!r){return[]}e=n.extend({},s.horizontal,s.vertical);return n.map(r,function(t){return e[t]})};return t}();d={init:function(t,e){var r;if(e==null){e={}}if((r=e.handler)==null){e.handler=t}this.each(function(){var t,r,i,s;t=n(this);i=(s=e.context)!=null?s:n.fn[g].defaults.context;if(!n.isWindow(i)){i=t.closest(i)}i=n(i);r=a[i.data(u)];if(!r){r=new o(i)}return new l(t,r,e)});n[m]("refresh");return this},disable:function(){return d._invoke(this,"disable")},enable:function(){return d._invoke(this,"enable")},destroy:function(){return d._invoke(this,"destroy")},prev:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){if(e>0){return t.push(n[e-1])}})},next:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){if(et.oldScroll.y})},left:function(t){if(t==null){t=r}return h._filter(t,"horizontal",function(t,e){return e.offset<=t.oldScroll.x})},right:function(t){if(t==null){t=r}return h._filter(t,"horizontal",function(t,e){return e.offset>t.oldScroll.x})},enable:function(){return h._invoke("enable")},disable:function(){return h._invoke("disable")},destroy:function(){return h._invoke("destroy")},extendFn:function(t,e){return d[t]=e},_invoke:function(t){var e;e=n.extend({},s.vertical,s.horizontal);return n.each(e,function(e,n){n[t]();return true})},_filter:function(t,e,r){var i,o;i=a[n(t).data(u)];if(!i){return[]}o=[];n.each(i.waypoints[e],function(t,e){if(r(i,e)){return o.push(e)}});o.sort(function(t,e){return t.offset-e.offset});return n.map(o,function(t){return t.element})}};n[m]=function(){var t,n;n=arguments[0],t=2<=arguments.length?e.call(arguments,1):[];if(h[n]){return h[n].apply(null,t)}else{return h.aggregate.call(null,n)}};n[m].settings={resizeThrottle:100,scrollThrottle:30};return i.load(function(){return n[m]("refresh")})})}).call(this); -------------------------------------------------------------------------------- /public/assets/js/vendor/modernizr-3.7.1.min.js: -------------------------------------------------------------------------------- 1 | /*! modernizr 3.7.1 (Custom Build) | MIT * 2 | * https://modernizr.com/download/?-cssanimations-csscolumns-customelements-flexbox-history-picture-pointerevents-postmessage-sizes-srcset-webgl-websockets-webworkers-addtest-domprefixes-hasevent-mq-prefixedcssvalue-prefixes-setclasses-testallprops-testprop-teststyles !*/ 3 | !function(e,t,n){function r(e,t){return typeof e===t}function o(e){var t=b.className,n=Modernizr._config.classPrefix||"";if(S&&(t=t.baseVal),Modernizr._config.enableJSClass){var r=new RegExp("(^|\\s)"+n+"no-js(\\s|$)");t=t.replace(r,"$1"+n+"js$2")}Modernizr._config.enableClasses&&(e.length>0&&(t+=" "+n+e.join(" "+n)),S?b.className.baseVal=t:b.className=t)}function i(e,t){if("object"==typeof e)for(var n in e)E(e,n)&&i(n,e[n]);else{e=e.toLowerCase();var r=e.split("."),s=Modernizr[r[0]];if(2===r.length&&(s=s[r[1]]),void 0!==s)return Modernizr;t="function"==typeof t?t():t,1===r.length?Modernizr[r[0]]=t:(!Modernizr[r[0]]||Modernizr[r[0]]instanceof Boolean||(Modernizr[r[0]]=new Boolean(Modernizr[r[0]])),Modernizr[r[0]][r[1]]=t),o([(t&&!1!==t?"":"no-")+r.join("-")]),Modernizr._trigger(e,t)}return Modernizr}function s(){return"function"!=typeof t.createElement?t.createElement(arguments[0]):S?t.createElementNS.call(t,"http://www.w3.org/2000/svg",arguments[0]):t.createElement.apply(t,arguments)}function a(){var e=t.body;return e||(e=s(S?"svg":"body"),e.fake=!0),e}function l(e,n,r,o){var i,l,u,f,c="modernizr",d=s("div"),p=a();if(parseInt(r,10))for(;r--;)u=s("div"),u.id=o?o[r]:c+(r+1),d.appendChild(u);return i=s("style"),i.type="text/css",i.id="s"+c,(p.fake?p:d).appendChild(i),p.appendChild(d),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(t.createTextNode(e)),d.id=c,p.fake&&(p.style.background="",p.style.overflow="hidden",f=b.style.overflow,b.style.overflow="hidden",b.appendChild(p)),l=n(d,e),p.fake?(p.parentNode.removeChild(p),b.style.overflow=f,b.offsetHeight):d.parentNode.removeChild(d),!!l}function u(e,t){return!!~(""+e).indexOf(t)}function f(e){return e.replace(/([A-Z])/g,function(e,t){return"-"+t.toLowerCase()}).replace(/^ms-/,"-ms-")}function c(t,n,r){var o;if("getComputedStyle"in e){o=getComputedStyle.call(e,t,n);var i=e.console;if(null!==o)r&&(o=o.getPropertyValue(r));else if(i){var s=i.error?"error":"log";i[s].call(i,"getComputedStyle returning null, its possible modernizr test results are inaccurate")}}else o=!n&&t.currentStyle&&t.currentStyle[r];return o}function d(t,r){var o=t.length;if("CSS"in e&&"supports"in e.CSS){for(;o--;)if(e.CSS.supports(f(t[o]),r))return!0;return!1}if("CSSSupportsRule"in e){for(var i=[];o--;)i.push("("+f(t[o])+":"+r+")");return i=i.join(" or "),l("@supports ("+i+") { #modernizr { position: absolute; } }",function(e){return"absolute"===c(e,null,"position")})}return n}function p(e){return e.replace(/([a-z])-([a-z])/g,function(e,t,n){return t+n.toUpperCase()}).replace(/^-/,"")}function m(e,t,o,i){function a(){f&&(delete L.style,delete L.modElem)}if(i=!r(i,"undefined")&&i,!r(o,"undefined")){var l=d(e,o);if(!r(l,"undefined"))return l}for(var f,c,m,h,v,A=["modernizr","tspan","samp"];!L.style&&A.length;)f=!0,L.modElem=s(A.shift()),L.style=L.modElem.style;for(m=e.length,c=0;c { 12 | if (!locale || locale === defaultLocale) { 13 | return appConfig 14 | } 15 | // Replace config with lang 16 | const configLang = appConfig.lang[locale] 17 | if (configLang === undefined) { 18 | throw new Error("invalid locale: ", locale) 19 | } 20 | return { ...appConfig, ...configLang } 21 | } 22 | 23 | const ShowInvite = ({ currentUrl, guestListLastUpdatedAt, guest }) => { 24 | const t = useTranslation(guest.locale) 25 | 26 | // Initiate config variables 27 | const { logo, ogTags, coupleInfo, venue, weddingDay, weddingDate, weddingTime, calendarInfo } = translateConfig(appConfig, guest.locale) 28 | const { brideName, groomName, coupleNameFormat } = coupleInfo 29 | 30 | const coupleNameStr = coupleNameFormat === 'GROOM_FIRST' 31 | ? `${groomName} & ${brideName}` 32 | : `${brideName} & ${groomName}` 33 | const coupleName = coupleNameFormat === 'GROOM_FIRST' 34 | ? (<>{groomName} & {brideName}) 35 | : (<>{brideName} & {groomName}) 36 | 37 | // Venue info 38 | const venueBrief = `${venue.name}, ${venue.city}, ${venue.country}` 39 | const weddingDateBrief = `${weddingDay}, ${weddingDate}` 40 | 41 | // Event info 42 | const eventTitle = `${coupleNameStr}'s Wedding` 43 | let eventDescription = `${weddingDateBrief} at ${venue.name}, ${venue.city}` 44 | if (guest.name) { 45 | eventDescription = `Dear ${guest.name}, you are cordially invited to our wedding on ${weddingDate} at ${venue.name}. Looking forward to seeing you!` 46 | } 47 | 48 | // Calendar payload 49 | const calendarEvent = { 50 | title: eventTitle, 51 | description: eventDescription, 52 | location: `${venue.city}, ${venue.country}`, 53 | startTime: calendarInfo.timeStartISO, 54 | endTime: calendarInfo.timeEndISO 55 | } 56 | 57 | return ( 58 |
59 | 66 | 77 | < section className="header_area"> 78 |
82 |
83 |
84 |
90 |
91 |
92 |
93 |
94 | logo 95 |
{t('siteIntro')}
101 |

107 | {coupleName} 108 |

109 | {venue.name}, {venue.city}, {venue.country}. 115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 | 124 | 125 |
126 |
127 | shape 128 |
129 |
130 |
131 |
132 |
138 |

{t("eventDate")}:

139 |

{weddingDateBrief}

140 |
144 | 145 |
146 | Shape 147 |
148 |
149 |
150 |
156 |
157 |
161 | 174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 | shape 182 |
183 |
184 | 185 |
186 |
187 |
193 |
194 |
195 |
196 | {guest.name && (
202 | {t('invitationGreeting')} 203 |

{guest.name},

204 |
205 | )} 206 |

{t('invitationIntro')}

207 |
214 |

220 | 221 | {t('invitationContent')} 222 | {t('invitationOutro') && !t('invitationOutro').startsWith("[missing") && ( 223 | <> 224 |
225 |
226 | {t('invitationOutro')} 227 | 228 | )} 229 |
230 |

231 |
232 | 233 | {appConfig.showQrCode && guest.name && ( 234 |
235 | 236 |
237 | )} 238 | 239 |

240 | {venue.name} 245 |
{venue.addressLine1} 246 |
{venue.addressLine2} 247 |
{venue.country}. 248 |

249 |

250 | {weddingDate} · {weddingTime} 251 |

252 | 253 | {t('invitationClosing') && !t('invitationClosing').startsWith("[missing") && 254 |

261 |

262 | } 263 |
264 |
265 |
266 |
267 |
268 |
269 | 270 | {/* Footer section */} 271 |
272 |
273 | shape 274 |
275 |
276 |
277 |
278 | {logo.footerLogo && 279 | (logo.footerLogoType === "mp4" ? 280 | 283 | : 284 | )} 285 |
286 |
287 |

288 | {coupleName} 289 |

290 |
291 |
292 |
293 | {appConfig.showBuiltWithInfo && ()} 303 |
304 |
305 | ) 306 | }; 307 | 308 | ShowInvite.getInitialProps = (ctx) => { 309 | const localeParams = ctx.query.lang || defaultLocale 310 | const emptyGuestParams = { 311 | guest: { 312 | guestId: '', 313 | name: '', 314 | greeting: '', 315 | locale: localeParams, 316 | } 317 | } 318 | 319 | const currentUrl = resolvePath(ctx.req.url) 320 | const guestId = ctx.query.u 321 | if (!guestId) { 322 | return { 323 | currentUrl, 324 | ...emptyGuestParams 325 | } 326 | } 327 | 328 | const guestData = guestList.data 329 | const guestListLastUpdatedAt = guestList.meta.lastUpdatedAt 330 | const { name, greeting, locale } = guestData.filter(guest => guest.guestId === guestId)[0] || {} 331 | if (!name) { 332 | return { 333 | currentUrl, 334 | ...emptyGuestParams 335 | } 336 | } 337 | 338 | return { 339 | currentUrl, 340 | guestListLastUpdatedAt, 341 | guest: { 342 | name, 343 | greeting, 344 | guestId, 345 | locale: locale || localeParams, 346 | } 347 | } 348 | } 349 | 350 | export default ShowInvite -------------------------------------------------------------------------------- /public/assets/css/style.css: -------------------------------------------------------------------------------- 1 | @import "https://fonts.googleapis.com/css?family=Niconne|Poppins:300,400,500,600,700,800&display=swap";body{font-family:poppins,sans-serif;font-weight:400;font-style:normal;color:#747e88}*{margin:0;padding:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}img{max-width:100%}a:focus,input:focus,textarea:focus,button:focus{text-decoration:none;outline:none}a:focus,a:hover{text-decoration:none}i,span,a{display:inline-block}audio,canvas,iframe,img,svg,video{vertical-align:middle}h1,h2,h3,h4,h5,h6{font-family:niconne,cursive;font-weight:700;color:#38424d;margin:0}h1{font-size:48px}h2{font-size:36px}h3{font-size:28px}h4{font-size:22px}h5{font-size:18px}h6{font-size:16px}ul,ol{margin:0;padding:0;list-style-type:none}p{font-size:16px;font-weight:400;line-height:26px;color:#747e88;margin:0}.bg_cover{background-position:center center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%}.slick-slide{outline:0}.main-btn{display:inline-block;font-weight:500;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:2px solid #d59a57;padding:0 40px;font-size:16px;line-height:46px;border-radius:5px;color:#fff;cursor:pointer;z-index:5;-webkit-transition:all .4s ease-out 0s;-moz-transition:all .4s ease-out 0s;-ms-transition:all .4s ease-out 0s;-o-transition:all .4s ease-out 0s;transition:all .4s ease-out 0s;background-color:#d59a57;-webkit-box-shadow:0 15px 40px 0 rgba(213,154,87,.34);-moz-box-shadow:0 15px 40px 0 rgba(213,154,87,.34);box-shadow:0 15px 40px 0 rgba(213,154,87,.34)}.main-btn:hover{background-color:#fff;color:#d59a57;border-color:#d59a57}.main-btn.main-btn-2{background-color:#fff;color:#d59a57;border-color:#d59a57}.main-btn.main-btn-2:hover{background-color:#d59a57;border-color:#d59a57;color:#fff}.section_title .title{font-size:45px;color:#d59a57}@media(max-width:767px){.section_title .title{font-size:34px}}.section_title img{margin-top:10px}.section_title p{font-size:30px;line-height:38px;color:#38424d}@media(max-width:767px){.section_title p{font-size:24px}}.section_title .text{font-size:16px;line-height:26px;color:#747e88;margin-top:30px}.preloader{position:fixed;top:0;left:0;display:table;height:100%;width:100%;background:#fff;z-index:99999}.preloader .loader{display:table-cell;vertical-align:middle;text-align:center}.preloader .loader .ytp-spinner{position:absolute;left:50%;top:50%;width:64px;margin-left:-32px;z-index:18;pointer-events:none}.preloader .loader .ytp-spinner .ytp-spinner-container{pointer-events:none;position:absolute;width:100%;padding-bottom:100%;top:50%;left:50%;margin-top:-50%;margin-left:-50%;-webkit-animation:ytp-spinner-linspin 1568.23529647ms linear infinite;-moz-animation:ytp-spinner-linspin 1568.23529647ms linear infinite;-o-animation:ytp-spinner-linspin 1568.23529647ms linear infinite;animation:ytp-spinner-linspin 1568.23529647ms linear infinite}.preloader .loader .ytp-spinner .ytp-spinner-container .ytp-spinner-rotator{position:absolute;width:100%;height:100%;-webkit-animation:ytp-spinner-easespin 5332ms cubic-bezier(.4,0,.2,1) infinite both;-moz-animation:ytp-spinner-easespin 5332ms cubic-bezier(.4,0,.2,1) infinite both;-o-animation:ytp-spinner-easespin 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:ytp-spinner-easespin 5332ms cubic-bezier(.4,0,.2,1) infinite both}.preloader .loader .ytp-spinner .ytp-spinner-container .ytp-spinner-rotator .ytp-spinner-left{position:absolute;top:0;left:0;bottom:0;overflow:hidden;right:50%}.preloader .loader .ytp-spinner .ytp-spinner-container .ytp-spinner-rotator .ytp-spinner-right{position:absolute;top:0;right:0;bottom:0;overflow:hidden;left:50%}.preloader .loader .ytp-spinner-circle{box-sizing:border-box;position:absolute;width:200%;height:100%;border-style:solid;border-color:#d59a57 #d59a57 #fcf4ec;border-radius:50%;border-width:6px}.preloader .loader .ytp-spinner-left .ytp-spinner-circle{left:0;right:-100%;border-right-color:#fcf4ec;-webkit-animation:ytp-spinner-left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;-moz-animation:ytp-spinner-left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;-o-animation:ytp-spinner-left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:ytp-spinner-left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.preloader .loader .ytp-spinner-right .ytp-spinner-circle{left:-100%;right:0;border-left-color:#fcf4ec;-webkit-animation:ytp-right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;-moz-animation:ytp-right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;-o-animation:ytp-right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:ytp-right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes ytp-spinner-linspin{to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ytp-spinner-linspin{to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes ytp-spinner-easespin{12.5%{-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);-moz-transform:rotate(405deg);-ms-transform:rotate(405deg);-o-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);-moz-transform:rotate(540deg);-ms-transform:rotate(540deg);-o-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);-moz-transform:rotate(675deg);-ms-transform:rotate(675deg);-o-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);-moz-transform:rotate(810deg);-ms-transform:rotate(810deg);-o-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);-moz-transform:rotate(945deg);-ms-transform:rotate(945deg);-o-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);-moz-transform:rotate(1080deg);-ms-transform:rotate(1080deg);-o-transform:rotate(1080deg);transform:rotate(1080deg)}}@keyframes ytp-spinner-easespin{12.5%{-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);-moz-transform:rotate(405deg);-ms-transform:rotate(405deg);-o-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);-moz-transform:rotate(540deg);-ms-transform:rotate(540deg);-o-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);-moz-transform:rotate(675deg);-ms-transform:rotate(675deg);-o-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);-moz-transform:rotate(810deg);-ms-transform:rotate(810deg);-o-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);-moz-transform:rotate(945deg);-ms-transform:rotate(945deg);-o-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);-moz-transform:rotate(1080deg);-ms-transform:rotate(1080deg);-o-transform:rotate(1080deg);transform:rotate(1080deg)}}@-webkit-keyframes ytp-spinner-left-spin{0%{-webkit-transform:rotate(130deg);-moz-transform:rotate(130deg);-ms-transform:rotate(130deg);-o-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);-moz-transform:rotate(-5deg);-ms-transform:rotate(-5deg);-o-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);-moz-transform:rotate(130deg);-ms-transform:rotate(130deg);-o-transform:rotate(130deg);transform:rotate(130deg)}}@keyframes ytp-spinner-left-spin{0%{-webkit-transform:rotate(130deg);-moz-transform:rotate(130deg);-ms-transform:rotate(130deg);-o-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);-moz-transform:rotate(-5deg);-ms-transform:rotate(-5deg);-o-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);-moz-transform:rotate(130deg);-ms-transform:rotate(130deg);-o-transform:rotate(130deg);transform:rotate(130deg)}}@-webkit-keyframes ytp-right-spin{0%{-webkit-transform:rotate(-130deg);-moz-transform:rotate(-130deg);-ms-transform:rotate(-130deg);-o-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);-moz-transform:rotate(5deg);-ms-transform:rotate(5deg);-o-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);-moz-transform:rotate(-130deg);-ms-transform:rotate(-130deg);-o-transform:rotate(-130deg);transform:rotate(-130deg)}}@keyframes ytp-right-spin{0%{-webkit-transform:rotate(-130deg);-moz-transform:rotate(-130deg);-ms-transform:rotate(-130deg);-o-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);-moz-transform:rotate(5deg);-ms-transform:rotate(5deg);-o-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);-moz-transform:rotate(-130deg);-ms-transform:rotate(-130deg);-o-transform:rotate(-130deg);transform:rotate(-130deg)}}.header_navbar{position:absolute;top:0;left:0;width:100%;z-index:99;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s;background-color:rgba(255,255,255,.07)}.sticky{position:fixed;z-index:99;background-color:#fff;-webkit-box-shadow:0 20px 50px 0 rgba(0,0,0,.05);-moz-box-shadow:0 20px 50px 0 rgba(0,0,0,.05);box-shadow:0 20px 50px 0 rgba(0,0,0,.05);-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}.sticky .navbar{padding:10px 0}.navbar{padding:15px 0;border-radius:5px;position:relative;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}.navbar-brand{padding:0}.navbar-brand img{width:85px}.navbar-toggler{padding:0}.navbar-toggler .toggler-icon{width:30px;height:2px;background-color:#fff;display:block;margin:5px 0;position:relative;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}.navbar-toggler.active .toggler-icon:nth-of-type(1){-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);top:7px}.navbar-toggler.active .toggler-icon:nth-of-type(2){opacity:0}.navbar-toggler.active .toggler-icon:nth-of-type(3){-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg);top:-7px}@media only screen and (min-width:768px) and (max-width:991px){.navbar-collapse{position:absolute;top:100%;left:0;width:100%;background-color:#fff;z-index:9;-webkit-box-shadow:0 15px 20px 0 rgba(0,0,0,.1);-moz-box-shadow:0 15px 20px 0 rgba(0,0,0,.1);box-shadow:0 15px 20px 0 rgba(0,0,0,.1);padding:5px 12px}}@media(max-width:767px){.navbar-collapse{position:absolute;top:100%;left:0;width:100%;background-color:#fff;z-index:9;-webkit-box-shadow:0 15px 20px 0 rgba(0,0,0,.1);-moz-box-shadow:0 15px 20px 0 rgba(0,0,0,.1);box-shadow:0 15px 20px 0 rgba(0,0,0,.1);padding:5px 12px}}.navbar-nav .nav-item{margin-left:45px;position:relative}@media only screen and (min-width:992px) and (max-width:1199px){.navbar-nav .nav-item{margin-left:40px}}@media only screen and (min-width:768px) and (max-width:991px){.navbar-nav .nav-item{margin:0}}@media(max-width:767px){.navbar-nav .nav-item{margin:0}}.navbar-nav .nav-item a{font-size:16px;font-weight:400;color:#fff;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s;padding:10px 0;position:relative;font-family:poppins,sans-serif;position:relative}@media only screen and (min-width:768px) and (max-width:991px){.navbar-nav .nav-item a{display:block;padding:4px 0;color:#38424d}}@media(max-width:767px){.navbar-nav .nav-item a{display:block;padding:4px 0;color:#38424d}}.navbar-nav .nav-item.active>a span,.navbar-nav .nav-item:hover>a span{opacity:1;visibility:visible;width:60%}.navbar-nav .nav-item.active>a span::before,.navbar-nav .nav-item:hover>a span::before{width:20%}.navbar-nav .nav-item.active>a span::after,.navbar-nav .nav-item:hover>a span::after{width:15%}.navbar-nav .nav-item:hover .sub-menu{top:100%;opacity:1;visibility:visible}@media only screen and (min-width:768px) and (max-width:991px){.navbar-nav .nav-item:hover .sub-menu{top:0}}@media(max-width:767px){.navbar-nav .nav-item:hover .sub-menu{top:0}}.navbar-nav .nav-item .sub-menu{width:200px;background-color:#fff;-webkit-box-shadow:0 0 20px 0 rgba(0,0,0,.1);-moz-box-shadow:0 0 20px 0 rgba(0,0,0,.1);box-shadow:0 0 20px 0 rgba(0,0,0,.1);position:absolute;top:110%;left:0;opacity:0;visibility:hidden;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}@media only screen and (min-width:768px) and (max-width:991px){.navbar-nav .nav-item .sub-menu{position:relative;width:100%;top:0;display:none;opacity:1;visibility:visible}}@media(max-width:767px){.navbar-nav .nav-item .sub-menu{position:relative;width:100%;top:0;display:none;opacity:1;visibility:visible}}.navbar-nav .nav-item .sub-menu li{display:block}.navbar-nav .nav-item .sub-menu li a{display:block;padding:8px 20px;color:#38424d}.navbar-nav .nav-item .sub-menu li a.active,.navbar-nav .nav-item .sub-menu li a:hover{padding-left:25px;color:#d59a57}.navbar-nav .sub-nav-toggler{display:none}@media only screen and (min-width:768px) and (max-width:991px){.navbar-nav .sub-nav-toggler{display:block;position:absolute;right:0;top:0;background:0 0;color:#38424d;font-size:18px;border:0;width:30px;height:30px}}@media(max-width:767px){.navbar-nav .sub-nav-toggler{display:block;position:absolute;right:0;top:0;background:0 0;color:#38424d;font-size:18px;border:0;width:30px;height:30px}}.navbar-nav .sub-nav-toggler span{width:8px;height:8px;border-left:1px solid #38424d;border-bottom:1px solid #38424d;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg);position:relative;top:-5px}.sticky .navbar-toggler .toggler-icon{background-color:#38424d}.sticky .navbar-nav .nav-item a{color:#38424d}.sticky .navbar-nav .nav-item.active>a,.sticky .navbar-nav .nav-item:hover>a{color:#d59a57}.single_slider{height:800px;position:relative}@media only screen and (min-width:1400px){.single_slider{height:900px}}@media(max-width:767px){.single_slider{height:600px}}.single_slider::before{position:absolute;content:'';background: #a73737; /* fallback for old browsers */ 2 | background: -webkit-linear-gradient(to right, #7a2828, #a73737); /* Chrome 10-25, Safari 5.1-6 */ 3 | background: linear-gradient(to right, #7a2828, #a73737); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */;width:100%;height:100%;left:0;top:0}.slider_content{padding-top:80px}.slider_content .slider_sub_title{font-size:30px;font-family:poppins,sans-serif;font-weight:600;color:#fff}@media only screen and (min-width:768px) and (max-width:991px){.slider_content .slider_sub_title{font-size:24px}}@media(max-width:767px){.slider_content .slider_sub_title{font-size:18px}}.slider_content .slider_title{font-size:112px;color:#fff;margin-top:15px}@media only screen and (min-width:992px) and (max-width:1199px){.slider_content .slider_title{font-size:102px}}@media only screen and (min-width:768px) and (max-width:991px){.slider_content .slider_title{font-size:82px}}@media(max-width:767px){.slider_content .slider_title{font-size:42px}}@media only screen and (min-width:576px) and (max-width:767px){.slider_content .slider_title{font-size:60px}}.slider_content .slider_title span{display:contents;color:#d59a57}.slider_content .location{font-size:30px;font-weight:600;color:#fff;margin-top:35px}@media only screen and (min-width:768px) and (max-width:991px){.slider_content .location{font-size:24px}}@media(max-width:767px){.slider_content .location{font-size:18px}}.slider_content p{font-size:25px;color:#fff;margin-top:30px}@media only screen and (min-width:768px) and (max-width:991px){.slider_content p{font-size:20px}}@media(max-width:767px){.slider_content p{font-size:16px}}.slider_content p img{display:inline-block}@media(max-width:767px){.slider_content p img{width:40px}}.slider-active .slick-dots{position:absolute;left:50%;bottom:50px;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%)}.slider-active .slick-dots li{display:inline-block;margin:0 3px}.slider-active .slick-dots li button{width:15px;height:15px;background:0 0;border:2px solid #fff;border-radius:50%;font-size:0;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%)}.slider-active .slick-dots li.slick-active button{background-color:#fff;border-color:#707070}.slider-active .slick-arrow{position:absolute;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);left:0;z-index:9;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s;opacity:0}.slider-active .slick-arrow i{width:50px;height:50px;line-height:46px;text-align:center;border:2px solid rgba(255,255,255,.58);font-size:26px;color:rgba(255,255,255,.58);border-radius:50%;cursor:pointer;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}.slider-active .slick-arrow:hover i{color:#d59a57;border-color:#d59a57}.slider-active .slick-arrow.next{right:0;left:auto}.slider-active:hover .slick-arrow{left:30px;opacity:1}@media only screen and (min-width:1400px){.slider-active:hover .slick-arrow{left:130px}}.slider-active:hover .slick-arrow.next{left:auto;right:30px}@media only screen and (min-width:1400px){.slider-active:hover .slick-arrow.next{right:130px}}.single_couple .couple_image{overflow:hidden;border-radius:10px}.single_couple .couple_image img{width:100%;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}.single_couple .couple_content{width:90%;margin:0 auto;background-color:#fff;-webkit-box-shadow:0 3px 32px 0 rgba(177,177,177,.16);-moz-box-shadow:0 3px 32px 0 rgba(177,177,177,.16);box-shadow:0 3px 32px 0 rgba(177,177,177,.16);padding:30px;border-radius:10px;position:relative;margin-top:-70px;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s;z-index:5}@media only screen and (min-width:768px) and (max-width:991px){.single_couple .couple_content{padding:15px}}@media(max-width:767px){.single_couple .couple_content{padding:15px}}@media only screen and (min-width:576px) and (max-width:767px){.single_couple .couple_content{padding:30px}}.single_couple .couple_content .shape{position:absolute;top:5px;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%);width:70px;z-index:-1;opacity:.26}.single_couple .couple_content .couple_name{font-size:40px;color:#d59a57}@media only screen and (min-width:768px) and (max-width:991px){.single_couple .couple_content .couple_name{font-size:30px}}@media(max-width:767px){.single_couple .couple_content .couple_name{font-size:30px}}@media only screen and (min-width:576px) and (max-width:767px){.single_couple .couple_content .couple_name{font-size:40px}}.single_couple .couple_content p{font-weight:300;margin-top:25px}.single_couple .couple_content .social{margin-top:30px}.single_couple .couple_content .social li{display:inline-block;margin:0 3px}.single_couple .couple_content .social li a{width:35px;height:35px;line-height:33px;text-align:center;border:1px solid #747e88;color:#747e88;font-size:16px;border-radius:50%;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}.single_couple .couple_content .social li a:hover{border-color:#d59a57;background-color:#d59a57;color:#fff}.single_couple:hover .couple_image img{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}.single_couple:hover .couple_content{-webkit-box-shadow:0 3px 50px 0 rgba(177,177,177,.3);-moz-box-shadow:0 3px 50px 0 rgba(177,177,177,.3);box-shadow:0 3px 50px 0 rgba(177,177,177,.3)}.coming_soon_area{background-color:#fcf4ec;position:relative;overflow:hidden;z-index:5}.coming_soon_shape_1{position:absolute;bottom:-30px;left:0;z-index:-1}.coming_soon_shape_1 img{width:130px;opacity:.31}.coming_soon_shape_2{position:absolute;top:-30px;right:0;z-index:-1}.coming_soon_shape_2 img{width:130px;opacity:.31}.coming_soon_count .single_count{width:150px;height:150px;text-align:center;background-color:#d59a57;border-radius:10px;margin-right:10px;margin-bottom:10px;position:relative}@media only screen and (min-width:992px) and (max-width:1199px){.coming_soon_count .single_count{width:120px;height:120px}}@media only screen and (min-width:768px) and (max-width:991px){.coming_soon_count .single_count{width:130px;height:130px}}@media(max-width:767px){.coming_soon_count .single_count{width:60px;height:60px;margin-bottom:5px;margin-right:5px}}@media(max-width:767px){.coming_soon_count .single_count{width:100px;height:100px;margin-bottom:10px;margin-right:10px}}.coming_soon_count .single_count::before{position:absolute;content:'';border-radius:10px;width:100%;height:100%;top:10px;left:10px}@media(max-width:767px){.coming_soon_count .single_count::before{top:5px;left:5px}}@media only screen and (min-width:576px) and (max-width:767px){.coming_soon_count .single_count::before{top:10px;left:10px}}.coming_soon_count .single_count .count_content .count{font-size:60px;font-family:niconne,cursive;color:#fff;line-height:45px}@media only screen and (min-width:992px) and (max-width:1199px){.coming_soon_count .single_count .count_content .count{font-size:50px}}@media(max-width:767px){.coming_soon_count .single_count .count_content .count{font-size:30px;line-height:30px}}@media only screen and (min-width:576px) and (max-width:767px){.coming_soon_count .single_count .count_content .count{font-size:46px;line-height:50px}}.coming_soon_count .single_count .count_content .times{font-size:25px;color:#fff;line-height:45px}@media only screen and (min-width:992px) and (max-width:1199px){.coming_soon_count .single_count .count_content .times{font-size:22px}}@media(max-width:767px){.coming_soon_count .single_count .count_content .times{font-size:12px;line-height:20px}}@media only screen and (min-width:576px) and (max-width:767px){.coming_soon_count .single_count .count_content .times{font-size:18px;line-height:30px}}.love_wrapper{position:relative;margin-top:30px}@media(max-width:767px){.love_wrapper{margin-top:0}}.love_wrapper::before{width:1px;height:100%;position:absolute;content:'';background-color:#d59a57;left:50%;top:0;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%)}@media(max-width:767px){.love_wrapper::before{display:none}}.single_love .love_content{width:45%}@media(max-width:767px){.single_love .love_content{width:100%;margin-top:30px}}.single_love .love_content .love_title{font-size:30px;color:#d59a57}.single_love .love_content p{margin-top:30px;font-weight:300}.single_love .love_date{width:10%;text-align:center}@media(max-width:767px){.single_love .love_date{width:100%;margin-top:30px}}.single_love .love_date p{width:40px;position:relative;color:#d59a57;border:1px solid #d59a57;border-radius:50px;font-size:14px;padding:2px;position:relative;line-height:35px;padding-bottom:32px;padding-top:62px;background-color:#fff;margin:0 auto}@media(max-width:767px){.single_love .love_date p{width:auto;height:40px;padding-left:62px;padding-right:30px;padding-top:0;padding-bottom:0}}.single_love .love_date p i{width:40px;height:40px;line-height:38px;text-align:center;border:1px solid #d59a57;border-radius:50%;color:#d59a57;position:absolute;top:-1px;left:-1px}.single_love .love_image{width:45%}@media(max-width:767px){.single_love .love_image{width:100%;margin-top:30px}}.single_love .love_image img{width:100%;border-radius:10px}@media only screen and (min-width:768px) and (max-width:991px){.single_love .love_image img{height:415px;object-fit:cover;object-position:center}}.gallery_wrapper{margin-top:30px}.single_gallery{position:relative}.single_gallery .gallery_image img{width:100%}.single_gallery .gallery_content{position:absolute;top:0;left:0;width:100%;height:100%}.single_gallery .gallery_content::before{position:absolute;content:'';width:100%;height:0;top:0;left:0;background-color:rgba(56,66,77,.85);-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}.single_gallery .gallery_content .gallery_icon{position:absolute;top:50%;width:100%;text-align:center;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.single_gallery .gallery_content .gallery_icon li{display:inline-block;margin:0 5px;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s;opacity:0;visibility:hidden}.single_gallery .gallery_content .gallery_icon li:first-child{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);-ms-transform:translateX(-100%);-o-transform:translateX(-100%);transform:translateX(-100%)}.single_gallery .gallery_content .gallery_icon li:last-child{-webkit-transform:translateX(100%);-moz-transform:translateX(100%);-ms-transform:translateX(100%);-o-transform:translateX(100%);transform:translateX(100%)}.single_gallery .gallery_content .gallery_icon li a{width:40px;height:40px;line-height:36px;text-align:center;font-size:16px;color:#d59a57;border:2px solid #d59a57;border-radius:50%}.single_gallery:hover .gallery_content::before{height:100%}.single_gallery:hover .gallery_content .gallery_icon li{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);-o-transform:translateX(0);transform:translateX(0);-webkit-transition-delay:.3s;-moz-transition-delay:.3s;-ms-transition-delay:.3s;-o-transition-delay:.3s;transition-delay:.3s;opacity:1;visibility:visible}.single_event .event_image{overflow:hidden;border-top-left-radius:10px;border-top-right-radius:10px}.single_event .event_image img{width:100%;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}.single_event .event_content{padding:25px;border-bottom-left-radius:10px;border-bottom-right-radius:10px;background-color:#fff;-webkit-box-shadow:0 3px 6px 0 rgba(177,177,177,.35);-moz-box-shadow:0 3px 6px 0 rgba(177,177,177,.35);box-shadow:0 3px 6px 0 rgba(177,177,177,.35);-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}.single_event .event_content .date{font-size:16px;color:#747e88}.single_event .event_content .event_title a{font-size:30px;color:#38424d;margin-top:20px;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}.single_event .event_content .event_title a:hover{color:#d59a57}.single_event .event_content p{margin-top:15px}.single_event .event_content .more{color:#747e88;margin-top:15px;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}.single_event .event_content .more:hover{color:#d59a57}.single_event:hover .event_image img{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}.single_event:hover .event_content{-webkit-box-shadow:0 3px 16px 0 rgba(177,177,177,.35);-moz-box-shadow:0 3px 16px 0 rgba(177,177,177,.35);box-shadow:0 3px 16px 0 rgba(177,177,177,.35)}.testimonial_area{background-color:#fcf4ec;position:relative;overflow:hidden;z-index:9}.testimonial_shape_1{position:absolute;bottom:-30px;left:0;z-index:-1}.testimonial_shape_1 img{width:130px;opacity:.31}.testimonial_shape_2{position:absolute;top:-30px;right:0;z-index:-1}.testimonial_shape_2 img{width:130px;opacity:.31}.single_testimonial .testimonial_author img{border-radius:50%;padding:5px;-webkit-box-shadow:0 3px 13px 0 rgba(213,154,87,.35);-moz-box-shadow:0 3px 13px 0 rgba(213,154,87,.35);box-shadow:0 3px 13px 0 rgba(213,154,87,.35);display:inline-block;background-color:#fff}.single_testimonial .testimonial_content .author_name{font-family:poppins,sans-serif;font-size:18px;font-weight:600;color:#38424d;margin-top:20px}.single_testimonial .testimonial_content .sub_title{color:#747e88;margin-top:5px}.testimonial_wrapper .slick-arrow{position:absolute;top:50%;left:-150px;z-index:9;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}@media only screen and (min-width:768px) and (max-width:991px){.testimonial_wrapper .slick-arrow{left:-80px}}@media only screen and (min-width:576px) and (max-width:767px){.testimonial_wrapper .slick-arrow{left:-45px}}.testimonial_wrapper .slick-arrow i{width:50px;height:50px;line-height:46px;text-align:center;border:2px solid rgba(116,126,136,.58);font-size:26px;color:rgba(116,126,136,.58);border-radius:50%;cursor:pointer;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}@media only screen and (min-width:768px) and (max-width:991px){.testimonial_wrapper .slick-arrow i{width:40px;height:40px;line-height:36px;font-size:20px}}@media only screen and (min-width:576px) and (max-width:767px){.testimonial_wrapper .slick-arrow i{width:40px;height:40px;line-height:36px;font-size:20px}}.testimonial_wrapper .slick-arrow:hover i{color:#d59a57;border-color:#d59a57}.testimonial_wrapper .slick-arrow.next{right:-150px;left:auto}@media only screen and (min-width:768px) and (max-width:991px){.testimonial_wrapper .slick-arrow.next{right:-80px}}@media only screen and (min-width:576px) and (max-width:767px){.testimonial_wrapper .slick-arrow.next{right:-45px}}p.form-message.success,p.form-message.error{font-size:16px;color:#333;background:#ddd;padding:10px 15px;margin-top:15px;margin-left:15px}p.form-message.success.form-message.error,p.form-message.error.form-message.error{color:red}.contact_wrapper{padding:80px 110px;-webkit-box-shadow:0 3px 32px 0 rgba(177,177,177,.16);-moz-box-shadow:0 3px 32px 0 rgba(177,177,177,.16);box-shadow:0 3px 32px 0 rgba(177,177,177,.16);background-color:#fff}@media only screen and (min-width:768px) and (max-width:991px){.contact_wrapper{padding:30px 50px}}@media(max-width:767px){.contact_wrapper{padding:30px}}.single_form{margin-top:30px}.single_form textarea,.single_form input{padding:0 25px;border:2px solid #f1f1f1;border-radius:5px;height:55px;width:100%;color:#747e88;width:100%}.single_form textarea{padding-top:15px;resize:none;height:185px}.footer_area{background-color:#fcf4ec;position:relative;z-index:9;overflow:hidden}.footer_shape_1{position:absolute;bottom:-30px;left:0;z-index:-1}.footer_shape_1 img{width:130px;opacity:.31}@media(max-width:767px){.footer_widget .footer_logo a img{width:160px}}.footer_widget .footer_title{margin-top:30px}.footer_widget .footer_title .title{font-size:52px;color:#38424d}@media(max-width:767px){.footer_widget .footer_title .title{font-size:38px}}.footer_widget .footer_title .title span{color:#d59a57}.footer_widget .footer_menu{margin-top:30px}.footer_widget .footer_menu li{display:inline-block;margin:0 20px}.footer_widget .footer_menu li a{font-size:16px;color:#38424d;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}.footer_widget .footer_menu li a:hover{color:#d59a57}.footer_copyright{border-top:2px solid #d59a57;padding:40px 0}.back-to-top{font-size:20px;color:#fff;position:fixed;right:20px;bottom:20px;width:40px;height:40px;line-height:40px;border-radius:5px;background-color:#d59a57;text-align:center;z-index:99;-webkit-transition:all .3s ease-out 0s;-moz-transition:all .3s ease-out 0s;-ms-transition:all .3s ease-out 0s;-o-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s;display:none}.back-to-top:hover{color:#fff;background-color:#d59a57} -------------------------------------------------------------------------------- /public/assets/js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v4.3.1 (https://getbootstrap.com/) 3 | * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t=t||self).bootstrap={},t.jQuery,t.Popper)}(this,function(t,g,u){"use strict";function i(t,e){for(var n=0;nthis._items.length-1||t<0))if(this._isSliding)g(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=ndocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Ee},je="show",He="out",Re={HIDE:"hide"+De,HIDDEN:"hidden"+De,SHOW:"show"+De,SHOWN:"shown"+De,INSERTED:"inserted"+De,CLICK:"click"+De,FOCUSIN:"focusin"+De,FOCUSOUT:"focusout"+De,MOUSEENTER:"mouseenter"+De,MOUSELEAVE:"mouseleave"+De},xe="fade",Fe="show",Ue=".tooltip-inner",We=".arrow",qe="hover",Me="focus",Ke="click",Qe="manual",Be=function(){function i(t,e){if("undefined"==typeof u)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=g(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(g(this.getTipElement()).hasClass(Fe))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),g.removeData(this.element,this.constructor.DATA_KEY),g(this.element).off(this.constructor.EVENT_KEY),g(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&g(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===g(this.element).css("display"))throw new Error("Please use show on visible elements");var t=g.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){g(this.element).trigger(t);var n=_.findShadowRoot(this.element),i=g.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=_.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&g(o).addClass(xe);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();g(o).data(this.constructor.DATA_KEY,this),g.contains(this.element.ownerDocument.documentElement,this.tip)||g(o).appendTo(l),g(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new u(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:We},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),g(o).addClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().on("mouseover",null,g.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,g(e.element).trigger(e.constructor.Event.SHOWN),t===He&&e._leave(null,e)};if(g(this.tip).hasClass(xe)){var h=_.getTransitionDurationFromElement(this.tip);g(this.tip).one(_.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=g.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==je&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),g(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(g(this.element).trigger(i),!i.isDefaultPrevented()){if(g(n).removeClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),this._activeTrigger[Ke]=!1,this._activeTrigger[Me]=!1,this._activeTrigger[qe]=!1,g(this.tip).hasClass(xe)){var r=_.getTransitionDurationFromElement(n);g(n).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Ae+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(g(t.querySelectorAll(Ue)),this.getTitle()),g(t).removeClass(xe+" "+Fe)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Se(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?g(e).parent().is(t)||t.empty().append(e):t.text(g(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:_.isElement(this.config.container)?g(this.config.container):g(document).find(this.config.container)},t._getAttachment=function(t){return Pe[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)g(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Qe){var e=t===qe?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===qe?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;g(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),g(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Me:qe]=!0),g(e.getTipElement()).hasClass(Fe)||e._hoverState===je?e._hoverState=je:(clearTimeout(e._timeout),e._hoverState=je,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===je&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Me:qe]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=He,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===He&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=g(this.element).data();return Object.keys(e).forEach(function(t){-1!==Oe.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),_.typeCheckConfig(be,t,this.constructor.DefaultType),t.sanitize&&(t.template=Se(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ne);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(g(t).removeClass(xe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ie),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ie,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Le}},{key:"NAME",get:function(){return be}},{key:"DATA_KEY",get:function(){return Ie}},{key:"Event",get:function(){return Re}},{key:"EVENT_KEY",get:function(){return De}},{key:"DefaultType",get:function(){return ke}}]),i}();g.fn[be]=Be._jQueryInterface,g.fn[be].Constructor=Be,g.fn[be].noConflict=function(){return g.fn[be]=we,Be._jQueryInterface};var Ve="popover",Ye="bs.popover",ze="."+Ye,Xe=g.fn[Ve],$e="bs-popover",Ge=new RegExp("(^|\\s)"+$e+"\\S+","g"),Je=l({},Be.Default,{placement:"right",trigger:"click",content:"",template:''}),Ze=l({},Be.DefaultType,{content:"(string|element|function)"}),tn="fade",en="show",nn=".popover-header",on=".popover-body",rn={HIDE:"hide"+ze,HIDDEN:"hidden"+ze,SHOW:"show"+ze,SHOWN:"shown"+ze,INSERTED:"inserted"+ze,CLICK:"click"+ze,FOCUSIN:"focusin"+ze,FOCUSOUT:"focusout"+ze,MOUSEENTER:"mouseenter"+ze,MOUSELEAVE:"mouseleave"+ze},sn=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){g(this.getTipElement()).addClass($e+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},o.setContent=function(){var t=g(this.getTipElement());this.setElementContent(t.find(nn),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(on),e),t.removeClass(tn+" "+en)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ge);null!==e&&0=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t