{"version":3,"sources":["components/api-authorization/ApiAuthorizationConstants.js","components/api/BasketService.js","components/api-authorization/AuthorizeService.js","components/basket/BasketIconMenu.js","components/api-authorization/LoginMenu.js","components/layout-components/NavMenu.js","components/api/EmailMarketingService.js","components/common/EmailMarketingSignUp.js","components/layout-components/FooterMenu.js","components/Layout.js","components/layout-components/Meta.js","components/home/Home.js","components/layout-components/ScrollToTop.js","components/basket/BasketItem.js","components/basket/BasketItemsGroup.js","components/basket/BasketPage.js","components/common/CarouselSlider.js","components/designer/DesignerCarouselListing.js","components/collection/CollectionCarouselListing.js","components/designer/ShowcaseHome.js","components/store-catalogue/ProductListingItem.js","components/home/FeaturedProducts.js","components/store-catalogue/ShopHome.js","components/designer/DesignersListingPage.js","components/store-catalogue/ProductsListing.js","components/designer/DesignerUniversities.js","components/story/StorySections.js","components/story/StoryVideo.js","components/story/StoryAR.js","components/story/StoryImagesCarousel.js","components/story/Story.js","components/designer/DesignerDetailsPage.js","components/checkout/BillingSection.js","components/checkout/ShippingSection.js","components/checkout/PaymentSection.js","components/checkout/CheckoutSideSummary.js","components/checkout/BasketDetails.js","components/api/CheckoutService.js","components/checkout/CheckoutForm.js","components/checkout/CheckoutPage.js","components/checkout/CheckoutProcessingWeChat.js","components/checkout/CheckoutProcessingPage.js","components/checkout/CheckoutCompletePage.js","components/FetchData.js","components/Counter.js","components/store-catalogue/CategoriesSideListing.js","components/store-catalogue/DesignersSideListing.js","components/store-catalogue/StoreCatalogueHeader.js","components/store-catalogue/StoreCataloguePaging.js","components/store-catalogue/StoreCataloguePage.js","components/product-details/ProductGallery.js","components/product-details/ProductAddToBasket.js","components/product-details/ProductsSideBenefits.js","components/product-details/ProductSideDetails.js","components/product-details/ProductDetailsTabs.js","components/product-details/ProductStory.js","components/product-details/ProductDetailsPage.js","components/collection/CollectionDetailsPage.js","components/api-authorization/AuthorizeRoute.js","components/api-authorization/Login.js","components/api-authorization/Logout.js","components/api-authorization/ApiAuthorizationRoutes.js","components/layout-components/SimpleQA.js","components/static-pages/FAQ.js","components/static-pages/TermsAndConditions.js","components/static-pages/PrivacyPolicy.js","components/static-pages/ReturnPolicy.js","components/static-pages/About.js","components/static-pages/JoinFlair.js","components/static-pages/FlairClass21.js","components/static-pages/FlairGrantClass21.js","components/static-pages/FlairProgrammeSept23.js","components/static-pages/pp/PiecesTrousers.js","components/static-pages/pp/PiecesJacket.js","components/static-pages/pp/NiamhTop.js","components/static-pages/pp/NiamhBottom.js","App.js","index.js"],"names":["QueryParameterNames","LogoutActions","LoginActions","prefix","ApplicationPaths","DefaultLoginRedirectPath","ApiAuthorizationClientConfigurationUrl","ApiAuthorizationPrefix","Login","LoginFailed","LoginCallback","Register","Profile","LogOut","LoggedOut","LogOutCallback","IdentityRegisterPath","IdentityManagePath","basketService","_callbacks","_nextSubscriptionId","_basket","_localStorageBasketName","process","this","loadLocalBasket","a","syncBasketToBackend","authService","isAuthenticated","console","log","reqHeader","getAccessToken","token","fetch","method","headers","body","JSON","stringify","response","json","data","basketId","updateState","doneCallback","errorCallback","localBasket","totalItems","productId","productSizeVariantId","isNaN","reqBody","ok","Error","statusText","basketItem","quantityChange","localBasketItem","getLocalBasketItem","items","found","filter","element","length","basket","lastUpdated","saveLocalBasket","notifySubscribers","localStorage","setItem","getItem","parse","callback","push","subscription","subscriptionId","subscriptionIndex","map","index","splice","i","init","_user","_isAuthenticated","_popUpDisabled","getUser","user","profile","ensureUserManagerInitialized","userManager","access_token","state","signinSilent","createArguments","silentUser","success","signinPopup","popUpUser","message","error","signinRedirect","redirect","url","signinCallback","signoutPopup","undefined","signoutRedirect","signoutCallback","resetBasket","useReplaceToNavigate","status","AuthenticationResultStatus","Fail","Success","Redirect","settings","automaticSilentRenew","includeIdTokenInSilentRenew","userStore","WebStorageStateStore","UserManager","events","addUserSignedOut","removeUser","BasketIconMenu","Component","props","itemsInBasket","_subscription","subscribe","populateState","unsubscribe","getBasketItemsCount","itemsCount","setState","basketCounter","tag","Link","className","to","style","paddingTop","height","enableBackground","version","viewBox","width","xmlns","d","fill","stroke","strokeLinecap","strokeMiterlimit","strokeWidth","cx","cy","r","displayName","name","NavMenu","toggleMobileNavbar","bind","collapsed","document","overflowY","light","fluid","href","type","id","onChange","checked","htmlFor","onClick","target","emailMarketingService","emailAddress","newsletterInterestOption","validateEmail","test","EmailMarketingSignUp","email","loading","showSuccessMessage","handleSubscribe","handleInputChange","e","value","preventDefault","alert","subscribeEmail","onSubmit","placeholder","defaultValue","required","disabled","buttonText","FooterMenu","data-name","Layout","children","Meta","title","description","image","Helmet","content","property","rel","Home","media","srcSet","src","alt","ScrollToTop","prevProps","location","pathname","window","scrollTo","React","withRouter","BasketItem","updating","handleRemoveItem","removeFromBasket","updateItemQuantity","hideButtons","product","listingThumbnail","friendlyUrlName","sizeVariantTitle","top","right","aria-label","aria-hidden","role","handleUpdateItemQuantity","aria-disabled","quantity","totalCostCurrency","BasketItemsGroup","group","basketItems","item","key","toString","designer","brandTitle","designerShippingCostCurrency","BasketPage","ready","populateBasketState","basketChanged","basketItemsGroups","getBasket","CarouselSlider","gliderProps","sliderClassName","slidesToShow","draggable","hasArrows","scrollLock","hasDots","itemWidth","exactWidth","responsive","arrows","sliderNextButton","sliderPreviousButton","prev","next","wrapperProps","wrapperClassName","itemsAlignment","DesignerCarouselListing","fullPageWidth","breakpoint","portraitImage","designerName","university","CollectionCarouselListing","y","x","thumbnailImage","showBrandTitle","ShowcaseHome","fetchData","maxWidth","featuredDesigners","featuredCollections","ProductListingItem","titles","itemSmallBottomPadding","unitPriceCurrency","displayProductStatus","FeaturedProducts","products","totalInRow","p","ShopHome","featuredProducts","featured3D","DesignersListingPage","designers","ProductsListing","DesignerUniversities","list","u","universityName","graduationYear","Fragment","StoryTextBox","divClass","row","boxDirection","textAlignment","largeBox","stretched","dangerouslySetInnerHTML","__html","text","StoryHeader","level","c","direction","StoryHeaderLEGACY","StoryBanner","file","showCaption","caption","StoryBannerLEGACY","fixedBackground","navigator","userAgent","platform","maxTouchPoints","MSStream","backgroundImage","StoryLeadText","size","StoryLeadTextLEGACY","StoryLeadWithImageOnRight","StoryTextWithMedia","textClass","textbox","imageDirection","textboxVerticalAlign","StoryTextWithImageLEGACY","textDirection","fullscreen","StoryTextColumns","StoryImage","styling","StoryGalleryDualImages","spacing","imagesAlignment","alignment","image1Alignment","image1","image2Alignment","image2","StoryGalleryImages","imagesContent","images","styl","backgroundColor","StoryAR2","video","autoPlay","loop","muted","playsInline","pointerEvents","mediaDirection","qrCode","arUrl","Box1","StoryImagesGrid","gridClass","totalPerRow","containerClass","StoryImagesGridLEGACY","StoryImagesGridMasonry","StoryVideoSide","videoOpts","autoplay","showControls","videoDirection","StoryCustom","html","StoryVideo","require","videoJsOptions","controls","poster","thumbnail","sources","player","videojs","videoNode","dispose","txt","rowStyle","data-vjs-player","ref","node","StoryVideoLEGACY","StoryAR","ARContent","isMobile","ARExternalContent","containerProps","arRef","bgColor","fgColor","renderAs","imageSettings","excavate","glbUrl","ios-src","usdzUrl","ar","modes","quick-look-browsers","ar-scale","camera-controls","auto-rotate","shadow-intensity","slot","x1","x2","y1","y2","points","contentUrl","StoryImagesCarousel","prevArrowEl","useRef","nextArrowEl","useState","isInitialized","setIsInitialized","useEffect","Boolean","current","getCarouselSizeOptions","StoryImagesCarouselLEGACY","Story","blocks","time","DesignerDetailsPage","designerUrl","match","params","logoImage","color","tagline","universities","story","collections","BillingSection","showState","stateRequired","stateLabel","postCodeLabel","countryChange","event","billingCountryChange","handleChange","onLoad","ShippingSection","hideAddress","handleAddressVisibility","defaultChecked","isOpen","PaymentSection","activePaymentTab","paymentMethods","card","paymentMethodTypeChange","getTabClassNames","setActiveTab","changeTab","paymentCountry","paymentMethodId","country","countries","includes","toUpperCase","dataset","tab","tabs","data-tab","sepa_debit","ideal","wechat","alipay","activeTab","tabId","getTabPaneClassNames","sm","elementStyle","supportedCountries","idealElementStyle","CheckoutSideSummary","processing","BasketDetails","base","iconColor","fontWeight","fontFamily","fontSmoothing","fontSize","invalid","Object","assign","padding","ach_credit_transfer","flow","currencies","bancontact","eps","giropay","multibanco","sofort","checkoutService","getLocalBasket","localbasket","updateLocalBasket","orderData","orderId","paymentIntentId","CheckoutForm","pageProcessStatus","notReady","checkout","order","completeUrl","paymentMethodType","orderInput","stripePaymentIntentId","stripePaymentIntentClientSecret","phoneNumber","shippingAddress","firstName","lastName","address","city","postCode","sameAddressAsBilling","billingAddress","fetchCheckoutData","handleBillingChange","handleShippingChange","handleSubmit","handlePaymentIntentResult","handlePaymentSourceActiviation","populateOrderData","startProcess","endProcess","setError","redirectToNextStep","getErrorMessage","pageReady","complete","stripe","elements","prevState","setTimeout","behavior","query","data-dismiss","errorMessage","fullname","initiateCheckoutOrder","errors","processingUrl","getProcessingUrl","confirmCardPayment","payment_method","getElement","billing_details","then","confirmSepaDebitPayment","confirmIdealPayment","return_url","domainUrl","confirmAlipayPayment","sourceData","amount","totalCost","currency","owner","statement_descriptor","metadata","paymentIntent","createSource","paymentResponse","finishCheckoutOrder","sourceResponse","source","progressingUrl","client_secret","replace","completedOrder","injectStripe","CheckoutPage","Stripe","stripeJs","createElement","async","onload","appendChild","CheckoutProcessingWeChat","background","visible","buttons","CheckoutProcessingPage","timer","qs","search","ignoreQueryPrefix","sourceId","start","processPaymentSource","pollPaymentIntentStatus","_mounted","clearTimeout","retrieveSource","sourceObj","timeout","interval","Date","now","endStates","getCheckoutOrderPaymentIntent","requestSuccess","payment","warn","getCompleteUrl","getFailedUrl","actionContent","qr_code_url","CheckoutCompletePage","URLSearchParams","redirectStatus","get","createRef","freezeAnimLastFrame","animUrl","animFrame","onEvent","t","getCheckoutCompleteStatus","frame","seeker","pause","FetchData","forecasts","populateWeatherData","contents","renderForecastsTable","aria-labelledby","forecast","date","temperatureC","temperatureF","summary","Counter","currentCount","incrementCounter","aria-live","CategoriesSideListing","path","category","CategoriesSideItem","isSelected","childrenCategories","childCategory","marginLeft","DesignersSideListing","categoryBaseUrl","anyDesignerSelected","StoreCatalogueHeader","titleMeta","descriptionMeta","selectedCategory","rootCategory","selectedDesigner","toLowerCase","StoreCataloguePaging","paging","totalPages","currentPage","StoreCataloguePage","paginationInfo","newData","getCategoryBaseUrl","nextProps","rootCategoryUrl","child1CategoryUrl","child2CategoryUrl","child3CategoryUrl","pageNum","marginTop","zIndex","ProductGallery","gallery","PropductGalleryItem","PropductGalleryItemVideo","data-toggle","data-image","PropductGalleryItemPhoto","ProductAddToBasket","selectedSizeId","getButtonText","setButtonLoadingState","parseInt","addToBasket","isLoading","sizeSelectOptions","sizes","sizeDisplayTitle","ProductsSideBenefits","delivery","scrollToAR","scrollToDetail","productType","returnType","shippingCost","arContent","ProductRightSideDetails","sizingInformation","ProductMobileBottomDetails","ProductDetailsTabs","anchorRef","options","scrollIntoView","lg","xs","getSizingInformation","getDeliveryInformation","getReturnInformation","deliveryMessage","ProductStory","ProductDetailsPage","block","productDetailsTabsRef","unitPrice","hash","CollectionDetailsPage","collection","collectionUrl","AuthorizeRoute","authenticated","authenticationChanged","populateAuthenticationState","redirectUrl","encodeURI","component","rest","render","action","login","getReturnUrl","processLoginCallback","redirectToProfile","redirectToRegister","returnUrl","signIn","result","navigateToReturnUrl","completeSignIn","fromQuery","startsWith","origin","redirectToApiAuthorizationPath","apiAuthorizationPath","Logout","isReady","history","local","logout","processLogoutCallback","signOut","completeSignOut","ApiAuthorizationRoutes","Route","loginAction","logoutAction","SimpleQA","initalState","isToggled","setToggled","question","FAQPage","frameborder","allow","allowfullscreen","TermsAndConditionsPage","PrivacyPolicyPage","ReturnPolicyPage","AboutPage","JoinFlairPage","FlairClass21","script","setAttribute","addEventListener","Twitch","Embed","channel","FlairGrantClass21","FlairProgrammeSept23","display","class","PiecesTrousers","claim","claimPerk","controlsList","PiecesJacket","NiamhTop","NiamhBottom","App","Switch","exact","baseUrl","getElementsByTagName","getAttribute","rootElement","getElementById","TagManager","initialize","gtmId","auth","preview","ReactDOM","BrowserRouter","basename"],"mappings":"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","file":"static/js/main.0abae2eb.chunk.js","sourcesContent":["export const ApplicationName = 'FashionMarketStore.Web';\n\nexport const QueryParameterNames = {\n ReturnUrl: 'returnUrl',\n Message: 'message'\n};\n\nexport const LogoutActions = {\n LogoutCallback: 'logout-callback',\n Logout: 'logout',\n LoggedOut: 'logged-out'\n};\n\nexport const LoginActions = {\n Login: 'login',\n LoginCallback: 'login-callback',\n LoginFailed: 'login-failed',\n Profile: 'profile',\n Register: 'register'\n};\n\nconst prefix = '/authentication';\n\nexport const ApplicationPaths = {\n DefaultLoginRedirectPath: '/',\n ApiAuthorizationClientConfigurationUrl: `/_configuration/${ApplicationName}`,\n ApiAuthorizationPrefix: prefix,\n Login: `${prefix}/${LoginActions.Login}`,\n LoginFailed: `${prefix}/${LoginActions.LoginFailed}`,\n LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\n Register: `${prefix}/${LoginActions.Register}`,\n Profile: `${prefix}/${LoginActions.Profile}`,\n LogOut: `${prefix}/${LogoutActions.Logout}`,\n LoggedOut: `${prefix}/${LogoutActions.LoggedOut}`,\n LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\n IdentityRegisterPath: '/Identity/Account/Register',\n IdentityManagePath: '/Identity/Account/Manage'\n};\n","import authService from '../api-authorization/AuthorizeService'\n\nexport class BasketService {\n _callbacks = [];\n _nextSubscriptionId = 0;\n _basket = null;\n _localStorageBasketName = process.env.REACT_APP_LOCALSTORAGE_BASKET_NAME;\n\n constructor() {\n this.loadLocalBasket();\n }\n\n init() {\n (async() => {\n await this.syncBasketToBackend();\n })();\n }\n\n async syncBasketToBackend() {\n if(!authService || !await authService.isAuthenticated()) {\n return;\n }\n\n console.log('sync');\n console.log(this._basket);\n\n let reqHeader = {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache'\n };\n const token = await authService.getAccessToken();\n if(token) {\n reqHeader['Authorization'] = `Bearer ${token}`;\n }\n\n const response = await fetch('/api/basket/sync', {\n method: 'post',\n headers: reqHeader,\n body: JSON.stringify(!this._basket ? {} : this._basket)\n });\n const data = await response.json();\n if(data && data.basketId) {\n this.updateState(data);\n return;\n }\n this.updateState(null);\n }\n\n resetBasket() {\n console.log('reset');\n //this.updateState(null);\n }\n \n async getBasket(doneCallback, errorCallback) {\n const token = await authService.getAccessToken();\n\n console.log('getbasket');\n console.log(this._basket);\n\n if(!token && (!this._basket || !this._basket.basketId)) {\n //no local basket or logged in user\n return;\n }\n\n let reqHeader = {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache'\n };\n if(token) {\n reqHeader['Authorization'] = `Bearer ${token}`;\n }\n\n const response = await fetch('/api/basket', {\n method: 'post',\n headers: reqHeader,\n body: JSON.stringify(!this._basket ? {} : this._basket)\n });\n const data = await response.json();\n if(data && data.basketId) {\n console.log('getbasket received');\n console.log(data);\n\n this.updateState(data.localBasket);\n\n if (doneCallback) doneCallback(data);\n return data;\n }\n if(errorCallback) {\n errorCallback('Error getting basket');\n }\n }\n\n getLocalBasket() {\n if(!this._basket || !this._basket.totalItems)\n return null;\n return this._basket;\n }\n\n updateLocalBasket(localBasket) {\n if(localBasket && localBasket.basketId) {\n console.log('update local basket');\n console.log(localBasket);\n\n this.updateState(localBasket);\n }\n }\n\n resetLocalBasket() {\n console.log('reset local basket');\n this.updateState(null);\n }\n\n async getBasketItemsCount() {\n if(!this._basket || !this._basket.totalItems)\n return 0;\n return this._basket.totalItems;\n }\n\n async addToBasket(productId, productSizeVariantId, doneCallback, errorCallback) {\n if(!productId || isNaN(productId)) {\n if(errorCallback) errorCallback('No product selected');\n return;\n }\n if(!productSizeVariantId || isNaN(productSizeVariantId)) {\n if(errorCallback) errorCallback('No product size selected');\n return;\n }\n\n //request body\n let reqBody = {\n productId: productId,\n productSizeVariantId: productSizeVariantId,\n localBasket: !this._basket ? {} : this._basket\n };\n\n let reqHeader = {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache'\n };\n const token = await authService.getAccessToken();\n if(token) {\n reqHeader['Authorization'] = `Bearer ${token}`;\n }\n\n try {\n const response = await fetch('/api/basket/add', {\n method: 'post',\n headers: reqHeader,\n body: JSON.stringify(reqBody)\n });\n if (!response.ok) {\n throw Error(response.statusText);\n }\n const data = await response.json();\n\n if(data && data.basketId) {\n console.log('getbasket received');\n console.log(data);\n\n this.updateState(data.localBasket);\n\n if (doneCallback) doneCallback(data.basketItem);\n return data.basketItem;\n }\n\n throw Error(\"Error adding to basket\");\n }\n catch (error) {\n console.log(error);\n if(errorCallback) {\n errorCallback('Error: ' + error);\n }\n }\n return false;\n }\n\n async updateItemQuantity(productId, productSizeVariantId, quantityChange, doneCallback, errorCallback) {\n if(!productId || isNaN(productId)) {\n if(errorCallback) errorCallback('No product selected');\n return;\n }\n if(!productSizeVariantId || isNaN(productSizeVariantId)) {\n if(errorCallback) errorCallback('No product size selected');\n return;\n }\n\n if(quantityChange !== 1 && quantityChange !== -1) {\n if(errorCallback) errorCallback('Wrong quantityChange input');\n return;\n }\n\n //request body\n let reqBody = {\n productId: productId,\n productSizeVariantId: productSizeVariantId,\n quantityChange: quantityChange,\n localBasket: !this._basket ? {} : this._basket\n };\n\n let reqHeader = {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache'\n };\n const token = await authService.getAccessToken();\n if(token) {\n reqHeader['Authorization'] = `Bearer ${token}`;\n }\n\n try {\n const response = await fetch('/api/basket/updateQuantity', {\n method: 'post',\n headers: reqHeader,\n body: JSON.stringify(reqBody)\n });\n if (!response.ok) {\n throw Error(response.statusText);\n } \n const data = await response.json();\n\n if(data && data.basketId) {\n console.log('updateItemQuantity received');\n console.log(data);\n \n this.updateState(data.localBasket);\n \n if (doneCallback) doneCallback(data);\n return true;\n }\n\n throw Error(\"Error updating basket\");\n }\n catch (error) {\n console.log(error);\n if(errorCallback) {\n errorCallback('Error: ' + error);\n }\n }\n return false;\n }\n\n async removeFromBasket(productId, productSizeVariantId, doneCallback, errorCallback) {\n if(!productId || isNaN(productId)) {\n if(errorCallback) errorCallback('No product selected');\n return false;\n }\n if(!productSizeVariantId || isNaN(productSizeVariantId)) {\n if(errorCallback) errorCallback('No product size selected');\n return false;\n }\n if(!this._basket || !this._basket.basketId) {\n if(errorCallback) errorCallback('Basket is empty');\n return false;\n }\n\n const localBasketItem = this.getLocalBasketItem(productId, productSizeVariantId);\n if(!localBasketItem) {\n if(errorCallback) errorCallback('The item to be removed is not in the basket');\n return false;\n }\n\n //request body\n let reqBody = {\n localBasket: this._basket,\n productId: localBasketItem.productId,\n productSizeVariantId: localBasketItem.productSizeVariantId,\n };\n\n let reqHeader = {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache'\n };\n const token = await authService.getAccessToken();\n if(token) {\n reqHeader['Authorization'] = `Bearer ${token}`;\n }\n\n try {\n const response = await fetch('/api/basket/remove', {\n method: 'delete',\n headers: reqHeader,\n body: JSON.stringify(reqBody)\n });\n if (!response.ok) {\n throw Error(response.statusText);\n } \n\n const data = await response.json();\n\n if(data && data.basketId) {\n console.log('removeFromBasket received');\n console.log(data);\n\n this.updateState(data.localBasket);\n\n if (doneCallback) doneCallback(data);\n return true;\n\n //this.updateItemRemovedState(localBasketItem.productId, localBasketItem.productSizeVariantId);\n //if (done) done();\n //return true;\n }\n errorCallback('Error removing product from basket');\n }\n catch (error) {\n console.log(error);\n if(errorCallback) {\n errorCallback('Error: ' + error);\n }\n }\n\n return false;\n }\n\n\n getLocalBasketItem(productId, productSizeVariantId) {\n if(!this._basket || !this._basket.items) return;\n if(!productId || isNaN(productId)) return;\n if(!productSizeVariantId || isNaN(productSizeVariantId)) return;\n\n const found = this._basket.items\n .filter(element => element.productId === productId &&\n element.productSizeVariantId === productSizeVariantId);\n if (found.length > 0) {\n return found[0];\n }\n return;\n }\n/*\n getLocalBasketItemIndex(productId, productSizeVariantId) {\n if(!this._basket || !this._basket.items) return -1;\n if(!productId || isNaN(productId)) return -1;\n if(!productSizeVariantId || isNaN(productSizeVariantId)) return -1;\n\n const found = this._basket.items\n .map((element, index) => \n element.productId === productId &&\n element.productSizeVariantId === productSizeVariantId ? \n { found: true, index } : { found: false })\n .filter(element => element.found === true);\n\n if (found.length > 0) {\n return found[0].index;\n }\n return -1;\n }\n\n\n\n updateItemAddedState(basketItem) {\n if(!basketItem) return;\n\n let itemIndex = -1;\n if(!this._basket || !this._basket.basketId) {\n this._basket = {\n basketId: basketItem.basketId,\n items: []\n }\n } else {\n itemIndex = this.getLocalBasketItemIndex(basketItem.productId, basketItem.productSizeVariantId)\n }\n\n if(itemIndex < 0) {\n this._basket.items.push({\n productId: basketItem.productId,\n productSizeVariantId: basketItem.productSizeVariantId,\n quantity: basketItem.quantity\n });\n } else {\n this._basket.items[itemIndex].quantity = basketItem.quantity;\n }\n\n this.saveLocalBasket();\n this.notifySubscribers();\n }\n\n updateItemRemovedState(productId, productSizeVariantId) {\n if(!this._basket || !this._basket.items) return;\n if(!productId || isNaN(productId)) return;\n if(!productSizeVariantId || isNaN(productSizeVariantId)) return;\n\n const itemIndex = this.getLocalBasketItemIndex(productId, productSizeVariantId);\n\n if(itemIndex < 0) {\n throw new Error(`Could not find a product`);\n }\n\n this._basket.items = this._basket.items.splice(itemIndex, 1);\n\n this.saveLocalBasket();\n this.notifySubscribers();\n }\n*/\n\n updateState(basket) {\n //if the two baskets are the same, then don't update\n if((!basket || !basket.basketId) && (!this._basket || !this._basket.basketId)) return;\n if(basket && basket.basketId && this._basket && this._basket.basketId) {\n if(basket.basketId === this._basket.basketId &&\n basket.lastUpdated === this._basket.lastUpdated &&\n basket.totalItems === this._basket.totalItems) {\n return;\n } \n }\n\n if(!basket || !basket.basketId) {\n this._basket = null;\n } else {\n this._basket = basket;\n }\n this.saveLocalBasket();\n this.notifySubscribers();\n }\n\n saveLocalBasket() {\n console.log('saving');\n console.log(this._basket);\n localStorage.setItem(this._localStorageBasketName, JSON.stringify(this._basket));\n }\n loadLocalBasket() {\n try {\n const basket = localStorage.getItem(this._localStorageBasketName);\n if(basket) {\n this._basket = JSON.parse(basket);\n }\n } catch {}\n }\n \n subscribe(callback) {\n this._callbacks.push({ callback, subscription: this._nextSubscriptionId++ });\n return this._nextSubscriptionId - 1;\n }\n\n unsubscribe(subscriptionId) {\n const subscriptionIndex = this._callbacks\n .map((element, index) => element.subscription === subscriptionId ? { found: true, index } : { found: false })\n .filter(element => element.found === true);\n if (subscriptionIndex.length !== 1) {\n throw new Error(`Found an invalid number of subscriptions ${subscriptionIndex.length}`);\n }\n\n this._callbacks.splice(subscriptionIndex[0].index, 1);\n }\n\n notifySubscribers() {\n for (let i = 0; i < this._callbacks.length; i++) {\n const callback = this._callbacks[i].callback;\n callback();\n }\n }\n\n static get instance() { return basketService }\n}\n\nconst basketService = new BasketService();\nbasketService.init();\n\nexport default basketService;\n","import { UserManager, WebStorageStateStore } from 'oidc-client';\nimport { ApplicationPaths, ApplicationName } from './ApiAuthorizationConstants';\nimport basketService from '../api/BasketService';\n\n\nexport class AuthorizeService {\n _callbacks = [];\n _nextSubscriptionId = 0;\n _user = null;\n _isAuthenticated = false;\n\n // By default pop ups are disabled because they don't work properly on Edge.\n // If you want to enable pop up authentication simply set this flag to false.\n _popUpDisabled = true;\n\n async isAuthenticated() {\n const user = await this.getUser();\n return !!user;\n }\n\n async getUser() {\n if (this._user && this._user.profile) {\n return this._user.profile;\n }\n\n await this.ensureUserManagerInitialized();\n const user = await this.userManager.getUser();\n return user && user.profile;\n }\n\n async getAccessToken() {\n await this.ensureUserManagerInitialized();\n const user = await this.userManager.getUser();\n return user && user.access_token;\n }\n\n // We try to authenticate the user in three different ways:\n // 1) We try to see if we can authenticate the user silently. This happens\n // when the user is already logged in on the IdP and is done using a hidden iframe\n // on the client.\n // 2) We try to authenticate the user using a PopUp Window. This might fail if there is a\n // Pop-Up blocker or the user has disabled PopUps.\n // 3) If the two methods above fail, we redirect the browser to the IdP to perform a traditional\n // redirect flow.\n async signIn(state) {\n await this.ensureUserManagerInitialized();\n try {\n const silentUser = await this.userManager.signinSilent(this.createArguments());\n this.updateState(silentUser);\n return this.success(state);\n } catch (silentError) {\n // User might not be authenticated, fallback to popup authentication\n console.log(\"Silent authentication error: \", silentError);\n\n try {\n if (this._popUpDisabled) {\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\n }\n\n const popUpUser = await this.userManager.signinPopup(this.createArguments());\n this.updateState(popUpUser);\n return this.success(state);\n } catch (popUpError) {\n if (popUpError.message === \"Popup window closed\") {\n // The user explicitly cancelled the login action by closing an opened popup.\n return this.error(\"The user closed the window.\");\n } else if (!this._popUpDisabled) {\n console.log(\"Popup authentication error: \", popUpError);\n }\n\n // PopUps might be blocked by the user, fallback to redirect\n try {\n await this.userManager.signinRedirect(this.createArguments(state));\n return this.redirect();\n } catch (redirectError) {\n console.log(\"Redirect authentication error: \", redirectError);\n return this.error(redirectError);\n }\n }\n }\n }\n\n async completeSignIn(url) {\n try {\n await this.ensureUserManagerInitialized();\n const user = await this.userManager.signinCallback(url);\n this.updateState(user);\n return this.success(user && user.state);\n } catch (error) {\n console.log('There was an error signing in: ', error);\n return this.error('There was an error signing in.');\n }\n }\n\n // We try to sign out the user in two different ways:\n // 1) We try to do a sign-out using a PopUp Window. This might fail if there is a\n // Pop-Up blocker or the user has disabled PopUps.\n // 2) If the method above fails, we redirect the browser to the IdP to perform a traditional\n // post logout redirect flow.\n async signOut(state) {\n await this.ensureUserManagerInitialized();\n try {\n if (this._popUpDisabled) {\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\n }\n\n await this.userManager.signoutPopup(this.createArguments());\n this.updateState(undefined);\n return this.success(state);\n } catch (popupSignOutError) {\n console.log(\"Popup signout error: \", popupSignOutError);\n try {\n await this.userManager.signoutRedirect(this.createArguments(state));\n return this.redirect();\n } catch (redirectSignOutError) {\n console.log(\"Redirect signout error: \", redirectSignOutError);\n return this.error(redirectSignOutError);\n }\n }\n }\n\n async completeSignOut(url) {\n await this.ensureUserManagerInitialized();\n try {\n const response = await this.userManager.signoutCallback(url);\n this.updateState(null);\n return this.success(response && response.data);\n } catch (error) {\n console.log(`There was an error trying to log out '${error}'.`);\n return this.error(error);\n }\n }\n\n updateState(user) {\n this._user = user;\n this._isAuthenticated = !!this._user;\n if(this._isAuthenticated) {\n basketService.syncBasketToBackend();\n } else {\n basketService.resetBasket();\n }\n this.notifySubscribers();\n }\n\n subscribe(callback) {\n this._callbacks.push({ callback, subscription: this._nextSubscriptionId++ });\n return this._nextSubscriptionId - 1;\n }\n\n unsubscribe(subscriptionId) {\n const subscriptionIndex = this._callbacks\n .map((element, index) => element.subscription === subscriptionId ? { found: true, index } : { found: false })\n .filter(element => element.found === true);\n if (subscriptionIndex.length !== 1) {\n throw new Error(`Found an invalid number of subscriptions ${subscriptionIndex.length}`);\n }\n\n this._callbacks = this._callbacks.splice(subscriptionIndex[0].index, 1);\n }\n\n notifySubscribers() {\n for (let i = 0; i < this._callbacks.length; i++) {\n const callback = this._callbacks[i].callback;\n callback();\n }\n }\n\n createArguments(state) {\n return { useReplaceToNavigate: true, data: state };\n }\n\n error(message) {\n return { status: AuthenticationResultStatus.Fail, message };\n }\n\n success(state) {\n return { status: AuthenticationResultStatus.Success, state };\n }\n\n redirect() {\n return { status: AuthenticationResultStatus.Redirect };\n }\n\n async ensureUserManagerInitialized() {\n if (this.userManager !== undefined) {\n return;\n }\n\n let response = await fetch(ApplicationPaths.ApiAuthorizationClientConfigurationUrl);\n if (!response.ok) {\n throw new Error(`Could not load settings for '${ApplicationName}'`);\n }\n\n let settings = await response.json();\n settings.automaticSilentRenew = true;\n settings.includeIdTokenInSilentRenew = true;\n settings.userStore = new WebStorageStateStore({\n prefix: ApplicationName\n });\n\n this.userManager = new UserManager(settings);\n\n this.userManager.events.addUserSignedOut(async () => {\n await this.userManager.removeUser();\n this.updateState(undefined);\n });\n }\n\n static get instance() { return authService }\n}\n\nconst authService = new AuthorizeService();\n\nexport default authService;\n\nexport const AuthenticationResultStatus = {\n Redirect: 'redirect',\n Success: 'success',\n Fail: 'fail'\n};\n","import React, { Component, Fragment } from 'react';\nimport { NavItem, NavLink } from 'reactstrap';\nimport { Link } from 'react-router-dom';\nimport basketService from '../api/BasketService';\n\nexport class BasketIconMenu extends Component {\n static displayName = BasketIconMenu.name;\n\n constructor (props) {\n super(props);\n\n this.state = {\n itemsInBasket: 0\n };\n }\n\n componentDidMount() {\n this._subscription = basketService.subscribe(() => this.populateState());\n this.populateState();\n }\n\n componentWillUnmount() {\n basketService.unsubscribe(this._subscription);\n }\n\n async populateState() {\n const itemsCount = await basketService.getBasketItemsCount();\n this.setState({\n itemsInBasket: itemsCount\n });\n }\n\n render() {\n const itemsInBasket = this.state.itemsInBasket;\n let basketCounter;\n if(itemsInBasket > 0) {\n basketCounter = `${itemsInBasket}`;\n }\n return (\n \n \n \n \n \n \n \n \n \n {basketCounter}\n \n \n \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport { NavItem, NavLink } from 'reactstrap';\nimport { Link } from 'react-router-dom';\nimport authService from './AuthorizeService';\nimport { ApplicationPaths } from './ApiAuthorizationConstants';\n\nexport class LoginMenu extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isAuthenticated: false,\n userName: null\n };\n }\n\n componentDidMount() {\n this._subscription = authService.subscribe(() => this.populateState());\n this.populateState();\n }\n\n componentWillUnmount() {\n authService.unsubscribe(this._subscription);\n }\n\n async populateState() {\n const [isAuthenticated, user] = await Promise.all([authService.isAuthenticated(), authService.getUser()])\n this.setState({\n isAuthenticated,\n userName: user && user.name\n });\n }\n\n render() {\n const { isAuthenticated, userName } = this.state;\n if (!isAuthenticated) {\n const registerPath = `${ApplicationPaths.Register}`;\n const loginPath = `${ApplicationPaths.Login}`;\n return this.anonymousView(registerPath, loginPath);\n } else {\n const profilePath = `${ApplicationPaths.Profile}`;\n const logoutPath = { pathname: `${ApplicationPaths.LogOut}`, state: { local: true } };\n return this.authenticatedView(userName, profilePath, logoutPath);\n }\n }\n\n authenticatedView(userName, profilePath, logoutPath) {\n return (\n \n Hello {userName}\n \n \n Logout\n \n );\n\n }\n\n anonymousView(registerPath, loginPath) {\n return (\n \n \n Login\n \n \n );\n }\n /*\n anonymousView(registerPath, loginPath) {\n return (\n \n Register\n \n \n Login\n \n );\n }\n */\n}\n","import React, { Component } from 'react';\nimport { Collapse, Container, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink } from 'reactstrap';\nimport { Link } from 'react-router-dom';\nimport { LoginMenu } from '../api-authorization/LoginMenu';\nimport { BasketIconMenu } from '../basket/BasketIconMenu';\nimport './NavMenu.css';\n\nexport class NavMenu extends Component {\n static displayName = NavMenu.name;\n\n constructor (props) {\n super(props);\n\n this.toggleMobileNavbar = this.toggleMobileNavbar.bind(this);\n this.state = {\n collapsed: false\n };\n }\n\n toggleMobileNavbar () {\n this.setState({\n collapsed: !this.state.collapsed\n });\n }\n\n render () {\n if(this.state.collapsed) {\n document.body.style.overflowY = 'hidden';\n } else {\n document.body.style.overflowY = null;\n }\n\n return (\n
\n \n \n
\n
    \n \n Shop designers\n \n \n Showcasing\n \n {/*\n \n Artefacts\n \n */}\n
\n
\n
\n Flair\n
\n
\n
    \n \n About Flair\n \n \n Join as a designer\n \n \n {/*\n \n \n */}\n
\n
\n
\n \n \n
\n
    \n \n Shop designers\n \n \n Showcasing\n \n {/*\n \n Artefacts\n \n */}\n \n Show All Designers\n \n
\n
\n
    \n \n About\n \n \n Join Flair\n \n \n Terms & Conditions\n \n \n Privacy Policy\n \n \n Returns & Refunds\n \n \n FAQ\n \n \n \n Follow on Instagram\n \n \n \n © 2020 Flair Fashion Limited. All rights reserved.\n \n
\n
\n
\n
\n
\n
\n );\n }\n}\n","export class EmailMarketingService { \n\n async subscribeEmail(emailAddress, newsletterInterestOption, doneCallback, errorCallback) {\n if(!emailAddress || !this.validateEmail(emailAddress)) {\n if(errorCallback) errorCallback('Email is not valid');\n return;\n }\n if(!newsletterInterestOption) {\n if(errorCallback) errorCallback('No subscription option was selected');\n return;\n }\n if(newsletterInterestOption !== 'womenswear' && newsletterInterestOption !== 'menswear' && newsletterInterestOption !== 'both') {\n if(errorCallback) errorCallback('No subscription option was selected');\n return;\n }\n\n //request body\n let reqBody = {\n emailAddress: emailAddress,\n newsletterInterestOption: newsletterInterestOption\n };\n\n let reqHeader = {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache'\n };\n\n try {\n const response = await fetch('/api/emailmarketing/subscribe', {\n method: 'post',\n headers: reqHeader,\n body: JSON.stringify(reqBody)\n });\n if (!response.ok) {\n throw Error(response.statusText);\n }\n const data = await response.json();\n\n if(data && data.success) {\n if (doneCallback) doneCallback(data.success);\n return data.success;\n }\n\n throw Error(\"Error subscribing email to mailing list, please try again soon.\");\n }\n catch (error) {\n console.log(error);\n if(errorCallback) {\n errorCallback('Error subscribing email to mailing list, please try again soon.');\n }\n }\n return false;\n }\n\n validateEmail(emailAddress) {\n const regexp = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return regexp.test(emailAddress);\n }\n\n static get instance() { return emailMarketingService }\n}\n\nconst emailMarketingService = new EmailMarketingService();\n\nexport default emailMarketingService;\n","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport emailMarketingService from '../api/EmailMarketingService';\nimport './EmailMarketingSignUp.css';\n\nexport class EmailMarketingSignUp extends Component {\n\n constructor (props) {\n super(props);\n this.state = {email: null, newsletterInterestOption: 'both', loading: false, showSuccessMessage: false };\n this.handleSubscribe = this.handleSubscribe.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n }\n\n handleInputChange(e) {\n const { name, value } = e.target;\n this.setState({\n [name]: value\n });\n }\n\n async handleSubscribe(e) {\n e.preventDefault();\n\n const {email, newsletterInterestOption} = this.state;\n\n if (!email || !emailMarketingService.validateEmail(email)) {\n alert('Email is not valid');\n return;\n }\n\n this.setState({loading: true}); \n\n const res = await emailMarketingService.subscribeEmail(\n email,\n newsletterInterestOption,\n function(success) {\n this.setState({loading: false}); \n if(success == true) {\n //success\n this.setState({\n showSuccessMessage: true\n });\n }\n }.bind(this), \n function(error) {\n this.setState({loading: false}); \n alert(error);\n }.bind(this)\n );\n }\n\n render () {\n const {newsletterInterestOption, showSuccessMessage} = this.state;\n if(showSuccessMessage) {\n return(\n
\n Thank you for signing up to Flair's mailing list.\n
\n );\n }\n return (\n
\n
\n

Sign up for email updates and designer promotions

\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n {this.state.buttonText}\n
\n You may unsubscribe at any time. To find out more, please visit our Privacy Policy.\n
\n
\n );\n }\n}\n","import React, { Component } from 'react';\nimport { Container, Nav, NavItem, NavLink } from 'reactstrap';\nimport { Link } from 'react-router-dom';\nimport { EmailMarketingSignUp } from '../common/EmailMarketingSignUp'; \nimport './FooterMenu.css';\n\nexport class FooterMenu extends Component {\n //static displayName = FooterMenu.name;\n\n constructor (props) {\n super(props);\n }\n\n render () {\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport { Container } from 'reactstrap';\nimport { NavMenu } from './layout-components/NavMenu';\nimport { FooterMenu } from './layout-components/FooterMenu';\n\nexport class Layout extends Component {\n static displayName = Layout.name;\n\n render () {\n return (\n
\n \n \n {this.props.children}\n \n \n
\n );\n }\n}\n","import React, { Fragment } from 'react';\nimport { Helmet } from 'react-helmet';\n\nexport function Meta(props) {\n const {title, description, image, url} = props;\n return (\n \n {title && {title}}\n {title && }\n {title && }\n {title && }\n \n {!title && FLAIR - The Fashion Platform For The Next Generation}\n {!title && }\n {!title && }\n {!title && }\n\n {description && }\n {description && }\n {description && }\n\n {!description && }\n {!description && }\n {!description && }\n\n {image && }\n {image && }\n\n {!image && }\n {!image && }\n\n {props.children}\n \n {url && }\n {url && }\n] \n );\n}\n","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Meta } from \"../layout-components/Meta\";\nimport './Home.css';\n\nexport class Home extends Component {\n //static displayName = Home.name;\n\n constructor(props) {\n super(props);\n }\n\n render () {\n return (\n
\n \n\n
\n \n \n \n \n \n \n \n \"Flair\"\n \n
Bringing Flair Back To Fashion
\n
Photo by designer Steven Passaro
\n
\n\n
\n
\n
\n \n enter shop\n \n
\n
\n \n enter showcase\n \n
\n
\n
\n
\n );\n }\n}\n","import React from \"react\";\nimport { withRouter } from \"react-router-dom\";\n\nclass ScrollToTop extends React.Component {\n componentDidUpdate(prevProps) {\n if (\n this.props.location.pathname !== prevProps.location.pathname\n ) {\n window.scrollTo(0, 0);\n }\n }\n\n render() {\n return null;\n }\n}\n\nexport default withRouter(ScrollToTop);","import React, {Component} from 'react';\nimport { Link } from 'react-router-dom';\nimport basketService from '../api/BasketService';\n\nexport class BasketItem extends Component {\n static displayName = BasketItem.name;\n \n constructor (props) {\n super(props);\n this.state = {\n updating: false,\n };\n this.handleRemoveItem = this.handleRemoveItem.bind(this);\n }\n \n async handleRemoveItem(e) { \n e.preventDefault()\n\n if(this.state.updating) return;\n\n this.setState({ \n updating: true\n });\n\n const removed = await basketService.removeFromBasket(\n this.props.basketItem.productId,\n this.props.basketItem.productSizeVariantId,\n );\n if(removed) {\n console.log('removed item from basket')\n }\n\n this.setState({ \n updating: false\n });\n }\n \n async handleUpdateItemQuantity(e, quantityChange) {\n e.preventDefault()\n\n if(quantityChange !== 1 && quantityChange !== -1) return;\n\n if(this.state.updating) return;\n\n this.setState({ \n updating: true\n });\n\n const done = await basketService.updateItemQuantity(\n this.props.basketItem.productId,\n this.props.basketItem.productSizeVariantId,\n quantityChange\n );\n if(done) {\n console.log('item quantity in basket updated')\n }\n\n this.setState({ \n updating: false\n });\n }\n \n render() {\n const basketItem = this.props.basketItem;\n const hideButtons = this.props.hideButtons;\n return (\n
\n
\n {hideButtons &&\n \n }\n {!hideButtons &&\n \n }\n
\n
\n {hideButtons &&\n
{basketItem.product.title}
\n }\n {!hideButtons &&\n
{basketItem.product.title}
\n }\n

