{"version":3,"sources":["constants/stripe.js","constants/server.js","constants/style.js","utils/Utils.js","utils/Analytics.js","components/CheckoutButton.js","constants/screensize.js","components/TermsAndConditions.js","constants/terms.js","components/Calendar/calendarPhrases.js","components/Calendar/calendarConstants.js","components/Calendar/calendarInclusive.js","components/Calendar/SingleDatePickerWrapper.jsx","components/DateContainer.js","components/Button.js","constants/errorcodes.js","components/WelcomeHeader.js","components/InputBox.js","components/LargeTextBox.js","components/AddressContainer.js","App.js","serviceWorker.js","index.js"],"names":["STRIPE_PUBLISHABLE","PAYMENT_SERVER_URL","Style","borderRadius","borderColor","primaryGreen","primaryGreenHighlight","darkGreen","transparentBlack","Utils","amount","toFixed","replace","GoogleAnalyticsWrapper","ReactGA","initialize","plugin","require","event","pagename","pageToLog","pageview","orderId","amountPaid","execute","name","price","id","revenue","Analytics","isSetupDate","dateAsString","category","action","label","didSucceed","isDeposit","nonInteraction","reason","Container","styled","div","ButtonWrapper","Italic","StripeButton","button","StripeSpan","span","ErrorMessageLabel","CheckoutButton","renderCheckoutButton","description","props","deposit","token","submitPaymentDeposit","currency","zipCode","billingAddress","locale","image","stripeKey","className","onClick","fullAmount","setupDate","clone","subtract","format","submitPaymentFullAmount","renderErrorMessage","invalidReason","submitPayment","console","log","params","stripeToken","stripeEmail","email","stripeBillingName","card","stripeBillingAddressStreet","address_line1","stripeBillingAddressCity","address_city","isReorder","options","submittingStatusChanged","axios","post","then","successPayment","catch","errorPayment","tokenId","window","location","href","error","alert","this","enabled","Component","ScreenSize","TermsContainer","CheckboxContainer","Input","input","Label","TermsAndConditions","e","inputRef","current","checked","onCheckChanged","stopPropagation","React","createRef","source","accepted","ref","type","onChange","target","defaultProps","focusStartDate","jumpToPrevMonth","jumpToNextMonth","pageUpPageDown","homeEnd","selectFocusedDate","moveFocusByOneDay","moveFocusByOneWeek","returnFocusToInput","keyboardForwardNavigationInstructions","keyboardBackwardNavigationInstructions","chooseAvailableStartDate","date","chooseAvailableEndDate","chooseAvailableDate","dateIsUnavailable","dateIsSelected","dateIsSelectedAsStartDate","dateIsSelectedAsEndDate","calendarLabel","roleDescription","closeDatePicker","clearDate","clearDates","keyboardShortcuts","showKeyboardShortcutsPanel","hideKeyboardShortcutsPanel","openThisPanel","enterKey","leftArrowRightArrow","upArrowDownArrow","escape","questionMark","moveFocusByOneMonth","moveFocustoStartAndEndOfWeek","SingleDatePickerPhrases","Set","isInclusivelyAfterDay","a","b","moment","isMoment","aYear","year","aMonth","month","bYear","bMonth","isSameYear","isBeforeDay","placeholder","disabled","required","screenReaderInputMessage","showClearDate","showDefaultInputIcon","customInputIcon","block","small","regular","verticalSpacing","undefined","keepFocusOnInput","renderMonthText","orientation","anchorDirection","horizontalMargin","withPortal","withFullScreenPortal","initialVisibleMonth","numberOfMonths","keepOpenOnDateSelect","reopenPickerOnClearDate","isRTL","navPrev","navNext","onPrevMonthClick","onNextMonthClick","onClose","renderCalendarDay","renderDayContents","enableOutsideDays","isDayBlocked","isOutsideRange","day","add","isDayHighlighted","displayFormat","localeData","longDateFormat","monthFormat","phrases","SingleDatePickerWrapper","focused","onFocusChange","CalendarContainer","CalendarTitle","DateContainer","setupDateChanged","onSetupDateChanged","teardownDateChanged","onTeardownDateChanged","earliestDate","max","state","earliestPossibleSetupDate","earliestPossibleTeardownDate","lastPossibleSetupDate","lastPossibleTeardownDate","blockedDays","includes","onDateChange","isInclusivelyBeforeDay","CalendarPhrases","teardownDate","ButtonContainer","ButtonSpan","Button","children","FormCodes","TextContainer","HeaderLabel","h1","Logo","img","WelcomeHeader","src","TextBox","InputBox","focus","TextArea","textarea","LargeTextBox","title","value","Header","h2","Subtitle","h3","SuggestionContainer","Suggestion","active","AddressContainer","loading","shouldFetchSuggestions","length","getInputProps","suggestions","getSuggestionItemProps","map","suggestion","OrderPageContainer","CheckoutContainer","fullscreen","MarginAuto","padding","LoadingOverlay","BarLoadingContainer","large","TotalCost","LookingForNameContainer","ErrorLabel","red","App","searchForLastYearOrder","trimmedName","firstName","trim","lastName","nameToFind","toLowerCase","selectedName","names","filter","object","shift","setState","showingError","lookingForName","keyDownFirstName","keyCode","lastNameRef","keyDownLastName","handleSetupAddressChange","setupAddress","onCommentsChanged","newComments","comments","resolveIssueFor","code","termsAccepted","changeToSectionAtIndex","isFormValid","valid","submitting","totalPrice","formValidityCheck","issueResolver","onKeyDown","loadingOverlay","css","margin","sizeUnit","height","width","color","status","Boolean","hostname","match","library","faHome","faTree","faShoppingCart","faCalendar","faSnowman","faAward","faLightbulb","faDharmachakra","faChevronUp","faCheck","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.6693f4d0.chunk.js","sourcesContent":["const STRIPE_PUBLISHABLE = process.env.NODE_ENV === 'production'\n\t? 'pk_live_F5dyrZbjSBugg5RXw7musGWm'\n\t: 'pk_test_umIDmVXhWC2TcG2MEgsgga0x';\n\nexport default STRIPE_PUBLISHABLE;\n","const PAYMENT_SERVER_URL = process.env.NODE_ENV === 'production'\n\t? 'https://fetusqgeq9.execute-api.us-east-2.amazonaws.com/default/SeasonalSetterCharge'\n\t: 'http://localhost:5000';\n\nexport default PAYMENT_SERVER_URL;","\nconst Style = {\n\tborderRadius: 4,\n\tborderColor: \"#66cc33\",\n\tprimaryGreen: \"#A9ED53\",\n\tprimaryGreenHighlight: \"#5e9f0c\",\n\tdarkGreen: 'rgba(14,117,24,0.988)',\n\ttransparentBlack: \"rgba(0,0,0,0.75)\",\n};\n\nexport default Style;\n","export const Utils = {\n\tformatAsCurrency: (amount) => {\n\t\treturn \"$\" + amount.toFixed(0).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\n\t}\n};\n","import ReactGA from 'react-ga';\nconst isAnalyticsAllowed = process.env.NODE_ENV === 'production';\n\nconst GoogleAnalyticsWrapper = {\n\tinit: () => {\n\t\tReactGA.initialize('UA-150294374-2');\n\t\tReactGA.plugin.require('ec');\n\t},\n\n\t// ARGS:\n\t// event: object {\n\t// category: string\n\t// \taction: string\n\t// label: string (optional)\n\t// value: int (optional)\n\t// nonInteraction: bool (optional)\n\t// }\n\tlogEvent: (event) => {\n\t\tif (!isAnalyticsAllowed) {\n\t\t\tconsole.log(\"Log event:\");\n\t\t\tconsole.log(event);\n\t\t\treturn;\n\t\t}\n\n\t\tReactGA.event(event);\n\t},\n\n\t// ARGS:\n\t// pagename: string\n\tlogPageView: (pagename) => {\n\t\tconst pageToLog = pagename || \"/\";\n\n\t\tif (!isAnalyticsAllowed) {\n\t\t\tconsole.log(\"Log pageview:\");\n\t\t\tconsole.log(pageToLog);\n\t\t\treturn;\n\t\t}\n\n\t\tReactGA.pageview(pageToLog);\n\t},\n\n\tlogEcommercePurchase: (orderId, amountPaid) => {\n\t\tif (!isAnalyticsAllowed) {\n\t\t\tconsole.log(\"Log ecommerce:\");\n\t\t\tconsole.log(orderId, amountPaid);\n\t\t\treturn;\n\t\t}\n\n\t\tReactGA.plugin.execute('ec', 'addProduct', {\n\t\t\tname: 'Re-Order Holiday Glow Package 2019',\n\t\t\tprice: amountPaid\n\t\t});\n\n\t\tReactGA.plugin.execute('ec', 'setAction', 'purchase', {\n\t\t\tid: orderId,\n\t\t\trevenue: amountPaid\n\t\t});\n\t},\n};\n\nexport const Analytics = {\n\tinit: () => {\n\t\tif (isAnalyticsAllowed) {\n\t\t\tGoogleAnalyticsWrapper.init();\n\t\t}\n\t},\n\n\tlogCurrentURL: () => {\n\t\tGoogleAnalyticsWrapper.logPageView(window.location.pathname + window.location.search);\n\t},\n\n\t// ARGS:\n\t// pagename: string\n\tlogPageView: (pagename) => {\n\t\tGoogleAnalyticsWrapper.logPageView(pagename);\n\t},\n\n\t// ARGS:\n\t// isSetupDate: bool\n\t// dateAsString: string\n\tlogDateSelected: (isSetupDate, dateAsString) => {\n\t\tGoogleAnalyticsWrapper.logEvent({\n\t\t\tcategory: \"Order Building\",\n\t\t\taction: \"Date Selected\",\n\t\t\tlabel: (isSetupDate ? \"Setup: \" : \"Teardown: \") + dateAsString\n\t\t});\n\t},\n\n\t// ARGS:\n\t// name: string\n\t// didSucceed: bool\n\tlogSearch: (name, didSucceed) => {\n\t\tGoogleAnalyticsWrapper.logEvent({\n\t\t\tcategory: \"Order Building\",\n\t\t\taction: \"Search Past Order \" + (didSucceed ? \"Succeeded\" : \"Failed\"),\n\t\t\tlabel: name\n\t\t});\n\t},\n\n\t// ARGS:\n\t// isDeposit: bool\n\tlogCheckoutPressed: (isDeposit) => {\n\t\tGoogleAnalyticsWrapper.logEvent({\n\t\t\tcategory: \"Checkout\",\n\t\t\taction: \"Pay Button Clicked\",\n\t\t\tlabel: isDeposit ? \"Deposit\" : \"Full Amount\"\n\t\t});\n\t},\n\n\tlogCheckoutSubmitted: () => {\n\t\tGoogleAnalyticsWrapper.logEvent({\n\t\t\tcategory: \"Checkout\",\n\t\t\taction: \"Order Submitted\",\n\t\t\tnonInteraction: true\n\t\t});\n\t},\n\n\t// ARGS:\n\t// orderId: string -- stripe customer id\n\t// isDeposit: bool\n\t// amountPaid: int -- in dollars\n\tlogCheckoutSuccess: (orderId, isDeposit, amountPaid) => {\n\t\tGoogleAnalyticsWrapper.logEcommercePurchase(orderId, amountPaid);\n\t\tGoogleAnalyticsWrapper.logEvent({\n\t\t\tcategory: \"Checkout\",\n\t\t\taction: \"Order Success\",\n\t\t\tlabel: orderId + \": \" + (isDeposit ? \"Deposit\" : \"Full Amount\") + \", $\" + amountPaid,\n\t\t\tnonInteraction: true\n\t\t});\n\t},\n\n\t// ARGS:\n\t// reason: string\n\tlogCheckoutFailed: (reason) => {\n\t\tGoogleAnalyticsWrapper.logEvent({\n\t\t\tcategory: \"Checkout\",\n\t\t\taction: \"Order Failed\",\n\t\t\tlabel: reason,\n\t\t\tnonInteraction: true\n\t\t});\n\t}\n};\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\nimport axios from 'axios';\nimport './CheckoutButtonStyle.css';\nimport StripeCheckout from 'react-stripe-checkout';\nimport STRIPE_PUBLISHABLE from '../constants/stripe';\nimport PAYMENT_SERVER_URL from '../constants/server';\nimport Style from \"../constants/style\";\nimport PropTypes from 'prop-types';\nimport momentPropTypes from 'react-moment-proptypes';\nimport {Utils} from \"../utils/Utils\";\nimport {Analytics} from \"../utils/Analytics\";\n\nconst Container = styled.div`\n\twidth: 90%;\n\tmargin: auto;\n`;\n\nconst ButtonWrapper = styled.div`\n\twidth: 100%;\n\tmax-width: 400px;\n\tmargin: auto;\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: space-evenly;\n\theight: 250px;\n\ttext-align: center;\n`;\n\nconst Italic = styled.div`\n\tfont-style: italic;\n\tpadding-top: 5px;\n`;\n\nconst StripeButton = styled.button`\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tborder: 0;\n\tpadding: 1px;\n\ttext-decoration: none;\n\tbox-shadow: rgba(0, 0, 0, 0.2) 0 1px 0;\n\tcursor: pointer;\n\tvisibility: visible;\n\tuser-select: none;\n\twidth: 100%;\n\tmax-width: 400px;\n\tmargin: auto;\n\n\tborder-radius: 25px;\n\tbackground: ${Style.primaryGreen} !important;\n`;\n\nconst StripeSpan = styled.span`\n\tfont-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n\tposition: relative;\n\tpadding: 0 12px;\n\tdisplay: block;\n\theight: 30px;\n\tfont-weight: bold;\n\tbox-shadow: rgba(255, 255, 255, 0.25) 0 1px 0 inset;\n\tmin-height: 50px !important;\n\tfont-size: 20px !important;\n\tline-height: 50px !important;\n\tborder-radius: 25px;\n\tbackground: ${Style.primaryGreen} !important;\n\tcolor: ${Style.darkGreen} !important;\n\ttext-shadow: none !important;\n`;\n\nconst ErrorMessageLabel = styled.div`\n\tfont-size: 30px;\n\tcolor: darkred;\n\ttext-align: center;\n`;\n\nclass CheckoutButton extends Component {\n render() {\n return (\n \n\t {this.props.enabled ? this.renderCheckoutButton() : this.renderErrorMessage()}\n \n );\n }\n\n renderCheckoutButton = () => {\n \treturn (\n \t\t\n\t\t\t\t\t\n\t\t\t\t\t\t Analytics.logCheckoutPressed(true)}>\n\t\t\t\t\t\t\tPay Deposit:   {Utils.formatAsCurrency(this.props.deposit)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tRemaining {Utils.formatAsCurrency(this.props.fullAmount - this.props.deposit)} will be charged on {this.props.setupDate.clone().subtract(5, 'd').format(\"MMM Do, YYYY\")}.\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t- OR -\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t Analytics.logCheckoutPressed(false)}>\n\t\t\t\t\t\t\tPay In Full:   {Utils.formatAsCurrency(this.props.fullAmount)}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t );\n };\n\n renderErrorMessage = () => {\n \treturn (\n\t\t\t\n\t\t\t\t{this.props.invalidReason}\n\t\t\t\n\t );\n };\n\n submitPaymentDeposit = (token) => {\n \tthis.submitPayment(token, true);\n\t\t};\n\n submitPaymentFullAmount = (token) => {\n\t\t\tthis.submitPayment(token, false);\n\t\t};\n\n submitPayment = (token, isDeposit) => {\n \tconsole.log(\"TOKEN\");\n \tconsole.log(token);\n const params = {\n\t stripeToken: token.id,\n\t stripeEmail: token.email,\n\t stripeBillingName: token.card.name,\n\t\t\t\t\tstripeBillingAddressStreet: token.card.address_line1,\n\t stripeBillingAddressCity: token.card.address_city,\n\t\t\t\t\tisDeposit: isDeposit,\n\t\t\t\t\tisReorder: true,\n\t\t\t\t\toptions: this.props.options\n };\n\n\t\t\tthis.props.submittingStatusChanged(true);\n\n\t\t\tAnalytics.logCheckoutSubmitted();\n\n\t axios.post(PAYMENT_SERVER_URL, params)\n\t\t\t\t.then(this.successPayment)\n\t\t\t\t.catch(this.errorPayment);\n };\n\n successPayment = () => {\n\t\t\tAnalytics.logCheckoutSuccess(this.tokenId, this.isDeposit, this.amountPaid);\n\t\t\tthis.props.submittingStatusChanged(false);\n\t window.location.href = \"https://seasonalsetter.com#thankyou\";\n };\n\n errorPayment = (error) => {\n \tconsole.log(\"Error with payment:\");\n \tconsole.log(error);\n\t\t\tAnalytics.logCheckoutFailed(error);\n\t\t\tthis.props.submittingStatusChanged(false);\n \talert(\"Oops! Your payment didn't go through. Please contact us directly at: peter@seasonalsetter.com\");\n };\n}\n\nCheckoutButton.propTypes = {\n\tsubmittingStatusChanged: PropTypes.func.isRequired,\n\toptions: PropTypes.object.isRequired,\n\tsetupDate: momentPropTypes.momentObj,\n\tfullAmount: PropTypes.number.isRequired,\n\tdeposit: PropTypes.number.isRequired,\n\tinvalidReason: PropTypes.string.isRequired\n};\n\nexport default CheckoutButton;\n","export const ScreenSize = {\n\tphone: 550,\n\ttablet: 800\n};\n","import React, {Component} from 'react';\nimport styled from 'styled-components';\nimport PropTypes from 'prop-types';\nimport { Terms } from '../constants/terms';\nimport ReactMarkdown from \"react-markdown\";\nimport {ScreenSize} from \"../constants/screensize\";\n\nconst Container = styled.div`\n\twidth: 90%;\n\tmax-width: 800px;\n\tmargin: 50px auto;\n`;\n\nconst TermsContainer = styled.div`\n\theight: 320px;\n\toverflow: scroll;\n\tborder: 1px solid grey;\n\tbackground: white;\n\tpadding: 20px;\n\ttext-align: justify;\n\twhite-space: pre-line;\n`;\n\nconst CheckboxContainer = styled.div`\n\tdisplay: flex;\n\tpadding: 40px 0;\n\tfont-size: larger;\n\talign-items: center;\n\t\n\t:hover {\n\t\tcursor: pointer;\n\t}\n`;\n\nconst Input = styled.input`\n\twidth: 30px;\n\ttransform: scale(2);\n\t\n\t@media (max-width: ${ScreenSize.tablet}px) {\n\t\twidth: 60px;\n\t}\n`;\n\nconst Label = styled.div`\n\tpadding-left: 20px;\n`;\n\nclass TermsAndConditions extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.inputRef = React.createRef();\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t this.props.onCheckChanged(e.target.checked)}/>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\n\tonClick = (e) => {\n\t\tconsole.log(!this.inputRef.current.checked);\n\t\tthis.props.onCheckChanged(!this.inputRef.current.checked);\n\t\te.stopPropagation();\n\t};\n}\n\nTermsAndConditions.propTypes = {\n\taccepted: PropTypes.bool.isRequired,\n\tonCheckChanged: PropTypes.func.isRequired\n};\n\nTermsAndConditions.defaultProps = {\n\taccepted: false\n};\n\nexport default TermsAndConditions;\n","export const Terms = \"# Terms and Conditions \\n## 1. SCOPE OF WORK.\\n\" +\n\"Scope will be determined by package and options purchased. Client will be referred to as the person purchasing the package. Client’s property (or Recipient's property) shall be decorated using the scope of each package as per purchase. By agreeing to these terms and conditions, the client confirms acceptance of scope of work and all articles within.\\n\" +\n\"## 2. TERM.\\n\" +\n\"The term of this Agreement is for the winter holiday season of 2023 from the date of its execution by Seasonal Setter or until the completion of the work described in any Statement of Work, whichever is later. Specific set-up date will be determined by online calendar at time of purchase.\\n\" +\n\"## 3. PAYMENT.\\n\" +\n\"Client will have the option to pay either 20% of the total cost, or total cost of purchase. Seasonal Setter will charge the remaining balance using the same payment method within 5 calendar days after setup date. It is understood that payment to Seasonal Setter for services rendered shall be made in full as agreed, without any deductions of any kind whatsoever, in conformity with Seasonal Setter’s status as an independent contractor. Payment method will be through debit/credit transaction, unless otherwise specified prior to the time of purchase.\\n\" +\n\"## 4. ACCEPTANCE.\\n\" +\n\"The Decorations, as defined in each Statement of Work, shall be deemed accepted by Client upon completion of the following acceptance test: (a) immediately upon receipt of said Decorations, Client shall promptly, but in any event not more than 5 business days, perform testing of the Decorations to confirm that the Decorations perform in accordance with the documentation or other standards applicable thereto as set forth in the applicable Statement of Work; (b) notification of nonconformities in regards to decorations setup or product functionality to be corrected must before December 15th, 2023. Any such written statement of nonconformities shall provide sufficient detail to enable Seasonal Setter to remedy the failure to conform to the completion criteria contained in the written statement. Unless otherwise agreed to in writing by the parties, Seasonal Setter will redeliver corrected Decorations to Client within a reasonable amount of time after receipt of such statement of nonconformities or by December 15th, 2022. If Client fails to provide a written acceptance or a written statement of nonconformities about corrected decorations within the 5 days, the Deliverables shall be deemed accepted by Client.\\n\" +\n\"## 5. LIMITATION OF LIABILITY.\\n\" +\n\"Seasonal Setters LLC will be liable for any damages caused during the set-up or take-down of equipment (decorations) to the Client’s person or property. Seasonal Setter is also responsible to ensure all decorations that are set-up initially work and are securely fastened properly. Seasonal Setter will be responsible to make sure that any client concerns (such as burnt-out light bulbs) are addressed before December 20th, 2023 (weather permitting). Seasonal Setters LLC is NOT liable for any damages caused by electrical work, including but not limited to; fires, broken light bulb glass, power surges, etc.. Client is responsible for ensuring the electrical system on property is able to handle the electrical load, and has the sole responsibility to make sure it is able to provide proper power. Similarly, Seasonal Setter is not liable for providing any electricity to any equipment set up or provided. Client is fully responsible for any equipment that Seasonal Setter sets up during the duration of rental and/or service contract. Client will be liable for any lost or stolen equipment owned by Seasonal Setter during the duration of rental up until the date of actual teardown of decorations by Seasonal Setter.\\n\" +\n\"## 6. PROPERTY & EQUIPMENT POLICIES\\n\" +\n\"Client may not transfer, sell, or otherwise dispose of any Seasonal Setter equipment without the prior written consent of Seasonal Setter. Client will not alter, modify, add or subtract any form of adhesive, wire, hooks, clips, or any other items to the decorations or lights set up by Seasonal Setter. Client is responsible to notify Seasonal Setter if decorations are unsatisfactory or if they have a concern. This rental gives no title or ownership rights in related property to Client.\\n\" +\n\"## 7. ENTIRE AGREEMENT.\\n\" +\n\"This Agreement sets forth the entire agreement between Client and Seasonal Setter as to its subject matter. None of the terms of this Business Contract shall be amended except in writing signed by both parties unless otherwise communicated and agreed upon in writing.\\n\" +\n\"## 8. FORCE MAJEURE.\\n\" +\n\"Neither Client nor Seasonal Setter shall be liable for failure of, or delay in performing obligations set forth in this Agreement, and neither shall be deemed in breach of its obligations, if such failure or delay is due to natural disasters or any causes reasonably beyond the control of Client or Provider. This Agreement shall be construed in accordance with the laws of the State of OHIO. IN WITNESS WHEREOF the parties have caused this Business Contract to be executed and delivered by their duly authorized representatives.\\n\" +\n\"## 9. CANCELLATION POLICY.\\n\" +\n\"Seasonal Setter reserves the right to cancel any scope of work for a Client. If Seasonal Setter cancels any scope of work, the Client will be reimbursed for the work that was not done. Full cancellations initiated by Seasonal Setter will get a full refund. Reasons include but are not limited to: Safety risk, Order is too far outside of the Columbus Region, Irreconcilable differences, etc. Exclusions to reimbursement may apply if there are damages done to Seasonal Setter property. Client may also initiate a cancellation but could be subject to a restocking, order fee, or other penalties from Seasonal Setter within a reasonable manner.\\n\" +\n\"## 10. USE OF PHOTOGRAPHY.\\n\" +\n\"Client agrees to allow Seasonal Setter to take and use photos of the client's home in regard to showing the display and work that Seasonal Setter has displayed. Any exception of this must be documented in writing by the client and received by Seasonal Setter prior to the installation of the lights.\\n\" +\n\"## 11. LIMITS OF ORDERING.\\n\" +\n\"If the Client is purchasing a package as a gift to another party, referred to as Recipient, Seasonal Setter must be fully informed of this action and must have written permission from Recipient and the Homeowner of the Address being decorated. This must be disclosed at the time of ordering.\";\n","const calendarLabel = 'Calendar';\nconst roleDescription = 'datepicker';\nconst closeDatePicker = 'Close';\nconst focusStartDate = 'Interact with the calendar and add the check-in date for your trip.';\nconst clearDate = 'Clear Date';\nconst clearDates = 'Clear Dates';\nconst jumpToPrevMonth = 'Move backward to switch to the previous month.';\nconst jumpToNextMonth = 'Move forward to switch to the next month.';\nconst keyboardShortcuts = 'Keyboard Shortcuts';\nconst showKeyboardShortcutsPanel = 'Open the keyboard shortcuts panel.';\nconst hideKeyboardShortcutsPanel = 'Close the shortcuts panel.';\nconst openThisPanel = 'Open this panel.';\nconst enterKey = 'Enter key';\nconst leftArrowRightArrow = 'Right and left arrow keys';\nconst upArrowDownArrow = 'up and down arrow keys';\nconst pageUpPageDown = 'page up and page down keys';\nconst homeEnd = 'Home and end keys';\nconst escape = 'Escape key';\nconst questionMark = 'Question mark';\nconst selectFocusedDate = 'Select the date in focus.';\nconst moveFocusByOneDay = 'Move backward (left) and forward (right) by one day.';\nconst moveFocusByOneWeek = 'Move backward (up) and forward (down) by one week.';\nconst moveFocusByOneMonth = 'Switch months.';\nconst moveFocustoStartAndEndOfWeek = 'Go to the first or last day of a week.';\nconst returnFocusToInput = 'Return to the date input field.';\nconst keyboardForwardNavigationInstructions = 'Navigate forward to interact with the calendar and select a date. Press the question mark key to get the keyboard shortcuts for changing dates.';\nconst keyboardBackwardNavigationInstructions = 'Navigate backward to interact with the calendar and select a date. Press the question mark key to get the keyboard shortcuts for changing dates.';\n\nconst chooseAvailableStartDate = ({ date }) => `Choose ${date} as your check-in date. It’s available.`;\nconst chooseAvailableEndDate = ({ date }) => `Choose ${date} as your check-out date. It’s available.`;\nconst chooseAvailableDate = ({ date }) => date;\nconst dateIsUnavailable = ({ date }) => `Not available. ${date}`;\nconst dateIsSelected = ({ date }) => `Selected. ${date}`;\nconst dateIsSelectedAsStartDate = ({ date }) => `Selected as start date. ${date}`;\nconst dateIsSelectedAsEndDate = ({ date }) => `Selected as end date. ${date}`;\n\nexport default {\n\tcalendarLabel,\n\troleDescription,\n\tcloseDatePicker,\n\tfocusStartDate,\n\tclearDate,\n\tclearDates,\n\tjumpToPrevMonth,\n\tjumpToNextMonth,\n\tkeyboardShortcuts,\n\tshowKeyboardShortcutsPanel,\n\thideKeyboardShortcutsPanel,\n\topenThisPanel,\n\tenterKey,\n\tleftArrowRightArrow,\n\tupArrowDownArrow,\n\tpageUpPageDown,\n\thomeEnd,\n\tescape,\n\tquestionMark,\n\tselectFocusedDate,\n\tmoveFocusByOneDay,\n\tmoveFocusByOneWeek,\n\tmoveFocusByOneMonth,\n\tmoveFocustoStartAndEndOfWeek,\n\treturnFocusToInput,\n\tkeyboardForwardNavigationInstructions,\n\tkeyboardBackwardNavigationInstructions,\n\n\tchooseAvailableStartDate,\n\tchooseAvailableEndDate,\n\tdateIsUnavailable,\n\tdateIsSelected,\n\tdateIsSelectedAsStartDate,\n\tdateIsSelectedAsEndDate,\n};\n\nexport const DateRangePickerPhrases = {\n\tcalendarLabel,\n\troleDescription,\n\tcloseDatePicker,\n\tclearDates,\n\tfocusStartDate,\n\tjumpToPrevMonth,\n\tjumpToNextMonth,\n\tkeyboardShortcuts,\n\tshowKeyboardShortcutsPanel,\n\thideKeyboardShortcutsPanel,\n\topenThisPanel,\n\tenterKey,\n\tleftArrowRightArrow,\n\tupArrowDownArrow,\n\tpageUpPageDown,\n\thomeEnd,\n\tescape,\n\tquestionMark,\n\tselectFocusedDate,\n\tmoveFocusByOneDay,\n\tmoveFocusByOneWeek,\n\tmoveFocusByOneMonth,\n\tmoveFocustoStartAndEndOfWeek,\n\treturnFocusToInput,\n\tkeyboardForwardNavigationInstructions,\n\tkeyboardBackwardNavigationInstructions,\n\tchooseAvailableStartDate,\n\tchooseAvailableEndDate,\n\tdateIsUnavailable,\n\tdateIsSelected,\n\tdateIsSelectedAsStartDate,\n\tdateIsSelectedAsEndDate,\n};\n\nexport const DateRangePickerInputPhrases = {\n\tfocusStartDate,\n\tclearDates,\n\tkeyboardForwardNavigationInstructions,\n\tkeyboardBackwardNavigationInstructions,\n};\n\nexport const SingleDatePickerPhrases = {\n\tcalendarLabel,\n\troleDescription,\n\tcloseDatePicker,\n\tclearDate,\n\tjumpToPrevMonth,\n\tjumpToNextMonth,\n\tkeyboardShortcuts,\n\tshowKeyboardShortcutsPanel,\n\thideKeyboardShortcutsPanel,\n\topenThisPanel,\n\tenterKey,\n\tleftArrowRightArrow,\n\tupArrowDownArrow,\n\tpageUpPageDown,\n\thomeEnd,\n\tescape,\n\tquestionMark,\n\tselectFocusedDate,\n\tmoveFocusByOneDay,\n\tmoveFocusByOneWeek,\n\tmoveFocusByOneMonth,\n\tmoveFocustoStartAndEndOfWeek,\n\treturnFocusToInput,\n\tkeyboardForwardNavigationInstructions,\n\tkeyboardBackwardNavigationInstructions,\n\tchooseAvailableDate,\n\tdateIsUnavailable,\n\tdateIsSelected,\n};\n\nexport const SingleDatePickerInputPhrases = {\n\tclearDate,\n\tkeyboardForwardNavigationInstructions,\n\tkeyboardBackwardNavigationInstructions,\n};\n\nexport const DayPickerPhrases = {\n\tcalendarLabel,\n\troleDescription,\n\tjumpToPrevMonth,\n\tjumpToNextMonth,\n\tkeyboardShortcuts,\n\tshowKeyboardShortcutsPanel,\n\thideKeyboardShortcutsPanel,\n\topenThisPanel,\n\tenterKey,\n\tleftArrowRightArrow,\n\tupArrowDownArrow,\n\tpageUpPageDown,\n\thomeEnd,\n\tescape,\n\tquestionMark,\n\tselectFocusedDate,\n\tmoveFocusByOneDay,\n\tmoveFocusByOneWeek,\n\tmoveFocusByOneMonth,\n\tmoveFocustoStartAndEndOfWeek,\n\treturnFocusToInput,\n\tchooseAvailableStartDate,\n\tchooseAvailableEndDate,\n\tchooseAvailableDate,\n\tdateIsUnavailable,\n\tdateIsSelected,\n\tdateIsSelectedAsStartDate,\n\tdateIsSelectedAsEndDate,\n};\n\nexport const DayPickerKeyboardShortcutsPhrases = {\n\tkeyboardShortcuts,\n\tshowKeyboardShortcutsPanel,\n\thideKeyboardShortcutsPanel,\n\topenThisPanel,\n\tenterKey,\n\tleftArrowRightArrow,\n\tupArrowDownArrow,\n\tpageUpPageDown,\n\thomeEnd,\n\tescape,\n\tquestionMark,\n\tselectFocusedDate,\n\tmoveFocusByOneDay,\n\tmoveFocusByOneWeek,\n\tmoveFocusByOneMonth,\n\tmoveFocustoStartAndEndOfWeek,\n\treturnFocusToInput,\n};\n\nexport const DayPickerNavigationPhrases = {\n\tjumpToPrevMonth,\n\tjumpToNextMonth,\n};\n\nexport const CalendarDayPhrases = {\n\tchooseAvailableDate,\n\tdateIsUnavailable,\n\tdateIsSelected,\n\tdateIsSelectedAsStartDate,\n\tdateIsSelectedAsEndDate,\n};","export const DISPLAY_FORMAT = 'L';\nexport const ISO_FORMAT = 'YYYY-MM-DD';\nexport const ISO_MONTH_FORMAT = 'YYYY-MM'; // TODO delete this line of dead code on next breaking change\n\nexport const START_DATE = 'startDate';\nexport const END_DATE = 'endDate';\n\nexport const HORIZONTAL_ORIENTATION = 'horizontal';\nexport const VERTICAL_ORIENTATION = 'vertical';\nexport const VERTICAL_SCROLLABLE = 'verticalScrollable';\n\nexport const ICON_BEFORE_POSITION = 'before';\nexport const ICON_AFTER_POSITION = 'after';\n\nexport const INFO_POSITION_TOP = 'top';\nexport const INFO_POSITION_BOTTOM = 'bottom';\nexport const INFO_POSITION_BEFORE = 'before';\nexport const INFO_POSITION_AFTER = 'after';\n\nexport const ANCHOR_LEFT = 'left';\nexport const ANCHOR_RIGHT = 'right';\n\nexport const OPEN_DOWN = 'down';\nexport const OPEN_UP = 'up';\n\nexport const DAY_SIZE = 39;\nexport const BLOCKED_MODIFIER = 'blocked';\nexport const WEEKDAYS = [0, 1, 2, 3, 4, 5, 6];\n\nexport const FANG_WIDTH_PX = 20;\nexport const FANG_HEIGHT_PX = 10;\nexport const DEFAULT_VERTICAL_SPACING = 22;\n\nexport const MODIFIER_KEY_NAMES = new Set(['Shift', 'Control', 'Alt', 'Meta']);","import moment from 'moment';\n\nfunction isBeforeDay(a, b) {\n\tif (!moment.isMoment(a) || !moment.isMoment(b)) return false;\n\n\tconst aYear = a.year();\n\tconst aMonth = a.month();\n\n\tconst bYear = b.year();\n\tconst bMonth = b.month();\n\n\tconst isSameYear = aYear === bYear;\n\tconst isSameMonth = aMonth === bMonth;\n\n\tif (isSameYear && isSameMonth) return a.date() < b.date();\n\tif (isSameYear) return aMonth < bMonth;\n\treturn aYear < bYear;\n}\n\nexport default function isInclusivelyAfterDay(a, b) {\n\tif (!moment.isMoment(a) || !moment.isMoment(b)) return false;\n\treturn !isBeforeDay(a, b);\n}\n","import React from 'react';\nimport moment from 'moment';\nimport omit from 'lodash/omit';\n\nimport { SingleDatePicker } from 'react-dates';\n\nimport { SingleDatePickerPhrases } from './calendarPhrases';\nimport { SingleDatePickerShape } from 'react-dates';\nimport { HORIZONTAL_ORIENTATION, ANCHOR_LEFT } from './calendarConstants';\nimport isInclusivelyAfterDay from './calendarInclusive';\n\nconst propTypes = {\n\t...omit(SingleDatePickerShape, [\n\t\t'date',\n\t\t'onDateChange',\n\t\t'focused',\n\t\t'onFocusChange',\n\t]),\n};\n\nconst defaultProps = {\n\t// input related props\n\tid: 'date',\n\tplaceholder: 'Date',\n\tdisabled: true,\n\trequired: false,\n\tscreenReaderInputMessage: '',\n\tshowClearDate: false,\n\tshowDefaultInputIcon: false,\n\tcustomInputIcon: null,\n\tblock: false,\n\tsmall: false,\n\tregular: false,\n\tverticalSpacing: undefined,\n\tkeepFocusOnInput: false,\n\n\t// calendar presentation and interaction related props\n\trenderMonthText: null,\n\torientation: HORIZONTAL_ORIENTATION,\n\tanchorDirection: ANCHOR_LEFT,\n\thorizontalMargin: 0,\n\twithPortal: false,\n\twithFullScreenPortal: false,\n\tinitialVisibleMonth: null,\n\tnumberOfMonths: 1,\n\tkeepOpenOnDateSelect: false,\n\treopenPickerOnClearDate: false,\n\thideKeyboardShortcutsPanel: true,\n\tisRTL: false,\n\n\t// navigation related props\n\tnavPrev: null,\n\tnavNext: null,\n\tonPrevMonthClick() {},\n\tonNextMonthClick() {},\n\tonClose() {},\n\n\t// day presentation and interaction related props\n\trenderCalendarDay: undefined,\n\trenderDayContents: null,\n\tenableOutsideDays: false,\n\tisDayBlocked: () => false,\n\tisOutsideRange: day => !isInclusivelyAfterDay(day, moment().add(7, 'd')),\n\tisDayHighlighted: () => {},\n\n\t// internationalization props\n\tdisplayFormat: () => moment.localeData().longDateFormat('LL'),\n\tmonthFormat: 'MMMM YYYY',\n\tphrases: SingleDatePickerPhrases,\n};\n\nclass SingleDatePickerWrapper extends React.Component {\n\trender() {\n\t\treturn (\n\t\t\t {}}\n\t\t\t/>\n\t\t);\n\t}\n}\n\nSingleDatePickerWrapper.propTypes = propTypes;\nSingleDatePickerWrapper.defaultProps = defaultProps;\n\nexport default SingleDatePickerWrapper;\n","import React, {Component} from 'react';\nimport styled from 'styled-components';\nimport PropTypes from 'prop-types';\nimport moment from \"moment\";\nimport SingleDatePickerWrapper from \"./Calendar/SingleDatePickerWrapper\";\nimport CalendarPhrases from \"./Calendar/calendarPhrases\";\nimport { isInclusivelyAfterDay, isInclusivelyBeforeDay } from 'react-dates';\nimport momentPropTypes from 'react-moment-proptypes';\nimport Style from \"../constants/style\";\nimport {Analytics} from \"../utils/Analytics\";\nimport {ScreenSize} from \"../constants/screensize\";\n\nconst Container = styled.div`\n\twidth: 90%;\n\tmax-width: 700px;\n\tdisplay: flex;\n\tjustify-content: space-around;\n\tmargin: auto;\n\tpadding-top: 50px;\n\tflex-direction: row;\n\n\t@media (max-width: ${ScreenSize.tablet}px) {\n\t\tflex-direction: column;\n\t}\n`;\n\nconst CalendarContainer = styled.div`\n\twidth: 318px;\n\theight: 480px;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tmargin: auto;\n`;\n\nconst CalendarTitle = styled.div`\n\tfont-size: 24px;\n\tpadding-bottom: 30px;\n\tcolor: ${Style.darkGreen};\n`;\n\nclass DateContainer extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tconst earliestDate = moment.max([moment().add(7, 'd'), moment('2023-01-02')]);\n\n\t\tthis.state = {\n\t\t\tearliestPossibleSetupDate: earliestDate,\n\t\t\tearliestPossibleTeardownDate: moment('2024-01-19'),\n\t\t\tlastPossibleSetupDate: moment('2024-01-01'),\n\t\t\tlastPossibleTeardownDate: moment('2024-01-31'),\n\t\t\tblockedDays: [\n\t\t\t\tmoment('2023-12-16').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2023-12-15').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2023-12-08').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2023-12-01').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2023-11-24').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2023-11-23').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2023-11-03').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2023-11-10').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2023-11-17').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2023-11-21').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2023-11-18').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2024-01-08').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2024-01-07').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2024-01-09').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2024-01-10').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2024-01-11').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2024-01-12').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2024-01-13').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2024-01-14').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2024-01-15').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2024-01-17').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2023-11-27').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2023-11-28').format('YYYY-MM-DD'),\n\t\t\t\tmoment('2023-11-29').format('YYYY-MM-DD'),\n\t\t\t]\n\t\t}\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tGuaranteed Setup Date:\n\t\t\t\t\t this.state.blockedDays.includes(day.format('YYYY-MM-DD'))}\n\t\t\t\t\t\tisDayHighlighted={function noRefCheck() {}}\n\t\t\t\t\t\tonNextMonthClick={function noRefCheck() {}}\n\t\t\t\t\t\tonPrevMonthClick={function noRefCheck() {}}\n\t\t\t\t\t\tonDateChange={this.setupDateChanged}\n\t\t\t\t\t\tisOutsideRange={day => !isInclusivelyAfterDay(day, this.state.earliestPossibleSetupDate) || !isInclusivelyBeforeDay(day, this.state.lastPossibleSetupDate)}\n\t\t\t\t\t\tphrases={CalendarPhrases}\n\t\t\t\t\t\tplaceholder=\"Start Date\"\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tGuaranteed Teardown Date:\n\t\t\t\t\t this.state.blockedDays.includes(day.format('YYYY-MM-DD'))}\n\t\t\t\t\t\tisDayHighlighted={function noRefCheck() {}}\n\t\t\t\t\t\tonNextMonthClick={function noRefCheck() {}}\n\t\t\t\t\t\tonPrevMonthClick={function noRefCheck() {}}\n\t\t\t\t\t\tonDateChange={this.teardownDateChanged}\n\t\t\t\t\t\tisOutsideRange={day => !isInclusivelyAfterDay(day, this.state.earliestPossibleTeardownDate) || !isInclusivelyBeforeDay(day, this.state.lastPossibleTeardownDate)}\n\t\t\t\t\t\tphrases={CalendarPhrases}\n\t\t\t\t\t\tplaceholder=\"Teardown Date\"\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\n\tsetupDateChanged = (date) => {\n\t\tconst dateAsString = date.format('YYYY-MM-DD');\n\t\tAnalytics.logDateSelected(true, dateAsString);\n\t\tthis.props.onSetupDateChanged(date);\n\t};\n\n\tteardownDateChanged = (date) => {\n\t\tconst dateAsString = date.format('YYYY-MM-DD');\n\t\tAnalytics.logDateSelected(false, dateAsString);\n\t\tthis.props.onTeardownDateChanged(date);\n\t};\n}\n\nDateContainer.propTypes = {\n\tsetupDate: momentPropTypes.momentObj,\n\tteardownDate: momentPropTypes.momentObj,\n\tonSetupDateChanged: PropTypes.func.isRequired,\n\tonTeardownDateChanged: PropTypes.func.isRequired\n};\n\nexport default DateContainer;\n","import React, {Component} from 'react';\nimport styled from 'styled-components';\nimport PropTypes from 'prop-types';\nimport Style from \"../constants/style\";\n\nconst ButtonContainer = styled.button`\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tborder: 0;\n\tpadding: 0;\n\ttext-decoration: none;\n\tbox-shadow: rgba(0, 0, 0, 0.2) 0 1px 0;\n\tcursor: pointer;\n\tvisibility: visible;\n\tuser-select: none;\n\toutline: none;\n\twidth: 100%;\n\tborder-radius: 25px;\n\tbackground: ${Style.primaryGreen};\n\t\n\t:disabled {\n\t\tbackground: lightgray;\n\t\tcolor: white;\n\t}\n\t\n\t:disabled:hover {\n\t\tcursor: not-allowed;\n\t}\n\t\n\t:not(:disabled):hover {\n\t\tbackground: #80cf1c !important;\n\t}\n\n\t:not(:disabled):active {\n background: ${Style.primaryGreenHighlight} !important;\n color: white !important;\n\t}\n`;\n\nconst ButtonSpan = styled.span`\n\tfont-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n\tposition: relative;\n\tdisplay: block;\n\theight: 30px;\n\tfont-weight: bold;\n\tbox-shadow: rgba(255, 255, 255, 0.25) 0 1px 0 inset;\n\tmin-height: 50px !important;\n\tfont-size: 20px !important;\n\tline-height: 50px !important;\n\tborder-radius: 25px;\n\t\n\tcolor: ${props => props.disabled ? 'white' : Style.darkGreen};\n\ttext-shadow: none !important;\n\n\t:not(:disabled):active {\n color: white !important;\n\t}\n`;\n\nclass Button extends Component {\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{this.props.children}\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\n\tonClick = () => {\n\t\tif (!this.props.disabled) {\n\t\t\tthis.props.onClick();\n\t\t}\n\t};\n}\n\nButton.propTypes = {\n\tdisabled: PropTypes.bool.isRequired,\n\tonClick: PropTypes.func.isRequired\n};\n\nButton.defaultProps = {\n\tdisabled: false,\n};\n\nexport default Button;\n","export const FormCodes = {\n\tTERMS: 1001,\n\tHOUSE_SIZE: 1002\n};\n\nexport const ServerCodes = {\n\n};\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\nimport { ScreenSize } from '../constants/screensize';\n\nconst Container = styled.div`\n\twidth: 100%;\n\tdisplay: flex;\n\tjustify-content: space-around;\n\talign-items: center;\n\tborder-bottom: 1px solid gray;\n\tflex-direction: row;\n\t\n\t@media (max-width: ${ScreenSize.phone}px) {\n\t\tflex-direction: column;\n\t}\n`;\n\nconst TextContainer = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: center;\n\talign-items: center;\n\ttext-align: center;\n`;\n\nconst HeaderLabel = styled.h1`\n\tfont-size: 28px;\n\tfont-weight: 800;\n\t\n\t@media (max-width: 800px) {\n\t\tfont-size: 18px;\n\t}\n`;\n\nconst Logo = styled.img`\n\tposition: absolute;\n\tmax-width: 50px; \n\tleft: 50px;\n\t\n\t@media (max-width: ${ScreenSize.phone}px) {\n\t\tposition: inherit;\n\t}\n`;\n\nexport default class WelcomeHeader extends Component {\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tRe-Order Your Seasonal Setter Package\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n","import React, {Component} from 'react';\nimport styled from 'styled-components';\nimport Style from \"../constants/style\";\n\nconst Container = styled.div`\n\twidth: 100%;\n\tdisplay: flex;\n\tjustify-content: center;\n\tpadding-top: 30px;\n`;\n\nconst TextBox = styled.input`\n\tfont-size: 30px;\n\ttext-align: center;\n\tborder: 2px solid ${Style.transparentBlack};\n\tborder-radius: 30px;\n`;\n\nclass InputBox extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.input = React.createRef();\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\n\tfocus = () => {\n\t\tthis.input.current.focus();\n\t}\n}\n\nInputBox.propTypes = {\n\n};\n\nexport default InputBox;\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\nimport PropTypes from 'prop-types';\nimport Style from \"../constants/style\";\n\nconst Container = styled.div`\n\twidth: 90%;\n\tmargin: 0 auto 50px auto;\n\tmax-width: 800px;\n`;\n\nconst TextArea = styled.textarea`\n\tborder-radius: ${Style.borderRadius}px;\n\twidth: 100%;\n max-width: calc(100% - 19px) !important;\n height: 100px;\n border: 2px solid black;\n padding: 5px 5px 5px 10px;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n`;\n\nclass LargeTextBox extends Component {\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t

{this.props.title}

\n\t\t\t\t