{basketItem.sizeVariantTitle} {/*| {basketItem.product.status}*/}

\n {!hideButtons &&\n \n }\n {!hideButtons &&\n
\n \n
\n
\n
\n \n \n \n
\n
\n
\n {basketItem.totalCostCurrency}\n
\n
\n
\n }\n\n
\n
\n {!hideButtons &&\n
\n \n \n \n
\n }\n {hideButtons &&\n basketItem.quantity\n }\n
\n
\n {basketItem.totalCostCurrency}\n
\n
\n );\n }\n}\n\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { BasketItem } from './BasketItem';\n\nexport function BasketItemsGroup(props) {\n const group = props.group;\n let content = group.basketItems.map((item) =>\n \n );\n return (\n
\n
\n
\n
\n
\n {props.hideButtons &&\n

Designed by {group.designer.brandTitle}

\n }\n {!props.hideButtons &&\n

Designed by {group.designer.brandTitle}

\n }\n
\n
\n Quantity\n
\n
\n Price\n
\n
\n {content}\n
\n
\n Shipping\n
\n
\n {group.designerShippingCostCurrency}\n
\n
\n
\n
\n Total from {group.designer.brandTitle}\n
\n
\n {group.totalCostCurrency}\n
\n
\n
\n
\n
\n );\n}\n\n","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport { BasketItemsGroup } from './BasketItemsGroup';\nimport basketService from '../api/BasketService';\nimport { Meta } from \"../layout-components/Meta\";\nimport './BasketPage.css';\n\nexport class BasketPage extends Component {\n static displayName = BasketPage.name;\n\n constructor (props) {\n super(props);\n\n this.state = {\n ready: false,\n basket: null\n };\n this.populateBasketState = this.populateBasketState.bind(this);\n }\n\n componentDidMount() {\n this._subscription = basketService.subscribe(() => this.basketChanged());\n this.populateBasketState();\n }\n\n componentWillUnmount() {\n basketService.unsubscribe(this._subscription);\n }\n\n render() {\n if (!this.state.ready)\n return (\n

Loading...

\n );\n\n const basket = this.state.basket;\n\n if(!basket || \n !basket.basketId || \n !basket.basketItemsGroups || \n basket.basketItemsGroups.length <= 0 ||\n basket.totalItems <= 0)\n return (\n

There are no items in your bag

Browse our brilliant designers

\n );\n\n let content = basket.basketItemsGroups.map((group) =>\n \n );\n return (\n
\n \n

Your bag

\n
\n {content}\n
\n
\n
\n Total cost\n
\n
\n {basket.totalCostCurrency}\n
\n
\n
\n
\n Proceed to checkout\n
\n
\n
\n );\n }\n\n async basketChanged() {\n //this.setState({\n // ready: false,\n //});\n await this.populateBasketState();\n }\n \n async populateBasketState() {\n const basket = await basketService.getBasket(\n function() {\n },\n function(error) {\n console.log('Error: ' + error);\n }\n );\n this.setState({ \n ready: true,\n basket: basket\n });\n }\n}\n","import React from 'react';\nimport Glider from 'react-glider';\nimport 'glider-js/glider.min.css';\nimport \"./CarouselSlider.css\";\n\nexport default function CarouselSlider(props) {\n\n const gliderProps = {\n className: props.sliderClassName ?? '',\n slidesToShow: props.slidesToShow ?? 4,\n draggable: props.draggable ?? true,\n hasArrows: props.hasArrows ?? true,\n scrollLock: props.scrollLock ?? true,\n hasDots: props.hasDots ?? false,\n itemWidth: props.itemWidth ?? undefined,\n exactWidth: props.exactWidth ?? undefined,\n responsive: props.responsive ?? undefined,\n arrows: props.sliderNextButton && props.sliderPreviousButton ? {\n prev: props.sliderPreviousButton,\n next: props.sliderNextButton,\n } : undefined,\n };\n\n const wrapperProps = {\n className: props.wrapperClassName ?? ''\n };\n\n if (props.itemsAlignment === 'middle') {\n wrapperProps.className += ' glider-itemsalign-middle';\n } else if (props.itemsAlignment === 'bottom') {\n wrapperProps.className += ' glider-itemsalign-bottom';\n }\n\n\n return (\n
\n \n {props.children}\n \n
\n );\n}\n","import React, { Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport CarouselSlider from '../common/CarouselSlider';\n\nexport function DesignerCarouselListing(props) {\n\n if(!props.items || !props.items.length || props.items.length <= 0) {\n return();\n }\n\n return (\n \n {props.items.map(d =>\n
\n \n {d.brandTitle}\n
{d.brandTitle}
\n
By {d.designerName}
\n
{d.university}
\n \n
\n )}\n
\n );\n}","import React, { Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport CarouselSlider from '../common/CarouselSlider';\n\nexport function CollectionCarouselListing(props) {\n\n if(!props.items || !props.items.length || props.items.length <= 0) {\n return();\n }\n\n return (\n \n {props.items.map(d =>\n
\n \n \n \n \n \n \n \n \n
{d.title}
\n {props.showBrandTitle ?
By {d.designer.brandTitle}
: null }\n \n
\n )}\n
\n );\n}","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport { DesignerCarouselListing } from \"./DesignerCarouselListing\";\nimport { CollectionCarouselListing } from '../collection/CollectionCarouselListing';\n//import { InsightBoxes } from '../home/InsightBoxes';\nimport { Meta } from \"../layout-components/Meta\";\n//import './DesignersHome.css';\n\nexport class ShowcaseHome extends Component {\n\n constructor(props) {\n super(props);\n this.state = { data: null, loading: true };\n }\n\n async componentDidMount() {\n await this.fetchData();\n }\n\n render () {\n if (this.state.loading)\n return (\n

Loading...

\n );\n \n const data = this.state.data;\n \n return (\n
\n \n\n
\n
\n
\n
\n

Showcasing The Next Generation of Fashion Designers

\n

Designers at the forefront of innovation, sustainability and technology.

\n
\n Show all designers\n Join as a designer\n
\n
\n
\n
\n \n \"Flair\n \n
\n
\n
\n\n
\n
\n

Say Hello To Flair Family

\n \n
\n Show all designers\n
\n \n \n
\n
\n
\n
\n\n\n\n
\n
\n

Recently Added Collections

\n \n
\n
\n \n \n
\n
\n
\n
\n\n\n
\n
\n \n \n \n \n \n \n \"Formless\n \n
Featured: Adiamelias
\n \n
\n
\n{/* \n
\n

Insights

\n \n
\n*/} \n
\n );\n }\n\n async fetchData() {\n const response = await fetch(`api/home/showcase`, {\n });\n const data = await response.json();\n this.setState({ data: data, loading: false });\n\n console.log(data);\n }\n}\n","import React, { Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport './ProductListingItem.css';\n\nexport function ProductListingItem(props) {\n const { product, itemSmallBottomPadding } = props;\n\n let titles;\n if(product.designer != null) {\n titles = (\n \n

{product.designer.brandTitle}

\n

\n \n {product.title}\n \n

\n
\n );\n } else {\n titles = (\n \n

\n \n {product.title}\n \n

\n
\n );\n }\n\n return (\n
\n
\n \n {product.title}\n \n
\n
\n {titles}\n {product.unitPriceCurrency}\n

{displayProductStatus(product.status)}

\n
\n
\n );\n}\n\nfunction displayProductStatus(status) {\n switch (status) {\n case 1:\n return 'Out of stock'\n case 2:\n return 'Not available'\n default:\n return '';\n }\n}","import React from 'react';\nimport { ProductListingItem } from '../store-catalogue/ProductListingItem';\n\nexport function FeaturedProducts(props) {\n const { products, totalInRow, itemSmallBottomPadding } = props;\n\n let content = products.map(p =>\n
\n \n
\n );\n\n return (\n
\n
\n {content}\n
\n
\n );\n}\n","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Meta } from \"../layout-components/Meta\";\nimport { FeaturedProducts } from '../home/FeaturedProducts';\n//import { FlairFocus } from './ShopHomeComponents';\n//import './DesignersHome.css';\n\nexport class ShopHome extends Component {\n\n constructor(props) {\n super(props);\n this.state = { data: null, loading: true };\n }\n\n async componentDidMount() {\n await this.fetchData();\n }\n\n render () {\n if (this.state.loading)\n return (\n

Loading...

\n );\n \n const data = this.state.data;\n \n return (\n
\n \n\n
\n
\n \n \n \n \n \n \n \"Flair\n \n
Shop Womenswear
\n \n
\n
\n \n \n \n \n \n \n \"Flair\n \n
Shop Menswear
\n \n
\n
\n\n {/* \n
\n \n\n
\n */}\n\n
\n

Flair Pick of the Week

\n \n
\n Shop Womenswear\n Shop Menswear\n
\n
\n\n
\n

View Products In Your Space

\n

Using Augmented Reality

\n \n
\n Shop Womenswear\n Shop Menswear\n
\n
\n\n \n
\n );\n }\n\n async fetchData() {\n const response = await fetch(`api/home/shop`, {\n });\n const data = await response.json();\n console.log(data);\n\n this.setState({ data: data, loading: false });\n\n }\n}\n","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Meta } from \"../layout-components/Meta\";\nimport './DesignersListingPage.css';\n\nexport class DesignersListingPage extends Component {\n static displayName = DesignersListingPage.name;\n\n constructor(props) {\n super(props);\n this.state = { designers: [], loading: true };\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n render() {\n if(this.state.loading) {\n return (\n

Loading...

\n );\n }\n\n let content = this.state.designers.map(d =>\n
\n \n {d.brandTitle}\n \n
\n );\n \n return (\n
\n \n

All Designers

\n
\n {content}\n
\n Want to join Flair? Tell your brand story!\n
\n );\n }\n\n async fetchData() {\n const response = await fetch(`api/designers`, {\n });\n const data = await response.json();\n this.setState({ \n designers: data,\n loading: false\n });\n }\n}\n","import React from 'react';\nimport { ProductListingItem } from './ProductListingItem';\n\nexport function ProductsListing(props) {\n let products = props.products;\n\n let content = products.map(p =>\n
\n \n
\n );\n\n return (\n
\n
\n {content}\n
\n
\n );\n}\n","import React from 'react';\n\n\nexport function DesignerUniversities(props) {\n if(!props.list || props.list.length <= 0) return null;\n\n let content = props.list.map(u =>\n
\n {u.universityName}\n {(u.graduationYear ? \n (
Graduated {u.graduationYear}
) \n : () \n )}\n
\n );\n\n return (\n
\n University:
\n {content}\n
\n );\n}","import React from 'react';\n\nvar isMobile = function() {\n return (/Android|iPhone|iPad|Opera Mini/i.test(navigator.userAgent) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints && navigator.maxTouchPoints > 1)) \n && !window.MSStream ;\n}\n\nexport function StoryTextBox(props) {\n let divClass = \"text-paragraph\";\n \n if(props.row.data.boxDirection === \"center\") {\n divClass += \" mx-auto\";\n } else if(props.row.data.boxDirection === \"right\") {\n divClass += \" ml-auto\";\n } else {\n divClass += \" mr-auto\";\n }\n\n if(props.row.data.textAlignment === \"center\") {\n divClass += \" text-center\";\n } else if(props.row.data.textAlignment === \"right\") {\n divClass += \" text-right\";\n } else {\n divClass += \" text-left\";\n }\n\n if(props.row.data.largeBox === true) {\n divClass += \" lrg\";\n }\n\n return (\n
\n
\n
\n );\n}\n\nexport function StoryHeader(props) {\n if(props.row.data.level === 2) {\n return (\n

{props.row.data.text}

\n );\n }\n let c = \"\";\n if(props.row.data.style === \"flairheader\") c += \" fslash\";\n if(props.row.data.direction === \"left\") c += \" ml-0 text-left\";\n else if(props.row.data.direction === \"right\") c += \" mr-0 text-right\";\n return (\n

{props.row.data.text}

\n );\n}\nexport function StoryHeaderLEGACY(props) {\n if(props.row.data.level === 2) {\n return (\n

{props.row.data.text}

\n );\n }\n let c = \"\";\n if(props.row.data.style === \"flairheader\") c += \" fslash\";\n if(props.row.data.direction === \"left\") c += \" ml-0 text-left\";\n else if(props.row.data.direction === \"right\") c += \" mr-0 text-right\";\n return (\n

{props.row.data.text}

\n );\n}\n\nexport function StoryBanner(props) {\n return (\n
\n
\n \n {props.row.data.showCaption === true &&\n
\n \n
\n }\n
\n
\n );\n}\n\nexport function StoryBannerLEGACY(props) {\n if(props.row.data.fixedBackground)\n return (\n
\n );\n return (\n
\n \n
\n );\n}\n\nexport function StoryLeadText(props) {\n let divClass = \"lead leadbox\";\n if(props.row.data.size === \"large\") {\n divClass += \" lrg\";\n } else if(props.row.data.size === \"small\") {\n divClass += \" sml\";\n }\n \n if(props.row.data.boxDirection === \"center\") {\n divClass += \" mx-auto\";\n } else if(props.row.data.boxDirection === \"right\") {\n divClass += \" ml-auto\";\n } else {\n divClass += \" mr-auto\";\n }\n\n if(props.row.data.textAlignment === \"center\") {\n divClass += \" text-center\";\n } else if(props.row.data.textAlignment === \"right\") {\n divClass += \" text-right\";\n } else {\n divClass += \" text-left\";\n }\n\n return (\n
\n
\n
\n );\n}\n\nexport function StoryLeadTextLEGACY(props) {\n let divClass = \"lead leadbox\";\n if(props.row.data.size === \"large\") {\n divClass += \" lrg\";\n } else if(props.row.data.size === \"small\") {\n divClass += \" sml\";\n }\n \n if(props.row.data.direction === \"center\") {\n divClass += \" text-center mx-auto\";\n } else if(props.row.data.direction === \"right\") {\n divClass += \" text-right ml-auto\";\n } else {\n divClass += \" text-left mr-auto\";\n } \n return (\n
\n
\n
\n );\n}\n\nexport function StoryLeadWithImageOnRight(props) {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n );\n}\n\n\n\nexport function StoryTextWithMedia(props) {\n let textClass;\n if(props.row.data.textAlignment === \"left\") {\n textClass = \"text-left\";\n } else if(props.row.data.textAlignment === \"right\") {\n textClass = \"text-right\";\n } else {\n textClass = \"text-center\";\n }\n if(props.row.data.imageDirection === \"left\") {\n if(props.row.data.stretched) {\n textClass += \" smallbox ml-md-4 ml-lg-5\";\n } else {\n textClass += \" ml-auto\";\n }\n } else if(props.row.data.imageDirection === \"right\" &&\n props.row.data.stretched) {\n textClass += \" smallbox ml-auto mr-md-4 mr-lg-5\";\n }\n\n let textbox;\n if(props.row.data.textboxVerticalAlign === \"bottom\") {\n textbox = \"align-items-end\";\n } else if(props.row.data.textboxVerticalAlign === \"top\") {\n textbox = \"align-items-start\";\n } else {\n textbox = \"align-items-center\";\n }\n\n return (\n
\n
\n
\n
\n
\n
\n
\n { props.row.data.file &&\n
\n \n
\n }\n
\n
\n );\n}\n\nexport function StoryTextWithImageLEGACY(props) {\n let textClass;\n if(props.row.data.textDirection === \"left\") {\n textClass = \"text-left\";\n } else if(props.row.data.textDirection === \"right\") {\n textClass = \"text-right\";\n } else {\n textClass = \"text-center\";\n }\n if(props.row.data.imageDirection === \"left\") {\n if(props.row.data.fullscreen) {\n textClass += \" smallbox ml-md-4 ml-lg-5\";\n } else {\n textClass += \" ml-auto\";\n }\n } else if(props.row.data.imageDirection === \"right\" &&\n props.row.data.fullscreen) {\n textClass += \" smallbox ml-auto mr-md-4 mr-lg-5\";\n }\n\n let textbox;\n if(props.row.data.textAlignment === \"bottom\") {\n textbox = \"align-items-end\";\n } else if(props.row.data.textAlignment === \"top\") {\n textbox = \"align-items-start\";\n } else {\n textbox = \"align-items-center\";\n }\n\n return (\n
\n
\n
\n
\n
\n
\n
\n { props.row.data.file &&\n
\n \n
\n }\n
\n
\n );\n}\nexport function StoryTextWithImageOnLeft(props) {\n\n let textbox;\n if(props.row.data.textAlignment === \"bottom\") {\n textbox = \"align-items-end\";\n } else if(props.row.data.textAlignment === \"top\") {\n textbox = \"align-items-start\";\n } else {\n textbox = \"align-items-center\";\n }\n\n return (\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n );\n}\n\nexport function StoryTextColumns(props) {\n return (\n
\n
\n
\n );\n}\nexport function StoryImage(props) {\n let styling;\n if(props.row.data.size === \"small\") {\n styling = {maxWidth: '500px'}\n } else if(props.row.data.size === \"medium\") {\n styling = {maxWidth: '700px'}\n } else {\n }\n return (\n
\n {props.row.data.caption}\n
\n );\n}\n\n\nexport function StoryGalleryDualImages(props) {\n let spacing = \"\";\n if(props.row.data.spacing === \"up\") spacing = \"mt-5\";\n else if(props.row.data.spacing === \"down\") spacing = \"mb-5\";\n else if(props.row.data.spacing === \"both\") spacing = \"my-5\";\n\n let imagesAlignment = \"align-items-start\";\n if(props.row.data.alignment === \"end\") {\n imagesAlignment = \"align-items-end\";\n } else if(props.row.data.alignment === \"center\") {\n imagesAlignment = \"align-items-center\";\n }\n\n let image1Alignment = \"align-items-start\";\n if(props.row.data.image1.alignment === \"end\") {\n image1Alignment = \"align-items-end\";\n } else if(props.row.data.image1.alignment === \"center\") {\n image1Alignment = \"align-items-center\";\n }\n\n let image2Alignment = \"align-items-start\";\n if(props.row.data.image2.alignment === \"end\") {\n image2Alignment = \"align-items-end\";\n } else if(props.row.data.image2.alignment === \"center\") {\n image2Alignment = \"align-items-center\";\n }\n\n return (\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n );\n}\n\nexport function StoryGalleryImages(props) {\n let spacing = \"\";\n if(props.row.data.spacing === \"up\") spacing = \"mt-5\";\n else if(props.row.data.spacing === \"down\") spacing = \"mb-5\";\n else if(props.row.data.spacing === \"both\") spacing = \"my-5\";\n\n let imagesContent = props.row.data.images.map((p, index) =>\n
\n \n
\n );\n\n let imagesAlignment = \"align-items-start\";\n if(props.row.data.alignment === \"end\") {\n imagesAlignment = \"align-items-end\";\n } else if(props.row.data.alignment === \"center\") {\n imagesAlignment = \"align-items-center\";\n }\n\n let styl = {};\n if(props.row.data.backgroundColor) { \n styl.backgroundColor = props.row.data.backgroundColor;\n }\n\n return (\n
\n
\n
\n {imagesContent}\n
\n
\n
\n
\n );\n}\n\nexport function StoryAR2(props) {\n let media;\n if(props.row.data.video) {\n media = (\n \n );\n } else if(props.row.data.image) {\n media = ;\n }\n\n let alignment = \"align-items-start\";\n if(props.row.data.alignment === \"end\") {\n alignment = \"align-items-end\";\n } else if(props.row.data.alignment === \"center\") {\n alignment = \"align-items-center\";\n }\n\n return (\n
\n
\n
\n
\n
\n \n

\n Click here or scan the QR codes to start the experience\n

\n
\n
\n
\n {media}\n
\n
\n
\n );\n}\n\n\nexport function Box1(props) {\n let spacing = \"\";\n if(props.row.data.spacing === \"up\") spacing = \"mt-5\";\n else if(props.row.data.spacing === \"down\") spacing = \"mb-5\";\n else if(props.row.data.spacing === \"both\") spacing = \"my-5\";\n\n let styl = {};\n if(props.row.data.backgroundColor) { \n styl.backgroundColor = props.row.data.backgroundColor;\n }\n\n return (\n
\n
\n
\n
\n
\n

{props.row.data.title}

\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n );\n}\n\n\n\n\nexport function StoryImagesGrid(props) {\n let gridClass='';\n switch(props.row.data.totalPerRow)\n {\n case 3:\n gridClass = 'col-12 col-lg-4'\n break;\n case 4:\n gridClass = 'col-12 col-lg-3'\n break;\n default:\n gridClass = 'col-12 col-lg-6'\n break;\n }\n\n let containerClass='';\n switch(props.row.data.itemsAlignment)\n {\n case \"middle\":\n containerClass = 'align-items-center'\n break;\n case \"bottom\":\n containerClass = 'align-items-end'\n break;\n default:\n containerClass = 'align-items-start'\n break;\n }\n\n let imagesContent = props.row.data.images.map((p, index) =>\n
\n \n
\n );\n return (\n
\n {imagesContent}\n
\n );\n}\n\nexport function StoryImagesGridLEGACY(props) {\n let gridClass='';\n switch(props.row.data.totalPerRow)\n {\n case 3:\n gridClass = 'col-12 col-lg-4'\n break;\n case 4:\n gridClass = 'col-12 col-lg-3'\n break;\n default:\n gridClass = 'col-12 col-lg-6'\n break;\n }\n\n let imagesContent = props.row.data.images.map((p, index) =>\n
\n \n
\n );\n return (\n
\n {imagesContent}\n
\n );\n}\n\n\nexport function StoryImagesGridMasonry(props) {\n /* {(index === 0 ?\n (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ) :\n null\n )}\n */\n let imagesContent = props.row.data.images.map((p, index) =>\n
\n \n
\n );\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n {imagesContent}\n
\n
\n );\n}\n\n\n\nexport function StoryVideoSide(props) {\n\n /* this is same as StoryTextWithImage\n they should merge \n StoryTextWithMedia\n */\n\n var videoOpts = {};\n if (props.row.data.autoplay) {\n videoOpts['autoPlay'] = 'autoPlay';\n videoOpts['muted'] = 'muted';\n }\n if (props.row.data.loop) {\n videoOpts['loop'] = 'loop';\n }\n if (props.row.data.showControls) {\n videoOpts['controls'] = 'controls';\n } else {\n videoOpts['playsInline'] = 'playsInline';\n videoOpts['style'] = {pointerEvents: 'none'};\n }\n\n const media = (\n \n );\n\n return (\n
\n
\n { props.row.data.file &&\n
\n {media}\n
\n }\n
\n
\n ); \n}\n\n\nexport function StoryCustom(props) {\n return (\n
\n );\n}\n\n","import React, { Component } from 'react';\nimport videojs from 'video.js';\nimport 'video.js/dist/video-js.css';\nimport '@videojs/themes/dist/sea/index.css';\n\nexport default class StoryVideo extends Component {\n static displayName = StoryVideo.name;\n \n constructor(props) {\n super(props);\n try {\n if(props.row.data.file.type === 'video/youtube') {\n require('videojs-youtube');\n }\n } catch {\n console.log('video plugin could not load');\n }\n }\n\n componentDidMount() {\n //console.log(this.props.row);\n const videoJsOptions = {\n fluid: true,\n autoplay: this.props.row.data.autoplay === true ? 'muted' : false,\n controls: this.props.row.data.showControls === false && this.props.row.data.autoplay === true ? false : true,\n loop: this.props.row.data.loop,\n poster: this.props.row.data.thumbnail ? process.env.REACT_APP_MEDIAURL_STORY_VIDEO_THUMBNAIL + this.props.row.data.thumbnail : null,\n sources: [{ \n src: process.env.REACT_APP_MEDIAURL_STORY_VIDEO_URLBASE + this.props.row.data.file.url + process.env.REACT_APP_MEDIAURL_STORY_VIDEO_URLSUFFIX,\n type: 'application/x-mpegURL'\n }]\n }\n \n\n // instantiate Video.js\n this.player = videojs(this.videoNode, videoJsOptions, function onPlayerReady() {\n console.log('onPlayerReady', this)\n });\n }\n \n // destroy player on unmount\n componentWillUnmount() {\n if (this.player) {\n this.player.dispose()\n }\n }\n \n // wrap the player in a div with a `data-vjs-player` attribute\n // so videojs won't create additional wrapper in the DOM\n // see https://github.com/videojs/video.js/pull/3856\n render() {\n let txt, rowStyle;\n if(this.props.row.data.showCaption && this.props.row.data.caption) {\n if(this.props.row.data.stretched) {\n txt = (\n
\n \n
\n ) \n } else {\n txt = (\n
\n \n
\n )\n }\n }\n\n if(this.props.row.data.style === 'half_right') {\n rowStyle = 'col-12 offset-md-6 col-md-6 p-0';\n } else if(this.props.row.data.style === 'half_left') {\n rowStyle = 'col-12 col-md-6 p-0';\n } else if(this.props.row.data.style === 'half') {\n rowStyle = 'col-12 offset-md-3 col-md-6 p-0';\n } else {\n rowStyle = 'col-12 p-0';\n }\n\n return (\n
\t\n
\n
\n
\n \n
\n {txt}\n
\n
\n
\n )\n }\n}\n\nexport class StoryVideoLEGACY extends Component {\n static displayName = StoryVideoLEGACY.name;\n \n constructor(props) {\n super(props);\n try {\n if(props.row.data.file.type === 'video/youtube') {\n require('videojs-youtube');\n }\n } catch {\n console.log('video plugin could not load');\n }\n }\n\n componentDidMount() {\n //console.log(this.props.row);\n const videoJsOptions = {\n fluid: true,\n autoplay: this.props.row.data.autoplay,\n controls: this.props.row.data.showControls,\n loop: this.props.row.data.loop,\n poster: this.props.row.data.thumbnail,\n sources: [{ \n src: this.props.row.data.file.url,\n type: this.props.row.data.file.type\n }]\n }\n \n\n // instantiate Video.js\n this.player = videojs(this.videoNode, videoJsOptions, function onPlayerReady() {\n console.log('onPlayerReady', this)\n });\n }\n \n // destroy player on unmount\n componentWillUnmount() {\n if (this.player) {\n this.player.dispose()\n }\n }\n \n // wrap the player in a div with a `data-vjs-player` attribute\n // so videojs won't create additional wrapper in the DOM\n // see https://github.com/videojs/video.js/pull/3856\n render() {\n let txt, rowStyle;\n if(this.props.row.data.text) {\n if(this.props.row.data.fullscreen) {\n txt = (\n
\n ) \n } else {\n txt = (\n
\n )\n }\n }\n\n if(this.props.row.data.style === 'half_right') {\n rowStyle = 'col-12 offset-md-6 col-md-6 p-0';\n } else if(this.props.row.data.style === 'half_left') {\n rowStyle = 'col-12 col-md-6 p-0';\n } else if(this.props.row.data.style === 'half') {\n rowStyle = 'col-12 offset-md-3 col-md-6 p-0';\n } else {\n rowStyle = 'col-12 p-0';\n }\n\n return (\n
\t\n
\n
\n
\n \n
\n {txt}\n
\n
\n
\n )\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport '@google/model-viewer/dist/model-viewer'\nimport 'focus-visible';\nimport './StoryAR.css';\nimport QRCode from 'qrcode.react';\n\nexport default class StoryAR extends Component {\n static displayName = StoryAR.name;\n \n componentDidMount() {\n console.log(this.props.row);\n }\n \n isMobile() {\n return (/Android|iPhone|iPad|Opera Mini/i.test(navigator.userAgent) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints && navigator.maxTouchPoints > 1)) \n && !window.MSStream ;\n }\n\n render() {\n if(!this.props.row) {\n return();\n }\n\n let content;\n\n if(this.props.row.type === 'ar-content') {\n content = \n ;\n } else if(this.props.row.type === 'ar-content-external') {\n content =\n ;\n } else {\n return();\n }\n\n var containerProps = {};\n if (this.props.arRef)\n containerProps.ref = this.props.arRef; \n\n return (\n
\n
\n {content}\n
\n
\n )\n }\n}\n\nfunction ARContent(props) {\n let message;\n\n if(props.isMobile) {\n message = \"\";\n } else {\n message = (\n
\n \n

Scan this QR code on your AR supported device to trigger the augmented reality experience

\n

* iPhone 6S or above | iPad2017/Pro | Selected Android devices

\n
\n );\n }\n\n return (\n \n
\n \n \n \n
\n
\n
\n {message}\n
\n
\n
\n );\n}\n\nfunction ARExternalContent(props) {\n if(props.isMobile) {\n return (\n \n
\n
\n \n \n \n \n \n \n \n \n Instagram AR Filter\n \n

Open this on your mobile device with Instgram to experience the AR filter

\n
\n
\n
\n );\n }\n\n return (\n \n
\n
\n \n

Scan this QR code on your mobile device to trigger the Instagram filter

\n
\n
\n
\n );\n}\n ","import React, { Fragment, useEffect, useRef } from 'react';\nimport CarouselSlider from '../common/CarouselSlider';\n\nexport function StoryImagesCarousel(props) {\n\n const prevArrowEl = useRef();\n const nextArrowEl = useRef();\n const [isInitialized, setIsInitialized] = React.useState(false);\n\n useEffect(() => {\n setIsInitialized(Boolean(prevArrowEl.current && nextArrowEl.current));\n }, [prevArrowEl, nextArrowEl]);\n \n if(!props.row.data.images || !props.row.data.images.length || props.row.data.images.length <= 0) {\n return();\n }\n\n const getCarouselSizeOptions = (size) => {\n const offset = 20;\n switch(size) {\n case 'small':\n return {\n itemWidth: 200 - offset,\n responsive:\n [\n {\n breakpoint: 992,\n settings: {\n itemWidth: 420 - offset\n }\n },\n {\n breakpoint: 600,\n settings: {\n itemWidth: 350 - offset\n }\n },\n {\n breakpoint: 480,\n settings: {\n itemWidth: 260 - offset\n }\n }\n ]\n };\n case 'large':\n return {\n itemWidth: 400 - offset,\n responsive:\n [\n {\n breakpoint: 992,\n settings: {\n itemWidth: 620 - offset\n }\n },\n {\n breakpoint: 600,\n settings: {\n itemWidth: 550 - offset\n }\n },\n {\n breakpoint: 480,\n settings: {\n itemWidth: 460 - offset\n }\n }\n ]\n }; \n default:\n return {\n itemWidth: 300 - offset,\n responsive:\n [\n {\n breakpoint: 992,\n settings: {\n itemWidth: 520 - offset\n }\n },\n {\n breakpoint: 600,\n settings: {\n itemWidth: 450 - offset\n }\n },\n {\n breakpoint: 480,\n settings: {\n itemWidth: 360 - offset\n }\n }\n ]\n };\n }\n }\n\n return (\n
\n
\n {isInitialized &&\n \n {props.row.data.images.map((p, index) =>\n
\n \n
\n )}\n
\n }\n
\n
\n \n \n
\n
\n
\n
\n );\n}\n\n\nexport function StoryImagesCarouselLEGACY(props) {\n\n const prevArrowEl = useRef();\n const nextArrowEl = useRef();\n const [isInitialized, setIsInitialized] = React.useState(false);\n\n useEffect(() => {\n setIsInitialized(Boolean(prevArrowEl.current && nextArrowEl.current));\n }, [prevArrowEl, nextArrowEl]);\n \n if(!props.row.data.images || !props.row.data.images.length || props.row.data.images.length <= 0) {\n return();\n }\n\n return (\n
\n
\n {isInitialized &&\n \n {props.row.data.images.map((p, index) =>\n
\n \n
\n )}\n
\n }\n
\n
\n \n \n
\n
\n
\n
\n );\n}","import React, { Component, Fragment } from 'react';\nimport { StoryHeader, StoryHeaderLEGACY, StoryTextBox, StoryBanner, StoryBannerLEGACY, StoryLeadText, StoryLeadTextLEGACY, StoryLeadWithImageOnRight, StoryTextWithMedia, StoryTextWithImageLEGACY, StoryTextColumns, StoryImage, StoryGalleryDualImages, StoryGalleryImages, StoryAR2, Box1, StoryImagesGrid, StoryImagesGridLEGACY, StoryVideoSide, StoryCustom, StoryImagesGridMasonry } from './StorySections';\nimport StoryVideo, { StoryVideoLEGACY } from './StoryVideo';\nimport StoryAR from './StoryAR';\nimport { StoryImagesCarousel, StoryImagesCarouselLEGACY } from './StoryImagesCarousel';\nimport './Story.css';\n\nexport class Story extends Component {\n static displayName = Story.name;\n\n render() {\n const { content } = this.props;\n\n if(!content) \n return (\n \n );\n\n const json = JSON.parse(content);\n\n return (\n
\n {json.blocks.map((row, index) => {\n if(row.type === \"textBox\") {\n return (\n \n );\n } \n if(row.type === \"header\" && json.time === 1600780052222) {\n return (\n \n );\n } \n if(row.type === \"header\") {\n return (\n \n );\n } \n else if(row.type === \"banner\" && json.time === 1600780052222) {\n return (\n \n );\n }\n else if(row.type === \"banner\") {\n return (\n \n );\n }\n else if(row.type === \"lead-w-img-right\") {\n return (\n \n );\n }\n else if(row.type === \"lead-text\") { //LEGACY\n return (\n \n );\n }\n else if(row.type === \"leadText\") {\n return (\n \n );\n }\n else if(row.type === \"textWithMedia\") {\n return (\n \n );\n }\n else if(row.type === \"text-with-image\") { //LEGACY\n return (\n \n );\n }\n else if(row.type === \"text-columns\" || //LEGACY\n row.type === \"textColumns\") {\n return (\n \n );\n }\n else if(row.type === \"image\") {\n return (\n \n );\n }\n else if(row.type === \"video\" && json.time === 1600780052222) {\n return (\n \n );\n }\n else if(row.type === \"video\") {\n return (\n \n );\n }\n else if(row.type === \"video-side\") {\n return (\n \n );\n }\n else if(row.type === \"gallery-dual-images\") {\n return (\n \n );\n }\n else if(row.type === \"gallery-images\") {\n return (\n \n );\n }\n else if(row.type === \"ar\") {\n return (\n \n );\n }\n else if(row.type === \"ar-content\" || row.type === \"ar-content\") {\n return (\n \n );\n }\n else if(row.type === \"box1\") {\n return (\n \n );\n }\n else if(row.type === \"images-grid\" && json.time === 1600780052222) {\n return (\n \n );\n }\n else if(row.type === \"imagesGrid\") {\n return (\n \n );\n }\n else if(row.type === \"images-grid-masonry\") {\n return (\n \n );\n }\n else if(row.type === \"images-carousel\") {\n //LEGACY\n return (\n \n );\n }\n else if(row.type === \"imagesCarousel\") {\n return (\n \n );\n }\n else if(row.type === \"custom\") {\n return (\n \n );\n }\n })}\n
\n );\n }\n}\n","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport { ProductsListing } from '../store-catalogue/ProductsListing';\nimport { DesignerUniversities } from './DesignerUniversities';\nimport { Meta } from \"../layout-components/Meta\";\nimport { Story } from '../story/Story';\nimport './DesignerDetailsPage.css';\n\nexport class DesignerDetailsPage extends Component {\n static displayName = DesignerDetailsPage.name;\n\n constructor(props) {\n super(props);\n this.state = { designer: null, loading: true };\n }\n\n async componentDidMount() {\n const { designerUrl } = this.props.match.params;\n await this.fetchData(designerUrl);\n } \n\n render() {\n if (this.state.loading)\n return (\n

Loading...

\n );\n \n let designer = this.state.designer;\n\n return (\n
\n \n \n
\n
\n
\n

Designer

\n

{designer.brandTitle}

\n

By {designer.designerName}

\n
\n
\n
\n {designer.brandTitle}\n
\n
\n
\n
\n
\n\n
\n\n\n
\n
\n \n
\n
\n
\n
\n
\n {designer.brandTitle}\n
\n
\n

{designer.brandTitle}

\n

By {designer.designerName}

\n
\n
\n
{designer.tagline}
\n \n
\n
\n
\n\n
\n \n
\n\n {(designer.collections && designer.collections.length > 0) &&\n
\n

{designer.brandTitle} Collections

\n

View latest collections from designer

\n\n
\n {\n designer.collections.map((d, i) =>\n
\n \n \n \n \n \n \n \n \n
{d.title}
\n \n
\n )\n }\n
\n
\n }\n\n {(designer.products && designer.products.length > 0) &&\n
\n

{designer.brandTitle} Store

\n

Buy directly from designer

\n \n
\n }\n
\n );\n }\n\n async fetchData(designerUrl) {\n const response = await fetch(`api/designers/details/${designerUrl}`, {\n });\n const data = await response.json();\n this.setState({ designer: data, loading: false });\n }\n}\n","import React, { Fragment, Component } from 'react';\n\nexport class BillingSection extends Component {\n static displayName = BillingSection.name;\n\n constructor (props) {\n super(props);\n this.state = {\n showState: false,\n stateRequired: false,\n stateLabel: 'County',\n postCodeLabel: 'Postal Code',\n };\n this.countryChange = this.countryChange.bind(this);\n }\n\n countryChange(event) {\n event.preventDefault();\n switch(event.target.value) {\n case 'us':\n this.setState({\n showState: true,\n stateRequired: true,\n stateLabel: 'State',\n postCodeLabel: 'ZIP'\n });\n break;\n case 'gb':\n this.setState({\n showState: true,\n stateRequired: false,\n stateLabel: 'County',\n postCodeLabel: 'Postcode'\n });\n break;\n default:\n this.setState({\n showState: false,\n stateRequired: false,\n stateLabel: 'County',\n postCodeLabel: 'Postal Code'\n });\n }\n this.props.billingCountryChange(event.target.value);\n this.props.handleChange(event);\n }\n \n render() {\n return (\n \n

1. Your Address

\n\n
\n
\n \n \n
\n Valid first name is required.\n
\n
\n
\n \n \n
\n Valid last name is required.\n
\n
\n
\n\n
\n \n \n
\n Please enter a valid email address for shipping updates.\n
\n
\n\n
\n \n \n
\n Please enter a valid phone number.\n
\n
\n\n
\n \n \n
\n Please enter your address.\n
\n
\n\n
\n \n \n
\n Please enter your city.\n
\n
\n\n
\n
\n \n \n
\n Please select a valid country.\n
\n
\n
\n \n \n
\n
\n \n \n
\n Postcode is required.\n
\n
\n
\n
\n );\n }\n}","import React, { Fragment, Component } from 'react';\nimport { Collapse } from 'reactstrap';\n\nexport class ShippingSection extends Component {\n static displayName = ShippingSection.name;\n\n constructor (props) {\n super(props);\n this.state = {\n showState: false,\n stateRequired: false,\n stateLabel: 'County',\n postCodeLabel: 'Postal Code',\n hideAddress: true,\n };\n this.countryChange = this.countryChange.bind(this);\n this.handleAddressVisibility = this.handleAddressVisibility.bind(this);\n }\n\n countryChange(event) {\n event.preventDefault();\n switch(event.target.value) {\n case 'us':\n this.setState({\n showState: true,\n stateRequired: true,\n stateLabel: 'State',\n postCodeLabel: 'ZIP'\n });\n break;\n case 'gb':\n this.setState({\n showState: true,\n stateRequired: false,\n stateLabel: 'County',\n postCodeLabel: 'Postcode'\n });\n break;\n default:\n this.setState({\n showState: false,\n stateRequired: false,\n stateLabel: 'County',\n postCodeLabel: 'Postal Code'\n });\n }\n this.props.handleChange(event);\n }\n\n handleAddressVisibility(event) {\n this.setState({\n hideAddress: event.target.checked,\n });\n this.props.handleChange(event);\n }\n\n\n render() {\n return (\n \n

2. Shipping Address

\n\n
\n \n \n
\n\n \n

We will ship your order to the following address

\n\n {\n !this.state.hideAddress &&\n
\n
\n
\n \n \n
\n Valid first name is required.\n
\n
\n
\n \n \n
\n Valid last name is required.\n
\n
\n
\n\n
\n \n \n
\n Please enter your shipping address.\n
\n
\n\n
\n \n \n
\n Please enter your shipping city.\n
\n
\n\n
\n
\n \n \n
\n Please select a valid country.\n
\n
\n
\n \n \n
\n
\n \n \n
\n Postcode is required.\n
\n
\n
\n
\n }\n
\n
\n );\n }\n}","import React, { Fragment, Component } from 'react';\nimport { TabContent, TabPane, Nav, NavItem, NavLink, Row, Col } from 'reactstrap';\nimport { CardElement, IbanElement, IdealBankElement } from 'react-stripe-elements';\nimport './PaymentSection.css';\n\nexport class PaymentSection extends Component {\n static displayName = PaymentSection.name;\n \n constructor (props) {\n super(props);\n this.state = {\n activePaymentTab: PaymentSection.paymentMethods.card.id\n };\n this.props.paymentMethodTypeChange(PaymentSection.paymentMethods.card.id);\n this.getTabClassNames = this.getTabClassNames.bind(this);\n this.setActiveTab = this.setActiveTab.bind(this);\n this.changeTab = this.changeTab.bind(this);\n //showPaymentMethods(this.props.paymentCountry);\n }\n\n componentDidUpdate(prevProps) {\n //reset the tabs to show the first one when country changes\n //card tab is always first and visiable\n \n //TODO\n //this causes the component to be rendered twice, first when the props changes and after this func, \n //it will setstate and get the component to render again\n if (this.props.paymentCountry !== prevProps.paymentCountry) {\n this.changeTab(PaymentSection.paymentMethods.card.id)\n }\n } \n\n getTabClassNames(paymentMethodId, country) {\n //we always want to show the card payment tab for all countries\n if(paymentMethodId !== PaymentSection.paymentMethods.card.id &&\n (!country || country.length <= 0 ||\n !PaymentSection.paymentMethods[paymentMethodId].countries.includes(country.toUpperCase()))) {\n return 'd-none';\n }\n else if(this.state.activePaymentTab === paymentMethodId) {\n return 'active';\n }\n return '';\n }\n\n getTabPaneClassNames(paymentMethodId, country) {\n if(paymentMethodId !== PaymentSection.paymentMethods.card.id &&\n (!country || country.length <= 0 ||\n !PaymentSection.paymentMethods[paymentMethodId].countries.includes(country.toUpperCase()))) {\n return 'd-none';\n }\n return '';\n }\n\n setActiveTab(event) {\n event.preventDefault();\n this.changeTab(event.target.dataset.tab);\n }\n\n changeTab(paymentMethodId) {\n this.setState({\n activePaymentTab: paymentMethodId\n });\n this.props.paymentMethodTypeChange(paymentMethodId);\n }\n\n render() {\n const country = this.props.paymentCountry;\n\n return (\n
\n

3. Payment Method

\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n By providing your IBAN and confirming this payment, you’re authorizing Payments Demo and Stripe, our payment provider, to send instructions to your bank to debit your account. You’re entitled to a refund under the terms and conditions of your agreement with your bank.\n
\n \n
\n
\n \n \n \n \n
\n You’ll be redirected to the banking site to complete your payment.\n
\n \n
\n
\n \n \n \n

You have selected WeChat Pay as a payment method.

\n

When placing your order, you will be redirected and a WeChat QR code will be generated to complete your purchase.

\n \n
\n
\n \n \n \n

You have selected AliPay as a payment method.

\n

When placing your order, you will be redirected to the AliPay payment page. Once you have completed the payment, you will be redirected back to Flair to confirm your order.

\n \n
\n
\n
\n
\n );\n return (\n \n

3. Payment

\n \n
\n
\n \n
\n
\n
\n
\n \n
\n

By providing your IBAN and confirming this payment, you’re authorizing Payments Demo and Stripe, our payment\n provider, to send instructions to your bank to debit your account. You’re entitled to a refund under the terms\n and conditions of your agreement with your bank.

\n
\n
\n
\n \n
\n
\n
\n

You’ll be redirected to the banking site to complete your payment.

\n
\n
\n

Payment information will be provided after you place the order.

\n
\n
\n
\n

Click the button below to generate a QR code for WeChat.

\n
\n
\n );\n }\n\n static elementStyle = {\n base: {\n iconColor: '#666ee8',\n color: '#495057',//'#31325f',\n fontWeight: 400,\n fontFamily:\n '\"Open Sans\", sans-serif',\n //'-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif',\n fontSmoothing: 'antialiased',\n fontSize: '16px',\n '::placeholder': {\n color: '#999',\n },\n ':-webkit-autofill': {\n color: '#666ee8',\n },\n },\n invalid: {\n color: '#fa755a',\n iconColor: '#fa755a'\n }\n };\n static idealElementStyle = {\n base: Object.assign({padding: '8px 15px'}, PaymentSection.elementStyle.base),\n invalid: PaymentSection.elementStyle.invalid\n };\n\n /*\n {\n base: {\n color: '#32325d',\n fontFamily: '\"Helvetica Neue\", Helvetica, sans-serif',\n fontSmoothing: 'antialiased',\n fontSize: '16px',\n '::placeholder': {\n color: '#aab7c4'\n }\n },\n invalid: {\n color: '#fa755a',\n iconColor: '#fa755a'\n }\n }\n */\n\n \n\n // List of relevant countries for the payment methods supported in this demo.\n // Read the Stripe guide: https://stripe.com/payments/payment-methods-guide\n static paymentMethods = {\n ach_credit_transfer: {\n id: 'ach_credit_transfer',\n name: 'Bank Transfer',\n flow: 'receiver',\n countries: ['US'],\n currencies: ['usd'],\n },\n alipay: {\n id: 'alipay',\n name: 'Alipay',\n flow: 'redirect',\n countries: ['CN', 'HK', 'SG', 'JP', 'GB'],\n currencies: [\n 'aud',\n 'cad',\n 'eur',\n 'gbp',\n 'hkd',\n 'jpy',\n 'nzd',\n 'sgd',\n 'usd',\n ],\n },\n bancontact: {\n id: 'bancontact',\n name: 'Bancontact',\n flow: 'redirect',\n countries: ['BE'],\n currencies: ['eur'],\n },\n card: {\n id: 'card',\n name: 'Card',\n flow: 'none',\n },\n eps: {\n id: 'eps',\n name: 'EPS',\n flow: 'redirect',\n countries: ['AT'],\n currencies: ['eur'],\n },\n ideal: {\n id: 'ideal',\n name: 'iDEAL',\n flow: 'redirect',\n countries: ['NL'],\n currencies: ['eur'],\n },\n giropay: {\n id: 'giropay',\n name: 'Giropay',\n flow: 'redirect',\n countries: ['DE'],\n currencies: ['eur'],\n },\n multibanco: {\n id: 'multibanco',\n name: 'Multibanco',\n flow: 'receiver',\n countries: ['PT'],\n currencies: ['eur'],\n },\n sepa_debit: {\n id: 'sepa_debit',\n name: 'SEPA Direct Debit',\n flow: 'none',\n countries: [\n 'FR',\n 'DE',\n 'ES',\n 'BE',\n 'NL',\n 'LU',\n 'IT',\n 'PT',\n 'AT',\n 'IE',\n 'FI',\n ],\n currencies: ['eur'],\n },\n sofort: {\n id: 'sofort',\n name: 'SOFORT',\n flow: 'redirect',\n countries: ['DE', 'AT'],\n currencies: ['eur'],\n },\n wechat: {\n id: 'wechat',\n name: 'WeChat',\n flow: 'none',\n countries: ['CN', 'HK', 'SG', 'JP', 'GB'],\n currencies: [\n 'aud',\n 'cad',\n 'eur',\n 'gbp',\n 'hkd',\n 'jpy',\n 'nzd',\n 'sgd',\n 'usd',\n ],\n },\n };\n\n}","import React from 'react';\nimport { Link } from 'react-router-dom';\n\nexport function CheckoutSideSummary(props) {\n const { basket, processing } = props;\n\n let content = basket.basketItemsGroups.map((group) =>\n
  • \n
      \n
    • \n By {group.designer.brandTitle}\n
    • \n {\n group.basketItems.map((item) =>\n
    • \n
      \n {item.quantity} x {item.product.title}\n
      \n {item.product.unitPriceCurrency}\n {item.sizeVariantTitle}\n
      \n
      \n {item.totalCostCurrency}\n
    • \n )\n }\n
    • \n
      \n Shipping\n
      \n {group.designerShippingCostCurrency}\n
    • \n
    \n
  • \n );\n\n\n return (\n
    \n

    Your Bag ({basket.totalItems})

    \n
      \n {content}\n
    • \n
      Total cost
      \n
      {basket.totalCostCurrency}
      \n
    • \n
    \n
    \n \n
    \n By placing your order, you agree to our Terms & Conditions, Privacy and Returns policies. You also consent to your data being stored with Flair and your shipping address to be shared with the designer(s) solely for delivery purposes.\n
    \n
    \n
    \n );\n}\n\n","import React, { Fragment } from 'react';\nimport { BasketItemsGroup } from '../basket/BasketItemsGroup';\n\nexport function BasketDetails(props) {\n const basket = props.basket;\n\n let content = basket.basketItemsGroups.map((group) =>\n \n );\n\n return (\n \n

    4. Review Your Bag

    \n {content}\n
    \n
    \n Total cost\n
    \n
    \n {basket.totalCostCurrency}\n
    \n
    \n
    \n );\n}\n\n","import basketService from '../api/BasketService';\nimport authService from '../api-authorization/AuthorizeService';\n\nexport class CheckoutService {\n\n async fetchCheckoutData() {\n const localbasket = await basketService.getLocalBasket();\n const token = await authService.getAccessToken();\n \n if(!token && (!localbasket || !localbasket.basketId)) {\n //no local basket or logged in user\n return null;\n }\n \n let reqHeader = {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache'\n };\n if(token) {\n reqHeader['Authorization'] = `Bearer ${token}`;\n }\n \n const response = await fetch('/api/checkout', {\n method: 'post',\n headers: reqHeader,\n body: JSON.stringify(!localbasket ? {} : localbasket)\n });\n \n const data = await response.json();\n console.log(data);\n basketService.updateLocalBasket(data.basket.localBasket);\n return data;\n }\n\n async initiateCheckoutOrder(orderData) {\n if(!orderData) return;\n \n const token = await authService.getAccessToken();\n \n let reqHeader = {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache'\n };\n if(token) {\n reqHeader['Authorization'] = `Bearer ${token}`;\n }\n \n const response = await fetch('/api/checkout/initiate-checkout-order', {\n method: 'post',\n headers: reqHeader,\n body: JSON.stringify(!orderData ? {} : orderData)\n });\n \n try {\n const data = await response.json();\n console.log(data);\n return data;\n } catch (e) {\n console.log(e);\n return null;\n }\n }\n \n async finishCheckoutOrder(orderId) {\n if(!orderId) return;\n \n const token = await authService.getAccessToken();\n \n let reqHeader = {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache'\n };\n if(token) {\n reqHeader['Authorization'] = `Bearer ${token}`;\n }\n \n const response = await fetch('/api/checkout/finish-checkout-order', {\n method: 'post',\n headers: reqHeader,\n body: JSON.stringify({ orderId: orderId })\n });\n \n const data = await response.json();\n console.log(data);\n return data;\n } \n\n async getCheckoutOrderPaymentIntent(orderId, paymentIntentId) {\n if(!orderId || !paymentIntentId) return;\n \n const token = await authService.getAccessToken();\n \n let reqHeader = {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache'\n };\n if(token) {\n reqHeader['Authorization'] = `Bearer ${token}`;\n }\n \n const response = await fetch(`/api/checkout/payment/${orderId}/${paymentIntentId}/status`, {\n method: 'get',\n headers: reqHeader\n });\n \n const data = await response.json();\n console.log(data);\n return data;\n } \n\n async getCheckoutCompleteStatus(orderId) {\n if(!orderId) return;\n \n const token = await authService.getAccessToken();\n \n let reqHeader = {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache'\n };\n if(token) {\n reqHeader['Authorization'] = `Bearer ${token}`;\n }\n \n const response = await fetch(`/api/checkout/complete/${orderId}/status`, {\n method: 'get',\n headers: reqHeader\n });\n \n const data = await response.json();\n console.log(data);\n return data;\n } \n\n static get instance() { return checkoutService }\n}\n\nconst checkoutService = new CheckoutService();\n\nexport default checkoutService;\n","import React, { Component, Fragment } from 'react';\nimport { Redirect, Link } from 'react-router-dom';\nimport { Meta } from \"../layout-components/Meta\";\n\nimport {injectStripe} from 'react-stripe-elements';\nimport { BillingSection } from './BillingSection';\nimport { ShippingSection } from './ShippingSection';\nimport { PaymentSection } from './PaymentSection';\nimport { CheckoutSideSummary } from './CheckoutSideSummary';\nimport { BasketDetails } from './BasketDetails';\n\nimport checkoutService from '../api/CheckoutService';\n\nimport './CheckoutPage.css';\n\nclass CheckoutForm extends Component {\n static displayName = CheckoutForm.name;\n\n constructor (props) {\n super(props);\n this.state = {\n pageProcessStatus: CheckoutForm.pageProcessStatus.notReady,\n error: null,\n checkout: null,\n order: null,\n completeUrl: null,\n paymentCountry: null,\n paymentMethodType: null,\n orderInput: {\n basket: null,\n stripePaymentIntentId: null,\n stripePaymentIntentClientSecret: null,\n emailAddress: null,\n phoneNumber: null,\n shippingAddress: {\n firstName: null,\n lastName: null,\n address: null,\n city: null,\n state: null,\n postCode: null,\n country: null,\n sameAddressAsBilling: true,\n },\n billingAddress: {\n firstName: null,\n lastName: null,\n address: null,\n city: null,\n state: null,\n postCode: null,\n country: null,\n }\n }\n };\n this.fetchCheckoutData = this.fetchCheckoutData.bind(this);\n this.billingCountryChange = this.billingCountryChange.bind(this);\n this.handleBillingChange = this.handleBillingChange.bind(this);\n this.handleShippingChange = this.handleShippingChange.bind(this);\n this.paymentMethodTypeChange = this.paymentMethodTypeChange.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handlePaymentIntentResult = this.handlePaymentIntentResult.bind(this);\n this.handlePaymentSourceActiviation = this.handlePaymentSourceActiviation.bind(this);\n this.populateOrderData = this.populateOrderData.bind(this);\n\n this.startProcess = this.startProcess.bind(this);\n this.endProcess = this.endProcess.bind(this);\n this.setError = this.setError.bind(this);\n this.redirectToNextStep = this.redirectToNextStep.bind(this);\n\n this.getErrorMessage = this.getErrorMessage.bind(this);\n }\n\n startProcess() {\n this.setState({\n pageProcessStatus: CheckoutForm.pageProcessStatus.processing,\n error: null\n })\n }\n endProcess() {\n this.setState({\n pageProcessStatus: CheckoutForm.pageProcessStatus.pageReady,\n })\n }\n\n setError(error) {\n this.setState({\n error: error\n })\n }\n\n redirectToNextStep(completeUrl) {\n this.setState({\n pageProcessStatus: CheckoutForm.pageProcessStatus.complete,\n completeUrl: completeUrl\n })\n }\n\n componentDidMount() {\n if (!this.props.stripe || !this.props.elements) {\n this.setError('Problem: payment gateway hasn\\'t loaded yet. Refresh the page');\n this.endProcess();\n return;\n }\n\n this.fetchCheckoutData();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if(this.state.error !== prevState.error &&\n this.state.error && this.state.error.length > 0) {\n console.log('scroll up');\n setTimeout(function() { \n window.scrollTo({\n top: 0,\n behavior: \"smooth\"\n });\n }, 500);\n }\n }\n\n\n\n billingCountryChange(country) {\n //if(!country || country.length <= 0) return;\n //console.log(country);\n this.setState({ paymentCountry: country });\n //\n }\n\n handleBillingChange(event) {\n event.preventDefault();\n const name = event.target.name;\n const value = event.target.value;\n const order = this.state.orderInput;\n switch(name) {\n case 'emailAddress':\n case 'phoneNumber':\n this.setState({\n orderInput: {\n ...order,\n [name]: value\n }\n });\n break;\n default:\n this.setState({\n orderInput: {\n ...order,\n billingAddress: {\n ...order.billingAddress,\n [name]: value\n }\n }\n });\n }\n }\n\n handleShippingChange(event) {\n //event.preventDefault();\n const name = event.target.name;\n const value = event.target.value;\n const order = this.state.orderInput;\n this.setState({\n orderInput: {\n ...order,\n shippingAddress: {\n ...order.shippingAddress,\n [name]: value\n }\n }\n });\n }\n\n paymentMethodTypeChange(type) {\n this.setState({ paymentMethodType: type });\n }\n\n getProcessingUrl(orderId, query) {\n return `/checkout/processing/${orderId}${query ? query : ''}`;\n }\n\n\n getErrorMessage() {\n if(!this.state.error || this.state.error.length <= 0)\n return;\n let message;\n if(this.state.error) {\n message = (\n \n
    \n

    {this.state.error}

    \n
    \n );\n }\n return (\n
    \n \n

    Oh no!

    \n

    There was an error when processing your order. Please check your information and try again.

    \n

    If this continues please get in touch with us to see how we can help resolve the issue. {process.env.REACT_APP_CONTACT_EMAIL} or WhatsApp message on {process.env.REACT_APP_CONTACT_PHONENUMBER_DISPLAY}

    \n {message}\n
    \n );\n }\n\n\n\n render() {\n if (this.state.pageProcessStatus === CheckoutForm.pageProcessStatus.notReady)\n return (\n

    Loading...

    \n );\n\n if (this.state.pageProcessStatus === CheckoutForm.pageProcessStatus.complete)\n return (\n \n );\n \n const checkout = this.state.checkout;\n\n if(!checkout || !checkout.basket || !checkout.basket.basketItemsGroups)\n return (\n

    No items!

    \n );\n\n const errorMessage = this.getErrorMessage();\n const processing = this.state.pageProcessStatus === CheckoutForm.pageProcessStatus.processing;\n\n return (\n
    \n\n \n\n
    \n\n

    Checkout

    \n\n {errorMessage}\n\n
    \n\n
    \n \n
    \n\n
    \n\n
    \n Almost there...!\n
    \n\n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n\n
    \n
    \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n By placing your order, you agree to our Terms & Conditions, Privacy and Returns policies. You also consent to your data being stored with Flair and your shipping address to be shared with the designer(s) solely for delivery purposes.\n
    \n
    \n\n
    \n
    \n
    \n\n
    \n );\n }\n\n \n\n async fetchCheckoutData() {\n const data = await checkoutService.fetchCheckoutData();\n if(data === null) {\n this.setState({ \n pageProcessStatus: CheckoutForm.pageProcessStatus.pageReady,\n checkout: null\n });\n } else {\n console.log(data);\n const order = this.state.orderInput;\n this.setState({ \n pageProcessStatus: CheckoutForm.pageProcessStatus.pageReady,\n checkout: data,\n orderInput: {\n ...order,\n basket: data.basket.localBasket,\n stripePaymentIntentId: data.stripePaymentIntentId,\n stripePaymentIntentClientSecret: data.stripePaymentIntentClientSecret\n }\n });\n }\n }\n\n\n\n\n async handleSubmit(event) {\n event.preventDefault();\n\n const { checkout } = this.state;\n const { stripe, elements } = this.props;\n\n if (!stripe || !elements) {\n this.setError('Problem: payment gateway hasn\\'t loaded yet.');\n this.endProcess();\n return;\n }\n\n if(this.state.pageProcessStatus !== CheckoutForm.pageProcessStatus.pageReady) return;\n\n if(!checkout.stripePaymentIntentClientSecret) {\n this.setError('Problem: payment intent secret is not available.');\n this.endProcess();\n return;\n }\n\n this.startProcess();\n\n const orderData = this.populateOrderData();\n\n const fullname = orderData.billingAddress.firstName + ' ' + \n orderData.billingAddress.lastName;\n\n \n const order = this.state.order ? this.state.order :\n await checkoutService.initiateCheckoutOrder(orderData);\n if(order === null) {\n this.setError('Order failed');\n this.endProcess();\n return;\n } else if(order.errors) {\n this.setError(`Order failed: ${order.errors}`);\n this.endProcess();\n return;\n } else {\n this.setState({\n order: order,\n });\n }\n\n const processingUrl = this.getProcessingUrl(order.id, `?paymentIntent=${orderData.stripePaymentIntentId}`);\n\n if(this.state.paymentMethodType === PaymentSection.paymentMethods.card.id) {\n // Confirm the PaymentIntent with the card Element.\n this.props.stripe\n .confirmCardPayment(\n this.state.checkout.stripePaymentIntentClientSecret, \n {\n payment_method: {\n card: this.props.elements.getElement(PaymentSection.paymentMethods.card.id),\n billing_details: {\n name: fullname,\n },\n },\n }\n )\n .then((response) => {\n this.handlePaymentIntentResult(response, order, processingUrl);\n });\n return;\n } \n else if (this.state.paymentMethodType === PaymentSection.paymentMethods.sepa_debit.id) {\n // Confirm the PaymentIntent with the IBAN Element.\n this.props.stripe\n .confirmSepaDebitPayment(\n this.state.checkout.stripePaymentIntentClientSecret,\n {\n payment_method: {\n sepa_debit: this.props.elements.getElement(PaymentSection.paymentMethods.sepa_debit.id),\n billing_details: {\n name: fullname,\n email: orderData.emailAddress,\n },\n },\n }\n )\n .then((response) => {\n this.handlePaymentIntentResult(response, order, processingUrl);\n });\n return;\n }\n else if (this.state.paymentMethodType === PaymentSection.paymentMethods.ideal.id) {\n // Confirm the PaymentIntent with the iDEAL Element.\n this.props.stripe\n .confirmIdealPayment(\n this.state.checkout.stripePaymentIntentClientSecret,\n {\n payment_method: {\n ideal: this.props.elements.getElement(PaymentSection.paymentMethods.ideal.id),\n },\n return_url: CheckoutForm.domainUrl + processingUrl,\n }\n )\n .then((response) => {\n if (response.error) {\n //TODO\n // Inform the customer that there was an error.\n this.setError(`Order failed: ${response.error}`);\n this.endProcess();\n return;\n }\n });\n return;\n } \n else if (this.state.paymentMethodType === PaymentSection.paymentMethods.alipay.id) {\n this.props.stripe\n .confirmAlipayPayment(\n this.state.checkout.stripePaymentIntentClientSecret,\n {\n payment_method: {\n billing_details: {\n name: fullname,\n email: orderData.emailAddress,\n },\n },\n return_url: CheckoutForm.domainUrl + processingUrl,\n }\n ).then((response) => {\n this.handlePaymentIntentResult(response, order, processingUrl);\n });\n return;\n }\n else {\n // Prepare all the Stripe source common data.\n\n const sourceData = {\n type: this.state.paymentMethodType,\n //TODO\n //\"amount\" and \"currency\" should be changed to be retrived as part of the checkout object from backend\n amount: this.state.checkout.basket.totalCost * 100,\n currency: 'gbp',\n owner: {\n name: fullname,\n email: orderData.emailAddress,\n },\n redirect: {\n return_url: CheckoutForm.domainUrl + processingUrl,\n },\n //TODO\n //THIS SHOULD COME FROM A CONFIG FILE\n statement_descriptor: process.env.REACT_APP_STRIPE_STATEMENT_DESCRIPTOR,\n metadata: {\n paymentIntent: orderData.stripePaymentIntentId\n }\n };\n\n switch (this.state.paymentMethodType) {\n case PaymentSection.paymentMethods.sofort.id:\n // SOFORT: The country is required before redirecting to the bank.\n sourceData.sofort = {\n //TODO\n //IMPORTANT\n //this needs to come from config or backend\n country: 'GB',\n };\n break;\n case 'ach_credit_transfer':\n // ACH Bank Transfer: Only supports USD payments, edit the default config to try it.\n // In test mode, we can set the funds to be received via the owner email.\n //TODO\n //CHECK THIS AND TEST\n sourceData.owner.email = `amount_${sourceData.amount}@example.com`;\n break;\n }\n \n // Create a Stripe source with the common data and extra information.\n this.props.stripe\n .createSource(sourceData)\n .then((response) => {\n //console.log('[source]', payload);\n this.handlePaymentSourceActiviation(response, order, orderData.stripePaymentIntentId);\n }); \n }\n }\n\n\n populateOrderData() {\n const order = this.state.orderInput;\n if(order.shippingAddress.sameAddressAsBilling) {\n order.shippingAddress.firstName = order.billingAddress.firstName;\n order.shippingAddress.lastName = order.billingAddress.lastName;\n order.shippingAddress.address = order.billingAddress.address;\n order.shippingAddress.city = order.billingAddress.city;\n order.shippingAddress.state = order.billingAddress.state;\n order.shippingAddress.postCode = order.billingAddress.postCode;\n order.shippingAddress.country = order.billingAddress.country;\n }\n return order;\n }\n\n\n\n // Handle new PaymentIntent result\n async handlePaymentIntentResult(paymentResponse, order, completeUrl) {\n const {paymentIntent, error} = paymentResponse;\n if (error) {\n this.setError(`Payment failed: ${error.message}`);\n this.endProcess();\n console.log('[error]', error);\n return;\n } else if(paymentIntent.status === 'succeeded'||\n paymentIntent.status === 'processing') {\n console.log('[PaymentIntent]', paymentIntent);\n if(await this.finishCheckoutOrder(order.id)) {\n console.log('REDIRECT');\n this.redirectToNextStep(completeUrl);\n return;\n }\n }\n this.setError('Payment failed');\n this.endProcess();\n }\n\n // Handle activation of payment sources not yet supported by PaymentIntents\n async handlePaymentSourceActiviation(sourceResponse, order, stripePaymentIntentId) {\n const {source, error} = sourceResponse;\n if (error) {\n this.setError(`Payment failed: ${error.message}`);\n this.endProcess();\n console.log('[error]', error);\n return;\n }\n\n if(!await this.finishCheckoutOrder(order.id)) {\n this.setError('Error finishing the checkout');\n this.endProcess();\n return;\n }\n\n const progressingUrl = this.getProcessingUrl(order.id, `?source=${source.id}&client_secret=${source.client_secret}&paymentIntent=${stripePaymentIntentId}`);\n\n switch (source.flow) {\n case 'none':\n // Normally, sources with a `flow` value of `none` are chargeable right away,\n // but there are exceptions, for instance for WeChat QR codes just below.\n if (source.type === 'wechat') {\n this.redirectToNextStep(progressingUrl);\n\n /*\n // Display the QR code.\n const qrCode = new QRCode('wechat-qrcode', {\n text: source.wechat.qr_code_url,\n width: 128,\n height: 128,\n colorDark: '#424770',\n colorLight: '#f8fbfd',\n correctLevel: QRCode.CorrectLevel.H,\n });\n // Hide the previous text and update the call to action.\n form.querySelector('.payment-info.wechat p').style.display = 'none';\n let amount = store.formatPrice(\n store.getPaymentTotal(),\n config.currency\n );\n submitButton.textContent = `Scan this QR code on WeChat to pay ${amount}`;\n // Start polling the PaymentIntent status.\n pollPaymentIntentStatus(paymentIntent.id, 300000);\n */\n } else {\n console.log('Unhandled none flow.', source);\n }\n break;\n case 'redirect':\n // Immediately redirect the customer.\n //submitButton.textContent = 'Redirecting…';\n window.location.replace(source.redirect.url);\n //this.redirectToNextStep(source.redirect.url);\n break;\n case 'code_verification':\n // Display a code verification input to verify the source.\n break;\n case 'receiver':\n // Display the receiver address to send the funds to.\n /*\n mainElement.classList.add('success', 'receiver');\n const receiverInfo = confirmationElement.querySelector(\n '.receiver .info'\n );\n let amount = store.formatPrice(source.amount, config.currency);\n switch (source.type) {\n case 'ach_credit_transfer':\n // Display the ACH Bank Transfer information to the user.\n const ach = source.ach_credit_transfer;\n receiverInfo.innerHTML = `\n
      \n
    • \n Amount:\n ${amount}\n
    • \n
    • \n Bank Name:\n ${ach.bank_name}\n
    • \n
    • \n Account Number:\n ${ach.account_number}\n
    • \n
    • \n Routing Number:\n ${ach.routing_number}\n
    • \n
    `;\n break;\n case 'multibanco':\n // Display the Multibanco payment information to the user.\n const multibanco = source.multibanco;\n receiverInfo.innerHTML = `\n
      \n
    • \n Amount (Montante):\n ${amount}\n
    • \n
    • \n Entity (Entidade):\n ${multibanco.entity}\n
    • \n
    • \n Reference (Referencia):\n ${multibanco.reference}\n
    • \n
    `;\n break;\n default:\n console.log('Unhandled receiver flow.', source);\n }\n // Poll the PaymentIntent status.\n pollPaymentIntentStatus(paymentIntent.id);\n */\n break;\n default:\n // Customer's PaymentIntent is received, pending payment confirmation.\n break;\n }\n }\n\n async finishCheckoutOrder(orderId) {\n const completedOrder = await checkoutService.finishCheckoutOrder(orderId);\n console.log(completedOrder);\n //REDIRECT USER TO CHECKOUT COMPLETE\n return completedOrder.complete;\n }\n\n static domainUrl = process.env.REACT_APP_URL_DEFAULT_DOMAIN;\n\n static pageProcessStatus = {\n notReady: 0,\n pageReady: 1,\n processing: 2,\n complete: 4\n }\n}\n\n\nexport default injectStripe(CheckoutForm);\n","import React, { Component } from 'react';\nimport {StripeProvider,Elements} from 'react-stripe-elements';\nimport { Meta } from \"../layout-components/Meta\";\nimport CheckoutForm from './CheckoutForm'\n\nexport class CheckoutPage extends Component {\n static displayName = CheckoutPage.name;\n\n constructor () {\n super();\n this.state = {stripe: null};\n }\n\n componentDidMount() {\n if (window.Stripe) {\n this.setState({stripe: window.Stripe(process.env.REACT_APP_STRIPE_API_PUBLIC_KEY)});\n } else {\n const stripeJs = document.createElement('script');\n stripeJs.src = 'https://js.stripe.com/v3/';\n stripeJs.async = true;\n stripeJs.onload = () => {\n //TODO\n // The setTimeout lets us pretend that Stripe.js took a long time to load\n // Take it out of your production code!\n setTimeout(() => {\n this.setState({\n stripe: window.Stripe(process.env.REACT_APP_STRIPE_API_PUBLIC_KEY),\n });\n }, 500);\n };\n document.body && document.body.appendChild(stripeJs);\n }\n }\n\n\n render() {\n if(!this.state.stripe)\n return (\n

    Loading...

    \n );\n\n return (\n \n \n \n \n \n );\n }\n}\n","import React from 'react';\nimport QRCode from 'qrcode.react';\nimport { Player, Controls } from '@lottiefiles/react-lottie-player';\nimport './CheckoutProcessingWeChat.css';\n\nexport function CheckoutProcessingWeChat(props) {\n const { url, orderId } = props;\n\n const isMobile = ((/Android|iPhone|iPad|Opera Mini/i.test(navigator.userAgent) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints && navigator.maxTouchPoints > 1)) \n && !window.MSStream);\n\n return (\n
    \n
    \n
    \n
    \n
    \n \n \n \n
    \n

    Scan to complete your purchase with WeChat Pay

    \n

    Order # {orderId}

    \n

    Please scan this QR code on your phone {isMobile === true ? ' or click the button ' : '' } to complete the purchase and pay with WeChat. The page will automatically redirect once the payment has been received from WeChat, please keep it open until you finish

    \n {\n isMobile === true &&\n \n }\n
    \n
    \n
    \n \n
    \n
    \n
    \n );\n}\n\n","import React, { Component, Fragment } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { CheckoutProcessingWeChat } from './CheckoutProcessingWeChat'\n\nimport checkoutService from '../api/CheckoutService';\nimport qs from 'qs';\n\nexport class CheckoutProcessingPage extends Component {\n static displayName = CheckoutProcessingPage.name;\n\n constructor (props) {\n super(props);\n this.timer = null;\n const query = qs.parse(props.location.search, {\n ignoreQueryPrefix: true\n })\n const { orderId } = this.props.match.params\n this.state = {\n stripe: null,\n orderId: orderId,\n sourceId: query.source,\n source: null,\n client_secret: query.client_secret,\n paymentIntentId: query.paymentIntent,\n pageProcessStatus: CheckoutProcessingPage.pageProcessStatus.processing,\n error: null,\n order: null,\n completeUrl: null,\n };\n this.start = this.start.bind(this);\n this.processPaymentSource = this.processPaymentSource.bind(this);\n this.redirectToNextStep = this.redirectToNextStep.bind(this);\n this.handlePaymentIntentResult = this.handlePaymentIntentResult.bind(this);\n this.pollPaymentIntentStatus = this.pollPaymentIntentStatus.bind(this);\n }\n\n componentDidMount() {\n this._mounted = true;\n if (window.Stripe) {\n //TODO\n //CHANGE THE KEY FOR THE LIVE SITE\n this.setState({stripe: window.Stripe(process.env.REACT_APP_STRIPE_API_PUBLIC_KEY)}, function () {\n this.start();\n });\n }\n else {\n const stripeJs = document.createElement('script');\n stripeJs.src = 'https://js.stripe.com/v3/';\n stripeJs.async = true;\n stripeJs.onload = () => {\n //TODO\n // The setTimeout lets us pretend that Stripe.js took a long time to load\n // Take it out of your production code!\n setTimeout(() => {\n this.setState({\n //TODO\n //CHANGE THE KEY FOR THE LIVE SITE\n stripe: window.Stripe(process.env.REACT_APP_STRIPE_API_PUBLIC_KEY),\n });\n this.start();\n }, 500);\n };\n document.body && document.body.appendChild(stripeJs);\n }\n }\n \n componentWillUnmount() {\n this._mounted = false;\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n\n start() {\n const { sourceId, client_secret, paymentIntentId, orderId } = this.state;\n\n if(paymentIntentId) {\n if (sourceId && client_secret) {\n this.processPaymentSource(sourceId, client_secret, paymentIntentId);\n } else {\n // Poll the PaymentIntent status.\n this.pollPaymentIntentStatus(paymentIntentId, orderId);\n }\n }\n else {\n console.log('FAILED TO START PROCESS PAYMENT, redirecting to home')\n this.redirectToNextStep('/');\n } \n }\n\n async processPaymentSource(sourceId, client_secret, paymentIntentId) {\n const { stripe, orderId } = this.state;\n let sourceObj;\n try {\n const { source, error } = await stripe.retrieveSource({\n id: sourceId,\n client_secret: client_secret,\n });\n if(error) {\n console.log(error);\n throw new Error(\"failed\");\n }\n sourceObj = source;\n console.log(source);\n } catch (e) {\n //TODO\n //SHOW ERROR\n console.log(e);\n this.setError('Error retrieving source:' + e);\n }\n if(sourceObj) {\n this.setState({\n source: sourceObj\n });\n\n if(sourceObj.flow === 'none' && sourceObj.type === 'wechat') {\n // Poll the PaymentIntent status.\n console.log('processing wechat');\n this.pollPaymentIntentStatus(paymentIntentId, orderId, 300000);\n } else {\n // Poll the PaymentIntent status.\n console.log('processing redirect payments');\n this.pollPaymentIntentStatus(paymentIntentId, orderId);\n }\n } else {\n //TODO\n //SHOW ERROR\n this.setError('Payment source could not be found');\n }\n }\n\n\n\n async pollPaymentIntentStatus(paymentIntentId,\n orderId,\n timeout = 60000,\n interval = 1000,\n start = null) {\n if(!this._mounted) {\n return;\n }\n start = start ? start : Date.now();\n const endStates = ['checkoutcomplete', 'checkoutfailed'];\n // Retrieve the PaymentIntent status from our server.\n //const rawResponse = await fetch(`checkout/payment/${this.state.orderId}/${paymentIntentId}/status`);\n //const response = await rawResponse.json();\n console.log('Checking intent id: ' + paymentIntentId);\n const response = await checkoutService.getCheckoutOrderPaymentIntent(orderId, paymentIntentId)\n if(!response || !response.requestSuccess) {\n console.log('FAILED')\n //this.redirectToNextStep('/');\n //return;\n }\n if (!endStates.includes(response.payment.status) &&\n Date.now() < start + timeout) {\n // Not done yet. Let's wait and check again.\n this.timer = setTimeout(\n this.pollPaymentIntentStatus,\n interval,\n paymentIntentId,\n orderId,\n timeout,\n interval,\n start\n );\n }\n else {\n this.handlePaymentIntentResult(response.payment, orderId);\n if (!endStates.includes(response.payment.status)) {\n // Status has not changed yet. Let's time out.\n console.warn(new Error('Polling timed out.'));\n }\n }\n }\n\n\n // Handle new PaymentIntent result\n async handlePaymentIntentResult(paymentIntent, orderId) {\n if(paymentIntent.status === 'checkoutcomplete') {\n console.log('[PaymentIntent]', paymentIntent);\n //console.log(order);\n //REDIRECT USER TO CHECKOUT COMPLETE\n console.log('REDIRECT');\n this.redirectToNextStep(this.getCompleteUrl(orderId));\n } else if(paymentIntent.status === 'checkoutfailed') {\n console.log('REDIRECT');\n this.redirectToNextStep(this.getFailedUrl(orderId));\n //this.setError('Payment failed');\n } else {\n console.log('ERROR');\n this.setError('Payment failed or something went wrong.');\n }\n }\n\n\n redirectToNextStep(completeUrl) {\n this.setState({\n pageProcessStatus: CheckoutProcessingPage.pageProcessStatus.complete,\n completeUrl: completeUrl\n })\n }\n\n setError(error) {\n this.setState({\n error: error\n })\n }\n\n getCompleteUrl(orderId) {\n return `/checkout/complete/${orderId}`;\n }\n getFailedUrl(orderId) {\n return `/checkout/complete/${orderId}/failed`;\n }\n\n getErrorMessage() {\n if(!this.state.error || this.state.error.length <= 0)\n return;\n let message;\n if(this.state.error) {\n message = (\n \n
    \n

    {this.state.error}

    \n
    \n );\n }\n return (\n
    \n

    Oh no!

    \n

    There was an error when processing your order. Please check your information and try again.

    \n

    If this continues please get in touch with us to see how we can help resolve the issue. {process.env.REACT_APP_CONTACT_EMAIL} or WhatsApp message on {process.env.REACT_APP_CONTACT_PHONENUMBER_DISPLAY}.

    \n {message}\n \n
    \n );\n }\n\n\n\n render() {\n if (this.state.pageProcessStatus === CheckoutProcessingPage.pageProcessStatus.complete)\n return (\n \n );\n\n const { source } = this.state;\n let actionContent;\n\n if(source && source.flow === 'none' && source.type === 'wechat') {\n actionContent = ;\n } else {\n actionContent = (\n
    \n

    \n Processing your payment..\n

    \n

    Do not close this window

    \n
    \n );\n }\n\n const errorMessage = this.getErrorMessage();\n\n return (\n
    \n {errorMessage}\n {actionContent}\n
    \n\n );\n }\n\n static pageProcessStatus = {\n processing: 0,\n complete: 1,\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport { Player, Controls } from '@lottiefiles/react-lottie-player';\nimport { Redirect } from 'react-router-dom';\nimport { Meta } from \"../layout-components/Meta\";\n\nimport checkoutService from '../api/CheckoutService';\nimport './CheckoutCompletePage.css';\n\nexport class CheckoutCompletePage extends Component {\n static displayName = CheckoutCompletePage.name;\n\n constructor (props) {\n super(props);\n const { orderId } = this.props.match.params\n\n const search =this.props.location.search;\n const params = new URLSearchParams(search);\n\n this.state = {\n orderId: orderId,\n redirectStatus: params.get('redirect_status'),\n status: null, \n loading: true\n };\n this.player = React.createRef();\n this.freezeAnimLastFrame = this.freezeAnimLastFrame.bind(this);\n }\n\n componentDidMount() {\n this.fetchData(this.state.orderId);\n}\n\n getErrorMessage() {\n if(!this.state.error || this.state.error.length <= 0)\n return;\n let message;\n if(this.state.error) {\n message = (\n \n
    \n

    {this.state.error}

    \n
    \n );\n }\n return (\n
    \n

    Oh no!

    \n

    There was an error when processing your order. Please check your information and try again.

    \n

    If this continues please get in touch with us to see how we can help resolve the issue. {process.env.REACT_APP_CONTACT_EMAIL} or WhatsApp message on {process.env.REACT_APP_CONTACT_PHONENUMBER_DISPLAY}

    \n {message}\n \n
    \n );\n }\n\n render() {\n if (this.state.loading)\n return (\n

    Loading...

    \n );\n\n if (this.state.status === 'none')\n return (\n \n );\n\n const { status, redirectStatus } = this.state;\n\n let animUrl, animFrame, title, message;\n\n if(status === 'checkoutfailed' ||\n (status === 'checkoutprocess' && redirectStatus === 'failed')) {\n animUrl = 'https://assets10.lottiefiles.com/packages/lf20_imrP4H.json';\n animFrame = 60;\n title = 'The payment was unsuccessful';\n message = (\n
    \n Unfortunately there seems to be an issue with your payment and it has been declined. Please try again or get in touch with the team if you need any assistance. {process.env.REACT_APP_CONTACT_EMAIL} or WhatsApp message on {process.env.REACT_APP_CONTACT_PHONENUMBER_DISPLAY}.\n
    \n );\n } else {\n animUrl = 'https://assets8.lottiefiles.com/packages/lf20_sO9js3.json';\n animFrame = 47;\n title = 'Thank you for your order!';\n message = (\n
    \n We're very pleased that you've made a purchase from our talented designer(s). Your payment is now being processed and you will receive an email once it's been confirmed. In the meantime, share your experience and what you have bought from Flair #BoughtOnFlair\n
    \n );\n }\n\n\n return (\n
    \n \n {\n if (event === 'frame') this.freezeAnimLastFrame(animFrame);\n }} \n background=\"transparent\"\n src={animUrl}>\n \n \n

    {title}

    \n

    Order # {this.state.orderId}

    \n {message}\n

    Follow us on

    \n \n\n
    \n );\n }\n\n async fetchData(orderId) { \n const data = await checkoutService.getCheckoutCompleteStatus(orderId);\n if(data !== null && data.order) {\n this.setState({ \n status: data.order.status, \n loading: false\n });\n } else {\n this.setState({ \n status: 'none', \n loading: false\n });\n }\n }\n\n freezeAnimLastFrame(frame) {\n //bug in player, doesn't stop at last frame after the animation finished playing\n //https://github.com/LottieFiles/lottie-react/issues/9\n //this.player.current.pause();\n //this.player.current.setSeeker(frame, false);\n //console.log('pause');\n\n console.log(this.player.current.state.seeker);\n if (this.player.current.state.seeker >= frame-2) {\n console.log('pause');\n this.player.current.pause();\n }\n }\n}\n","import React, { Component } from 'react';\nimport authService from './api-authorization/AuthorizeService'\n\nexport class FetchData extends Component {\n static displayName = FetchData.name;\n\n constructor(props) {\n super(props);\n this.state = { forecasts: [], loading: true };\n }\n\n componentDidMount() {\n this.populateWeatherData();\n }\n\n static renderForecastsTable(forecasts) {\n return (\n \n \n \n \n \n \n \n \n \n \n {forecasts.map(forecast =>\n \n \n \n \n \n \n )}\n \n
    DateTemp. (C)Temp. (F)Summary
    {forecast.date}{forecast.temperatureC}{forecast.temperatureF}{forecast.summary}
    \n );\n }\n\n render() {\n let contents = this.state.loading\n ?

    Loading...

    \n : FetchData.renderForecastsTable(this.state.forecasts);\n\n return (\n
    \n

    Weather forecast

    \n

    This component demonstrates fetching data from the server.

    \n {contents}\n
    \n );\n }\n\n async populateWeatherData() {\n const token = await authService.getAccessToken();\n const response = await fetch('weatherforecast', {\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\n });\n const data = await response.json();\n this.setState({ forecasts: data, loading: false });\n }\n}\n","import React, { Component } from 'react';\n\nexport class Counter extends Component {\n static displayName = Counter.name;\n\n constructor(props) {\n super(props);\n this.state = { currentCount: 0 };\n this.incrementCounter = this.incrementCounter.bind(this);\n }\n\n incrementCounter() {\n this.setState({\n currentCount: this.state.currentCount + 1\n });\n }\n\n render() {\n return (\n
    \n

    Counter

    \n\n

    This is a simple example of a React component.

    \n\n

    Current count: {this.state.currentCount}

    \n\n \n
    \n );\n }\n}\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport './CategoriesSideListing.css';\n\nexport function CategoriesSideListing(props) {\n const { path, category } = props\n\n return (\n
    \n \n
    \n );\n}\n\n\nexport function CategoriesSideItem(props) {\n const { path, category } = props\n\n return (\n
    \n \n {category.title}\n \n {category.childrenCategories && category.childrenCategories.map(childCategory =>\n
    \n \n
    \n )}\n
    \n );\n}\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport './CategoriesSideListing.css';\n\nexport function DesignersSideListing(props) {\n let designers = props.designers;\n let categoryBaseUrl = props.categoryBaseUrl;\n\n let anyDesignerSelected = false;\n\n let content = designers.map((d) => {\n anyDesignerSelected = anyDesignerSelected || d.isSelected;\n return (\n
    \n \n {d.brandTitle}\n \n
    \n );\n });\n \n return (\n
    \n
    \n \n View All Designers\n \n
    \n {content}\n
    \n );\n}\n","import React, { Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Meta } from \"../layout-components/Meta\";\n\nexport function StoreCatalogueHeader(props) {\n\n let title, titleMeta, descriptionMeta;\n if(props.selectedCategory.id === props.rootCategory.id) {\n title = `All ${props.rootCategory.title}${props.selectedDesigner ? ` by ${props.selectedDesigner.brandTitle}` : ''}`;\n titleMeta = `Clothing, Bags, Accessories and Shoes for ${props.rootCategory.title}${props.selectedDesigner ? ` by ${props.selectedDesigner.brandTitle}` : ''}`;\n descriptionMeta = `Shop designer clothing, bags, accessories and shoes for ${props.rootCategory.title.toLowerCase()}${props.selectedDesigner ? ` by ${props.selectedDesigner.brandTitle}` : ''} on Flair.fashion. Shop from emerging designers who are at the forefront of innovation in design, sustainability and technology.`;\n } else {\n title = `${props.selectedCategory.title}${props.selectedDesigner ? ` by ${props.selectedDesigner.brandTitle}` : ''}`;\n titleMeta = `${props.selectedCategory.title}${props.selectedDesigner ? ` by ${props.selectedDesigner.brandTitle}` : ''}`;\n descriptionMeta = `Shop ${props.selectedCategory.title.toLowerCase()}${props.selectedDesigner ? ` by ${props.selectedDesigner.brandTitle}` : ''} on Flair.fashion. Shop from emerging designers who are at the forefront of innovation in design, sustainability and technology.`;\n }\n\n let description;\n if(props.selectedDesigner) {\n description = (\n View designer's page\n );\n }\n \n return (\n \n \n\n

    \n {title}\n

    \n

    \n {description}\n

    \n
    \n );\n}\n","import React, { Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport './StoreCataloguePaging.css';\n\nexport function StoreCataloguePaging(props) {\n let { paging, categoryBaseUrl, selectedDesigner } = props;\n\n if(paging.totalPages <= 1) {\n return ();\n }\n\n if(selectedDesigner) {\n categoryBaseUrl = categoryBaseUrl + '/designer/' + selectedDesigner.friendlyUrlName;\n }\n\n let content = [];\n for(var i=1; i<=paging.totalPages; i++) {\n content.push(\n
  • \n \n {i}\n {paging.currentPage === i &&\n (current)\n }\n \n
  • \n );\n }\n\n return (\n
    \n \n
    \n );\n}\n","import React, { Component } from 'react';\nimport { ProductsListing } from './ProductsListing';\nimport { CategoriesSideListing } from './CategoriesSideListing';\nimport { DesignersSideListing } from './DesignersSideListing';\nimport { StoreCatalogueHeader } from './StoreCatalogueHeader';\nimport { StoreCataloguePaging } from './StoreCataloguePaging';\n\nexport class StoreCataloguePage extends Component {\n static displayName = StoreCataloguePage.name;\n\n constructor(props) {\n super(props);\n this.state = { rootCategory: [], designers: [], products: [], loading: true, selectedDesigner: null, selectedCategory: null, paginationInfo: null };\n this.newData = this.newData.bind(this);\n this.getCategoryBaseUrl = this.getCategoryBaseUrl.bind(this);\n }\n\n componentDidMount() {\n this.newData();\n }\n\n componentWillReceiveProps(nextProps) {\n if(\n this.props.match.params.rootCategoryUrl !== nextProps.match.params.rootCategoryUrl ||\n this.props.match.params.child1CategoryUrl !== nextProps.match.params.child1CategoryUrl ||\n this.props.match.params.child2CategoryUrl !== nextProps.match.params.child2CategoryUrl ||\n this.props.match.params.child3CategoryUrl !== nextProps.match.params.child3CategoryUrl ||\n this.props.match.params.designerUrl !== nextProps.match.params.designerUrl ||\n this.props.match.params.pageNum !== nextProps.match.params.pageNum\n ) \n {\n this.props = nextProps;\n this.newData();\n }\n }\n \n newData() {\n console.log(this.props.match.params);\n const { rootCategoryUrl, child1CategoryUrl, child2CategoryUrl, child3CategoryUrl, designerUrl, pageNum } = this.props.match.params\n this.fetchData(rootCategoryUrl, child1CategoryUrl, child2CategoryUrl, child3CategoryUrl, designerUrl, pageNum); \n }\n\n getCategoryBaseUrl() {\n return '/' + this.props.match.params.rootCategoryUrl +\n (this.props.match.params.child1CategoryUrl ? '/' + this.props.match.params.child1CategoryUrl : '') +\n (this.props.match.params.child2CategoryUrl ? '/' + this.props.match.params.child2CategoryUrl : '') +\n (this.props.match.params.child3CategoryUrl ? '/' + this.props.match.params.child3CategoryUrl : '')\n }\n \n render() {\n if(this.state.loading) {\n return (\n

    Loading...

    \n );\n }\n let categoryBaseUrl = this.getCategoryBaseUrl();\n return (\n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n );\n }\n\n async fetchData(rootCategoryUrl, child1CategoryUrl, child2CategoryUrl, child3CategoryUrl, designerUrl, pageNum) {\n let url = rootCategoryUrl + '/';\n if(child1CategoryUrl) url += child1CategoryUrl + '/';\n if(child2CategoryUrl) url += child2CategoryUrl + '/';\n if(child3CategoryUrl) url += child3CategoryUrl + '/';\n\n let query = '';\n if(designerUrl) query += 'designerUrlName=' + designerUrl + '&';\n query += 'currentPage=' + (pageNum ? pageNum + '' : '1');\n\n const response = await fetch(`api/storecatalogue/${url}?${query}`, {\n });\n const data = await response.json();\n this.setState({ \n rootCategory: data.rootCategory,\n designers: data.designers,\n products: data.products, \n selectedDesigner: data.selectedDesigner, \n selectedCategory: data.selectedCategory,\n paginationInfo: data.paginationInfo,\n loading: false\n });\n }\n}\n","import React from 'react';\n\nexport function ProductGallery(props) {\n const { productId, gallery, title } = props;\n const content = gallery.map((media) =>\n \n );\n return (\n
    \n {content}\n
    \n );\n}\n\nfunction PropductGalleryItem(props) {\n const { productId, media, title } = props;\n if (media.type === 'video')\n return PropductGalleryItemVideo(productId, media, title);\n else\n return PropductGalleryItemPhoto(productId, media, title);\n}\n\nfunction PropductGalleryItemPhoto(productId, media, title) {\n return (\n
    \n \n \n \n
    \n );\n}\n\nfunction PropductGalleryItemVideo(productId, media, title) {\n return (\n
    \n \n
    \n );\n}\n","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Collapse, Button, Form, Input } from 'reactstrap';\nimport basketService from '../api/BasketService';\n\nexport class ProductAddToBasket extends Component {\n static displayName = ProductAddToBasket.name;\n\n constructor(props) {\n super(props);\n this.state = {\n product: props.product,\n selectedSizeId: '',\n buttonText: this.getButtonText(false),\n loading: false,\n showSuccessMessage: false\n };\n this.handleChange = this.handleChange.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.setButtonLoadingState = this.setButtonLoadingState.bind(this);\n }\n\n handleChange(e) {\n this.setState({ selectedSizeId: parseInt(e.target.value) });\n }\n\n async handleSubmit(e) {\n e.preventDefault();\n if (!this.state.selectedSizeId) {\n alert('Please select a size');\n return;\n }\n this.setButtonLoadingState(true);\n const basketItem = await basketService.addToBasket(\n this.state.product.id,\n this.state.selectedSizeId,\n );\n\n if(basketItem) {\n this.setState({\n showSuccessMessage: true\n })\n this.setButtonLoadingState(false);\n return;\n }\n\n //todo\n //show error\n alert('Error message type');\n this.setButtonLoadingState(false);\n }\n\n setButtonLoadingState(isLoading) {\n let txt = this.getButtonText(isLoading);\n this.setState({\n buttonText: txt,\n loading: isLoading\n });\n }\n \n getButtonText(isLoading) {\n return isLoading ? 'Loading..' : 'Add to bag';\n }\n\n render() {\n let sizeSelectOptions = this.state.product.sizes.map((size) =>\n \n );\n return (\n
    \n \n \n {sizeSelectOptions}\n \n \n \n {Item added, view your bag}\n \n
    \n );\n }\n}\n","import React, { Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport { ProductAddToBasket } from './ProductAddToBasket'\nimport { Button } from 'reactstrap';\n\nexport function ProductsSideBenefits(props) {\n const { product, scrollToAR, scrollToDetail } = props;\n\n /* product type */\n let content;\n switch(product.productType) {\n case 1:\n content = (\n \n );\n break;\n case 2:\n content = (\n \n );\n break;\n case 3:\n content = (\n \n );\n break; \n }\n\n /* return */\n let delivery;\n if(product.returnType === 2) {\n delivery = \"Full Refund\";\n }\n else if(product.returnType === 1) {\n delivery = \"Partial Refund\";\n } \n else {\n delivery = \"No Refund\";\n }\n content = (\n \n {content}\n \n \n );\n\n /* shipping */\n if(product.shippingCost === 0) {\n content = (\n \n {content}\n \n \n );\n }\n\n if(product.arContent) {\n content = (\n \n {content}\n \n \n );\n }\n\n if(!content) {\n return ();\n }\n\n return (\n
    \n {content}\n
    \n );\n}\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { ProductAddToBasket } from './ProductAddToBasket'\nimport { ProductsSideBenefits } from './ProductsSideBenefits'\n\nexport function ProductRightSideDetails(props) {\n const { product, scrollToAR, scrollToDetail } = props;\n\n return (\n
    \n
    \n
    \n
    \n
    Designed by {product.designer.brandTitle}
    \n

    {product.title}

    \n
    {product.tagline}
    \n

    {product.unitPriceCurrency}

    \n \n {product.sizingInformation &&\n \n }\n
    \n \n \n
    \n
    \n
    \n );\n}\n\nexport function ProductMobileBottomDetails(props) {\n const { product } = props;\n\n return (\n
    \n
    \n
    Designed by {product.designer.brandTitle}
    \n
    {product.unitPriceCurrency}
    \n
    \n
    {product.title}
    \n \n
    \n );\n}","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport { TabContent, TabPane, Nav, NavItem, NavLink, Row, Col } from 'reactstrap';\n\nexport class ProductDetailsTabs extends Component {\n static displayName = ProductDetailsTabs.name;\n\n constructor(props) {\n super(props);\n this.state = { activeTab: '1' };\n this.setActiveTab = this.setActiveTab.bind(this);\n this.anchorRef = React.createRef();\n }\n\n setActiveTab(tab) {\n if(this.state.tab !== tab) {\n this.setState({ \n activeTab: tab\n });\n }\n }\n\n scrollIntoView(options) {\n this.anchorRef.current.scrollIntoView(options);\n }\n \n render() {\n const product = this.props.product;\n const activeTab = this.state.activeTab;\n\n return (\n
    \n
    \n \n \n \n \n \n

    About {product.title}

    \n
    \n \n \n \n \n \n \n \n

    Designed by {product.designer.brandTitle}

    \n
    {product.designer.designerName}
    \n
    \n \n \n \n \n \n \n

    Size & fit

    \n {this.getSizingInformation()}\n \n
    \n
    \n \n \n \n

    Delivery Information

    \n {this.getDeliveryInformation()}\n \n
    \n
    \n \n \n \n

    Return Information

    \n {this.getReturnInformation()}\n \n
    \n
    \n \n
    \n );\n }\n\n getDeliveryInformation() {\n return (\n
    \n
    \n
    \n

    For delivery enquiries, contact us on {process.env.REACT_APP_CONTACT_EMAIL} or WhatsApp message on {process.env.REACT_APP_CONTACT_PHONENUMBER_DISPLAY}.

    \n
    \n );\n }\n\n getSizingInformation() {\n return (\n
    \n
    \n
    \n

    For sizing enquiries, contact us on {process.env.REACT_APP_CONTACT_EMAIL} or WhatsApp message on {process.env.REACT_APP_CONTACT_PHONENUMBER_DISPLAY}.

    \n
    \n );\n }\n\n getReturnInformation() {\n let message = \"\";\n switch(this.props.product.returnType) {\n case 2:\n message = (\n
    \n

    \n This product is eligible for a full refund within 14 days of purchase. Excluding the order's shipping cost.\n

    \n

    \n If returned, the product must be unworn, undamaged and unused, with all tags attached and the original packaging included.\n

    \n
    \n );\n break;\n case 1:\n message = (\n
    \n

    \n This product is eligible for a partial refund of 50% within 14 days of purchase. Excluding the order's shipping cost.\n

    \n

    \n If returned, the product must be unworn, undamaged and unused, with all tags attached and the original packaging included.\n

    \n
    \n );\n break;\n default:\n message = (\n
    \n

    \n This product is not eligible for a refund.\n

    \n
    \n );\n break;\n };\n return (\n
    \n {message}\n

    \n We recommend that you always check the sizing information before purchasing in order to reduce returns and its impact on the environment.\n

    \n

    See full Return Policy

    \n
    \n

    For return enquiries, contact us on {process.env.REACT_APP_CONTACT_EMAIL} or WhatsApp message on {process.env.REACT_APP_CONTACT_PHONENUMBER_DISPLAY} if you have any enquiries.\n

    \n
    \n );\n }\n}\n","import React from 'react';\nimport { Story } from '../story/Story';\nimport StoryAR from '../story/StoryAR';\n//import { ContentReveal } from '../common/ContentReveal'\nimport './ProductStory.css'\n\nexport function ProductStory(props) {\n const { product, arRef } = props;\n\nconsole.log(product.story); \n\n return (\n
    \n {product.arContent &&\n \n }\n {product.story &&\n
    \n {/* \n \n \n \n */}\n \n
    \n }\n
    \n );\n}\n","import React, { Component } from 'react';\nimport { ProductGallery } from './ProductGallery';\nimport { ProductRightSideDetails, ProductMobileBottomDetails } from './ProductSideDetails';\nimport { ProductDetailsTabs } from './ProductDetailsTabs';\nimport { ProductStory } from './ProductStory';\nimport { ProductAddToBasket } from './ProductAddToBasket'\nimport { Meta } from \"../layout-components/Meta\";\nimport './ProductDetailsPage.css';\n\nexport class ProductDetailsPage extends Component {\n static displayName = ProductDetailsPage.name;\n\n constructor(props) {\n super(props);\n this.state = { product: null, loading: true };\n this.scrollToAR = this.scrollToAR.bind(this);\n this.scrollToDetail = this.scrollToDetail.bind(this);\n }\n\n componentDidMount() {\n const { id, friendlyUrlName } = this.props.match.params;\n this.fetchData(id, friendlyUrlName);\n }\n\n scrollToAR() {\n if(this.arRef && this.arRef.current) {\n this.arRef.current.scrollIntoView({ behavior: 'smooth', block: 'center' }); \n }\n }\n\n scrollToDetail(tab) {\n if(this.productDetailsTabsRef && this.productDetailsTabsRef.current) {\n if(tab) {\n this.productDetailsTabsRef.current.setActiveTab(tab);\n setTimeout(() => {\n this.productDetailsTabsRef.current.scrollIntoView({ behavior: 'smooth', block: 'start' }); \n }, 10);\n } else {\n this.productDetailsTabsRef.current.scrollIntoView({ behavior: 'smooth', block: 'start' }); \n }\n }\n }\n\n\n render() {\n if (this.state.loading)\n return (\n

    Loading...

    \n );\n\n const product = this.state.product;\n \n return (\n
    \n \n \n \n \n \n \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n

    Buy now

    \n \n
    \n
    \n \n
    \n
    \n );\n }\n\n async fetchData(id, friendlyUrlName) {\n const response = await fetch(`api/products/details/${id}/${friendlyUrlName}`, {\n });\n const data = await response.json();\n\n this.arRef = data && data.arContent ? React.createRef() : null;\n this.productDetailsTabsRef = data ? React.createRef() : null;\n\n this.setState({ \n product: data, \n loading: false\n });\n\n setTimeout(() => {\n if (this.props.location.hash.includes('#ar')) { \n this.scrollToAR();\n }\n }, 300);\n }\n}\n","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Meta } from \"../layout-components/Meta\";\nimport { Story } from '../story/Story';\nimport { ProductsListing } from '../store-catalogue/ProductsListing';\nimport './CollectionDetailsPage.css';\n\nexport class CollectionDetailsPage extends Component {\n static displayName = CollectionDetailsPage.name;\n\n constructor(props) {\n super(props);\n this.state = { collection: null, loading: true };\n }\n\n async componentDidMount() {\n const { id, collectionUrl, designerUrl } = this.props.match.params;\n await this.fetchData(id, collectionUrl, designerUrl);\n }\n\n render() {\n if (this.state.loading)\n return (\n

    Loading...

    \n );\n \n let collection = this.state.collection;\n\n return (\n
    \n \n \n
    \n

    Collection

    \n

    {collection.title}

    \n

    By {collection.designer.brandTitle}

    \n
    \n\n
    \n \n
    \n\n {collection.products && collection.products.length > 0 &&\n
    \n

    Designer store

    \n

    Buy items from this collection

    \n \n
    \n }\n
    \n );\n }\n\n async fetchData(id, collectionUrl, designerUrl) {\n const response = await fetch(`api/collections/details/${designerUrl}/${id}/${collectionUrl}`, {\n });\n const data = await response.json();\n this.setState({ collection: data, loading: false });\n }\n}\n","import React from 'react'\nimport { Component } from 'react'\nimport { Route, Redirect } from 'react-router-dom'\nimport { ApplicationPaths, QueryParameterNames } from './ApiAuthorizationConstants'\nimport authService from './AuthorizeService'\n\nexport default class AuthorizeRoute extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n ready: false,\n authenticated: false\n };\n }\n\n componentDidMount() {\n this._subscription = authService.subscribe(() => this.authenticationChanged());\n this.populateAuthenticationState();\n }\n\n componentWillUnmount() {\n authService.unsubscribe(this._subscription);\n }\n\n render() {\n const { ready, authenticated } = this.state;\n const redirectUrl = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURI(window.location.href)}`\n if (!ready) {\n return
    ;\n } else {\n const { component: Component, ...rest } = this.props;\n return {\n if (authenticated) {\n return \n } else {\n return \n }\n }} />\n }\n }\n\n async populateAuthenticationState() {\n const authenticated = await authService.isAuthenticated();\n this.setState({ ready: true, authenticated });\n }\n\n async authenticationChanged() {\n this.setState({ ready: false, authenticated: false });\n await this.populateAuthenticationState();\n }\n}\n","import React from 'react'\nimport { Component } from 'react';\nimport authService from './AuthorizeService';\nimport { AuthenticationResultStatus } from './AuthorizeService';\nimport { LoginActions, QueryParameterNames, ApplicationPaths } from './ApiAuthorizationConstants';\n\n// The main responsibility of this component is to handle the user's login process.\n// This is the starting point for the login process. Any component that needs to authenticate\n// a user can simply perform a redirect to this component with a returnUrl query parameter and\n// let the component perform the login and return back to the return url.\nexport class Login extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n message: undefined\n };\n }\n\n componentDidMount() {\n const action = this.props.action;\n switch (action) {\n case LoginActions.Login:\n this.login(this.getReturnUrl());\n break;\n case LoginActions.LoginCallback:\n this.processLoginCallback();\n break;\n case LoginActions.LoginFailed:\n const params = new URLSearchParams(window.location.search);\n const error = params.get(QueryParameterNames.Message);\n this.setState({ message: error });\n break;\n case LoginActions.Profile:\n this.redirectToProfile();\n break;\n case LoginActions.Register:\n this.redirectToRegister();\n break;\n default:\n throw new Error(`Invalid action '${action}'`);\n }\n }\n\n render() {\n const action = this.props.action;\n const { message } = this.state;\n\n if (!!message) {\n return
    {message}
    \n } else {\n switch (action) {\n case LoginActions.Login:\n return (
    Processing login
    );\n case LoginActions.LoginCallback:\n return (
    Processing login callback
    );\n case LoginActions.Profile:\n case LoginActions.Register:\n return (
    );\n default:\n throw new Error(`Invalid action '${action}'`);\n }\n }\n }\n\n async login(returnUrl) {\n const state = { returnUrl };\n const result = await authService.signIn(state);\n switch (result.status) {\n case AuthenticationResultStatus.Redirect:\n break;\n case AuthenticationResultStatus.Success:\n await this.navigateToReturnUrl(returnUrl);\n break;\n case AuthenticationResultStatus.Fail:\n this.setState({ message: result.message });\n break;\n default:\n throw new Error(`Invalid status result ${result.status}.`);\n }\n }\n\n async processLoginCallback() {\n const url = window.location.href;\n const result = await authService.completeSignIn(url);\n switch (result.status) {\n case AuthenticationResultStatus.Redirect:\n // There should not be any redirects as the only time completeSignIn finishes\n // is when we are doing a redirect sign in flow.\n throw new Error('Should not redirect.');\n case AuthenticationResultStatus.Success:\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\n break;\n case AuthenticationResultStatus.Fail:\n this.setState({ message: result.message });\n break;\n default:\n throw new Error(`Invalid authentication result status '${result.status}'.`);\n }\n }\n\n getReturnUrl(state) {\n const params = new URLSearchParams(window.location.search);\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\n // This is an extra check to prevent open redirects.\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\n }\n return (state && state.returnUrl) || fromQuery || `${window.location.origin}/`;\n }\n\n redirectToRegister() {\n this.redirectToApiAuthorizationPath(`${ApplicationPaths.IdentityRegisterPath}?${QueryParameterNames.ReturnUrl}=${encodeURI(ApplicationPaths.Login)}`);\n }\n\n redirectToProfile() {\n this.redirectToApiAuthorizationPath(ApplicationPaths.IdentityManagePath);\n }\n\n redirectToApiAuthorizationPath(apiAuthorizationPath) {\n const redirectUrl = `${window.location.origin}${apiAuthorizationPath}`;\n // It's important that we do a replace here so that when the user hits the back arrow on the\n // browser he gets sent back to where it was on the app instead of to an endpoint on this\n // component.\n window.location.replace(redirectUrl);\n }\n\n navigateToReturnUrl(returnUrl) {\n // It's important that we do a replace here so that we remove the callback uri with the\n // fragment containing the tokens from the browser history.\n window.location.replace(returnUrl);\n }\n}\n","import React from 'react'\nimport { Component } from 'react';\nimport authService from './AuthorizeService';\nimport { AuthenticationResultStatus } from './AuthorizeService';\nimport { QueryParameterNames, LogoutActions, ApplicationPaths } from './ApiAuthorizationConstants';\n\n// The main responsibility of this component is to handle the user's logout process.\n// This is the starting point for the logout process, which is usually initiated when a\n// user clicks on the logout button on the LoginMenu component.\nexport class Logout extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n message: undefined,\n isReady: false,\n authenticated: false\n };\n }\n\n componentDidMount() {\n const action = this.props.action;\n switch (action) {\n case LogoutActions.Logout:\n if (!!window.history.state.state.local) {\n this.logout(this.getReturnUrl());\n } else {\n // This prevents regular links to /authentication/logout from triggering a logout\n this.setState({ isReady: true, message: \"The logout was not initiated from within the page.\" });\n }\n break;\n case LogoutActions.LogoutCallback:\n this.processLogoutCallback();\n break;\n case LogoutActions.LoggedOut:\n this.setState({ isReady: true, message: \"You successfully logged out!\" });\n break;\n default:\n throw new Error(`Invalid action '${action}'`);\n }\n\n this.populateAuthenticationState();\n }\n\n render() {\n const { isReady, message } = this.state;\n if (!isReady) {\n return
    \n }\n if (!!message) {\n return (
    {message}
    );\n } else {\n const action = this.props.action;\n switch (action) {\n case LogoutActions.Logout:\n return (
    Processing logout
    );\n case LogoutActions.LogoutCallback:\n return (
    Processing logout callback
    );\n case LogoutActions.LoggedOut:\n return (
    {message}
    );\n default:\n throw new Error(`Invalid action '${action}'`);\n }\n }\n }\n\n async logout(returnUrl) {\n const state = { returnUrl };\n const isauthenticated = await authService.isAuthenticated();\n if (isauthenticated) {\n const result = await authService.signOut(state);\n switch (result.status) {\n case AuthenticationResultStatus.Redirect:\n break;\n case AuthenticationResultStatus.Success:\n await this.navigateToReturnUrl(returnUrl);\n break;\n case AuthenticationResultStatus.Fail:\n this.setState({ message: result.message });\n break;\n default:\n throw new Error(\"Invalid authentication result status.\");\n }\n } else {\n this.setState({ message: \"You successfully logged out!\" });\n }\n }\n\n async processLogoutCallback() {\n const url = window.location.href;\n const result = await authService.completeSignOut(url);\n switch (result.status) {\n case AuthenticationResultStatus.Redirect:\n // There should not be any redirects as the only time completeAuthentication finishes\n // is when we are doing a redirect sign in flow.\n throw new Error('Should not redirect.');\n case AuthenticationResultStatus.Success:\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\n break;\n case AuthenticationResultStatus.Fail:\n this.setState({ message: result.message });\n break;\n default:\n throw new Error(\"Invalid authentication result status.\");\n }\n }\n\n async populateAuthenticationState() {\n const authenticated = await authService.isAuthenticated();\n this.setState({ isReady: true, authenticated });\n }\n\n getReturnUrl(state) {\n const params = new URLSearchParams(window.location.search);\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\n // This is an extra check to prevent open redirects.\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\n }\n return (state && state.returnUrl) ||\n fromQuery ||\n `${window.location.origin}${ApplicationPaths.LoggedOut}`;\n }\n\n navigateToReturnUrl(returnUrl) {\n return window.location.replace(returnUrl);\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport { Route } from 'react-router';\nimport { Login } from './Login'\nimport { Logout } from './Logout'\nimport { ApplicationPaths, LoginActions, LogoutActions } from './ApiAuthorizationConstants';\n\nexport default class ApiAuthorizationRoutes extends Component {\n\n render () {\n return(\n \n loginAction(LoginActions.Login)} />\n loginAction(LoginActions.LoginFailed)} />\n loginAction(LoginActions.LoginCallback)} />\n loginAction(LoginActions.Profile)} />\n loginAction(LoginActions.Register)} />\n logoutAction(LogoutActions.Logout)} />\n logoutAction(LogoutActions.LogoutCallback)} />\n logoutAction(LogoutActions.LoggedOut)} />\n );\n }\n}\n\nfunction loginAction(name){\n return ();\n}\n\nfunction logoutAction(name) {\n return ();\n}\n","import React, { useState } from 'react';\nimport { Collapse } from 'reactstrap';\nimport './SimpleQA.css';\n\nexport function SimpleQA(props) {\n const [isToggled, setToggled] = useState(props.initalState ? props.initalState : false);\n const toggleTrueFalse = (e) => {e.preventDefault(); setToggled(!isToggled); return false;}\n return (\n
    \n Q: {props.question}\n \n
    \n {props.children}\n
    \n
    \n
    \n );\n}\n","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport { SimpleQA } from '../layout-components/SimpleQA';\nimport { Meta } from \"../layout-components/Meta\";\n\nexport class FAQPage extends Component {\n static displayName = FAQPage.name;\n\n render() {\n return (\n
    \n \n\n

    FAQ

    \n\n
    \n

    Flair

    \n \n

    \n We are a platform aiming to empower fashion graduates and the next generation of emerging designers to connect directly with customers. Here they can showcase their creative concepts and innovations in design, sustainability and technology.\n

    \n

    \n We want to democratise the fashion industry and create fairer and more transparent practises, allowing our customers to discover and support brilliant independent designers.\n

    \n

    \n Read about Flair's mission\n

    \n \n \n

    \n Watch our video guide below on using the Augmented Reality experience within Flair.\n

    \n

    \n \n

    \n \n \n

    \n Super! You can sign up and gain access to our exclusive beta, the Flair Portal. \n It's completely free! Join our waiting list, and once your application is approved, you'll have the opportunity to showcase your brand story and concept, as well as upload your collections and products.\n

    \n \n
    \n \n
    \n

    Placing an Order

    \n \n

    \n Placing an order on Flair is easy - here's how you do it:\n

    \n
      \n
    1. Find a product you like by browsing through the categories or designers from the top menu.
    2. \n
    3. On the product page, select your size and click “Add to bag”. Once you've added all products you wish to purchase, it's time to checkout.
    4. \n
    5. Click on the bag icon at the top right menu. Review and proceed to checkout.
    6. \n {/* Sign in to your account or, if you've not yet created one, proceed via guest checkout. */}\n
    7. Fill in your address and payment details, and place the order.
    8. \n
    9. That's it – we'll send you an order confirmation email and keep you updated until you receive your package.
    10. \n
    \n \n \n \n

    \n Flair supports designers and their individual making process and shipping times. Some products can be dispatched in a short time frame while others, for example made-to-order or custom-made, require a longer lead time. Check the product page details for more delivery estimates and information before placing your order.\n

    \n \n \n

    \n For now we only support the standard option which is stated in the delivery information on the product page. If you need faster shipping, get in touch and we will work with the designer to try to make it happen. Please note that this may come with added charge for faster shipping.\n

    \n

    \n We are constantly developing new features to Flair, and delivery options for individual designers in checkout will be coming in the near future.\n

    \n \n \n

    \n As soon as you place you order, we notify our designers to get started. If you want to cancel or change the order before it's been dispatched, let us know as soon as possible and \n we will notify the designer.\n

    \n

    \n Please note: We cannot guarantee that the cancellation or change will be accepted, as it is dependent on what stage the designer is at with the order.\n

    \n \n \n

    \n When buying from multiple brands in the same order you will receive separate packages, potentially with different arrival times. As your order is directly shipped to you from the designer, it is dependent on their delivery timeframes.\n

    \n \n \n

    \n At this stage, we are only shipping within the UK, however we are planning to expand to other markets in the near future. \n

    \n

    \n We would love to hear from you where you would like Flair's designers to ship to.\n

    \n \n \n

    \n Our designers thrive on changing the industry and making it more sustainable, and this is often reflected in their packaging and shipping. At Flair we work with our designers to support this.\n

    \n \n \n

    \n No, all you need to provide us with is an email address and preferably a phone number too, to help us reach out to you regarding your order.\n {/*We recommend that you register for an account to start adding pieces to your Wishlist, but, you can also place and track orders as a guest and sign up at a time that suits you.*/}\n

    \n \n
    \n\n
    \n

    Payment

    \n \n

    \n We accept payment from all major debit and credit cards. You can also pay using Alipay and WeChat.\n

    \n

    \n We are working on adding more payment methods to Flair's checkout. Apple Pay and Google Pay will be added next.\n

    \n \n \n

    \n All payments on Flair are handled by our third party payment provider, Stripe. They are fully PCI compliant following global security standards for all handling, storing, processing, or transmitting of sensitive authentication and payment data.\n

    \n

    \n We at Flair do not store or hold any payment sensitive details except for references such as last four digits of your card. All data sent from your browser to Flair and Stripe is through encrypted and secure SSL protocol, keeping your data safe.\n

    \n \n \n

    \n No, even if you have multiple products from different designers in your bag you will only need to make one payment. To make ordering with us easier for you, we have a secure payment process which means you can order from as many designers as you want safely.\n

    \n \n \n

    \n All prices are inclusive of tax except for products from designers based outside of the UK.\n

    \n

    \n If you order products from a designer(s) shipping from outside the UK, you will be responsible for any import taxes and duties that may be added when the shipment reaches the UK. These charges are not determined by Flair.\n

    \n

    \n We would recommend that you always check the Delivery tab for each product to know where the Designer is shipping from and if any import charges will be applicable.\n

    \n {/*\n

    \n All product prices shown on Flair are final and include tax and duties.\n

    \n */}\n \n
    \n\n
    \n

    Sizing And Fit

    \n \n

    \n Sizing information is available on each product page, as provided by each independent designer. If you want to further confirm the size and fit or can't find the information you're looking for, get in touch with us on {process.env.REACT_APP_CONTACT_EMAIL} or WhatsApp message on {process.env.REACT_APP_CONTACT_PHONENUMBER_DISPLAY} and we will reach out to the designer on your behalf. \n

    \n

    \n We recommend that you always check the sizing information before purchasing, in order to reduce returns and its impact on the environment.\n

    \n \n
    \n\n
    \n

    Returns

    \n \n

    \n If you are unhappy with your purchase and wish to return or exchange your item please email {process.env.REACT_APP_CONTACT_EMAIL} and our customer service team will help you fulfil your request. \n

    \n

    \n All products sold on Flair adhere to one of three standard return policies - all details and instructions can be found on our Return Policy page. \n

    \n \n \n

    \n Custom made products are likley to be under our partial refund policy. As these products are made for you, 50% goes towards the cost of the materials used. All details and instructions can be found on our Return Policy page.\n

    \n

    \n Important note: Designers might choose to have their products under the no refund or full refund policy. It's always important to check the return information on the product page before purchasing.\n

    \n \n
    \n\n
    \n

    Technical

    \n \n

    \n We are consantly monitoring the platform for any technical issues. If you're experiencing a problem, please get in touch with us as soon as possible on {process.env.REACT_APP_CONTACT_EMAIL} or WhatsApp message on {process.env.REACT_APP_CONTACT_PHONENUMBER_DISPLAY}.\n

    \n \n \n

    \n At Flair we take every measure to keep your personal details safe. For more information on how we handle and store your data, read our Privacy Policy.\n

    \n \n
    \n
    \n );\n }\n}","import React, { Component } from 'react';\nimport { Meta } from \"../layout-components/Meta\";\n\nexport class TermsAndConditionsPage extends Component {\n static displayName = TermsAndConditionsPage.name;\n\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n
    \n \n\n

    Terms & Conditions

    \n

    Flair Fashion Limited operates an online marketplace (\"Marketplace\"), at 71-75 Shelton Street, London, Greater London, United Kingdom, WC2H 9JQ. In these terms we refer to Flair Fashion as \"FF\" or \"we \"or \"us.\" We refer to end users as \"you\" and the entities that list and sell items as Designer(s).

    \n

    The Marketplace allow sellers (\"Designers\") to list and sell items to end users. When you purchase an item, the contract for sale is solely between you and the Designer. That means that when you purchase an item on the Marketplace, you are making a purchase from the Designer who listed the item and the Designer is responsible for fulfilling your order. We are solely the technology company that allows the Marketplace to exist and as such are not involved in any transactions between you and the Designers.

    \n
    \n

    Conclusion of Contract; Registration

    \n

    You can access, save and print out the current Terms during the registration process and at any other time on our website.

    \n

    FF is your contract partner when using the Marketplace. In order to make full use of the Marketplace, including viewing and purchasing items in the Marketplace, you may need to create an account (\"Register\"). If you buy items, the Designer is your contractual partner for the purchase.

    \n

    You make a binding offer for the use of the Marketplace by Registering. Registration occurs when you supply an email address and a password or sign up using Facebook or Google, including allowing us to access certain data associated with your social network account.

    \n

    The contract for the use of our Marketplace is concluded when we send an e-mail to the address you provided to us as part of the registration process (\"Conclusion of Contract\") after receipt of your offer. This confirmation e-mail represents our acceptance of your offer.

    \n
    \n
    \n

    How the Marketplace works

    \n

    FF operates the Marketplace that allows Designers and users to share information and complete purchases. Designers are responsible for their stores, their items, their item listings and the processing and shipping of your order. Designers may be located in your country or region or elsewhere. If they are located elsewhere, this may have an effect on taxes, customs or the applicability of consumer protection or data protection rules.

    \n

    Each final price is determined by or based on a price supplied by the Designer offering an item for sale. Designers provide the other information in the item listings. Designers are obligated to provide accurate information, but FF is not obligated nor able to guarantee the truth or accuracy of the information in item listings.

    \n

    Although we are not a party to the contract formed between you and a Designer when you make a purchase, we may assist with payment processing, returns, refunds, and other customer service. FF does not guarantee (i) the existence, quality, safety, suitability, or legality of any Designer items or item listings; (ii) the truth or accuracy of any item descriptions or other content provided by Designers; (iii) the truth or accuracy of ratings, reviews, or other User Submissions; or (iv) the performance or conduct of any Designer or third party. FF does not endorse any Designer, item, or item listing. You should make all investigations and checks you feel are appropriate before making a purchase from a Designer. Please read labels, warnings and directions provided with a purchased item before using it.

    \n
    \n
    \n

    User Requirements and Obligations

    \n

    You may be required to create an account and select a password and username. You promise to provide us with accurate, complete, and updated information about yourself. Where FF requires that you provide an email address, you are responsible for providing FF with your most current email address. You are obliged to keep your registration information, including your e-mail address, up to date and inform us about changes without undue delay by updating this information in your user account. You may not select as your username a name that you do not have the right to use, or another person's name with the intent to impersonate that person. You may not transfer your account to anyone else without our prior written permission.

    \n
    \n
    \n

    Rules & Restrictions

    \n

    You may only use the Marketplace for your own internal and personal use, and not on behalf of or for the benefit of any third party, and only in a manner that complies with applicable FF policies and all laws that apply to you. If your use of the Marketplace (including a purchase of any items on the Marketplace) is prohibited by any applicable laws, then you are not authorized to use the Marketplace.

    \n

    You may not share your account or password with anyone, and you must protect the security of your account and your password. You must notify FF immediately of any unauthorized use of your password or any other breach of the security of your account. You are responsible for any activity associated with your account.

    \n

    You must not create multiple accounts and you must not let others use your account.

    \n

    Any sweepstakes, contests, raffles, surveys, games, or similar promotions (collectively, \"Promotions\") made available through our Sites may be governed by rules that are separate from these Terms of Use. If the rules for a Promotion conflict with these Terms of Use, the Promotion rules will govern.

    \n

    When accessing or using the Marketplace, you agree to:

    \n
      \n
    1. Abide by all laws, rules, regulations, these Terms, and all FF policies;
    2. \n
    3. Only purchase items you are legally able to purchase in your jurisdiction;
    4. \n
    5. Only use (or attempt to use) the Marketplace through interfaces provided by Us; and
    6. \n
    7. Comply with the instructions in any robots.txt file present on the Marketplace.
    8. \n
    \n

    When accessing or using the Marketplace, you agree not to:

    \n
      \n
    1. Infringe or violate the intellectual property rights or any other rights of anyone else (including FF);
    2. \n
    3. Violate these Terms, FF policies, or any law or regulation, including any applicable export control laws;
    4. \n
    5. Engage in activity that is deceptive, threatening, defamatory or obscene;
    6. \n
    7. Circumvent any terms, policies or rules set forth on the Marketplace including those relating to any promotion, contest or program on the Marketplace;
    8. \n
    9. Collect personal data from users of the Marketplace or use any such information found on the Marketplace;
    10. \n
    11. Engage in activity that jeopardizes the security of your account or anyone else's (such as allowing someone else to log in to the Marketplace as you);
    12. \n
    13. Attempt, in any manner, to obtain the password, account, or other security information from any other user;
    14. \n
    15. Use a third party's credentials, conceal your true IP address, or otherwise impersonate or misrepresent your identity, your affiliation with any person or entity;
    16. \n
    17. Violate the security of any computer network, or crack any passwords or security encryption codes;
    18. \n
    19. Run Maillist, Listserv, any form of auto-responder or \"spam\" on the Marketplace, or any processes that run or are activated while you are not logged into the Marketplace, or that otherwise interfere with the proper working of the Marketplace (including by placing an unreasonable load on the Marketplace' infrastructure);
    20. \n
    21. \"Crawl,\" \"scrape,\" or \"spider\" any page, data, or portion of or relating to the Marketplace or Content (through use of manual or automated means);
    22. \n
    23. Decompile, reverse engineer, or otherwise attempt to obtain the source code or underlying ideas or information of or relating to the Marketplace; or
    24. \n
    25. Attempt to do anything, or permit, encourage, assist, or allow any third party to do anything, prohibited in this list of items, or attempt, permit, encourage, assist, or allow any other violation of these Terms.
    26. \n
    \n
    \n
    \n

    Privacy

    \n

    Our Privacy Policy provides information regarding how we collect, use and disclose personal data, including with Designers. Please review the Privacy Policy for details.

    \n
    \n
    \n

    User Submissions

    \n

    Anything you post, upload, share, store, or otherwise provide through the Marketplace is a \"User Submission.\" User Submissions may include suggestions, comments, ideas, improvements, or other feedback or materials, and may be viewable by other users. In order to display your User Submissions on the Marketplace, you grant us certain rights in those User Submissions.

    \n

    For all User Submissions, you hereby grant FF free of charge a royalty-free, perpetual, non-exclusive, transferable, sublicensable, worldwide license to use, store, display, reproduce, save, modify, create derivative works, perform, distribute, translate or otherwise act with respect to such User Submissions as we determine is necessary to operate, market and advertise the Marketplace, including to present display or perform such User Submission in accordance with your preferences.

    \n

    FF will be free to use, disclose, reproduce, modify, license, transfer and otherwise distribute, and exploit the User Submissions in any manner.

    \n
    \n
    \n

    Ratings, Reviews and other User Feedback

    \n

    FF enables you to generate ratings and reviews, photos, videos or other content about items and stores on the Marketplace (\"Feedback\"). Feedback is intended to enable other users to get a meaningful picture of the items or the store.

    \n

    Feedback may only contain truthful information. Feedback must be in accordance with the law and may not violate the rights of third parties, in particular personal rights, trademark rights or copyrights, as well as data protection regulations. You agree: (i) to base any rating or review you post only on your first-hand experience with the applicable business, product, or service; (ii) you will not provide a rating or review for any business, product, or service with respect to which you have a competitive, ownership or other economic interest, employment relationship or other affiliation; (iii) you will prominently indicate if your review was sponsored or paid for in any way; and (iv) your review will comply with these Terms.

    \n

    If you abuse the feedback system, FF is entitled to remove the Feedback taking your legitimate interests into account, in particular your right to freedom of expression. This applies particularly if:

    \n
      \n
    1. FF is legally obliged to remove the Feedback, e.g. due to a court ruling
    2. \n
    3. the Feedback contains vulgar, obscene, racist, not youth-free or in the criminal sense insulting statements
    4. \n
    5. the Feedback contains personal data, e.g. name, address, telephone number and/or e-mail-address
    6. \n
    7. the Feedback contains inappropriate links or scripts, e.g. with harmful content
    8. \n
    9. the Feedback contains inappropriate advertising for third parties
    10. \n
    11. the Feedback for items contains irrelevant information not related to the item, e.g. customer service of the store, shipping of the item, or site usability issues.
    12. \n
    \n

    Ratings and reviews and photos, videos or other content about items and stores posted by users on our Marketplace are User Submissions that are not endorsed by FF and do not represent the views of FF. FF does not assume liability for ratings and reviews or for any claims for economic loss resulting from such ratings and reviews. We reserve the right to exclude such Feedback for any reason or no reason, without notice to you.

    \n
    \n
    \n

    Content

    \n

    The materials displayed or performed or available on or through the Marketplace, including, but not limited to, text, graphics, data, articles, photos, images, illustrations, User Submissions, and so forth (all of the foregoing, the \"Content\") are protected by copyright and/or other intellectual property laws. You promise to abide by all copyright notices, trademark rules, information, and restrictions contained in any Content you access through the Marketplace, and you won't use, copy, reproduce, modify, translate, publish, broadcast, transmit, distribute, perform, upload, display, license, sell or otherwise exploit for any purpose any Content not owned by you, (i) without the prior consent of the owner of that Content and/or (ii) in a way that violates someone else's (including FF's) rights.

    \n

    You may not modify, publish, transmit, participate in the transfer or sale of, reproduce (except as expressly provided in this Section), create derivative works based on, or otherwise exploit any of the Marketplace.

    \n

    Subject to your compliance with these Terms, FF or its content providers grant you a limited, non-exclusive, non-transferable, non-sublicensable license to access and make personal and non-commercial use of the Marketplace.

    \n
    \n
    \n

    Responsibilities

    \n

    Any information or Content publicly posted or privately transmitted through the Marketplace is the sole responsibility of the person from whom such information or Content originated. You access all such information and Content at your own risk.

    \n

    You are responsible for all Content you contribute, in any manner, to the Marketplace, and you represent and warrant you have all rights necessary to do so, in the manner in which you contribute it.

    \n

    The Marketplace may contain links or connections to third party websites or Marketplace that are not owned or controlled by FF. When you access third party websites or use third party Marketplace, you accept that there are risks in doing so. We encourage you to be aware when you leave the Marketplace and to read the terms and conditions and privacy policy of each third party website or service that you visit or utilize.

    \n

    FF has no control over the content, accuracy, privacy policies, or practices of or opinions expressed in any third party websites or by any third party that you interact with through the Marketplace. In addition, FF will not and cannot monitor, verify, censor or edit the content of any third party site or service.

    \n

    Your interactions with organizations and/or individuals found on or through the Marketplace, including payment and delivery of goods or Marketplace, and any other terms, conditions, warranties or representations associated with such dealings, are solely between you and such organizations and/or individuals. You should make whatever investigation you feel necessary or appropriate before proceeding with any transaction with any of these third parties.

    \n

    If there is a dispute solely between participants on this site, or solely between users and a third party, you agree that FF is under no obligation to become involved.

    \n
    \n
    \n

    Costs and Fees

    \n

    It is currently free to access and browse the Marketplace. However, you may choose to purchase items through the Marketplace from Designers, and you alone will be responsible for paying the purchase price of any items you buy, in addition to any applicable taxes and shipping costs, if any. FF is not your contract partner when purchasing items from Designers. As tax rules evolve, FF may calculate and collect taxes applicable to some purchases.

    \n

    In the event a Designer needs to make a change to your order, FF will attempt to notify you by contacting the email address, billing address, and/or phone number provided at the time the order at the Designer was made.

    \n

    By confirming your purchase at the end of the checkout process, you agree to pay the applicable fees as well as any shipping and handling charges or the applicable taxes. You must timely pay all fees or amounts associated with your use of the Marketplace.

    \n
    \n
    \n

    Third Party Checkout Service.

    \n

    When you purchase goods through the Marketplace, we will direct you through a checkout process operated by a third party, called Stripe. Use of Stripe’s payment processing is subject to Stripe terms and conditions and we encourage you to read these before proceeding. BY making a purchase on the Marketplace, you confirm you agree to Stripe’s terms and conditions.

    \n
    \n
    \n

    Refunds, Exchanges and Related

    \n

    We want you to be satisfied with your purchase on the Marketplace. Therefore, we have asked our Designers to offer you refunds and returns if you have a problem with an order or purchase in line with their refunds policy, which is available on the Marketplace and you should read prior to purchasing from a specific Designer. FF shall regularly write and encourage Designers to operate by their refund policy. However, we cannot guarantee that the Designers will refund or exchange any item you purchase and we will not be held liable if they refuse to do so.

    \n
    \n
    \n

    Term; Termination

    \n

    This agreement shall commence when you start using the Marketplace and runs for an indefinite period of time, unless terminated in accordance with these Terms.

    \n

    You are free to stop using the Marketplace at any time. Any unpaid amounts you owe Designers for items purchased will remain due. FF is also free to terminate (or suspend access to) your use of the Marketplace or your account, for any reason in our discretion, including your breach of these Terms upon two weeks' notice.

    \n

    The right to terminate this agreement for good cause remains unaffected.

    \n

    Account termination may result in destruction of any Content associated with your account, so keep that in mind before you decide to terminate your account.

    \n
    \n
    \n

    Changes to Terms or Marketplace

    \n

    FF has the right to change the contractually agreed Marketplace and these Terms if and to the extent that this is necessary for a valid reason that could not have been foreseen at the time the contract was concluded, and this change is reasonable for the user, in particular because the relationship between performance and counter performance does not significantly change to your disadvantage.

    \n

    FF will provide appropriate notice regarding changes to the Marketplace or these Terms (\"Notice of Changes\").

    \n

    In the event of changes to the contractually agreed Marketplace and these Terms, you have the right to terminate this contract in text form at the time the changes take effect.

    \n

    Changes to the contractually agreed Marketplace and these Terms are deemed approved by you if you do not expressly object to them after receipt of the Notice of Changes. FF specifically draws your attention to this legal consequence, the commencement of the period, the period and the date on which the change takes effect. In the absence of such notice or if it is incomplete, the lack of objection does not constitute acceptance of the changes.

    \n

    If you object to the changes, FF has the right to terminate this contract in text form at the time the changes take effect.

    \n
    \n
    \n

    Limitation of Liability

    \n

    To the extent permitted by applicable law, FF limits or excludes its liability for: (i) your use of the Marketplace, including any downtime or periods of unavailability; (ii) products, information or other content provided by third parties; (iii) the use of products purchased from Designers; or (iv) any indirect, consequential or special damages. If FF has any liability to you, then to the extent permitted by applicable law you agree that: (i) you shall take reasonable measures to limit any damages incurred; and (ii) FF's liability shall be limited to those damages that were a foreseeable and direct result of its conduct. Except for liability for death or personal injury caused by FF, FF's liability shall not exceed the greater of (i) the aggregate amount of your purchases on the Marketplace in the six (6) months preceding the event on which your claim is based; or (ii) £200.

    \n
    \n
    \n

    General

    \n

    Electronic Communications

    \n

    Notices or declarations can be made in text form , including by email. The communication between FF and you take place electronically, e.g. by emails, texts, mobile push notices, or notices and messages on the Marketplace. If you us to provide FF formal notice via email, the message(s) must be sent to {process.env.REACT_APP_CONTACT_EMAIL}.

    \n

    Assignment

    \n

    We may transfer, assign, or delegate these Terms and our rights and obligations with prior notice to you.

    \n

    Force Majeure

    \n

    Should the parties be prevented from fulfilling their contractual obligations by force majeure such as natural disasters, war, terrorism, industrial disputes, sovereign orders or other circumstances which are beyond their control or the prevention of which cannot be achieved with reasonable technical or economic effort, the parties are released from their contractual obligations as long as these circumstances and their consequences have not been finally eliminated. In all the above-mentioned cases of release from performance, the parties are not entitled to claim damages unless the party claiming force majeure is at fault.

    \n

    Entire Agreement

    \n

    These Terms together with our Privacy Policy set forth the entire understanding and agreement between you and FF and supersede all prior understandings and agreements of the parties.

    \n

    Waiver

    \n

    Our failure to respond to a breach by you or others does not waive our right to act with respect to subsequent or similar breaches.

    \n

    Governing Law

    \n

    These Terms shall be governed by and interpreted in accordance with the laws of England. You and we agree to submit to the exclusive jurisdiction of the courts of England for all disputes arising from the use of the Marketplace.

    \n
    \n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport { Meta } from \"../layout-components/Meta\";\n\nexport class PrivacyPolicyPage extends Component {\n static displayName = PrivacyPolicyPage.name;\n\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n
    \n \n\n

    Privacy Policy

    \n

    Flair Fashion Limited (“We” and “Us”) are committed to protecting your personal data. This privacy policy will inform you as to how we look after your personal data when you visit our website http://flair.fashion (“Website”) (regardless of where you visit it from) and tell you about your privacy rights and how the law protects you.

    \n

    If you need to contact us, our email address is {process.env.REACT_APP_CONTACT_EMAIL}.

    \n
    \n

    Purpose of this Privacy Policy

    \n

    This privacy policy aims to give you information on how we collect and process your personal data through your use of this Website, including any data you may provide through this Website.

    \n

    This Website is not intended for children and we do not knowingly collect data relating to children.

    \n

    This privacy policy will inform you how you can verify which of your personal information is collected by us through the Website and how you can request that we delete, update or transfer it.

    \n

    It is important that you read this privacy policy together with any other privacy policy or fair processing policy we may provide on specific occasions when we are collecting or processing personal data about you so that you are fully aware of how and why we are using your data. This privacy policy supplements other notices and privacy policies and is not intended to override them.

    \n
    \n
    \n

    The Data We Collect About You

    \n

    Personal data, or personal information, means any information about an individual from which that person can be identified. It does not include data where the identity has been removed (anonymous data).

    \n

    We may collect, use, store and transfer different kinds of personal data about you which we have grouped together as follows:

    \n
      \n
    • Identity Data includes first name, last name, title
    • \n
    • Contact Data includes billing address, email address and telephone numbers.
    • \n
    • Transaction Data includes details about payments to and from you and other details of products and services you have purchased from us.
    • \n
    • Technical Data includes internet protocol (IP) address, your login data, browser type and version, time zone setting and location, browser plug-in types and versions, operating system and platform, and other technology on the devices you use to access this Website.
    • \n
    • Usage Data includes information about how you use our Website, products and services.
    • \n
    • Marketing and Communications Data includes your preferences in receiving marketing from us and our third parties and your communication preferences.
    • \n
    \n

    We also collect, use and share Aggregated Data such as statistical or demographic data for any purpose. Aggregated Data could be derived from your personal data but is not considered personal data in law as this data will not directly or indirectly reveal your identity. For example, we may aggregate your Usage Data to calculate the percentage of users accessing a specific website feature. However, if we combine or connect Aggregated Data with your personal data so that it can directly or indirectly identify you, we treat the combined data as personal data which will be used in accordance with this privacy policy.

    \n

    We do not collect any Financial, Special Categories of Personal Data about you (this includes details about your race or ethnicity, religious or philosophical beliefs, sex life, sexual orientation, political opinions, trade union membership, information about your health, and genetic and biometric data). Nor do we collect any information about criminal convictions and offences.

    \n

    For the avoidance of doubt, our third party payment processor, Stripe will have their own privacy policy which will apply to any payments on our marketplace.

    \n
    \n
    \n

    If You Fail To Provide Personal Data

    \n

    Where we need to collect personal data by law, or under the terms of a contract we have with you, and you fail to provide that data when requested, we may not be able to perform the contract we have or are trying to enter into with you (for example, to provide you with goods or services). In this case, we may have to cancel a product or service you have with us but we will notify you if this is the case at the time.

    \n
    \n
    \n

    How Is Your Personal Data Collected?

    \n

    We use different methods to collect data from and about you including through:

    \n
      \n
    • Direct interactions. You may give us your data by filling in forms or by corresponding with us by post, phone, email or otherwise. This includes personal data you provide when you:\n
        \n
      • buy our Goods;
      • \n
      • request marketing to be sent to you; or
      • \n
      • give us feedback or contact us.
      • \n
      \n
    • \n
    • Automated technologies or interactions. As you interact with our Website, we will automatically collect Technical Data about your equipment, browsing actions and patterns. We collect this personal data by using cookies and other similar technologies. Please see our cookie policy for further details.
    • \n
    • Third parties or publicly available sources. We will receive personal data about you from various third parties and public sources as set out below:\n
        \n
      • Technical Data from analytics providers
      • \n
      • Contact and Transaction Data from providers of technical, payment and delivery services.
      • \n
      • Identity and Contact Data from data brokers or aggregators
      • \n
      • Identity and Contact Data from publicly available sources
      • \n
      \n
    • \n
    \n
    \n
    \n

    How We Use Your Personal Data

    \n

    We will only use your personal data when the law allows us to. Most commonly, we will use your personal data in the following circumstances:

    \n
      \n
    • Where we need to perform the contract we are about to enter into or have entered into with you.
    • \n
    • Where it is necessary for our legitimate interests (or those of a third party) and your interests and fundamental rights do not override those interests.
    • \n
    • Where we need to comply with a legal obligation.
    • \n
    \n

    Generally, we do not rely on consent as a legal basis for processing your personal data although we will get your consent before sending third party direct marketing communications to you via email or text message. You have the right to withdraw consent to marketing at any time by contacting us.

    \n
    \n
    \n

    Use Of Cookies

    \n

    Our Website uses certain cookies, pixels, beacons, log files and other technologies of which you should be aware. Please see our Cookie Policy to find out more about the cookies we use and how to manage and delete cookies.

    \n
    \n
    \n

    How Long Will You Use My Personal Data For?

    \n

    We will only retain your personal data for as long as reasonably necessary to fulfil the purposes we collected it for, including for the purposes of satisfying any legal, regulatory, tax, accounting or reporting requirements. We may retain your personal data for a longer period in the event of a complaint or if we reasonably believe there is a prospect of litigation in respect to our relationship with you.

    \n

    To determine the appropriate retention period for personal data, we consider the amount, nature and sensitivity of the personal data, the potential risk of harm from unauthorised use or disclosure of your personal data, the purposes for which we process your personal data and whether we can achieve those purposes through other means, and the applicable legal, regulatory, tax, accounting or other requirements.

    \n
    \n
    \n

    Opting Out

    \n

    You can ask us or third parties to stop sending you marketing messages at any time by logging into the website and checking or unchecking relevant boxes to adjust your marketing preferences or by following the opt-out links on any marketing message sent to you or by contacting us at any time.

    \n

    Where you opt out of receiving these marketing messages, this will not apply to personal data provided to us as a result of a product/service purchase, warranty registration, product/service experience or other transactions.

    \n
    \n
    \n

    Third Party Links And Services

    \n

    \n It is likely that the Website will contain links to third party websites and services. Please remember that when you use a link to go from our Website to another website or you request a service from a third party, this privacy policy no longer applies.
    \n Your browsing and interaction on any other website, or your dealings with any other third-party service provider, is subject to that website’s or third party service provider’s own rules and policies.
    \n We do not monitor, control, or endorse the privacy practices of any third parties.
    \n We encourage you to become familiar with the privacy practices of every website you visit or third party service provider that you deal with and to contact them if you have any questions about their respective privacy policies and practices.
    \n This privacy policy applies solely to personal information collected by us through our Website and functionality and does not apply to these third party websites and third party service providers.\n

    \n
    \n
    \n

    Security Of Your Personal Information

    \n

    \n We are committed to keeping the personal information you provide us secure and we will take reasonable precautions to protect your personal information from loss, misuse or alteration.
    \n All our employees and data processors (i.e. those who process your personal information on our behalf, for the purposes listed above), who have access to, and are associated with the processing of personal information, are obliged to respect the confidentiality of the personal information of all users of the Site.\n

    \n
    \n
    \n

    Change To This Privacy Policy

    \n

    \n We may make changes to this privacy policy from time to time.
    \n To ensure that you are always aware of how we use your personal information we will update this privacy policy from time to time to reflect any changes to our use of your personal information. We may also make changes as required to comply with changes in applicable law or regulatory requirements. We may notify you by e-mail of any significant changes. However, we encourage you to review this privacy policy periodically to be informed of how we use your personal information.\n

    \n
    \n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport { Meta } from \"../layout-components/Meta\";\n\nexport class ReturnPolicyPage extends Component {\n static displayName = ReturnPolicyPage.name;\n\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n
    \n \n\n

    Return Policy

    \n

    Flair is unifying the return policy across our designers to simiplify the process and provide you with the best shopping experience and peace of mind.

    \n

    We're confident that you will enjoy the products sold on Flair but in case you do need to return an item, there are three simple return policies you'll find for the products shown on Flair:

    \n
      \n
    • Full Refund: The product is eligible for a full refund within 14 days of the purchase date. This does not include the shipping fee.
    • \n
    • Partial Refund: The product is eligible for a 50% refund. The other 50% goes towards the designer's material and labour costs. You will mainly find this for products that are made-to-order or custom-made. This does not include the shipping fee.
    • \n
    • No Refund: This product is not eligible for a refund, and we advise you to check all details before purchasing.
    • \n
    \n

    All of the above are our general return policies; please make sure to check the product details carefully for any further specifics before purchasing.
    \n Some designers might allow for an exchange if the wrong size was purchased; however to avoid any issues, please contact us and check beforehand. If you have questions regarding sizing or similar ahead of making a purchase, you can reach out to us on: {process.env.REACT_APP_CONTACT_EMAIL} or WhatsApp message on {process.env.REACT_APP_CONTACT_PHONENUMBER_DISPLAY}.
    Together we can improve sustainability by reducing returns and shipping.

    \n

    Items must be returned unworn, undamaged and unused, with all tags attached and the original packaging included. Flair reserves the right for the designer to refuse the return if the product does not meet these requirements. If you believe an item to be defective or damaged, please contact us so that we can help resolve the issue.

    \n

    For return shipping, the customer is responsible to send the item back, including the cost of shipping. Thus, Flair and our designers don't take responsibility for items lost in return transit. In this unfortunate situation, we will not be able to issue a refund. We recommend you use tracked shipping when returning an item.

    \n
    \n

    How do I return an item?

    \n
      \n
    1. Having met all above requirements, contact us on {process.env.REACT_APP_CONTACT_EMAIL} to request a refund, stating your order number.
    2. \n
    3. We will provide you with an address to return the item to.
    4. \n
    5. You will ship the item back.
    6. \n
    7. Once the returned item has been received, quality checked and approved, Flair will issue a refund to the original method of payment and a confirmation e-mail will be sent to you.
      \n Please note that it can take up to 5 business days to process the refund. It might take additional time for your bank to process the transaction and update your bank statement.\n
    8. \n
    \n
    \n
    \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Meta } from \"../layout-components/Meta\";\n\nexport class AboutPage extends Component {\n static displayName = AboutPage.name;\n\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n \n\n \n \n
    \n
    \n
    \n

    Flair

    \n

    Flair Fashion is an ecosystem built to bridge the new era of online shopping with the emerging designers at the forefront of innovation in design, sustainability and technology.

    \n

    At the front end, Flair fuses the e-commerce marketplace experience with showcasing. Through storytelling and cutting-edge technology, Flair offers a new way for fashion brands to show and sell their collections -- connecting customer to creator like never before.

    \n

    Beneath the surface of the Flair marketplace, Flair is building a Connection Hub (COMING SOON) to pair emerging designers with the supply chain services they need to establish and grow their brands.

    \n
    \n
    \n\n
    \n Contact us\n Join Flair\n\n

    Or follow us on

    \n \n \n
    \n
    \n
    \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport './StaticPages.css';\nimport { SimpleQA } from '../layout-components/SimpleQA';\nimport { Meta } from \"../layout-components/Meta\";\n\nexport class JoinFlairPage extends Component {\n static displayName = JoinFlairPage.name;\n\n render() {\n return (\n \n \n\n
    \n
    \n
    \n

    Join Flair As A Designer

    \n

    A fully managed showcase space abd marketplace to share your work and grow your brand without limitations.

    \n
    \n

    We're excited to announce that we're in the beta phase of developing our user-friendly portal for designers to join Flair. With this exclusive beta access, you'll be able to showcase your brand and collections, gain entry into our marketplace, and experience firsthand the innovative services we have in the pipeline.

    \n

    It is completely free! Don't miss out on this opportunity and join our waiting list today.

    \n
    \n
    \n
    \n
    \n \n
    \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Meta } from \"../layout-components/Meta\";\nimport './StaticPages.css';\n\nconst EMBED_URL = 'https://embed.twitch.tv/embed/v1.js';\nconst CHANNEL = 'flairfashion';\n\n\nexport class FlairClass21 extends Component {\n static displayName = FlairClass21.name;\n\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n let embed;\n const script = document.createElement('script');\n script.setAttribute(\n 'src',\n EMBED_URL\n );\n script.addEventListener('load', () => {\n embed = new window.Twitch.Embed('twitch-embed', {\n width: '100%',\n height: '100%',\n channel: CHANNEL,\n });\n });\n document.body.appendChild(script);\n }\n \n render() {\n return (\n \n\n \n \n
    \n
    \n {/*\n \n \n \n \"Flair\n \n */}\n
    \n\n
    \n

    Flair presents

    \n

    Class of 2021 Showcase

    \n\n
    \n

    Wednesday, September 22nd
    11.00am – 1.30pm

    \n
    Location:
    \n

    Westfield Stratford City
    Montfichet Road
    London
    E20 1EJ

    \n
    \n\n
    \n

    \n Join us to celebrates the coming generation of designers from the Class of 2021, in collaboration with Fashion District. At this event you’ll get to meet with designers showcasing their work both virtually and physically. There will also be live interviews with the designers, where you’ll learn more about the ideas behind their collections, their brand directions and plans for the future. In addition, we’re pleased to welcome Co-founder and CEO of Compare Ethics, Abbie Morris, to take part in an important discussion around sustainability and production. \n

    \n

    \n We would love for you to join us even if you can’t be there in person, that’s why all elements will be accessible virtually too, and you will be able to interact with the designers via live stream on the day. A fully packed session of meeting designers, great discussions, PLUS there will be a surprise announcement at the end. This is an event you don’t want to miss!\n

    \n\n
    \n
    \n

    Event agenda

    \n
    \n
    \n
    \n 11am\n
    \n
    \n

    Welcome to Flair

    \n
    \n
    \n
    \n
    \n
    \n 11.10am\n
    \n
    \n

    Talk with Abbie Morris, Co-Founder, Compare Ethics

    \n

    Abbie is co-founder of Compare Ethics, building a verification technology that turns sustainability data into a tangible return on investment and connecting conscious consumers with verified sustainable products.

    \n
    \n
    \n
    \n
    \n
    \n 11.35am\n
    \n
    \n

    Designers Share

    \n

    5 designers sharing their journeys and introducing their work via 2 min video bites.

    \n
    \n
    \n
    \n
    \n
    \n 11.45am\n
    \n
    \n

    Talk with Jack Hebden and Bea Bruecker

    \n

    Interviews with Jack Hebden (LCF graduate) and Bea Bruecker (RCA graduate), delving into their lives and experiences as fashion graduates.

    \n
    \n
    \n
    \n
    \n
    \n 12.10pm\n
    \n
    \n

    Designers Share

    \n

    5 designers sharing their journeys and introducing their work via 2 min video bites.

    \n
    \n
    \n
    \n
    \n
    \n 12.20pm\n
    \n
    \n

    Couch talk

    \n

    The Flair team will be taking questions as well as making an exciting announcement...

    \n
    \n
    \n
    \n
    \n
    \n 12.30pm\n
    \n
    \n

    Physical showcasing & Networking

    \n

    This is your chance to network with other creative minds while meeting the designers and getting a glimpse of their work through physical showcasing.

    \n
    \n
    \n
    \n
    \n
    \n\n
    \n

    How to attend:

    \n
    \n Get your ticket\n
    \n In Westfield Stratford\n
    \n
    \n
    \n Watch Live Stream\n
    \n On Twitch\n
    \n
    \n
    \n
    \n\n \n
    \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Meta } from \"../layout-components/Meta\";\nimport './StaticPages.css';\n\nexport class FlairGrantClass21 extends Component {\n static displayName = FlairGrantClass21.name;\n\n constructor(props) {\n super(props);\n this.state = { data: null, loading: true };\n }\n\n async componentDidMount() {\n await this.fetchData();\n } \n\n render() {\n let designers;\n if (this.state.loading) {\n designers = (

    Loading..

    );\n } else {\n const data = this.state.data;\n designers = data.map(d =>\n
    \n
    \n
    \n \n {d.designerName}\n \n
    \n
    \n {d.designerName}\n {d.university &&\n

    {d.university.universityName}

    \n }\n
    \n
    \n
    \n );\n }\n\n return (\n \n\n \n \n
    \n

    Flair Graduate Grant

    \n

    Class of 2021

    \n\n
    \n

    \n As part of Flair’s ongoing mission to support emerging designers, we are pleased to announce that we are launching the Flair Graduate Grant of £1,000 to assist recent fashion graduates in launching their brands and developing their products.\n

    \n

    \n With this grant we want to celebrate graduates and their amazing work. We see so many examples of innovation; pioneering creative design practices, exploration of social issues and sustainability, creative uses of technology, and new ways of doing things. Fashion graduates bring diversity, innovation and flair; and we’re aiming to help accelerate their practical abilities to move forward in the fashion industry.\n\n

    \n
    \n

    Am I eligible?

    \n

    To apply for the grant, there are two criteria you must meet:

    \n
      \n
    • Graduated in 2021.
    • \n
    • Join and showcase your graduation work or brand on Flair by 12th December 2021.
    • \n
    \n
    \n
    \n

    When will the winner be announced?

    \n

    After the submission closing date on the 12th December 2021, all entries will be judged by an industry expert and a winner will be selected.

    The winner announcement will take place on the 3rd January 2022 via our Instagram @flair.fashionofficial, follow us there.

    \n
    \n
    \n

    How do I enter?

    \n

    Contact us and tell us about your graduation work or brand! We will send you a joining pack to get you started with Flair.

    \n \n
    \n
    \n
    \n\n
    \n

    Designers of Class 2021

    \n
    \n {designers}\n
    \n
    \n
    \n );\n }\n\n async fetchData() {\n const response = await fetch(`api/designers/all-class-21`, {\n });\n const data = await response.json();\n this.setState({ data: data, loading: false });\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Meta } from \"../layout-components/Meta\";\nimport './StaticPages.css';\n\nexport class FlairProgrammeSept23 extends Component {\n static displayName = FlairProgrammeSept23.name;\n\n constructor(props) {\n super(props);\n }\n\n render () {\n return (\n
    \n \n\n
    \n \n \n \n \n \n \n \n \"Flair\n \n
    \n
    \n
    Flair Programme
    \n
    2023
    \n
    September
    \n
    \n
    \n
    Photo by designer Dead Lotus Couture
    \n
    \n\n
    \n

    Flair Fashion Programme: September 2023

    \n
    \n
    \n
    Presentation / Party
    \n
    \n

    \n Thursday, 14th September
    \n 7:30pm - 10:00pm\n

    \n

    Wild Corner: Flair Fashion Presentation at TRAMP- London Most Exclusive Private Club

    \n

    \n Presenting 5 fashion designers during London Fashion Week at TRAMPs’ ornately decorated event space in Mayfair, previously enjoyed by Frank Sinatra and the Beatles-historical as it is magical.\n

    \n

    Location: 40 Jermyn Street, London, SW1Y 6DT

    \n
    \n \n
    \n
    \n
    \n
    Party
    \n
    \n

    \n Friday, 15th September
    \n 5:30pm - 8:30pm\n

    \n

    Flair x Touch London: Fashion Underground Pop-up Launch Party

    \n

    \n Showcasing an inclusive and dynamic event during London Fashion Week that aims to empower brands through captivating experiences at Spitalfields, and a community of creatives come together for their love of fashion and innovation.\n

    \n

    Location: 82a Commercial Street, London, E1 6LY

    \n
    \n \n
    \n
    \n
    \n
    Pop-up
    \n
    \n

    \n Thursday, 14th - 18th September
    \n 10:00am - 8:00pm\n

    \n

    Flair x Touch London: Fashion Underground Pop-up

    \n

    \n Browse and shop collections from incredible brands and emerging designers from all over the world.\n

    \n

    Location: 82a Commercial Street, London, E1 6LY

    \n
    \n \n
    \n
    \n
    \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport { TabContent, TabPane, Nav, NavItem, NavLink, Row, Col } from 'reactstrap';\nimport { StoryImagesCarousel } from '../../story/StoryImagesCarousel';\nimport '../../product-details/ProductDetailsPage.css';\nimport '../StaticPages.css';\nimport './pp.css';\nimport { StoryImagesGrid } from '../../story/StorySections';\nimport { Story } from '../../story/Story';\n\nexport class PiecesTrousers extends Component {\n\n constructor(props) {\n super(props);\n this.state = { activeTab: '1', claim: false };\n this.setActiveTab = this.setActiveTab.bind(this);\n this.anchorRef = React.createRef();\n this.claimPerk = this.claimPerk.bind(this);\n }\n\n setActiveTab(tab) {\n if(this.state.tab !== tab) {\n this.setState({ \n activeTab: tab\n });\n }\n }\n\n scrollIntoView(options) {\n this.anchorRef.current.scrollIntoView(options);\n }\n\n claimPerk() {\n this.setState({ \n claim: true\n });\n }\n\n render() {\n //const product = this.props.product;\n const product_gallery = {\"type\":\"imagesCarousel\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/products/19250/1.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/products/19250/3.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/products/19250/2.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/products/19250/4.jpg\"},\"filedraft\":null}],\"size\":\"medium\",\"itemsAlignment\":\"top\"}};\n const product_1 = {\"type\":\"imagesGrid\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/temp/3EF2AC6D-7CB0-4C01-A84E-69471C17351C.JPG\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/47608498-5A13-420A-AE9F-447F81B5F161.JPG\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/IMG_7206.JPG\"},\"filedraft\":null}],\"totalPerRow\":2,\"itemsAlignment\":\"top\"}};\n //const story = '{\"time\":1686480577567,\"blocks\":[{\"id\":\"C8DHLmCdK_\",\"type\":\"textBox\",\"data\":{\"text\":\"\\u003Cp\\u003EIn this collection of gender neutral garments titled 'Iconic Rebel' we used materials from different cultures highlighting the cross cultural references of freedom and rebellion.\\u003C/p\\u003E\\u003Cp\\u003EWe at PIECES* are very concerned with the state of fashion and the negative environmental impact which fashion is creating. We are committed to minimizing this environmental impact. To create our graphic tees we cut and chopped ethically sourced vintage tees, birthing new unique one of one PIECES* graphic tshirts.\\u003C/p\\u003E\",\"stretched\":false,\"largeBox\":false,\"boxDirection\":\"left\",\"textAlignment\":\"left\"}},{\"id\":\"xbPuJVmFkI\",\"type\":\"imagesCarousel\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/profile/story/9c01ac0ebfde41588f78f112e414cce4.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/profile/story/f9c128cd50354a4d9749beb787d8c50f.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/profile/story/b9480c8090994dbc9b74215bf27bf721.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/profile/story/14b7bd78f76f4c3eb71ac79ee1c92058.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/profile/story/3c999f3d880043d3884015066b429288.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/profile/story/ad51128422ed4a79a1351f10d222f98f.jpeg\"},\"filedraft\":null}],\"size\": \"medium\",\"itemsAlignment\":\"top\"}},{\"id\":\"9mLbRrGORQ\",\"type\":\"header\",\"data\":{\"text\":\"Iconic Rebel\",\"level\":1}},{\"id\":\"SuXFFsx-Lz\",\"type\":\"video\",\"data\":{\"file\":{\"url\":\"1074/profile/story/ec879a36b0114054af4159071895d68b.mp4\"},\"filedraft\":null,\"caption\":\"\",\"thumbnail\":\"1074/profile/story/ec879a36b0114054af4159071895d68b.mp4/ik-thumbnail.jpg?tr=so-68.71\",\"stretched\":true,\"showCaption\":false,\"showControls\":true,\"loop\":false,\"style\":\"full\"}},{\"id\":\"HMYknuLUlh\",\"type\":\"textWithMedia\",\"data\":{\"file\":{\"url\":\"1074/temp/IMG_7206.JPG\"},\"filedraft\":{},\"text\":\"\\u003Cp\\u003ETo create our 1of1 PIECES* flannels we sourced and patch worked different tartan patterns in the creation of these pieces, with references from Gaelic tribes of Scotland and their historical rebellion against the monarch.\\u003C/p\\u003E\\u003Cp\\u003EWe have creatively chop and cut the standard denim jeans silhouette to create fresh eye catching designs that give our customers an edge when they step out in our clothes.\\u003C/p\\u003E\\u003Cp\\u003ETo neatly wrap up the branding of our garments we opted for bold logo prints and emblems on our eye catching designs, as an ode to internet culture and to further solidify our branding as our clothes stand the test of time.\\u003C/p\\u003E\",\"stretched\":true,\"imageDirection\":\"right\",\"textAlignment\":\"left\",\"textboxVerticalAlign\":\"bottom\"}},{\"id\":\"xbPuJVmFkI\",\"type\":\"imagesCarousel\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/temp/image1.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/image2.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/image3.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/image4.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/image5.jpeg\"},\"filedraft\":null}],\"size\": \"medium\",\"itemsAlignment\":\"top\"}},{\"id\":\"HMYknuLUlh\",\"type\":\"textWithMedia\",\"data\":{\"file\":{\"url\":\"1074/profile/story/a5e47ec8b8724cdb833c77341f3bc383.jpeg\"},\"filedraft\":{},\"text\":\"\\u003Cp\\u003ESince its inception in 2020, Pieces has been a pioneer in reimagining denim and crafting unique, one-of-a-kind pieces. In an era dominated by fast fashion, Pieces has remained steadfastly committed to sustainability, championing the creation of clothing that not only boasts a distinctive style but also boasts a longer lifespan, reducing the carbon footprint of the fashion industry. Pieces' commitment to sustainability goes beyond design; it extends to responsible manufacturing practices and materials sourcing. By utilizing ethically sourced fabrics and implementing eco-friendly production methods, the brand continues to pave the way for a more responsible fashion industry. The PIECES* collections represents more than just clothing; it's a narrative of strength, unity, and the pursuit of a better future.\\u003C/p\\u003E\",\"stretched\":true,\"imageDirection\":\"left\",\"textAlignment\":\"left\",\"textboxVerticalAlign\":\"middle\"}}],\"version\":\"2.26.4\"}';\n const story = '{\"time\":1686480577567,\"blocks\":[{\"id\":\"C8DHLmCdK_\",\"type\":\"textBox\",\"data\":{\"text\":\"\\u003Cp\\u003EIn this collection of gender neutral garments titled 'Iconic Rebel' we used materials from different cultures highlighting the cross cultural references of freedom and rebellion.\\u003C/p\\u003E\\u003Cp\\u003EWe at PIECES* are very concerned with the state of fashion and the negative environmental impact which fashion is creating. We are committed to minimizing this environmental impact. To create our graphic tees we cut and chopped ethically sourced vintage tees, birthing new unique one of one PIECES* graphic tshirts.\\u003C/p\\u003E\",\"stretched\":false,\"largeBox\":false,\"boxDirection\":\"left\",\"textAlignment\":\"left\"}},{\"id\":\"xbPuJVmFkI\",\"type\":\"imagesCarousel\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/profile/story/9c01ac0ebfde41588f78f112e414cce4.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/profile/story/f9c128cd50354a4d9749beb787d8c50f.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/profile/story/b9480c8090994dbc9b74215bf27bf721.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/profile/story/14b7bd78f76f4c3eb71ac79ee1c92058.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/profile/story/3c999f3d880043d3884015066b429288.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/profile/story/ad51128422ed4a79a1351f10d222f98f.jpeg\"},\"filedraft\":null}],\"size\": \"medium\",\"itemsAlignment\":\"top\"}},{\"id\":\"9mLbRrGORQ\",\"type\":\"header\",\"data\":{\"text\":\"Iconic Rebel\",\"level\":1}},{\"id\":\"SuXFFsx-Lz\",\"type\":\"video\",\"data\":{\"file\":{\"url\":\"1074/profile/story/ec879a36b0114054af4159071895d68b.mp4\"},\"filedraft\":null,\"caption\":\"\",\"thumbnail\":\"1074/profile/story/ec879a36b0114054af4159071895d68b.mp4/ik-thumbnail.jpg?tr=so-68.71\",\"stretched\":true,\"showCaption\":false,\"showControls\":true,\"loop\":false,\"style\":\"full\"}},{\"id\":\"HMYknuLUlh\",\"type\":\"textWithMedia\",\"data\":{\"file\":{\"url\":\"1074/temp/IMG_7206.JPG\"},\"filedraft\":{},\"text\":\"\\u003Cp\\u003ETo create our 1of1 PIECES* flannels we sourced and patch worked different tartan patterns in the creation of these pieces, with references from Gaelic tribes of Scotland and their historical rebellion against the monarch.\\u003C/p\\u003E\\u003Cp\\u003EWe have creatively chop and cut the standard denim jeans silhouette to create fresh eye catching designs that give our customers an edge when they step out in our clothes.\\u003C/p\\u003E\\u003Cp\\u003ETo neatly wrap up the branding of our garments we opted for bold logo prints and emblems on our eye catching designs, as an ode to internet culture and to further solidify our branding as our clothes stand the test of time.\\u003C/p\\u003E\",\"stretched\":true,\"imageDirection\":\"right\",\"textAlignment\":\"left\",\"textboxVerticalAlign\":\"bottom\"}},{\"id\":\"xbPuJVmFkI\",\"type\":\"imagesCarousel\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/temp/image1.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/image2.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/image3.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/image4.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/image5.jpeg\"},\"filedraft\":null}],\"size\": \"medium\",\"itemsAlignment\":\"top\"}},{\"id\":\"xbPuJVmFkI\",\"type\":\"imagesGrid\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/temp/IMG_9267.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/IMG_9266.jpg\"},\"filedraft\":null}],\"totalPerRow\":2,\"itemsAlignment\":\"top\"}},{\"id\":\"HMYknuLUlh\",\"type\":\"textWithMedia\",\"data\":{\"file\":{\"url\":\"1074/profile/story/a5e47ec8b8724cdb833c77341f3bc383.jpeg\"},\"filedraft\":{},\"text\":\"\\u003Cp\\u003ESince its inception in 2020, Pieces has been a pioneer in reimagining denim and crafting unique, one-of-a-kind pieces. In an era dominated by fast fashion, Pieces has remained steadfastly committed to sustainability, championing the creation of clothing that not only boasts a distinctive style but also boasts a longer lifespan, reducing the carbon footprint of the fashion industry. Pieces' commitment to sustainability goes beyond design; it extends to responsible manufacturing practices and materials sourcing. By utilizing ethically sourced fabrics and implementing eco-friendly production methods, the brand continues to pave the way for a more responsible fashion industry. The PIECES* collections represents more than just clothing; it's a narrative of strength, unity, and the pursuit of a better future.\\u003C/p\\u003E\",\"stretched\":true,\"imageDirection\":\"left\",\"textAlignment\":\"left\",\"textboxVerticalAlign\":\"middle\"}}],\"version\":\"2.26.4\"}';\n const perk_gallery = {\"type\":\"imagesGrid\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/temp/132_20230524-Salesforce_Kauai_2095.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/118_20230524-Salesforce_Kauai_1810.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/128_20230524-Salesforce_Kauai_2019.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/108_20230524-Salesforce_Kauai_1552.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/110_20230524-Salesforce_Kauai_1621.jpg\"},\"filedraft\":null}],\"totalPerRow\":2,\"itemsAlignment\":\"top\"}};\n const activeTab = this.state.activeTab;\n \n return (\n
    \n
    \n

    Product Passport

    \n

    Reworked Denim Jeans Project 417

    \n

    DESIGNER: PIECES* c/o African Youth

    \n

    PPID: 01a1c9a1fffb4cf18de0a6921bdb7942

    \n
    \n\n
    \n
    \n \n \n \n
    \n \n \n
    \n \n
    \n
    \n

    Product Description

    \n

    This denim project is composed of 100% cotton, features a slim fit and zipper flare extension. The denim features an inseam of 30” and is patch worked with up cycled tartan material. This denim is made to naturally distress through wear.

    \n
    \n
    \n

    Material Information

    \n

    To create this 1of1 artisanal piece we sourced and patchworked discarded 100% cotton flannel material, as well as discarded 100% cotton denim jeans processed using an ancient Japanese repairing technique called Boro.

    \n
    \n
    \n

    Washing Instructions

    \n

    This piece should be dry cleaned

    \n

    \"Washing

    \n
    \n
    \n

    Making Process

    \n

    Discarded flannel and jeans where sourced and assembled in Nigeria using an ancient Japanese repair technique called Boro.

    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n
    \n \n
    \n
    \n \n \n \n \n \n \n \n

    Designed by PIECES* c/o African Youth

    \n
    Ugo Anyamele
    \n

    PIECES c/o African Youth is a fashion brand that specialises in upcycling denim garments. Their vision is to create a sustainable fashion brand that also empowers African youth by creating job opportunities and providing skills training. PIECES' target market is the youth who are socially conscious and value sustainability.

    \n \n
    \n
    \n \n
    \n
    \n \n \n \n
    \n

    Exclusive Access

    \n

    \n { !this.state.claim && }\n { this.state.claim &&\n }\n

    \n

    Owning this garment gives you access to the unreleased song HEATWAVE by WOLVES

    \n
    \n
    \n
    \n \"Wolves\"\n
    \n
    \n
    \n
    \n
    \n

    About Wolves

    \n

    Based in Los Angeles, the billboard-charting duo WOLVES, comprising Marc Avery (vocals/piano) and Sean Carney (vocals/guitar/bass/keys), formed an electrifying musical bond in 2016. The magic sparked between them birthed the innovative \"Surf Trap\" genre—a fusion of colossal stadium melodies intertwined with Sean's 'Surf' vibes, encapsulating the streets of Los Angeles his magnetic guitar finesse, and Marc's 'Trap' essence, emanating the spirit of Chicago through lyrical prowess and melody. This infusion crafts a pop alternative experience that defies conventions and resonates with raw authenticity. WOLVES have had their songs featured across major film and TV franchises such as The Fast and Furious 9, The Ellen Show, The NBA on TNT, The MLB on TBS, and The CW.

    \n

    Marc's journey into music, initially driven by collegiate choral singing, took a serendipitous turn post-breakup, kindling a songwriting flame that never extinguished. Sean, on the other hand, channeled his intense musical energy from his high school metal band days, infusing every genre he touches with his signature intensity.

    \n

    The name 'WOLVES' captures the band’s unity, unwavering loyalty, and collective strength. For live performances WOLVES performs as a full band, accompanied, including the blazing beats of Johnathan Rodriguez Jr, booming bass of Nick Cisneros, and a rotating “pack” of LA’s top musicians to create a high-octane experience at every live performance.

    \n

    In 2017, WOLVES seized a pivotal moment on NBC's SONGLAND, opening doors to feature their music on a grand scale. Adding to their triumphs, WOLVES rocked the Crypto.com Arena (formerly Staples Center), taking the spotlight at an LA Kings intermission, commanding the stage with their magnetic presence and unparalleled energy. WOLVES have just released their new album “Everything And More”, available on all streaming platforms. Keep an eye out for them coming to a city near you!

    \n
    \n
    \n

    Unreleased Photos

    \n \n
    \n
    \n \n \n \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport { TabContent, TabPane, Nav, NavItem, NavLink, Row, Col } from 'reactstrap';\nimport { StoryImagesCarousel } from '../../story/StoryImagesCarousel';\nimport '../../product-details/ProductDetailsPage.css';\nimport '../StaticPages.css';\nimport './pp.css';\nimport { StoryImagesGrid } from '../../story/StorySections';\nimport { Story } from '../../story/Story';\n\nexport class PiecesJacket extends Component {\n\n constructor(props) {\n super(props);\n this.state = { activeTab: '1', claim: false };\n this.setActiveTab = this.setActiveTab.bind(this);\n this.anchorRef = React.createRef();\n this.claimPerk = this.claimPerk.bind(this);\n }\n\n setActiveTab(tab) {\n if(this.state.tab !== tab) {\n this.setState({ \n activeTab: tab\n });\n }\n }\n\n scrollIntoView(options) {\n this.anchorRef.current.scrollIntoView(options);\n }\n\n claimPerk() {\n this.setState({ \n claim: true\n });\n }\n\n render() {\n //const product = this.props.product;\n const product_gallery = {\"type\":\"imagesCarousel\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/temp/1.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/2.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/3.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/4.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/5.jpeg\"},\"filedraft\":null}],\"size\":\"medium\",\"itemsAlignment\":\"top\"}};\n const story = '{\"time\":1686480577567,\"blocks\":[{\"id\":\"C8DHLmCdK_\",\"type\":\"textBox\",\"data\":{\"text\":\"\\u003Cp\\u003EIn this collection of gender neutral garments titled 'Iconic Rebel' we used materials from different cultures highlighting the cross cultural references of freedom and rebellion.\\u003C/p\\u003E\\u003Cp\\u003EWe at PIECES* are very concerned with the state of fashion and the negative environmental impact which fashion is creating. We are committed to minimizing this environmental impact. To create our graphic tees we cut and chopped ethically sourced vintage tees, birthing new unique one of one PIECES* graphic tshirts.\\u003C/p\\u003E\",\"stretched\":false,\"largeBox\":false,\"boxDirection\":\"left\",\"textAlignment\":\"left\"}},{\"id\":\"xbPuJVmFkI\",\"type\":\"imagesCarousel\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/profile/story/9c01ac0ebfde41588f78f112e414cce4.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/profile/story/f9c128cd50354a4d9749beb787d8c50f.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/profile/story/b9480c8090994dbc9b74215bf27bf721.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/profile/story/14b7bd78f76f4c3eb71ac79ee1c92058.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/profile/story/3c999f3d880043d3884015066b429288.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/profile/story/ad51128422ed4a79a1351f10d222f98f.jpeg\"},\"filedraft\":null}],\"size\": \"medium\",\"itemsAlignment\":\"top\"}},{\"id\":\"9mLbRrGORQ\",\"type\":\"header\",\"data\":{\"text\":\"Iconic Rebel\",\"level\":1}},{\"id\":\"SuXFFsx-Lz\",\"type\":\"video\",\"data\":{\"file\":{\"url\":\"1074/profile/story/ec879a36b0114054af4159071895d68b.mp4\"},\"filedraft\":null,\"caption\":\"\",\"thumbnail\":\"1074/profile/story/ec879a36b0114054af4159071895d68b.mp4/ik-thumbnail.jpg?tr=so-68.71\",\"stretched\":true,\"showCaption\":false,\"showControls\":true,\"loop\":false,\"style\":\"full\"}},{\"id\":\"HMYknuLUlh\",\"type\":\"textWithMedia\",\"data\":{\"file\":{\"url\":\"1074/temp/IMG_7206.JPG\"},\"filedraft\":{},\"text\":\"\\u003Cp\\u003ETo create our 1of1 PIECES* flannels we sourced and patch worked different tartan patterns in the creation of these pieces, with references from Gaelic tribes of Scotland and their historical rebellion against the monarch.\\u003C/p\\u003E\\u003Cp\\u003EWe have creatively chop and cut the standard denim jeans silhouette to create fresh eye catching designs that give our customers an edge when they step out in our clothes.\\u003C/p\\u003E\\u003Cp\\u003ETo neatly wrap up the branding of our garments we opted for bold logo prints and emblems on our eye catching designs, as an ode to internet culture and to further solidify our branding as our clothes stand the test of time.\\u003C/p\\u003E\",\"stretched\":true,\"imageDirection\":\"right\",\"textAlignment\":\"left\",\"textboxVerticalAlign\":\"bottom\"}},{\"id\":\"xbPuJVmFkI\",\"type\":\"imagesCarousel\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/temp/image1.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/image2.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/image3.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/image4.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/image5.jpeg\"},\"filedraft\":null}],\"size\": \"medium\",\"itemsAlignment\":\"top\"}},{\"id\":\"xbPuJVmFkI\",\"type\":\"imagesGrid\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/temp/IMG_9267.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/IMG_9266.jpg\"},\"filedraft\":null}],\"totalPerRow\":2,\"itemsAlignment\":\"top\"}},{\"id\":\"HMYknuLUlh\",\"type\":\"textWithMedia\",\"data\":{\"file\":{\"url\":\"1074/profile/story/a5e47ec8b8724cdb833c77341f3bc383.jpeg\"},\"filedraft\":{},\"text\":\"\\u003Cp\\u003ESince its inception in 2020, Pieces has been a pioneer in reimagining denim and crafting unique, one-of-a-kind pieces. In an era dominated by fast fashion, Pieces has remained steadfastly committed to sustainability, championing the creation of clothing that not only boasts a distinctive style but also boasts a longer lifespan, reducing the carbon footprint of the fashion industry. Pieces' commitment to sustainability goes beyond design; it extends to responsible manufacturing practices and materials sourcing. By utilizing ethically sourced fabrics and implementing eco-friendly production methods, the brand continues to pave the way for a more responsible fashion industry. The PIECES* collections represents more than just clothing; it's a narrative of strength, unity, and the pursuit of a better future.\\u003C/p\\u003E\",\"stretched\":true,\"imageDirection\":\"left\",\"textAlignment\":\"left\",\"textboxVerticalAlign\":\"middle\"}}],\"version\":\"2.26.4\"}';\n const perk_gallery = {\"type\":\"imagesGrid\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/temp/132_20230524-Salesforce_Kauai_2095.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/118_20230524-Salesforce_Kauai_1810.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/128_20230524-Salesforce_Kauai_2019.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/108_20230524-Salesforce_Kauai_1552.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/110_20230524-Salesforce_Kauai_1621.jpg\"},\"filedraft\":null}],\"totalPerRow\":2,\"itemsAlignment\":\"top\"}};\n const activeTab = this.state.activeTab;\n \n return (\n
    \n
    \n

    Product Passport

    \n

    Masquerade Bomber Jacket Project 425

    \n

    DESIGNER: PIECES* c/o African Youth

    \n

    PPID: 56176dbbbdd94328a6b947d8614047f8

    \n
    \n\n
    \n
    \n \n \n \n
    \n \n \n
    \n \n
    \n
    \n

    Product Description

    \n

    Our Masquerade bomber is a piece created to meld our love for the cultures of our motherland and our fallen heroines. This pieces was created to catch eyes. This warm and comfortable bomber jacket is made of durable 210D waterproof cotton twill. It goes with a heavy-duty front zipper, and features two side pockets, two inner pockets, all with press stud fastening, and one zip patch pocket. This jacket has been finished with 100% organic panamane cotton patches printed sustainably.

    \n
    \n
    \n

    Material Information

    \n

    With this piece we used materials that cross culturally reference rebellion and freedom, in this case the camouflage print. To further embody our fight against fast fashion and our push towards sustainability we have created our jacket printed patches using organic Panamanian cotton which have been sustainability screen printed by hand.

    \n
    \n
    \n

    Washing Instructions

    \n

    This piece should be washed inside out at cold temperatures and air dried. No bleach.

    \n

    \"Washing

    \n
    \n
    \n

    Making Process

    \n

    The base jacket was manufactured in China. Cotton Patches sourced and hand printed in the UK. Product was assembled in the UK.

    \n
    \n \n
    \n
    \n
    \n \n \n \n
    \n \n
    \n
    \n \n \n \n \n \n \n \n

    Designed by PIECES* c/o African Youth

    \n
    Ugo Anyamele
    \n

    PIECES c/o African Youth is a fashion brand that specialises in upcycling denim garments. Their vision is to create a sustainable fashion brand that also empowers African youth by creating job opportunities and providing skills training. PIECES' target market is the youth who are socially conscious and value sustainability.

    \n \n
    \n
    \n \n
    \n
    \n \n \n \n
    \n

    Exclusive Access

    \n

    \n { !this.state.claim && }\n { this.state.claim &&\n }\n

    \n

    Owning this garment gives you access to the unreleased song HEATWAVE by WOLVES

    \n
    \n
    \n
    \n \"Wolves\"\n
    \n
    \n
    \n
    \n
    \n

    About Wolves

    \n

    Based in Los Angeles, the billboard-charting duo WOLVES, comprising Marc Avery (vocals/piano) and Sean Carney (vocals/guitar/bass/keys), formed an electrifying musical bond in 2016. The magic sparked between them birthed the innovative \"Surf Trap\" genre—a fusion of colossal stadium melodies intertwined with Sean's 'Surf' vibes, encapsulating the streets of Los Angeles his magnetic guitar finesse, and Marc's 'Trap' essence, emanating the spirit of Chicago through lyrical prowess and melody. This infusion crafts a pop alternative experience that defies conventions and resonates with raw authenticity. WOLVES have had their songs featured across major film and TV franchises such as The Fast and Furious 9, The Ellen Show, The NBA on TNT, The MLB on TBS, and The CW.

    \n

    Marc's journey into music, initially driven by collegiate choral singing, took a serendipitous turn post-breakup, kindling a songwriting flame that never extinguished. Sean, on the other hand, channeled his intense musical energy from his high school metal band days, infusing every genre he touches with his signature intensity.

    \n

    The name 'WOLVES' captures the band’s unity, unwavering loyalty, and collective strength. For live performances WOLVES performs as a full band, accompanied, including the blazing beats of Johnathan Rodriguez Jr, booming bass of Nick Cisneros, and a rotating “pack” of LA’s top musicians to create a high-octane experience at every live performance.

    \n

    In 2017, WOLVES seized a pivotal moment on NBC's SONGLAND, opening doors to feature their music on a grand scale. Adding to their triumphs, WOLVES rocked the Crypto.com Arena (formerly Staples Center), taking the spotlight at an LA Kings intermission, commanding the stage with their magnetic presence and unparalleled energy. WOLVES have just released their new album “Everything And More”, available on all streaming platforms. Keep an eye out for them coming to a city near you!

    \n
    \n
    \n

    Unreleased Photos

    \n \n
    \n
    \n \n \n \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport { TabContent, TabPane, Nav, NavItem, NavLink, Row, Col } from 'reactstrap';\nimport { StoryImagesCarousel } from '../../story/StoryImagesCarousel';\nimport '../../product-details/ProductDetailsPage.css';\nimport '../StaticPages.css';\nimport './pp.css';\nimport { StoryImagesGrid } from '../../story/StorySections';\nimport { Story } from '../../story/Story';\n\nexport class NiamhTop extends Component {\n\n constructor(props) {\n super(props);\n this.state = { activeTab: '1', claim: false };\n this.setActiveTab = this.setActiveTab.bind(this);\n this.anchorRef = React.createRef();\n this.claimPerk = this.claimPerk.bind(this);\n }\n\n setActiveTab(tab) {\n if(this.state.tab !== tab) {\n this.setState({ \n activeTab: tab\n });\n }\n }\n\n scrollIntoView(options) {\n this.anchorRef.current.scrollIntoView(options);\n }\n\n claimPerk() {\n this.setState({ \n claim: true\n });\n }\n\n render() {\n //const product = this.props.product;\n const product_gallery = {\"type\":\"imagesCarousel\",\"data\":{\"images\":[{\"file\":{\"url\":\"1097/temp/IMG_2614.jpeg?v=3\"},\"filedraft\":null},{\"file\":{\"url\":\"1097/temp/864DED04-96CA-4419-BF88-87445147BFE0.jpeg\"},\"filedraft\":null}],\"size\":\"medium\",\"itemsAlignment\":\"top\"}};\n const product_1 = {\"type\":\"imagesGrid\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/temp/3EF2AC6D-7CB0-4C01-A84E-69471C17351C.JPG\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/47608498-5A13-420A-AE9F-447F81B5F161.JPG\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/IMG_7206.JPG\"},\"filedraft\":null}],\"totalPerRow\":2,\"itemsAlignment\":\"top\"}};\n const story = '{\"time\":1686480577567,\"blocks\":[{\"id\":\"9mLbRrGORQ\",\"type\":\"header\",\"data\":{\"text\":\"YAI FOR SS24\",\"level\":1}},{\"id\":\"OnI-l_jGDc\",\"type\":\"banner\",\"data\":{\"file\":{\"url\":\"1097/temp/IMG_3912.jpg\"},\"filedraft\":{},\"caption\":\"\",\"stretched\":true,\"showCaption\":false}},{\"id\":\"C8DHLmCdK_\",\"type\":\"textBox\",\"data\":{\"text\":\"\\u003Cp\\u003EThis collection was based around the idea of re-working some denim and jersey to upcycle and to add to our strong sustainable factor... I have used a mix of mohair and recycled acrylic around this. This is based on the ‘horse girl aesthetic’ which I feel is a really fun aesthetic and reminds me of my childhood village farm days. The re-work and up-cycle factor links with the randomness and re-use of items you would throw on to go and play down in the fields....\\u003C/p\\u003E\",\"stretched\":false,\"largeBox\":false,\"boxDirection\":\"left\",\"textAlignment\":\"left\"}},{\"id\":\"xbPuJVmFkI\",\"type\":\"imagesCarousel\",\"data\":{\"images\":[{\"file\":{\"url\":\"1097/temp/fullsizeoutput_23e.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1097/temp/fullsizeoutput_225.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1097/temp/IMG_3914.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1097/temp/IMG_3910.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1097/temp/IMG_3913.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1097/temp/IMG_3915.jpg\"},\"filedraft\":null}],\"size\": \"medium\",\"itemsAlignment\":\"bottom\"}},{\"id\":\"C8DHLmCdK_\",\"type\":\"textBox\",\"data\":{\"text\":\"\\u003Cp\\u003EWe curated this product through a campaign we shot in Hackney with a small team. We wanted to showcase a 'horse girl' aesthetic...which I feel the team did so well whilst still fitting my campaign aesthetic to which I have developed by being particular with who shoots the campaigns etc!\\u003C/p\\u003E\\u003Cp\\u003EI really wanted to portray these jersey pieces as a product in which you can dress up or dress down and I feel my stylists portrayed this very well as I love the high boot, cycling short combination.\\u003C/p\\u003E\",\"stretched\":false,\"largeBox\":false,\"boxDirection\":\"right\",\"textAlignment\":\"left\"}},{\"id\":\"SuXFFsx-Lz\",\"type\":\"video\",\"data\":{\"file\":{\"url\":\"1097/temp/45ed5f7c8a694ca3b6fce13c74e411b3.mp4\"},\"filedraft\":null,\"caption\":\"\",\"thumbnail\":\"1097/temp/45ed5f7c8a694ca3b6fce13c74e411b3.mp4/ik-thumbnail.jpg?tr=so-3.17\",\"stretched\":true,\"showCaption\":false,\"showControls\":true,\"loop\":false,\"style\":\"full\"}},{\"id\":\"HMYknuLUlh\",\"type\":\"textWithMedia\",\"data\":{\"file\":{\"url\":\"1097/temp/IMG_3911.jpg\"},\"filedraft\":{},\"text\":\"\\u003Cp\\u003EColour is a core value throughout our brand and with this we ensure this is shown throughout each of our campaigns generally. I want to catch the eye with everything we do within niamhemilyfoster.\\u003C/p\\u003E\",\"stretched\":true,\"imageDirection\":\"left\",\"textAlignment\":\"left\",\"textboxVerticalAlign\":\"middle\"}}],\"version\":\"2.26.4\"}';\n const perk_gallery = {\"type\":\"imagesGrid\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/temp/132_20230524-Salesforce_Kauai_2095.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/118_20230524-Salesforce_Kauai_1810.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/128_20230524-Salesforce_Kauai_2019.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/108_20230524-Salesforce_Kauai_1552.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/110_20230524-Salesforce_Kauai_1621.jpg\"},\"filedraft\":null}],\"totalPerRow\":2,\"itemsAlignment\":\"top\"}};\n const activeTab = this.state.activeTab;\n\n return (\n
    \n
    \n

    Product Passport

    \n

    YAI FOR SS24 Jersey Top

    \n

    DESIGNER: Niamh Emily Foster

    \n

    PPID: a829aa39b05c4fa9add5f50f5c53d989

    \n
    \n\n
    \n
    \n \n \n \n
    \n \n \n
    \n \n
    \n
    \n

    Product Description

    \n

    Our ready to wear jersey top made from old swatches of past knits. The unique shape to allow a breathable and super wearable top for both dressing up and to lounge in.

    \n
    \n
    \n

    Material Information

    \n

    Jersey Lycra is the main component of our 'Yai for SS24' Jersey Top. This fabric is sourced from RQ Studio and is entirely London made and sourced.

    \n
    \n
    \n

    Washing Instructions

    \n

    Machine wash at 30. Air Dry

    \n

    \"Washing

    \n
    \n
    \n

    Making Process

    \n

    This print for the Yai for SS24 Jersey Top was made in collaboration with Fiona Blackman Studio. Together we worked together to make a print physically screen printing old knit swatches to create this bespoke print, so a totally reusable process from past collection swatches to create a screen print. We then got it printed at RQ Studio.

    \n

    This whole process was made and sourced in London from independent makers.

    \n
    \n \n
    \n
    \n
    \n \n \n \n
    \n \n
    \n
    \n \n \n \n \n \n \n \n

    Designed by Niamh Emily Foster

    \n
    Niamh Foster
    \n

    A slow fashion primarily knitwear brand all handmade in West London. NiamhEmilyFoster focuses on the quality rather than the quantity by releasing small capsule collections and with other brands in a collaborative format, such as INUIKII and MataComplex.

    \n \n
    \n
    \n \n
    \n
    \n \n \n \n
    \n

    Exclusive Access

    \n

    \n { !this.state.claim && }\n { this.state.claim &&\n }\n

    \n

    Owning this garment gives you access to the unreleased song HEATWAVE by WOLVES

    \n
    \n
    \n
    \n \"Wolves\"\n
    \n
    \n
    \n
    \n
    \n

    About Wolves

    \n

    Based in Los Angeles, the billboard-charting duo WOLVES, comprising Marc Avery (vocals/piano) and Sean Carney (vocals/guitar/bass/keys), formed an electrifying musical bond in 2016. The magic sparked between them birthed the innovative \"Surf Trap\" genre—a fusion of colossal stadium melodies intertwined with Sean's 'Surf' vibes, encapsulating the streets of Los Angeles his magnetic guitar finesse, and Marc's 'Trap' essence, emanating the spirit of Chicago through lyrical prowess and melody. This infusion crafts a pop alternative experience that defies conventions and resonates with raw authenticity. WOLVES have had their songs featured across major film and TV franchises such as The Fast and Furious 9, The Ellen Show, The NBA on TNT, The MLB on TBS, and The CW.

    \n

    Marc's journey into music, initially driven by collegiate choral singing, took a serendipitous turn post-breakup, kindling a songwriting flame that never extinguished. Sean, on the other hand, channeled his intense musical energy from his high school metal band days, infusing every genre he touches with his signature intensity.

    \n

    The name 'WOLVES' captures the band’s unity, unwavering loyalty, and collective strength. For live performances WOLVES performs as a full band, accompanied, including the blazing beats of Johnathan Rodriguez Jr, booming bass of Nick Cisneros, and a rotating “pack” of LA’s top musicians to create a high-octane experience at every live performance.

    \n

    In 2017, WOLVES seized a pivotal moment on NBC's SONGLAND, opening doors to feature their music on a grand scale. Adding to their triumphs, WOLVES rocked the Crypto.com Arena (formerly Staples Center), taking the spotlight at an LA Kings intermission, commanding the stage with their magnetic presence and unparalleled energy. WOLVES have just released their new album “Everything And More”, available on all streaming platforms. Keep an eye out for them coming to a city near you!

    \n
    \n
    \n

    Unreleased Photos

    \n \n
    \n
    \n \n \n \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport { TabContent, TabPane, Nav, NavItem, NavLink, Row, Col } from 'reactstrap';\nimport { StoryImagesCarousel } from '../../story/StoryImagesCarousel';\nimport '../../product-details/ProductDetailsPage.css';\nimport '../StaticPages.css';\nimport './pp.css';\nimport { StoryImagesGrid } from '../../story/StorySections';\nimport { Story } from '../../story/Story';\n\nexport class NiamhBottom extends Component {\n\n constructor(props) {\n super(props);\n this.state = { activeTab: '1', claim: false };\n this.setActiveTab = this.setActiveTab.bind(this);\n this.anchorRef = React.createRef();\n this.claimPerk = this.claimPerk.bind(this);\n }\n\n setActiveTab(tab) {\n if(this.state.tab !== tab) {\n this.setState({ \n activeTab: tab\n });\n }\n }\n\n scrollIntoView(options) {\n this.anchorRef.current.scrollIntoView(options);\n }\n\n claimPerk() {\n this.setState({ \n claim: true\n });\n }\n\n render() {\n //const product = this.props.product;\n const product_gallery = {\"type\":\"imagesCarousel\",\"data\":{\"images\":[{\"file\":{\"url\":\"1097/temp/jerseyshorts1.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1097/temp/Jerseyshorts2.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1097/temp/jerseyshorts3.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1097/temp/jerseyshorts4.jpeg\"},\"filedraft\":null}],\"size\":\"medium\",\"itemsAlignment\":\"top\"}};\n const product_1 = {\"type\":\"imagesGrid\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/temp/3EF2AC6D-7CB0-4C01-A84E-69471C17351C.JPG\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/47608498-5A13-420A-AE9F-447F81B5F161.JPG\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/IMG_7206.JPG\"},\"filedraft\":null}],\"totalPerRow\":2,\"itemsAlignment\":\"top\"}};\n const story = '{\"time\":1686480577567,\"blocks\":[{\"id\":\"9mLbRrGORQ\",\"type\":\"header\",\"data\":{\"text\":\"YAI FOR SS24\",\"level\":1}},{\"id\":\"OnI-l_jGDc\",\"type\":\"banner\",\"data\":{\"file\":{\"url\":\"1097/temp/IMG_3912.jpg\"},\"filedraft\":{},\"caption\":\"\",\"stretched\":true,\"showCaption\":false}},{\"id\":\"C8DHLmCdK_\",\"type\":\"textBox\",\"data\":{\"text\":\"\\u003Cp\\u003EThis collection was based around the idea of re-working some denim and jersey to upcycle and to add to our strong sustainable factor... I have used a mix of mohair and recycled acrylic around this. This is based on the ‘horse girl aesthetic’ which I feel is a really fun aesthetic and reminds me of my childhood village farm days. The re-work and up-cycle factor links with the randomness and re-use of items you would throw on to go and play down in the fields....\\u003C/p\\u003E\",\"stretched\":false,\"largeBox\":false,\"boxDirection\":\"left\",\"textAlignment\":\"left\"}},{\"id\":\"xbPuJVmFkI\",\"type\":\"imagesCarousel\",\"data\":{\"images\":[{\"file\":{\"url\":\"1097/temp/fullsizeoutput_23e.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1097/temp/fullsizeoutput_225.jpeg\"},\"filedraft\":null},{\"file\":{\"url\":\"1097/temp/IMG_3914.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1097/temp/IMG_3910.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1097/temp/IMG_3913.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1097/temp/IMG_3915.jpg\"},\"filedraft\":null}],\"size\": \"medium\",\"itemsAlignment\":\"bottom\"}},{\"id\":\"C8DHLmCdK_\",\"type\":\"textBox\",\"data\":{\"text\":\"\\u003Cp\\u003EWe curated this product through a campaign we shot in Hackney with a small team. We wanted to showcase a 'horse girl' aesthetic...which I feel the team did so well whilst still fitting my campaign aesthetic to which I have developed by being particular with who shoots the campaigns etc!\\u003C/p\\u003E\\u003Cp\\u003EI really wanted to portray these jersey pieces as a product in which you can dress up or dress down and I feel my stylists portrayed this very well as I love the high boot, cycling short combination.\\u003C/p\\u003E\",\"stretched\":false,\"largeBox\":false,\"boxDirection\":\"right\",\"textAlignment\":\"left\"}},{\"id\":\"SuXFFsx-Lz\",\"type\":\"video\",\"data\":{\"file\":{\"url\":\"1097/temp/45ed5f7c8a694ca3b6fce13c74e411b3.mp4\"},\"filedraft\":null,\"caption\":\"\",\"thumbnail\":\"1097/temp/45ed5f7c8a694ca3b6fce13c74e411b3.mp4/ik-thumbnail.jpg?tr=so-3.17\",\"stretched\":true,\"showCaption\":false,\"showControls\":true,\"loop\":false,\"style\":\"full\"}},{\"id\":\"HMYknuLUlh\",\"type\":\"textWithMedia\",\"data\":{\"file\":{\"url\":\"1097/temp/IMG_3911.jpg\"},\"filedraft\":{},\"text\":\"\\u003Cp\\u003EColour is a core value throughout our brand and with this we ensure this is shown throughout each of our campaigns generally. I want to catch the eye with everything we do within niamhemilyfoster.\\u003C/p\\u003E\",\"stretched\":true,\"imageDirection\":\"left\",\"textAlignment\":\"left\",\"textboxVerticalAlign\":\"middle\"}}],\"version\":\"2.26.4\"}';\n const perk_gallery = {\"type\":\"imagesGrid\",\"data\":{\"images\":[{\"file\":{\"url\":\"1074/temp/132_20230524-Salesforce_Kauai_2095.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/118_20230524-Salesforce_Kauai_1810.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/128_20230524-Salesforce_Kauai_2019.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/108_20230524-Salesforce_Kauai_1552.jpg\"},\"filedraft\":null},{\"file\":{\"url\":\"1074/temp/110_20230524-Salesforce_Kauai_1621.jpg\"},\"filedraft\":null}],\"totalPerRow\":2,\"itemsAlignment\":\"top\"}};\n const activeTab = this.state.activeTab;\n\n return (\n
    \n
    \n

    Product Passport

    \n

    YAI FOR SS24 Jersey Shorts

    \n

    DESIGNER: Niamh Emily Foster

    \n

    PPID: f6a4cb2d19c64c3593e51a639f2a1265

    \n
    \n\n
    \n
    \n \n \n \n
    \n \n \n
    \n \n
    \n
    \n

    Product Description

    \n

    These cycling shorts have been made with Fiona Blackman Studios using screen prints of knit swatches to create this print which we then had printed at the RQStudio. These shorts have a perfect stretch and are perfect for lounge, to dress up and sport such as pilates, yoga and ballet.

    \n
    \n
    \n

    Material Information

    \n

    Jersey Lycra is the main component of our 'Yai for SS24' Jersey Shorts. This fabric is sourced from RQ Studio and is entirely London made and sourced.

    \n
    \n
    \n

    Washing Instructions

    \n

    Machine wash at 30. Air Dry

    \n

    \"Washing

    \n
    \n
    \n

    Making Process

    \n

    This print for the Yai for SS24 Jersey Shorts was made in collaboration with Fiona Blackman Studio. Together we worked together to make a print physically screen printing old knit swatches to create this bespoke print, so a totally reusable process from past collection swatches to create a screen print. We then got it printed at RQ Studio.

    \n

    This whole process was made and sourced in London from independent makers.

    \n
    \n \n
    \n
    \n
    \n \n \n \n
    \n \n
    \n
    \n \n \n \n \n \n \n \n

    Designed by Niamh Emily Foster

    \n
    Niamh Foster
    \n

    A slow fashion primarily knitwear brand all handmade in West London. NiamhEmilyFoster focuses on the quality rather than the quantity by releasing small capsule collections and with other brands in a collaborative format, such as INUIKII and MataComplex.

    \n \n
    \n
    \n \n
    \n
    \n \n \n \n
    \n

    Exclusive Access

    \n

    \n { !this.state.claim && }\n { this.state.claim &&\n }\n

    \n

    Owning this garment gives you access to the unreleased song HEATWAVE by WOLVES

    \n
    \n
    \n
    \n \"Wolves\"\n
    \n
    \n
    \n
    \n
    \n

    About Wolves

    \n

    Based in Los Angeles, the billboard-charting duo WOLVES, comprising Marc Avery (vocals/piano) and Sean Carney (vocals/guitar/bass/keys), formed an electrifying musical bond in 2016. The magic sparked between them birthed the innovative \"Surf Trap\" genre—a fusion of colossal stadium melodies intertwined with Sean's 'Surf' vibes, encapsulating the streets of Los Angeles his magnetic guitar finesse, and Marc's 'Trap' essence, emanating the spirit of Chicago through lyrical prowess and melody. This infusion crafts a pop alternative experience that defies conventions and resonates with raw authenticity. WOLVES have had their songs featured across major film and TV franchises such as The Fast and Furious 9, The Ellen Show, The NBA on TNT, The MLB on TBS, and The CW.

    \n

    Marc's journey into music, initially driven by collegiate choral singing, took a serendipitous turn post-breakup, kindling a songwriting flame that never extinguished. Sean, on the other hand, channeled his intense musical energy from his high school metal band days, infusing every genre he touches with his signature intensity.

    \n

    The name 'WOLVES' captures the band’s unity, unwavering loyalty, and collective strength. For live performances WOLVES performs as a full band, accompanied, including the blazing beats of Johnathan Rodriguez Jr, booming bass of Nick Cisneros, and a rotating “pack” of LA’s top musicians to create a high-octane experience at every live performance.

    \n

    In 2017, WOLVES seized a pivotal moment on NBC's SONGLAND, opening doors to feature their music on a grand scale. Adding to their triumphs, WOLVES rocked the Crypto.com Arena (formerly Staples Center), taking the spotlight at an LA Kings intermission, commanding the stage with their magnetic presence and unparalleled energy. WOLVES have just released their new album “Everything And More”, available on all streaming platforms. Keep an eye out for them coming to a city near you!

    \n
    \n
    \n

    Unreleased Photos

    \n \n
    \n
    \n \n \n \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport { Switch, Route } from 'react-router';\nimport { Layout } from './components/Layout';\nimport { Home } from './components/home/Home';\nimport ScrollToTop from './components/layout-components/ScrollToTop';\nimport { BasketPage } from './components/basket/BasketPage';\nimport { ShowcaseHome } from './components/designer/ShowcaseHome';\nimport { ShopHome } from './components/store-catalogue/ShopHome';\nimport { DesignersListingPage } from './components/designer/DesignersListingPage';\nimport { DesignerDetailsPage } from './components/designer/DesignerDetailsPage';\nimport { CheckoutPage } from './components/checkout/CheckoutPage';\nimport { CheckoutProcessingPage } from './components/checkout/CheckoutProcessingPage';\nimport { CheckoutCompletePage } from './components/checkout/CheckoutCompletePage';\nimport { FetchData } from './components/FetchData';\nimport { Counter } from './components/Counter';\nimport { StoreCataloguePage } from './components/store-catalogue/StoreCataloguePage';\nimport { ProductDetailsPage } from './components/product-details/ProductDetailsPage';\nimport { CollectionDetailsPage } from './components/collection/CollectionDetailsPage';\nimport AuthorizeRoute from './components/api-authorization/AuthorizeRoute';\nimport ApiAuthorizationRoutes from './components/api-authorization/ApiAuthorizationRoutes';\nimport { ApplicationPaths } from './components/api-authorization/ApiAuthorizationConstants';\n\nimport { FAQPage } from './components/static-pages/FAQ';\nimport { TermsAndConditionsPage } from './components/static-pages/TermsAndConditions';\nimport { PrivacyPolicyPage } from './components/static-pages/PrivacyPolicy';\nimport { ReturnPolicyPage } from './components/static-pages/ReturnPolicy';\nimport { AboutPage } from './components/static-pages/About';\nimport { JoinFlairPage } from './components/static-pages/JoinFlair';\n\nimport { FlairClass21 } from './components/static-pages/FlairClass21';\nimport { FlairGrantClass21 } from './components/static-pages/FlairGrantClass21';\nimport { FlairProgrammeSept23 } from './components/static-pages/FlairProgrammeSept23';\nimport { PiecesTrousers } from './components/static-pages/pp/PiecesTrousers';\nimport { PiecesJacket } from './components/static-pages/pp/PiecesJacket';\nimport { NiamhTop } from './components/static-pages/pp/NiamhTop';\nimport { NiamhBottom } from './components/static-pages/pp/NiamhBottom';\n\nimport './custom.css'\n\nexport default class App extends Component {\n static displayName = App.name;\n\n render () {\n return (\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n\n \n\n \n \n \n );\n }\n}\n","import 'bootstrap/dist/css/bootstrap.css';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport App from './App';\nimport TagManager from 'react-gtm-module';\n\n//import registerServiceWorker from './registerServiceWorker';\n\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\nconst rootElement = document.getElementById('root');\n\nconst tagManagerArgs = {\n gtmId: process.env.REACT_APP_GOOGLE_GTM_ID,\n auth: process.env.REACT_APP_GOOGLE_GTM_AUTH,\n preview: process.env.REACT_APP_GOOGLE_GTM_ENV\n};\nTagManager.initialize(tagManagerArgs);\n\n\nReactDOM.render(\n \n \n ,\n rootElement);\n\n// Uncomment the line above that imports the registerServiceWorker function\n// and the line below to register the generated service worker.\n// By default create-react-app includes a service worker to improve the\n// performance of the application by caching static assets. This service\n// worker can interfere with the Identity UI, so it is\n// disabled by default when Identity is being used.\n//\n//registerServiceWorker();\n\n"],"sourceRoot":""}