{"version":3,"sources":["components/common/scroll-to-top/index.jsx","components/common/toast/toast-notification.jsx","redux/system/system-action-types.js","redux/system/system-action-creators.js","redux/system/notification-reducer.js","components/common/toast/toast-container.jsx","components/common/button-fx/index.jsx","components/nav-bar/index.jsx","components/footer/index.jsx","views/playground/main.jsx","views/playground/index.jsx","components/common/image-header/index.jsx","components/common/content-section/index.jsx","components/common/block-ui-fx/index.jsx","components/common/page-tagging/page-tagging.js","components/common/enhanced-content-section/index.jsx","components/common/partners/partner/view.jsx","components/common/partners/partner/index.jsx","components/common/partners/view.jsx","constants/partners.js","components/common/partners/index.jsx","views/home/components/partner/index.jsx","views/home/index.jsx","components/common/error-message/index.jsx","components/common/common-fast-field/index.jsx","constants/public-content-core.js","components/common/image-header-secondary/index.jsx","components/common/image-gallery/index.jsx","components/case-study/case-study.js","constants/public-content-case-studies.js","constants/public-content.js","services/content-service.jsx","components/common/formik-submit-button/index.jsx","views/contact-us/hooks/use-effect-handler.jsx","views/contact-us/main.jsx","views/contact-us/redux/action-types.js","config.jsx","core/http/httpClient.js","views/contact-us/redux/action-creators.js","views/contact-us/services/service.js","views/contact-us/formik/formik/initial-values.js","views/contact-us/formik/formik/validation-schema.js","views/contact-us/index.jsx","views/content-page/index.jsx","views/gallery/gallery-items.js","routes/routing.jsx","views/gallery/index.jsx","constants/navigation.js","layouts/fullLayout.jsx","views/pages/403/error-403.jsx","views/pages/404/error-404.jsx","views/pages/500/error-500.jsx","routes/misc-pages-routes.jsx","views/pages/maintenance/maintenance.jsx","routes/blank-layout-routes.jsx","routes/index.jsx","layouts/blankLayout.jsx","App.js","redux/system/error-notification-reducer.js","redux/system/system-reducer.js","views/contact-us/redux/reducer.js","redux/root-reducer.js","redux/configure-store.js","serviceWorker.js","index.js"],"names":["ScrollToTop","prevProps","this","props","location","pathname","window","scrollTo","children","Component","withRouter","ToastNotification","style","NotificationItem","DefaultStyle","margin","padding","borderRadius","fontSize","color","backgroundColor","width","maxWidth","success","borderTop","error","Dismiss","notificationSystem","refs","newProps","notification","message","level","addNotification","position","ref","ActionTypes","type","initialState","ToastNotificationContainer","connect","state","system","selectNotificationData","dispatch","actions","bindActionCreators","override","css","ButtonFx","loadSpinner","targetName","name","isLoading","id","beatColor","icon","onMouseEnter","onMouseLeave","disabled","onClick","block","className","Button","sizeUnit","size","loading","defaultProps","round","NavBar","getNavItem","navItem","i","subLinks","length","highlightClass","UncontrolledDropdown","key","nav","inNavbar","DropdownToggle","href","aria-controls","navigate","title","replace","DropdownMenu","right","map","subItem","a","DropdownItem","tag","RRNavLink","to","closeMenu","NavItem","NavLink","startsWith","target","rel","toggle","bind","openMenu","isOpen","self","$","document","click","event","mobileMenuOpen","hasClass","navLink","navBarNavItem","navBarCollapse","navBarNav","nextSibling","includes","setState","path","history","push","navLinks","Navbar","light","dark","expand","Container","fluid","Row","Col","xs","md","xl","NavbarBrand","src","alt","NavbarToggler","Collapse","navbar","timeout","Nav","Footer","useHistory","form","noGutters","Date","getFullYear","Playground","Main","ImageHeader","imgSrc","backgroundImage","ContentSection","bgColor","bgClass","specificClass","definedPadding","definedSpecificClass","BlockUiFx","blocking","lowerZIndex","rest","zIndex","loader","active","PageTagging","description","Helmet","content","EnhancedContentSection","pageTitle","isBlocking","showPageTitle","View","image","img","url","cursor","items","loop","autoplay","autoplayTimeout","autoplayHoverPause","responsive","0","500","768","1200","item","partners","Partners","PartnerItems","Partner","Home","heading","linkUrl","imageUrl","solution","class","CustomErrorMessage","touched","React","memo","label","accessor","showLabel","rawField","instructionLabel","overridePlaceholder","showRequiredIndicator","console","log","FormGroup","field","meta","Input","checked","value","placeholder","Label","setFieldValue","corePublicPages","pageName","ImageHeaderSecondary","ImageGallery","urls","keyId","useState","imageUrls","setImageUrls","useEffect","CaseStudy","mainImage","imageGalleryUrls","caseStudiesPublicPages","noContentSection","publicPages","ContentService","getContentPage","page","PublicContent","filter","FormikSubmitButton","scrollToFirstError","isCollapsibleForm","preventDefault","validateForm","then","errors","errorKeys","Object","keys","getElementById","scrollIntoView","forms","marked","entries","forEach","x","focus","handleSubmit","useContactUsHandler","isSuccessful","handleReset","cleanUp","setDefaultValues","ContactUs","contactUs","match","resetForm","params","courseId","onSubmit","height","frameborder","border","allowfullscreen","aria-hidden","tabindex","CONTACT_US_REQUEST","CONTACT_US_SUCCESS","CONTACT_US_FAILURE","CONTACT_US_CLEAN_UP","Config","appVersion","defaultPageTitle","apiUrl","process","gtmId","HttpClient","api","axios","create","baseURL","getContentTypeString","get","resourcePathName","cfg","post","payload","put","urlParams","delete","patch","getProvider","setContentType","contentType","defaults","headers","setAuthToken","token","common","service","httpClient","sendMessage","ContactUsService","data","contacUsRequest","contacUsSuccess","catch","defaultErrorMessage","errorMessage","response","status","Message","addErrorNotification","contacUsFailure","contactUsInitialValues","email","phone","contactUsValidationSchema","Yup","shape","min","max","required","matches","EnhancedForm","withFormik","mapPropsToValues","validationSchema","values","displayName","profile","userProfile","ActionCreators","ContentPage","useLocation","setPage","RegExp","toLowerCase","galleryItems","section","imageNumber","imageName","ModuleRoutes","component","privateRoute","currentImage","setCurrentImage","isViewerOpen","setIsViewerOpen","imageCount","setImageCount","openImageViewer","useCallback","index","getFlattenedImageArray","images","caption","lg","sm","Card","CardImg","top","imgs","currImg","onClickPrev","newIndex","onClickNext","onClose","FullLayout","role","prop","navlabel","collapse","child","prop2","key2","subchild","prop3","key3","exact","redirect","from","pathTo","Error403","lineHeight","Error404","Error500","miscPagesRoutes","blankLayoutRoutes","indexRoutes","App","lastErrorOccured","isModalOpen","isModelStateError","SystemReducer","combineReducers","action","assign","errorNotification","isModelState","RootReducer","ConfigureStore","middleware","thunk","enhancers","applyMiddleware","createStore","compose","Boolean","hostname","config","tagManagerArgs","TagManager","initialize","store","ReactDOM","render","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.2b2d6614.chunk.js","sourcesContent":["import { Component } from \"react\";\r\nimport { withRouter } from \"react-router\";\r\n\r\nclass ScrollToTop extends Component {\r\n componentDidUpdate(prevProps) {\r\n if (this.props.location.pathname !== prevProps.location.pathname) {\r\n window.scrollTo(0, 0);\r\n }\r\n }\r\n\r\n render() {\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default withRouter(ScrollToTop);\r\n","/**\r\n * Toast Notification\r\n * Refer to: https://www.npmjs.com/package/react-notification-system#action\r\n */\r\nimport React, { Component } from \"react\";\r\nimport NotificationSystem from \"react-notification-system\";\r\n\r\nclass ToastNotification extends Component {\r\n // Override default style\r\n style = {\r\n NotificationItem: {\r\n // Override the notification item\r\n DefaultStyle: {\r\n // Applied to every notification, regardless of the notification level\r\n margin: \"10px 5px 2px 1px\",\r\n padding: \"15px\",\r\n borderRadius: \"4px\",\r\n fontSize: \"1em\",\r\n color: \"white\",\r\n backgroundColor: \"#313131\",\r\n width: \"500px\",\r\n maxWidth: \"100%\",\r\n },\r\n success: {\r\n // Applied only to the success notification item\r\n borderTop: \"4px solid #04D9B2\",\r\n //fontWeight: 'bolder',\r\n },\r\n error: {\r\n // Applied only to the error notification item\r\n borderTop: \"4px solid red\",\r\n //fontWeight: 'bolder',\r\n },\r\n },\r\n Dismiss: {\r\n success: {\r\n color: \"white\",\r\n backgroundColor: \"#313131\",\r\n },\r\n },\r\n };\r\n\r\n componentDidMount() {\r\n this.notificationSystem = this.refs.notificationSystem;\r\n }\r\n\r\n componentWillReceiveProps(newProps) {\r\n const { message, level } = newProps.notification;\r\n this.notificationSystem.addNotification({\r\n message,\r\n level,\r\n position: \"tr\",\r\n });\r\n }\r\n\r\n render() {\r\n return ;\r\n }\r\n}\r\n\r\nexport default ToastNotification;\r\n","/**\r\n * System-wide Action types\r\n */\r\nexport const ActionTypes = {\r\n // Notifications\r\n SYS_ADD_NOTIFICATION: \"ADD_NOTIFICATION\",\r\n SYS_ADD_ERROR_NOTIFICATION: \"ADD_NOTIFICATION\",\r\n\r\n // Error Handler\r\n SYS_HANDLE_ERROR: \"HANDLE_ERROR\",\r\n SYS_HANDLE_ERROR_SHOW_FORM: \"SYS_HANDLE_ERROR_SHOW_FORM\",\r\n SYS_HANDLE_ERROR_HIDE_FORM: \"SYS_HANDLE_ERROR_HIDE_FORM\",\r\n};\r\n","/**\r\n * System-wide Action Creator definitions\r\n */\r\nimport { ActionTypes } from \"./system-action-types\";\r\nimport ErrorService from \"./../../core/error/errorService\";\r\n\r\n// =================\r\n// Notifications\r\n// =================\r\nexport function addNotification(message, level) {\r\n return {\r\n type: ActionTypes.SYS_ADD_NOTIFICATION,\r\n message,\r\n level,\r\n };\r\n}\r\n\r\n/*\r\n error - Error object from the api response\r\n defaultErrorMessage - fallback error message (defined by the user)\r\n*/\r\nexport function addErrorNotification(error, defaultErrorMessage) {\r\n let errorMessage =\r\n error &&\r\n error.response &&\r\n error.response.status &&\r\n error.response.status === 500\r\n ? error.response.data.Message\r\n : defaultErrorMessage;\r\n\r\n return {\r\n type: ActionTypes.SYS_ADD_ERROR_NOTIFICATION,\r\n message: errorMessage,\r\n level: \"error\",\r\n };\r\n}\r\n\r\n// ==================\r\n// Handle Error\r\n// ==================\r\nexport const handleError = (error) => {\r\n return (dispatch) => {\r\n const errorService = ErrorService();\r\n //dispatch(resetPasswordRequest());\r\n errorService\r\n .resolveError(error)\r\n .then((resp) => {\r\n dispatch(showErrorForm(resp));\r\n })\r\n .catch((err) => {\r\n dispatch(hideErrorForm());\r\n });\r\n };\r\n};\r\n\r\nconst showErrorForm = (data) => ({\r\n type: ActionTypes.SYS_HANDLE_ERROR_SHOW_FORM,\r\n payload: {\r\n message: data.message,\r\n error: data.error,\r\n isModelState: data.isModelState,\r\n status: data.status,\r\n },\r\n});\r\n\r\nexport const hideErrorForm = () => ({\r\n type: ActionTypes.SYS_HANDLE_ERROR_HIDE_FORM,\r\n});\r\n","import { ActionTypes } from \"./system-action-types\";\r\n\r\nconst initialState = {\r\n message: \"\",\r\n level: \"success\",\r\n position: \"br\",\r\n};\r\n\r\nexport default function NotificationReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case ActionTypes.SYS_ADD_NOTIFICATION:\r\n case ActionTypes.SYS_ADD_ERROR_NOTIFICATION:\r\n return Object.assign({}, state, {\r\n message: action.message,\r\n level: action.level ? action.level : initialState.level,\r\n });\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n/**\r\n * Selectors\r\n */\r\n\r\nexport const selectNotificationData = (state) => state.system.notification;\r\n","import { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport ToastNotification from \"./toast-notification\";\r\nimport { addNotification } from \"./../../../redux/system/system-action-creators\";\r\nimport { selectNotificationData } from \"./../../../redux/system/notification-reducer\";\r\n\r\nfunction mapStateToProps(state) {\r\n const notification = selectNotificationData(state);\r\n return {\r\n notification: notification\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: bindActionCreators(\r\n {\r\n addNotification\r\n },\r\n dispatch\r\n )\r\n };\r\n}\r\n\r\nconst ToastNotificationContainer = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ToastNotification);\r\n\r\nexport default ToastNotificationContainer;\r\n","/**\r\n * ButtonFx\r\n * - Progress spinner feature\r\n * rcnet @Solvable 5.5.2019\r\n *\r\n * props exposed:\r\n * - onClick = event onClick\r\n * - isLoading = true or false (spinner hide/show)\r\n * - name = button name\r\n * - targetName = name of button to trigger loading spinner\r\n * - color = refer to reacstrap button colors\r\n * - beatColor = beat color\r\n * - className\r\n */\r\n\r\n// Sample\r\n\r\n/* \r\n Click Me!\r\n; */\r\n\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Button } from \"reactstrap\";\r\nimport { css } from \"@emotion/core\";\r\nimport { BeatLoader } from \"react-spinners\";\r\n\r\nconst override = css`\r\n display: block;\r\n margin: 0 auto;\r\n border-color: red;\r\n margin-top: 5px;\r\n`;\r\n\r\nconst ButtonFx = (props) => {\r\n const loadSpinner =\r\n (props.targetName === props.name || props.targetName === \"\") &&\r\n props.isLoading;\r\n\r\n const {\r\n id,\r\n type,\r\n name,\r\n beatColor,\r\n icon,\r\n onMouseEnter,\r\n onMouseLeave,\r\n isLoading,\r\n disabled,\r\n onClick,\r\n block,\r\n className,\r\n } = props;\r\n\r\n return (\r\n \r\n {loadSpinner ? (\r\n \r\n ) : (\r\n {props.children}\r\n )}\r\n \r\n );\r\n};\r\n\r\nButtonFx.propTypes = {\r\n isLoading: PropTypes.bool,\r\n name: PropTypes.string,\r\n targetName: PropTypes.string,\r\n size: PropTypes.string,\r\n round: PropTypes.string,\r\n icon: PropTypes.string,\r\n beatColor: PropTypes.string,\r\n};\r\n\r\nButtonFx.defaultProps = {\r\n name: \"fxButton\",\r\n targetName: \"\",\r\n isLoading: false,\r\n size: \"\",\r\n round: \"true\",\r\n icon: \"false\",\r\n beatColor: \"#fff\",\r\n className: \"acpan-link acpan-link-green custom-button react-button\",\r\n};\r\n\r\nexport default ButtonFx;\r\n","import React, { Component } from \"react\";\r\nimport { NavLink as RRNavLink } from \"react-router-dom\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport $ from \"jquery\";\r\nimport {\r\n Collapse,\r\n Navbar,\r\n NavbarToggler,\r\n NavbarBrand,\r\n Nav,\r\n NavItem,\r\n NavLink,\r\n UncontrolledDropdown,\r\n DropdownToggle,\r\n DropdownMenu,\r\n DropdownItem,\r\n Container,\r\n Row,\r\n Col,\r\n} from \"reactstrap\";\r\nimport \"./nav-bar.scss\";\r\nimport ButtonFx from \"./../common/button-fx\";\r\n\r\nclass NavBar extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.toggle = this.toggle.bind(this);\r\n this.closeMenu = this.closeMenu.bind(this);\r\n this.openMenu = this.openMenu.bind(this);\r\n this.navigate = this.navigate.bind(this);\r\n this.state = {\r\n isOpen: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n var self = this;\r\n $(document).click(function (event) {\r\n let target = $(event.target);\r\n let mobileMenuOpen = $(\".navbar-collapse\").hasClass(\"show\");\r\n let navLink = target.hasClass(\"nav-link\");\r\n let navItem = target.hasClass(\"nav-item\");\r\n let navBarNavItem = target.hasClass(\"navbar-nav-item\");\r\n let navBarCollapse = target.hasClass(\"navbar-collapse\");\r\n let navBarNav = target.hasClass(\"navbar-nav\");\r\n let hasNav =\r\n navLink || navItem || navBarNavItem || navBarCollapse || navBarNav;\r\n if (mobileMenuOpen && !hasNav) {\r\n self.closeMenu();\r\n return false;\r\n }\r\n\r\n if (navLink && target[0].nextSibling === null) {\r\n self.closeMenu();\r\n return false;\r\n }\r\n\r\n if (mobileMenuOpen && navLink) {\r\n let dropDownAttach =\r\n target[0] &&\r\n target[0].nextSibling &&\r\n target[0].nextSibling &&\r\n !target[0].nextSibling.className.includes(\"show\");\r\n if (dropDownAttach) {\r\n self.closeMenu();\r\n return false;\r\n }\r\n }\r\n\r\n // Highlighted Items\r\n // if (\r\n // mobileMenuOpen &&\r\n // (target[0].text === \"My Membership\")\r\n // ) {\r\n // $(\".navbar-collapse\").toggle(false);\r\n // return false;\r\n // }\r\n });\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n isOpen: !this.state.isOpen,\r\n });\r\n }\r\n\r\n closeMenu() {\r\n this.setState({\r\n isOpen: false,\r\n });\r\n }\r\n\r\n openMenu() {\r\n this.setState({\r\n isOpen: true,\r\n });\r\n }\r\n\r\n navigate(path) {\r\n this.props.history.push(path);\r\n }\r\n\r\n getNavItem = (navItem, i) => {\r\n if (\r\n navItem.subLinks &&\r\n navItem.subLinks.length > 0 &&\r\n navItem.highlightClass\r\n ) {\r\n return (\r\n \r\n {\r\n this.navigate(navItem.href);\r\n }}\r\n nav\r\n >\r\n {navItem.title.replace(/ /g, \"\\u00a0\")}\r\n \r\n {false && (\r\n \r\n {navItem.subLinks.map((subItem, a) => (\r\n \r\n {subItem.title}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n );\r\n } else if (navItem.subLinks && navItem.subLinks.length > 0) {\r\n return (\r\n \r\n {\r\n this.navigate(navItem.href);\r\n }}\r\n nav\r\n >\r\n {navItem.title.replace(/ /g, \"\\u00a0\")}\r\n \r\n \r\n {navItem.subLinks.map((subItem, a) => (\r\n \r\n {subItem.title}\r\n \r\n ))}\r\n \r\n \r\n );\r\n } else if (navItem.highlightClass) {\r\n return (\r\n \r\n \r\n {navItem.title.replace(/ /g, \"\\u00a0\")}\r\n \r\n \r\n );\r\n } else if (navItem.href.startsWith(\"http\")) {\r\n return (\r\n \r\n \r\n {navItem.title.replace(/ /g, \"\\u00a0\")}\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n {navItem.title.replace(/ /g, \"\\u00a0\")}\r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n render() {\r\n const { navLinks } = this.props;\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n {/*
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
*/}\r\n {/*
\r\n \r\n
*/}\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n this.navigate(\"/contact-us/\")}\r\n >\r\n Contact Us\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n {\r\n this.toggle();\r\n }}\r\n >\r\n Toggle navigation{\" \"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(NavBar);\r\n","import React from \"react\";\r\nimport \"./footer.scss\";\r\nimport { Row, Col, Container } from \"reactstrap\";\r\nimport ButtonFx from \"./../common/button-fx\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nconst Footer = () => {\r\n let history = useHistory();\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n

For Enquiries:

\r\n\r\n
\r\n \r\n \r\n 07 5563 1433\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n 3/8 Centre View Drive Biggera Waters QLD 4216\r\n \r\n
\r\n
\r\n QBCC: 1500 6119\r\n
\r\n
\r\n \r\n \r\n
\r\n history.push(\"/contact-us/\")}\r\n >\r\n Contact Us\r\n \r\n
\r\n \r\n
\r\n \r\n\r\n
\r\n
\r\n © {new Date().getFullYear()} Horizon Sails & Membranes. All\r\n Rights Reserved. Website by{\" \"}\r\n \r\n Solvable.\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Footer;\r\n","import React from \"react\";\r\n\r\nconst Playground = () => {\r\n return

Hello

;\r\n};\r\n\r\nexport default Playground;\r\n","import Main from \"./main\";\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nexport default withRouter(Main);\r\n","import React from \"react\";\r\nimport \"./image-header.scss\";\r\nimport { PropTypes } from \"prop-types\";\r\n\r\nconst ImageHeader = ({ imgSrc, title }) => {\r\n return (\r\n
\r\n \r\n\r\n
\r\n

{title}

\r\n
\r\n
\r\n );\r\n};\r\n\r\nImageHeader.propTypes = {\r\n title: PropTypes.string,\r\n imgSrc: PropTypes.any.isRequired,\r\n};\r\n\r\nexport default ImageHeader;\r\n","import React from \"react\";\r\nimport \"./section.scss\";\r\n\r\nconst ContentSection = ({\r\n bgColor,\r\n bgClass,\r\n maxWidth,\r\n padding,\r\n specificClass,\r\n children,\r\n}) => {\r\n let defaultPadding = 4;\r\n let defaultColor = \"\";\r\n let defaultMaxWidth = 1140;\r\n\r\n const getContainerClass = () => {\r\n if (bgColor) return `container-bg-${bgColor}`;\r\n\r\n if (bgClass) return bgClass;\r\n\r\n if (defaultColor) return `container-bg-${defaultColor}`;\r\n\r\n return \"\";\r\n };\r\n\r\n const getContainerMaxWidth = () => {\r\n return `${maxWidth ? maxWidth : defaultMaxWidth}px`;\r\n };\r\n\r\n const definedPadding = padding ? padding : defaultPadding;\r\n const definedSpecificClass = specificClass ? ` ${specificClass}` : \"\";\r\n\r\n return (\r\n
\r\n \r\n
\r\n
{children}
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ContentSection;\r\n","/**\r\n * Solvable default setup for block-ui component\r\n * Props\r\n * - blocking = true or false (show/hide)\r\n * - lowerZIndex = true or false (set to true if you want block ui to respect fixed fix headers/navbars)\r\n * - color = set color\r\n * rcnet @solvable 2019\r\n */\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport BlockUi from \"react-block-ui\";\r\nimport { Loader } from \"react-loaders\";\r\nimport \"react-block-ui/style.css\";\r\nimport \"loaders.css/loaders.min.css\";\r\n\r\nconst BlockUiFx = ({ blocking, lowerZIndex, children, color, ...rest }) => (\r\n }\r\n >\r\n {children}\r\n \r\n);\r\n\r\nBlockUiFx.propTypes = {\r\n color: PropTypes.string,\r\n};\r\n\r\nBlockUiFx.defaultProps = {\r\n color: \"#189ad3\", // #02a17c\r\n};\r\n\r\nexport default BlockUiFx;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Helmet } from \"react-helmet\";\r\n\r\nconst PageTagging = ({ title, description }) => {\r\n return (\r\n \r\n {title && {title}}\r\n {description && }\r\n \r\n );\r\n};\r\n\r\nPageTagging.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n description: PropTypes.string,\r\n};\r\n\r\nexport default PageTagging;\r\n","import React from \"react\";\r\nimport ContentSection from \"./../content-section\";\r\nimport BlockUiFx from \"./../block-ui-fx\";\r\nimport PageTagging from \"components/common/page-tagging/page-tagging\";\r\n\r\nconst EnhancedContentSection = ({\r\n pageTitle,\r\n isBlocking,\r\n bgColor,\r\n bgClass,\r\n maxWidth,\r\n padding,\r\n specificClass,\r\n children,\r\n showPageTitle,\r\n}) => {\r\n return (\r\n <>\r\n \r\n \r\n\r\n \r\n {showPageTitle && pageTitle &&

{pageTitle}

}\r\n\r\n {children}\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default EnhancedContentSection;\r\n\r\n// import React from \"react\";\r\n// import ContentSection from \"./../content-section\";\r\n// import PageTitle from \"./../page-title\";\r\n// import BlockUiFx from \"./../block-ui-fx\";\r\n// import { useMediaQuery } from \"react-responsive\";\r\n\r\n// const EnhancedContentSection = ({\r\n// pageTitle,\r\n// isBlocking,\r\n// showBackground,\r\n// backgroundClass,\r\n// isFullWidth,\r\n// mainContentClass,\r\n// children,\r\n// }) => {\r\n// const isSmallDevice = useMediaQuery({\r\n// query: \"(max-width: 750px)\",\r\n// });\r\n\r\n// return (\r\n// <>\r\n// {pageTitle && }\r\n\r\n// {showBackground && (\r\n// \r\n// )}\r\n\r\n// <>\r\n// \r\n// {isSmallDevice ? (\r\n// \r\n// ) : (\r\n// \r\n// )}\r\n// \r\n// \r\n// \r\n// );\r\n// };\r\n\r\n// const BigScreenContent = ({\r\n// pageTitle,\r\n// children,\r\n// isFullWidth,\r\n// mainContentClass,\r\n// }) => {\r\n// return (\r\n// \r\n//
\r\n//
\r\n// {pageTitle &&

{pageTitle}

}\r\n//
{children}
\r\n//
\r\n//
\r\n//
\r\n// );\r\n// };\r\n\r\n// const SmallScreenContent = ({\r\n// pageTitle,\r\n// children,\r\n// isFullWidth,\r\n// mainContentClass,\r\n// }) => {\r\n// return (\r\n// \r\n//
\r\n// {pageTitle &&

{pageTitle}

}\r\n//
{children}
\r\n//
\r\n// \r\n// );\r\n// };\r\n\r\n// export default EnhancedContentSection;\r\n","import React from \"react\";\r\n\r\nconst View = ({ image }) => {\r\n return (\r\n // eslint-disable-next-line jsx-a11y/anchor-is-valid\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default View;\r\n","import React, { Component } from \"react\";\r\nimport View from \"./view\";\r\n\r\nexport default class extends Component {\r\n render() {\r\n return ;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport OwlCarousel from \"react-owl-carousel\";\r\nimport \"owl.carousel/dist/assets/owl.carousel.css\";\r\nimport \"owl.carousel/dist/assets/owl.theme.default.css\";\r\nimport Partner from \"./partner\";\r\nimport \"./partners.scss\";\r\n\r\nconst View = ({ items }) => {\r\n const owlOptions = {\r\n loop: true,\r\n autoplay: true,\r\n autoplayTimeout: 5000,\r\n autoplayHoverPause: true,\r\n margin: 10,\r\n nav: false,\r\n responsive: {\r\n 0: {\r\n items: 1,\r\n },\r\n 500: {\r\n items: 2,\r\n },\r\n 768: {\r\n items: 3,\r\n },\r\n 1200: {\r\n items: 5,\r\n },\r\n },\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n {items.map((item, i) => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default View;\r\n","export const partners = [\r\n { name: \"abigroup.jpg\" },\r\n { name: \"baulderstone.jpg\" },\r\n { name: \"hope-island.jpg\" },\r\n { name: \"hutchinson.jpg\" },\r\n { name: \"hyperdome.jpg\" },\r\n { name: \"jupiters.jpg\" },\r\n { name: \"palazzo-versace.jpg\" },\r\n { name: \"retail-first.jpg\" },\r\n { name: \"sanctuary-cove.jpg\" },\r\n { name: \"sheraton-mirage-gold-coast.jpg\" },\r\n { name: \"southport-sharks.jpg\" },\r\n { name: \"stockland.jpg\" },\r\n { name: \"twin-towns.jpg\" },\r\n { name: \"village-roadshow.jpg\" },\r\n { name: \"westfield.jpg\" },\r\n];\r\n","import React, { Component } from \"react\";\r\nimport View from \"./view\";\r\nimport { partners as PartnerItems } from \"constants/partners\";\r\n\r\nclass Partners extends Component {\r\n render() {\r\n return ;\r\n }\r\n}\r\n\r\nexport default Partners;\r\n","import React from \"react\";\r\nimport ContentSection from \"components/common/content-section\";\r\nimport Partners from \"components/common/partners\";\r\nimport \"./partner.scss\";\r\n\r\nconst Partner = () => {\r\n return (\r\n
\r\n \r\n
\r\n

Partners

\r\n

\r\n For the last 30 years we have had the pleasure our working with some\r\n of the biggest and best companies in Australia. Not only have we\r\n worked with the finest teams in the country but we have also\r\n developed close contacts and regular suppliers with many of them\r\n which is a testament to our commitment to produce successful\r\n outcomes for our customers year after year.\r\n

\r\n
\r\n
\r\n

Companies we work with include

\r\n
\r\n
\r\n
    \r\n
  • Residential & Commercial Property Developers
  • \r\n
  • Building & Construction Companies
  • \r\n
  • Hotels, Resorts & RV Parks
  • \r\n
  • \r\n Private & Public Schools, Collages & Universities\r\n
  • \r\n
  • Highrise Apartments and Complexes
  • \r\n
  • Restaurants and Cafes
  • \r\n
  • Facility Management Companies
  • \r\n
  • Theme Parks
  • \r\n
  • Clubs & Resorts
  • \r\n
\r\n
\r\n
\r\n
    \r\n
  • Mining Camps & Facilities
  • \r\n
  • Swimming Pools
  • \r\n
  • Local councils projects
  • \r\n
  • State Government infrastructure
  • \r\n
  • National Retailers
  • \r\n
  • Shopping Centres
  • \r\n
  • Airports
  • \r\n
  • Major Sporting Facilities.
  • \r\n
  • Emergency Services Facilities
  • \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Partner;\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ImageHeader from \"./../../components/common/image-header\";\r\nimport EnhancedContentSection from \"./../../components/common/enhanced-content-section\";\r\nimport ContentSection from \"../../components/common/content-section\";\r\nimport Partner from \"./components/partner\";\r\nimport PageTagging from \"components/common/page-tagging/page-tagging\";\r\n\r\nconst Home = () => {\r\n const solutions = [\r\n {\r\n heading: \"Shade Sail Structures\",\r\n description:\r\n \"Commercial steel structure with superior ​protection from the elements.\",\r\n linkUrl: \"/shade-sail-structures/\",\r\n imageUrl:\r\n \"https://solvable.azureedge.net/horizon-sails/images/shade-structure-17.jpg\",\r\n },\r\n {\r\n heading: \"PVC Membranes\",\r\n description:\r\n \"Practical, Cost effective and creative tensioned shade applications.\",\r\n linkUrl: \"/pvc-membranes/\",\r\n imageUrl:\r\n \"https://solvable.azureedge.net/horizon-sails/images/membrane-main.jpg\",\r\n },\r\n {\r\n heading: \"Resort Umbrellas\",\r\n description:\r\n \"Superior quality resort solutions designed to meet your requirements.\",\r\n linkUrl: \"/resort-umbrellas/\",\r\n imageUrl:\r\n \"https://solvable.azureedge.net/horizon-sails/images/resort-umbrella-main.jpg\",\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n

\r\n Horizon Sails & Membranes - Our Company\r\n

\r\n
\r\n
\r\n

\r\n For over 30 years, Horizon Sails & Membranes has forged a\r\n great reputation as designers, manufacturers and installers of\r\n quality commercial grade shade sails, PVC membrane structures and\r\n resort umbrellas.\r\n

\r\n

\r\n This reputation has seen our company grow to become the preferred\r\n supplier to large development companies, restaurants & cafes,\r\n Australia's biggest theme parks, shopping centres and\r\n international & domestic airports.\r\n

\r\n

\r\n Our work speaks for itself and can be seen on some of Australia's\r\n greater icons. This proud history puts us at the forefront of our\r\n industry with annual awards and commendations a normal part of our\r\n year.\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n

\r\n What can we deliver for you\r\n

\r\n

\r\n Horizon Sails & Membranes specialise in commercial shade solutions\r\n including Shade Sails, PVC Membrane Structures and Resort Umbrellas\r\n which provide protection from the harsh Australian environment. When\r\n you entrust your commercial shade project to Horizon Sails &\r\n Membranes, you know that your investment is in safe, experienced\r\n hands.\r\n

\r\n
\r\n {solutions.map((solution, i) => (\r\n
\r\n

{solution.heading}

\r\n

{solution.description}

\r\n \r\n \"\"\r\n \r\n \r\n Learn More\r\n \r\n
\r\n ))}\r\n
\r\n
\r\n \r\n

\r\n The Horizon Difference\r\n

\r\n

\r\n Horizon Sails & Membranes is one only a handful of manufacturers\r\n of shade sail structures in Australia. Our superior shade solutions\r\n are designed, manufactured and installed by our IN - HOUSE team from\r\n our manufacturing facility on the Gold Coast in Queensland.\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Design

\r\n

\r\n Design and Pattern by experienced personnel using the latest CAD\r\n techniques.\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Manufacture

\r\n

\r\n Manufactured by specialised fabricators using computer guided\r\n plotter/cutters, high frequency welders & other state of the\r\n art machinery.\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Install

\r\n

\r\n Installation by qualified and experienced shade sail riggers.\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Certification

\r\n

\r\n Certification by registered structural engineers.\r\n

\r\n
\r\n
\r\n
\r\n \r\n

\r\n Our experience counts\r\n

\r\n

\r\n For over 30 years, we have developed technologies and processes that\r\n put us ahead of others in our industry. As thought leaders and\r\n innovators in our industry, we continue to do what other competitors\r\n can only aspire to. At Horizon Sails & Membranes, it's the things\r\n that make us different that ensure our success.\r\n

\r\n
\r\n
\r\n

What makes us different to our competitors?

\r\n

\r\n At Horizon Sails & Membranes, it's the things that make us\r\n different that leads to your success. We have worked hard since\r\n 1983 to establish ourselves as a leading supplier of Shade Sail\r\n Structures, PVC Membrane Structures and Resort Umbrellas.\r\n

\r\n

\r\n This growth and our reputation as a professional strategic partner\r\n have come from listening to our customers, understanding their\r\n requirements and doing things well. Management has a hands on\r\n approach to quality control and risk reduction. Your project is\r\n professionally managed from design and engineering, through to\r\n manufacture and installation - always in close consultation and\r\n communication with the client.\r\n

\r\n

\r\n Our suppliers include multinational brand names like Serge\r\n Ferrari, Mehler Technologies, Rainbow Shade and Gale Pacific.\r\n

\r\n

\r\n The projects on which we built our reputation stand as a testament\r\n to the quality of our design and standard of workmanship borne out\r\n by the number of prestigious customers with whom we have had\r\n dealings with over the years and who continue to return to us for\r\n new projects.\r\n

\r\n

\r\n \"We build superior shade structures which stand the test of time\"\r\n

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n

\r\n Partner with us\r\n

\r\n

\r\n Having the right partner in your next shade structure project is\r\n crucial to your success.\r\n

\r\n

\r\n When you partner with the team at Horizon Sail Structures, ​we share\r\n our knowledge, experience and expertise with you to deliver for your\r\n company or your clients.\r\n

\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Home;\r\n","import React from \"react\";\r\n\r\nconst CustomErrorMessage = ({ touched, error }) => {\r\n return (\r\n
\r\n {touched && error &&
{error}
}\r\n
\r\n );\r\n};\r\n\r\nexport default CustomErrorMessage;\r\n","import React from \"react\";\r\nimport { FormGroup, Input, Label } from \"reactstrap\";\r\nimport CustomErrorMessage from \"./../error-message\";\r\nimport { FastField } from \"formik\";\r\nimport \"./common-field.scss\";\r\n\r\nconst CommonFastField = (props) => {\r\n const {\r\n label,\r\n accessor,\r\n type,\r\n showLabel,\r\n rawField,\r\n instructionLabel,\r\n overridePlaceholder,\r\n children,\r\n showRequiredIndicator,\r\n } = props;\r\n\r\n console.log(label);\r\n\r\n return type === \"checkbox\" ? (\r\n \r\n \r\n {({ field, meta, form }) => (\r\n
\r\n
\r\n \r\n \r\n {showLabel && (\r\n \r\n {children}\r\n \r\n )}\r\n \r\n {!rawField && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n ) : (\r\n
\r\n {showLabel && (\r\n \r\n )}\r\n\r\n {instructionLabel &&

{instructionLabel}

}\r\n\r\n \r\n {({ field, meta }) => (\r\n
\r\n {type === \"textarea\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {!rawField && (\r\n \r\n )}\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default React.memo(CommonFastField);\r\n","import React from \"react\";\r\n//import { Link } from \"react-router-dom\";\r\n//import ContentSection from \"../components/common/content-section\";\r\n\r\nexport const corePublicPages = [\r\n {\r\n pageName: \"get-in-touch\",\r\n title: \"CONTACT US\",\r\n description: \"\",\r\n content: (\r\n <>\r\n

\r\n Our professional team will handle every stage of your new shade\r\n project starting with your initial call or email.\r\n

\r\n

\r\n Feel free to contact us now. (After hours pls use our form & we\r\n will contact you at the start of the next business day.)\r\n

\r\n \r\n ),\r\n },\r\n {\r\n pageName: \"privacy-policy\",\r\n title: \"Privacy Policy\",\r\n description: \"\",\r\n content: <>,\r\n },\r\n {\r\n pageName: \"not-found\",\r\n title: \"Page Not Found\",\r\n description: \"\",\r\n content: (\r\n <>\r\n

Page Not Found

\r\n \r\n ),\r\n },\r\n];\r\n","import React from \"react\";\r\nimport \"./image-header-secondary.scss\";\r\nimport { PropTypes } from \"prop-types\";\r\n\r\nconst ImageHeaderSecondary = ({ imgSrc, title }) => {\r\n return (\r\n
\r\n \r\n\r\n
\r\n

{title}

\r\n
\r\n
\r\n );\r\n};\r\n\r\nImageHeaderSecondary.propTypes = {\r\n title: PropTypes.string,\r\n imgSrc: PropTypes.any.isRequired,\r\n};\r\n\r\nexport default ImageHeaderSecondary;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport OwlCarousel from \"react-owl-carousel\";\r\nimport \"owl.carousel/dist/assets/owl.carousel.css\";\r\nimport \"owl.carousel/dist/assets/owl.theme.default.css\";\r\nimport \"./image-gallery.scss\";\r\n\r\nconst ImageGallery = ({ urls, keyId }) => {\r\n const owlOptions = {\r\n loop: true,\r\n autoplay: true,\r\n autoplayTimeout: 5000,\r\n autoplayHoverPause: true,\r\n margin: 10,\r\n nav: false,\r\n responsive: {\r\n 0: {\r\n items: 1,\r\n },\r\n 500: {\r\n items: 2,\r\n },\r\n 768: {\r\n items: 3,\r\n },\r\n },\r\n };\r\n\r\n const [imageUrls, setImageUrls] = useState([]);\r\n\r\n useEffect(() => {\r\n setImageUrls(urls);\r\n\r\n return () => {\r\n setImageUrls([]);\r\n };\r\n }, [urls, keyId]);\r\n\r\n return (\r\n
\r\n
\r\n {imageUrls.length > 0 && (\r\n \r\n {console.log(`carousel_${imageUrls.length}_${keyId}`)}\r\n {imageUrls.map((url, i) => (\r\n \"\"\r\n ))}\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ImageGallery;\r\n","// type imr and press tab for import React from 'react';\r\nimport React from \"react\";\r\nimport ImageHeaderSecondary from \"components/common/image-header-secondary\";\r\nimport ContentSection from \"components/common/content-section/index\";\r\nimport ImageGallery from \"components/common/image-gallery\";\r\n\r\n// type sfc and press tab for the function body - don't forget to give it a name (i.e. CaseStudy)\r\n\r\nconst CaseStudy = ({ heading, mainImage, imageGalleryUrls, children }) => {\r\n return (\r\n <>\r\n \r\n \r\n

{heading}

\r\n

\r\n A case study by Horizon Sails & Membranes\r\n

\r\n {children}\r\n

View the Gallery

\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default CaseStudy;\r\n","import React from \"react\";\r\nimport CaseStudy from \"components/case-study/case-study\";\r\nimport ImageHeaderSecondary from \"components/common/image-header-secondary\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ContentSection from \"../components/common/content-section\";\r\n\r\nexport const caseStudiesPublicPages = [\r\n {\r\n pageName: \"case-studies\",\r\n title: \"Case Studies\",\r\n description: \"\",\r\n noContentSection: true,\r\n content: (\r\n <>\r\n \r\n \r\n

\r\n Horizon Case Studies\r\n

\r\n

\r\n For over 30 years, we've been building superior shade structures for\r\n our clients, which stand the test of time. With over 3000 successful\r\n projects under our belt we know how to deliver the perfect project\r\n for your company or clients.\r\n

\r\n

\r\n It's been our team's experience which has lead us to become\r\n Australia's longest running commercial shade sail company. This\r\n experience counts for something as it help you and your team to\r\n deliver successful projects for your company or your clients.\r\n

\r\n

\r\n Follow the links to our case studies\r\n

\r\n
\r\n
\r\n

My Cubby House

\r\n \r\n \r\n \r\n
\r\n
\r\n

​Paragon Restaurant

\r\n \r\n \r\n \r\n
\r\n
\r\n

Marina Mirage

\r\n \r\n \r\n \r\n
\r\n
\r\n

​IGA Supermarket

\r\n \r\n \r\n \r\n
\r\n
\r\n

Sanctuary Cove

\r\n \r\n \r\n \r\n
\r\n
\r\n

Southport Yacht Club

\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n ),\r\n },\r\n\r\n {\r\n pageName: \"case-studies/my-cubby-house\",\r\n title: \"My Cubby House\",\r\n description: \"\",\r\n noContentSection: true,\r\n content: (\r\n <>\r\n \r\n

Shade Structures for Childcare Centers

\r\n\r\n

\r\n We often get asked by childcare centres for shade solutions that are\r\n modern, functional and long lasting as childcare centres,\r\n particularly those on the Gold Coast, Brisbane and sunshine coast\r\n have very high UV protection needs.\r\n

\r\n The Main Issues\r\n

\r\n My Cubby House in Southport on the Gold Coast, has a lot of outdoor\r\n space to cover and were looking for an attractive, functional and\r\n affordable alternative to the traditional pergola or expensive hard\r\n roof solution.\r\n

\r\n

\r\n When they approached us Nick, our General manager visited the client\r\n at the site so he could develop the right solution for them. Right\r\n away Nick could see that in order to protect the children and the\r\n staff from Queensland's harsh and changing climate that the centre\r\n needed a steel and PVC membrane structure that would keep everyone\r\n protected but would also stand the test of time.\r\n

\r\n Shade Structure Design\r\n

\r\n After the design team had completed several designs for My cubby\r\n House, Nick was back on site, showing the clients the design and CAD\r\n drawings, showing exactly what the shade structures would look like\r\n and how they would protect the children and staff from the elements.\r\n

\r\n Shade Structure Manufacture\r\n

\r\n Soon after our manufacturing team began constructing the steel work\r\n for the shade structure and the PVC membrane at our factory and\r\n headquarters in Molendiner on the Gold Coast. Unlike many other\r\n shade sail companies in Australia, we build everything in house from\r\n scratch, which really helps us to manage every project personally\r\n without costly mistakes and compromises on quality. Everyday we meet\r\n with our in house team and go over the day's projects. Over the last\r\n 30 years they've become a very tight and competent team of\r\n professionals.\r\n

\r\n Shade Structure Installation\r\n

\r\n Instalation day is always exciting for us and the project at my\r\n Cubby House in Southport was no exception. Our steel team got to\r\n work first on the steel structure, first with the footings, the\r\n steel and then the cables. After a few days the membrane was\r\n delivered on site and the Horizon Sails & Membranes team got to\r\n work putting PVC membrane in place and then moved on to make the\r\n final touches the the structure.\r\n

\r\n Project Manager's comments (Nick Emorfopoulos)\r\n

\r\n Completing a job is always satisfying to the whole team here at\r\n Horizon Sails & Membranes. This job in particular required our\r\n design team to create structures which would complement the\r\n building. The client wanted them to blend in and be part of the\r\n overall building and as you can see from the photos, the job came up\r\n a treat.\r\n

\r\n Client's Testimonial\r\n

\r\n From the moment we spoke with Nick from Horizon Sails and structures\r\n we were impressed with his ability to interpret what we needed.\r\n This jobs was about the kids and staff but we also wanted the\r\n building to be beautiful. The PVC and the steel really did the\r\n job well and it completed our beautiful building. \r\n

\r\n

\r\n \r\n Many thanks to Nick and the boys at Horizon Sails and Structures.\r\n \r\n

\r\n \r\n \r\n ),\r\n },\r\n {\r\n pageName: \"case-studies/georges-paragon-resturant\",\r\n title: \"Georges Paragon Resturant\",\r\n description: \"\",\r\n noContentSection: true,\r\n content: (\r\n <>\r\n \r\n

Shade Structures for Restaurants

\r\n

\r\n George Tasis (the founder and owner of George's Paragon\r\n Restaurant's) has been a friend and loyal customer of Horizon Sails\r\n and Membranes since 2004. Over the years George has commissioned\r\n some amazing architectural membranes and shade sails to compliment\r\n his Greek/Mediterranean themed restaurant. Like his delicious food,\r\n George will settle for nothing short of the best and Horizon has\r\n been providing him the best for over 13 years.\r\n

\r\n The Main Issues\r\n

\r\n As George's Paragon Sanctuary Cove is right on the waterfront George\r\n needed something practical to shelter his clients but also needed\r\n something in keeping with the water and the restaurants nautical\r\n theme. ARCHITECTURAL MEMBRANES AND SHADE SAILS WERE THE PERFECT\r\n SOLUTION!\r\n

\r\n Shade Structure Design\r\n

\r\n With the nautical theme being at the forefront of Horizons scope our\r\n engineers and draftsman have over the years worked at increasing\r\n waterproof coverage and shaded areas for George. The end result is\r\n what you see today. Multiple waterproof and shaded area, all\r\n uniquely designed and sculpted to suit the restaurant decor.\r\n

\r\n Shade Structure Manufacture\r\n

\r\n The the sails displayed at George's Paragon Sanctuary Cove have been\r\n hand fabricated at the Horizon factory in Molendinar on the Gold\r\n Coast. Each sail have been precisely measured and patterned to\r\n ensure a perfect fit for its desired location. The end result has\r\n been outdoor dining on the water with the comfort and reliability of\r\n a waterproof shelter. Brilliant\r\n

\r\n Shade Structure Installation\r\n

\r\n Each time George's picks up the phone to call Horizon the boys know\r\n a good feed is in store. George's Paragon Sanctuary Cove would\r\n definitely have to rate high on the list of 'favourite spots to\r\n work' for the Horizon team as every project comes with complimentary\r\n seafood platters for lunch and delicious Greek deserts!\r\n

\r\n Project Manager's comments (Nick Emorfopoulos)\r\n

\r\n Sanctuary cove is one of the Australia's most iconic boating,\r\n entertainment and residential communities, built on the Gold Coast\r\n the venue hosts multiple boast shows, has amazing restaurants, a\r\n world class golf course and multi-milion dollar homes. In order for\r\n George to continue to attract high end guests his food and the\r\n restaurant is always at the highest standard. The sail structures we\r\n erect and maintain at the restaurant reflect George's high standards\r\n and as always it's a pleasure to look after George & his team.\r\n

\r\n Client's Testimonial\r\n

\r\n Our restaurants are so important to us so we won't just trust anyone\r\n with their care. Krishna, Nick and the team from Horizon sails have\r\n always looked after us with the design, construction and\r\n installation of our sails and their service has always been\r\n impeccable\r\n

\r\n

\r\n \r\n George Tasis\r\n
\r\n Georges Paragon Restaurants\r\n
\r\n Sanctuary Cove, Mt Tambourine. Coolangatta, Brisbane\r\n
\r\n

\r\n \r\n \r\n ),\r\n },\r\n {\r\n pageName: \"case-studies/marina-mirage\",\r\n title: \"Marina Mirage\",\r\n description: \"\",\r\n noContentSection: true,\r\n content: (\r\n <>\r\n \r\n

PVC Membrane Dome Roofing Project

\r\n

\r\n Marina Mirage, Gold Coast has been a long standing client for\r\n Horizon Sails & Membrane. We have not only completed projects\r\n for the centre itself but have designed and completed many\r\n architectural shade sails for Marina Mirage tenants who live in many\r\n of the attractive, high end apartments and townhouses.\r\n

\r\n The Main Issues\r\n

\r\n Marina Mirage were in need of a re-skin on the existing dome\r\n structure as the previous fabric was getting to the end of its life\r\n and Marina Mirage management wanted to keep up the resorts look and\r\n appeal. Over the years Horizon Sails & Membranes has had much\r\n experience in covering all shapes of structures including domes, so\r\n Marina Mirage chose the Horizon team for the project.\r\n

\r\n Shade Structure Design\r\n

\r\n With every dome structure there is extensive patterning to be\r\n undertaken to ensure the new fabric fits like a glove. The new skin\r\n has to be 100% watertight with zero creases. After a few days of\r\n patterning the sail design was ready for fabrication. Thanks to the\r\n drafting team we were completely confident that the sail would fit\r\n and we could ensure no water or wind would leak into the building.\r\n

\r\n Shade Structure Manufacture\r\n

\r\n This particular sail took over a week to fabricate as the sail had\r\n to be cut into exact wedge slices. All wedges were then high\r\n frequency welded together until the exact shape was created for the\r\n dome. The floor space which which we have in our state of the art\r\n manufacturing facility on the Goal coast ensured that we could lay\r\n out each piece of the sail and have it made for a perfect fit when\r\n it came to instalation day on the project.\r\n

\r\n Shade Structure Installation\r\n

\r\n For a structure of this size we need more than just man power. A\r\n crane was used to hoist the sail onto the roof and lift the sail\r\n into place. It took a team of 4 men to lower the sail over the steel\r\n shell and secure the fixings. On a job like this we had to ensure\r\n that there was no wind that day as any slight gust would make the\r\n sail much more difficult to secure.\r\n

\r\n Project Manager's comments (Nick Emorfopoulos)\r\n

\r\n Our team love working on these creative jobs, where it's more than\r\n just a shade sail in a carpark. Working on the Marina Mirage project\r\n was challenging and rewarding and the results speak for themselves.\r\n Standing under the done and looking up to the top of the dome is an\r\n experience in itself. It's beautiful piece of architecture and we're\r\n proud to play our part in the whole Marina Mirage project.\r\n

\r\n Client's Testimonial\r\n

\r\n The Dome at Marina Mirage is an iconic part of the Gold Coast\r\n shopping precinct. We needed a company who could confidently manage\r\n a project of this size without \"dropping the ball\". For us, Horizon\r\n Sail Structures was an sound investment. Not only could the manage a\r\n project of this size but they could do it well, in fact they\r\n exceeded our expectations.\r\n

\r\n

\r\n Mark Selvey – Center Management\r\n

\r\n \r\n \r\n ),\r\n },\r\n {\r\n pageName: \"case-studies/iga-supermarket\",\r\n title: \"IGA Supermarket\",\r\n description: \"\",\r\n noContentSection: true,\r\n content: (\r\n <>\r\n \r\n

Supermarket Carpark Shade Sail Project

\r\n

\r\n For this particular project Horizon Sails & Membranes were\r\n engaged by IGA to design and install shade sails for their car park.\r\n This project was a little different to our standard shopping centre\r\n car park design as we were working in a semi-cyclonic sub-tropical\r\n region of Queensland.\r\n

\r\n The Main Issues\r\n

\r\n Due to the fact that we were working in a semi-cyclonic region of\r\n Queensland we had to ensure the shade fabric used was 100% suitable\r\n for purpose. We needed a light weight fabric that would allow gale\r\n winds to pass through while being heavy enough to withstand the\r\n strain and pelting from the wind. It was decided that Monotec 370\r\n would be best suited for the job. This fabric is a high grade\r\n commercial shade cloth with proven results in similar regions\r\n (Airlie Beach, Cairns, Townsville, Bundaberg). Being a “top shelf”\r\n product the fabric came with a 15 year warranty, an aspect very\r\n important to our client.\r\n

\r\n Shade Structure Design\r\n

\r\n During the design stage of this project Horizon was guided by our\r\n engineer on what steel would suit best for the region. In the end\r\n the design of the structure maintained its standard “T” frame look,\r\n however the steel thickness was “beefed” up as well as the 316\r\n stainless steel bolts and connection plates.\r\n

\r\n Shade Structure Manufacture\r\n

\r\n Horizon had both sails and steel frames fabricated in-house inside\r\n our 950-square meter factory. Like all projects, QA was paramount\r\n and all frames, plates and cleats were inspected before they were\r\n transported up north to Gladstone.\r\n

\r\n Shade Structure Installation\r\n

\r\n As this project was quite a distance from the Gold Coast (our home\r\n base) a team of installation specialist from Horizon were sent up\r\n north to complete the install from start to finish. The day the team\r\n left for Gladstone we could have sworn we saw a few fishing rods\r\n hanging out the back of the trucks!\r\n

\r\n Client's Testimonial\r\n

\r\n As always the guys (at Horizons Sails & Membranes) carried out\r\n the job in a professional manner. The new carpark at IGA at\r\n Gladstone looks great...\r\n

\r\n \r\n \r\n ),\r\n },\r\n {\r\n pageName: \"case-studies/sanctuary-cove-umbrellas\",\r\n title: \"Sanctuary Cove\",\r\n description: \"\",\r\n noContentSection: true,\r\n content: (\r\n <>\r\n \r\n

Sanctuary Cove Premium Umbrella Project

\r\n

\r\n This particular client engaged Horizon Sails & Membranes as they\r\n were after something a little different to the standard residential\r\n umbrella. Being that this umbrella was to be positioned at the front\r\n of the house the client wanted something to “pop” with style.\r\n Horizon knew just what they needed!\r\n

\r\n The Main Issues\r\n

\r\n This beautiful multi story home in Sanctuary Cove had many outdoor\r\n entertaining, some of which Horizon had already installed shade sail\r\n for. The front of the house however was left rather open and the\r\n clients felt they needed something to living the front aspect to the\r\n house.\r\n

\r\n Shade Structure Design\r\n

\r\n Traditional resort style umbrellas as of a square or rectangle shape\r\n (as you see in many restaurants). In this situation, the client\r\n wanted something to “pop” with style and present a certain level of\r\n unique design. At this point the client had to say nothing more as\r\n Horizon proposed a black on black hexagonal umbrella on a custom one\r\n off design specification.\r\n

\r\n Shade Structure Manufacture\r\n

\r\n Being that this was a custom design Horizon engaged their engineer\r\n and draftsman with the intention of bringing the 2D model to life!\r\n From a manufactural and materials point of view the client wanted\r\n nothing short of the best. With this said Horizon had the steel\r\n framing hot dipped galvanized and Triplex coated with high gloss\r\n black finish. The sail was made of Monotec 370 commercial grade\r\n shade fabric with 316 Australian stainless steel fixings , the same\r\n spec fabric used on large scale shopping centre car parks. This sail\r\n was truly going to be the best of the best.\r\n

\r\n Shade Structure Installation\r\n

\r\n The installation of this umbrella went off without a hitch. The\r\n footing had been excavated the week before with the steel cage set\r\n in commercial 32mpa concrete. Once dried, the steel frame and canopy\r\n were erected.\r\n

\r\n Project Manager's comments\r\n

\r\n This project ran very smoothly and the client was very impressed\r\n with the end result, so much so that he immediately ordered more\r\n umbrellas for other places on his property. John was a pleasure to\r\n work with.\r\n

\r\n Client's Testimonial\r\n

\r\n Thanks again for the great work the team at Horizon Sails &\r\n Membranes have completed on our Sanctuary cove property. ​They just\r\n look fantastic!\r\n

\r\n

\r\n John Baines - Sanctuary Cove, Qld\r\n

\r\n \r\n \r\n ),\r\n },\r\n {\r\n pageName: \"case-studies/southport-yacht-club\",\r\n title: \"Southport Yacht Club\",\r\n description: \"\",\r\n noContentSection: true,\r\n content: (\r\n <>\r\n \r\n

Southport Yacht Club PVC Membrane Project

\r\n

\r\n For this unique project Horizon Sails & Membranes were engaged\r\n by SYC to come up with a nautical themed structure in keeping with\r\n the 'boating theme. The club wanted a waterproof solution without\r\n the use of a hard roof structure.\r\n

\r\n The Main Issues\r\n

\r\n Being on the waterfront SYC required a strong structure that could\r\n handle the full brunt of the broad water winds. The club want\r\n something strength without having to compromise of looks and shape.\r\n

\r\n Shade Structure Design\r\n

\r\n After many discussions with the club committee a 'barrel wave'\r\n design was selected so to keep in line with the clubs nautical theme\r\n and decor.\r\n

\r\n Shade Structure Manufacture\r\n

\r\n Horizon had both sails and steel frames fabricated in-house under\r\n the close supervision of our steel and sail fabrication managers.\r\n Each cleat, plate and mild steel beam was checked for QA before it\r\n was sent to be 'Hot Dipped Galvanized' in Brisbane. Each section of\r\n steel was to be 'Hot Dipped Galvanized' to ensure full corrosion and\r\n rust protection.\r\n

\r\n Shade Structure Installation\r\n

\r\n Firstly Horizon had to excavate the engineered footings. Being on\r\n water level these footings were dug by a vacuum dig truck to a\r\n substantial depth. Reinforcement cages we then placed in the\r\n footings and concrete was poured. Once the footings had dried the\r\n installation of the structure began. The installation of the steel\r\n and sail took the good part of a week. The steel was installed by a\r\n team of 4 men over 2 days with the sail being installed over the\r\n course of a full day.\r\n

\r\n Project Manager's comments\r\n

\r\n It's always enjoyable working at Southport Yacht Club. The project\r\n really looks great against the water and the members love the new\r\n addition to the club.\r\n

\r\n Client's Testimonial\r\n

\r\n Brett James (General Manager of SYC). \"Wow, what a structure, it is\r\n exactly what we were after. It looks just like a wave! The job was\r\n completed in 2011.\r\n

\r\n \r\n \r\n ),\r\n },\r\n];\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ContentSection from \"./../components/common/content-section\";\r\nimport { corePublicPages } from \"./public-content-core\";\r\nimport { caseStudiesPublicPages } from \"./public-content-case-studies\";\r\nimport ImageHeaderSecondary from \"components/common/image-header-secondary\";\r\nimport ImageGallery from \"components/common/image-gallery\";\r\n\r\nexport const publicPages = [\r\n ...corePublicPages,\r\n ...caseStudiesPublicPages,\r\n {\r\n pageName: \"solutions\",\r\n title:\r\n \"Horizon Sails & Membranes | Shade Solutions | Commercial & Residential\",\r\n description:\r\n \"Horizon Sails & Membranes specialise in commercial shade solutions including Shade Sails, PVC Membrane Structures and Resort Umbrellas.\",\r\n noContentSection: true,\r\n content: (\r\n <>\r\n \r\n \r\n

Horizon Solutions

\r\n

\r\n Horizon Sails & Membranes specialise in commercial shade\r\n solutions including Shade Sails, PVC Membrane Structures and Resort\r\n Umbrellas which provide protection from the harsh Australian\r\n environment. When you entrust your commercial shade project to\r\n Horizon Sails & Membranes, you know that your investment is is\r\n safe, experienced hands.\r\n

\r\n
\r\n
\r\n

Shade Sail Structures

\r\n

\r\n Commercial steel structure with superior ​protections from the\r\n elements.\r\n

\r\n \r\n \r\n \r\n \r\n Learn More\r\n \r\n
\r\n
\r\n

PVC Membranes

\r\n

\r\n Creative, beautiful PVC membranes for all applications.\r\n

\r\n \r\n \r\n \r\n \r\n Learn More\r\n \r\n
\r\n
\r\n

Resort Umbrellas

\r\n

\r\n Superior quality resort solutions designed to meet your\r\n requirements.\r\n

\r\n \r\n \r\n \r\n \r\n Learn More\r\n \r\n
\r\n
\r\n
\r\n \r\n ),\r\n },\r\n {\r\n pageName: \"shade-sail-structures\",\r\n title: \"Shade Sail Structures | Sun Protection\",\r\n description:\r\n \"At Horizon Sails & Membranes, we specialise in commercial and industrial applications on projects ranging from Theme Parks and Hotels through to Car parks and Restaurant / cafe solutions.\",\r\n noContentSection: true,\r\n content: (\r\n <>\r\n \r\n \r\n

\r\n Shade Sail Structures\r\n

\r\n
\r\n
\r\n

\r\n A shade sail structure can provide a unique alternative for\r\n almost any type of application. Further, individually designed\r\n structures can be used to achieve an ambience not possible with\r\n conventional building products. Shade sails have become a widely\r\n used method of providing sun protection over pools, playgrounds\r\n and patio areas.\r\n

\r\n

\r\n At Horizon Sails & Membranes, we specialise in commercial\r\n and industrial applications on projects ranging from Theme Parks\r\n and Hotels through to Car parks and Restaurant / cafe solutions.\r\n

\r\n

\r\n Why don't you call us today and chat with our qualified staff?\r\n They would be more than happy to take a look at your project\r\n with you.\r\n

\r\n \r\n \r\n Request a Quote\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n

Image Gallery

\r\n \r\n
\r\n\r\n \r\n

\r\n Featured Materials for Shade Sails\r\n

\r\n

\r\n At Horizon Sails & Membranes, we use ONLY the best shade sail\r\n materials that utilise world leading R&D and manufacturing\r\n standards in all of our commercial and large residential projects.\r\n

\r\n
\r\n
\r\n

EXTREME 32

\r\n
    \r\n
  • \r\n eXtreme 32 is a heavy duty 320 GSM commercial shade fabric\r\n range which consistently delivers enduring strength, lasting\r\n durability and excellent shade protection characteristics. (up\r\n to 95.8% UV-R Protection.)\r\n
  • \r\n
  • \r\n eXtreme 32 is designed and engineered for the full spectrum of\r\n shade applications from the largest commercial and\r\n architectural projects through to domestic installations\r\n
  • \r\n
  • 15 year warranty
  • \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

Z16

\r\n
    \r\n
  • \r\n As one of Australia’s most popular shade fabric brands, Z16\r\n holds an unrivalled reputation for durability, UV-R\r\n performance and quality. Designed to reduce glare, heat and\r\n provide comfort and protection. Z16 is the perfect choice for\r\n your next shade project.\r\n
  • \r\n
  • 10 year warranty
  • \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

Com 95 from Gale Pacific

\r\n
    \r\n
  • \r\n With superior UV block, a 10 year full UV degradation\r\n warranty, a wide range of colours and over 20 years performing\r\n in extreme climates, GALE Pacific’s Commercial 95® remains one\r\n of the world’s most popular architectural shade fabrics.\r\n
  • \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

MONOTEC 370

\r\n
    \r\n
  • \r\n Developed as an “install and forget” shade cloth,\r\n Monotec 370 Series shade cloth is the perfect solution for\r\n shade sails and structures. Monotec 370 Series provides\r\n consistent protection to people and property in the harsh\r\n Australian climate.\r\n
  • \r\n
  • \r\n Compared to many other fabrics, Monotec 370 will not stretch\r\n over time assuring the integrity of your structure’s stability\r\n for many years to come.\r\n
  • \r\n
  • 15 year warranty
  • \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n ),\r\n },\r\n {\r\n pageName: \"pvc-membranes\",\r\n title: \"PVC Membranes | Custom Shade Solutions\",\r\n description:\r\n \"Membrane structures not only provide a waterproof alternative to conventional building products, but also can be designed in such a way that clear weather shields can be incorporated into the design to provide a totally weatherproof area.\",\r\n noContentSection: true,\r\n content: (\r\n <>\r\n \r\n \r\n

PVC Membranes

\r\n
\r\n
\r\n

\r\n Membrane structures not only provide a waterproof alternative to\r\n conventional building products, but also can be designed in such\r\n a way that clear weather shields can be incorporated into the\r\n design to provide a totally weatherproof area.\r\n

\r\n

\r\n These are customized solutions designed to suit the dimensions\r\n of a particular space and to integrate with the architecture and\r\n design of the location.\r\n

\r\n

\r\n Start a conversation with our project managers today that will\r\n start your next big project of on the right foot.\r\n

\r\n \r\n \r\n Request a Quote\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n

Image Gallery

\r\n \r\n
\r\n\r\n \r\n

\r\n Featured Materials for PVC Membrane Structures\r\n

\r\n

\r\n At Horizon Sails & Membranes we use ONLY the best PVC Membrane\r\n materials which utilise world leading R&D and manufacturing\r\n standards in all of our commercial and large residential projects.\r\n

\r\n
\r\n
\r\n

SERGE FERRARI & MEHLER TEXNOLOGIES

\r\n

\r\n Serge Ferrari of France and Mehler Texnologies of Germany\r\n manufacture superior quality architectural membrane fabrics.\r\n Serge Ferrari & Mehler Texnologies fabrics are suitable for\r\n a wide range of applications from blinds and awnings to shade\r\n sails, canopies and permanent tensile membrane structures.\r\n

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n ),\r\n },\r\n {\r\n pageName: \"resort-umbrellas\",\r\n title: \"Resort Umbrellas | Shade Solutions | Commercial & Residential\",\r\n description:\r\n \"Our Resort Umbrellas are an elegant and stylish outdoor solution for shade provision available in a wide range of architectural grade UV stabilised fabric colours.\",\r\n noContentSection: true,\r\n content: (\r\n <>\r\n \r\n \r\n

Resort Umbrellas

\r\n
\r\n
\r\n

\r\n Our Resort Umbrellas are an elegant and stylish outdoor solution\r\n for shade provision available in a wide range of architectural\r\n grade UV stabilised fabric colours. We can cater for solutions\r\n from 2M square to 5M square with either square or hexagonal\r\n shaped canopies. They can also be supported either by a centre\r\n column or a fixed or rotating type cantilever column. Any\r\n combination of the above is possible.\r\n

\r\n

\r\n If you have been on holiday anywhere in Australia, chances are\r\n you've sat under our resort umbrellas.\r\n

\r\n \r\n \r\n Request a Quote\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n

Image Gallery

\r\n \r\n
\r\n \r\n ),\r\n },\r\n {\r\n pageName: \"new-page\",\r\n title: \"New Page\",\r\n description: \"\",\r\n content: (\r\n <>\r\n

New Page

\r\n \r\n ),\r\n },\r\n {\r\n pageName: \"new-page-2\",\r\n title: \"New Page\",\r\n description: \"\",\r\n noContentSection: true,\r\n content: (\r\n <>\r\n \r\n

Section 1

\r\n
\r\n \r\n

Section 2

\r\n
\r\n \r\n

Section 3

\r\n
\r\n \r\n ),\r\n },\r\n];\r\n","import * as PublicContent from \"../constants/public-content\";\r\n\r\nconst ContentService = () => {\r\n const getContentPage = pageName => {\r\n let page = PublicContent.publicPages.filter(\r\n page => page.pageName === pageName\r\n );\r\n\r\n if (page.length === 0)\r\n page = PublicContent.publicPages.filter(\r\n page => page.pageName === \"not-found\"\r\n );\r\n\r\n return page[0];\r\n };\r\n\r\n return { getContentPage };\r\n};\r\n\r\nexport default ContentService;\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Field } from \"formik\";\r\nimport { addNotification } from \"./../../../redux/system/system-action-creators\";\r\nimport ButtonFx from \"./../button-fx\";\r\n\r\nconst SubmitButton = ({\r\n label,\r\n isLoading,\r\n className,\r\n addNotification,\r\n scrollToFirstError,\r\n isCollapsibleForm,\r\n}) => {\r\n return (\r\n \r\n {({ form }) => (\r\n {\r\n event.preventDefault();\r\n form.validateForm().then((errors) => {\r\n let errorKeys = Object.keys(errors);\r\n\r\n if (errorKeys.length > 0) {\r\n addNotification(\r\n \"You have one or more fields missing, please correct these and submit again.\",\r\n \"error\"\r\n );\r\n\r\n if (scrollToFirstError) {\r\n if (isCollapsibleForm) {\r\n //Collapsible Form Handler\r\n var firstErrorSection = document.getElementById(\r\n errorKeys[0]\r\n );\r\n firstErrorSection.scrollIntoView();\r\n } else {\r\n //Normal Form Handler\r\n let form = document.forms[document.forms.length - 1];\r\n let marked = false;\r\n\r\n Object.entries(form).forEach((x, i) => {\r\n let existsInErrorList = errorKeys.includes(x[1].name);\r\n if (existsInErrorList && !marked) {\r\n document.forms[document.forms.length - 1][i].focus();\r\n marked = true;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n form.handleSubmit();\r\n });\r\n }}\r\n >\r\n {label}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst FormikSubmitButton = connect(null, { addNotification })(SubmitButton);\r\n\r\nexport default FormikSubmitButton;\r\n","import { useEffect } from \"react\";\r\n\r\nconst useContactUsHandler = (isSuccessful, handleReset, cleanUp) => {\r\n useEffect(() => {\r\n cleanUp();\r\n\r\n setDefaultValues();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (isSuccessful) {\r\n handleReset();\r\n\r\n setDefaultValues();\r\n }\r\n }, [isSuccessful]);\r\n\r\n const setDefaultValues = () => {};\r\n};\r\n\r\nexport default useContactUsHandler;\r\n","import React, { useEffect } from \"react\";\r\nimport CommonFastField from \"components/common/common-fast-field\";\r\nimport { Form } from \"formik\";\r\nimport { Row, Col, FormGroup } from \"reactstrap\";\r\nimport ContentService from \"services/content-service\";\r\nimport FormikSubmitButton from \"components/common/formik-submit-button\";\r\nimport EnhancedContentSection from \"components/common/enhanced-content-section\";\r\nimport useContactUsHandler from \"./hooks/use-effect-handler\";\r\nimport PageTagging from \"components/common/page-tagging/page-tagging\";\r\n\r\nconst ContactUs = ({\r\n cleanUp,\r\n contactUs,\r\n handleSubmit,\r\n setFieldValue,\r\n match,\r\n handleReset,\r\n resetForm,\r\n}) => {\r\n const { isLoading, isSuccessful } = contactUs;\r\n\r\n useContactUsHandler(\r\n match.params.courseId,\r\n isSuccessful,\r\n handleReset,\r\n setFieldValue,\r\n cleanUp\r\n );\r\n\r\n useEffect(() => {\r\n if (isSuccessful) {\r\n resetForm();\r\n }\r\n }, [isSuccessful]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {ContentService().getContentPage(\"get-in-touch\").content}\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n

Our Location

\r\n
\r\n
3/8 Centre View Drive, Biggera Waters, QLD 4216
\r\n \r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ContactUs;\r\n","const ActionTypes = {\r\n CONTACT_US_REQUEST: \"CONTACT_US_REQUEST\",\r\n CONTACT_US_SUCCESS: \"CONTACT_US_SUCCESS\",\r\n CONTACT_US_FAILURE: \"CONTACT_US_FAILURE\",\r\n CONTACT_US_CLEAN_UP: \"CONTACT_US_CLEAN_UP\"\r\n};\r\n\r\nexport default ActionTypes;\r\n","const Config = {\r\n appVersion: \"1.0\",\r\n defaultPageTitle: \"Horizon Sails & Membranes\",\r\n apiUrl: process.env.REACT_APP_API_URL,\r\n gtmId: process.env.REACT_APP_GTM_ID,\r\n};\r\n\r\nexport default Config;\r\n","/**\r\n * Http abstraction\r\n * To encapsulate http provider details like FETCH Api or Axios.\r\n * Wish we have interface like typescript.\r\n *\r\n * Provider: Axios\r\n * - rcnet @solvable\r\n */\r\n\r\nimport axios from \"axios\";\r\nimport Config from \"./../../config\";\r\n\r\nconst HttpClient = () => {\r\n let api = axios.create({ baseURL: Config.apiUrl });\r\n\r\n // ===============\r\n // Methods\r\n // ===============\r\n\r\n /**\r\n *\r\n * @param {resourcePathName} Resource path name for example 'user'\r\n * @param {cfg} you can use params - An object parameter { ID: 12345 }\r\n */\r\n const get = (resourcePathName, cfg = null) =>\r\n cfg ? api.get(resourcePathName, cfg) : api.get(resourcePathName);\r\n\r\n const post = (resourcePathName, payload, cfg = null) =>\r\n cfg\r\n ? api.post(resourcePathName, payload, cfg)\r\n : api.post(resourcePathName, payload);\r\n\r\n const del = (urlParams) => api.delete(urlParams);\r\n\r\n const put = (urlParams, payload, cfg = null) =>\r\n cfg ? api.put(urlParams, payload, cfg) : api.put(urlParams, payload);\r\n\r\n const patch = (resourcePathName, payload) =>\r\n api.patch(resourcePathName, payload);\r\n\r\n // Note: Has an issue with interceptor\r\n const setAuthToken = (token) => {\r\n api.defaults.headers.common[\"Authorization\"] = token;\r\n return this;\r\n };\r\n\r\n /**\r\n * Either form, json etc.\r\n * @param {type} 'form', 'json'\r\n * Note: if not in the list of types it will apply as custom\r\n */\r\n const setContentType = (type) => {\r\n // Pre-defined list of content types\r\n let contentType = getContentTypeString(type);\r\n api.defaults.headers.post[\"Content-Type\"] = contentType;\r\n return this;\r\n };\r\n\r\n /**\r\n *\r\n * @param {type} Basic content types are supported as of the moment.\r\n * Try to contribute by adding new types to enhance the library. thanks :P\r\n * types: form, json, pdf, xml, zip, csv, plain, html\r\n */\r\n const getContentTypeString = (type) => {\r\n let contentType =\r\n type === \"form\"\r\n ? \"application/x-www-form-urlencoded\"\r\n : type === \"json\"\r\n ? \"application/json\"\r\n : type === \"pdf\"\r\n ? \"application/pdf\"\r\n : type === \"xml\"\r\n ? \"application/xml\"\r\n : type === \"zip\"\r\n ? \"application/zip\"\r\n : type === \"csv\"\r\n ? \"text/csv\"\r\n : type === \"plain\"\r\n ? \"text/plain\"\r\n : type === \"html\"\r\n ? \"text/html\"\r\n : type === \"jpg\"\r\n ? \"image/jpeg\"\r\n : type === \"png\"\r\n ? \"image/png\"\r\n : type;\r\n return contentType;\r\n };\r\n\r\n /**\r\n * Will return the specific provider (actual library)\r\n * Note: Avoid using this!\r\n */\r\n const getProvider = () => api;\r\n\r\n return {\r\n get,\r\n post,\r\n put,\r\n delete: del,\r\n patch,\r\n getProvider,\r\n getContentTypeString,\r\n setContentType,\r\n setAuthToken,\r\n };\r\n};\r\n\r\nexport default HttpClient;\r\n","import ActionTypes from \"./action-types\";\r\nimport ContactUsService from \"./../services/service\";\r\nimport {\r\n addNotification,\r\n addErrorNotification,\r\n} from \"./../../../redux/system/system-action-creators\";\r\nlet service = ContactUsService();\r\n\r\nexport const sendMessage = (data) => (dispatch) => {\r\n dispatch(contacUsRequest());\r\n service\r\n .sendMessage(data)\r\n .then(() => {\r\n dispatch(addNotification(\"Your message has been successfully sent.\"));\r\n dispatch(contacUsSuccess());\r\n })\r\n .catch((error) => {\r\n dispatch(addErrorNotification(error, \"Unable to send your message.\"));\r\n dispatch(contacUsFailure(error));\r\n });\r\n};\r\n\r\nconst contacUsRequest = () => ({\r\n type: ActionTypes.CONTACT_US_REQUEST,\r\n});\r\n\r\nconst contacUsSuccess = () => ({\r\n type: ActionTypes.CONTACT_US_SUCCESS,\r\n});\r\n\r\nconst contacUsFailure = (error) => ({\r\n type: ActionTypes.CONTACT_US_FAILURE,\r\n payload: error,\r\n});\r\n\r\nexport const cleanUp = () => ({\r\n type: ActionTypes.CONTACT_US_CLEAN_UP,\r\n});\r\n","import HttpClient from \"core/http/httpClient\";\r\n\r\nconst ContactUsService = () => {\r\n let httpClient = HttpClient();\r\n\r\n const sendMessage = (payload) => {\r\n let uri = \"/contact\";\r\n return httpClient.post(uri, {\r\n ...payload,\r\n });\r\n };\r\n\r\n return {\r\n sendMessage,\r\n };\r\n};\r\n\r\nexport default ContactUsService;\r\n","const contactUsInitialValues = {\r\n name: \"\",\r\n email: \"\",\r\n phone: \"\",\r\n message: \"\",\r\n};\r\n\r\nexport default contactUsInitialValues;\r\n","import * as Yup from \"yup\";\r\n\r\nconst contactUsValidationSchema = Yup.object().shape({\r\n name: Yup.string()\r\n .min(2, \"Name must have at least 2 characters.\")\r\n .max(30, \"Name is too long.\")\r\n .required(\"Name is required.\"),\r\n email: Yup.string()\r\n .email(\"Invalid email address\")\r\n .required(\"Email address is required.\"),\r\n phone: Yup.string()\r\n .required(\"Phone Number is required.\")\r\n .min(10, \"Invalid phone number.\"),\r\n message: Yup.string()\r\n .required(\"Message is required.\")\r\n .matches(/^\\s*([^\\s]+\\s*){1,500}$/, \"Message should not exceed 500 Words.\"),\r\n});\r\n\r\nexport default contactUsValidationSchema;\r\n","import { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport Main from \"./main\";\r\nimport * as ActionCreators from \"./redux/action-creators\";\r\nimport { withFormik } from \"formik\";\r\nimport contactUsInitialValues from \"./formik/formik/initial-values\";\r\nimport contactUsValidationSchema from \"./formik/formik/validation-schema\";\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n contactUs: state.contactUs,\r\n profile: state.system.userProfile\r\n };\r\n};\r\n\r\nconst EnhancedForm = withFormik({\r\n mapPropsToValues: () => contactUsInitialValues,\r\n validationSchema: contactUsValidationSchema,\r\n handleSubmit: (values, { props }) => {\r\n props.sendMessage(values);\r\n },\r\n displayName: \"contactUsForm\"\r\n})(Main);\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, { ...ActionCreators })(EnhancedForm)\r\n);\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport ContentSection from \"components/common/content-section\";\r\nimport PageTagging from \"components/common/page-tagging/page-tagging\";\r\nimport ContentService from \"services/content-service\";\r\n\r\nconst ContentPage = () => {\r\n const location = useLocation();\r\n const [page, setPage] = useState(null);\r\n\r\n useEffect(() => {\r\n const pageName = location.pathname\r\n .replace(new RegExp(\"^[/]+\"), \"\")\r\n .replace(new RegExp(\"[/]+$\"), \"\")\r\n .toLowerCase();\r\n\r\n setPage(ContentService().getContentPage(pageName));\r\n\r\n return () => {\r\n setPage(null);\r\n };\r\n }, [location]);\r\n\r\n return (\r\n <>\r\n {page !== null && (\r\n <>\r\n \r\n {!page.noContentSection && (\r\n {page.content}\r\n )}\r\n {page.noContentSection && page.content}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ContentPage;\r\n","const galleryItems = [\r\n {\r\n section: \"Domestic\",\r\n items: [\r\n { imageNumber: 0, imageName: \"umbrella-1.jpg\", title: \"\" },\r\n { imageNumber: 1, imageName: \"umbrella-2.jpg\", title: \"\" },\r\n { imageNumber: 2, imageName: \"umbrella-3.jpg\", title: \"\" },\r\n { imageNumber: 3, imageName: \"umbrella-4.jpg\", title: \"\" },\r\n { imageNumber: 4, imageName: \"umbrella-5.jpg\", title: \"\" },\r\n { imageNumber: 5, imageName: \"umbrella-6.jpg\", title: \"\" },\r\n {\r\n imageNumber: 6,\r\n imageName: \"Sovereign Island Umbrella.jpg\",\r\n title: \"Sovereign Island Umbrella\",\r\n },\r\n {\r\n imageNumber: 7,\r\n imageName: \"Versace Penthouse.jpg\",\r\n title: \"Versace Penthouse\",\r\n },\r\n {\r\n imageNumber: 8,\r\n imageName: \"Commodore Dve Surfers Paradise.jpg\",\r\n title: \"Commodore Dve Surfers Paradise\",\r\n },\r\n {\r\n imageNumber: 9,\r\n imageName: \"Sanctuary Cove Umbrella.jpg\",\r\n title: \"Sanctuary Cove Umbrella\",\r\n },\r\n {\r\n imageNumber: 10,\r\n imageName: \"Norsman Dve Surfers Paradise.jpg\",\r\n title: \"Norsman Dve Surfers Paradise\",\r\n },\r\n {\r\n imageNumber: 11,\r\n imageName: \"Motorhome Cover.JPG\",\r\n title: \"Motorhome Cover\",\r\n },\r\n ],\r\n },\r\n {\r\n section: \"Car Parks\",\r\n items: [\r\n { imageNumber: 12, imageName: \"carpark-1.jpg\", title: \"IGA Gladstone\" },\r\n {\r\n imageNumber: 13,\r\n imageName: \"carpark-2.jpg\",\r\n title: \"Tree Tops Shopping Centre\",\r\n },\r\n { imageNumber: 14, imageName: \"carpark-3.jpg\", title: \"\" },\r\n { imageNumber: 15, imageName: \"carpark-4.jpg\", title: \"\" },\r\n {\r\n imageNumber: 16,\r\n imageName: \"carpark-5.jpg\",\r\n title: \"Goonellabah Shopping Centre\",\r\n },\r\n { imageNumber: 17, imageName: \"carpark-6.jpg\", title: \"\" },\r\n { imageNumber: 18, imageName: \"carpark-7.jpg\", title: \"\" },\r\n { imageNumber: 19, imageName: \"carpark-8.jpg\", title: \"Coles Ipswich\" },\r\n { imageNumber: 20, imageName: \"carpark-9.jpg\", title: \"Boyne Plaza\" },\r\n { imageNumber: 21, imageName: \"carpark-10.jpg\", title: \"\" },\r\n { imageNumber: 22, imageName: \"carpark-11.jpg\", title: \"\" },\r\n { imageNumber: 23, imageName: \"carpark-12.jpg\", title: \"\" },\r\n { imageNumber: 24, imageName: \"carpark-13.jpg\", title: \"GC Airport\" },\r\n { imageNumber: 25, imageName: \"carpark-14.jpg\", title: \"\" },\r\n {\r\n imageNumber: 26,\r\n imageName: \"Vicinity Grand Plaza.jpg\",\r\n title: \"Vicinity Grand Plaza\",\r\n },\r\n {\r\n imageNumber: 27,\r\n imageName: \"Woolworths Ooralea.jpg\",\r\n title: \"Woolworths Ooralea\",\r\n },\r\n {\r\n imageNumber: 28,\r\n imageName: \"Gold Coast Airport Entrance.jpg\",\r\n title: \"Gold Coast Airport Entrance\",\r\n },\r\n { imageNumber: 29, imageName: \"RTC.jpg\", title: \"\" },\r\n ],\r\n },\r\n {\r\n section: \"Restaurants\",\r\n items: [\r\n { imageNumber: 30, imageName: \"georges-1.jpg\", title: \"\" },\r\n {\r\n imageNumber: 31,\r\n imageName: \"georges-2.jpg\",\r\n title: \"Georges Paragon Restaurant\",\r\n },\r\n {\r\n imageNumber: 32,\r\n imageName: \"georges-3.jpg\",\r\n title: \"Georges Paragon Restaurant\",\r\n },\r\n {\r\n imageNumber: 33,\r\n imageName: \"georges-4.jpg\",\r\n title: \"Georges Paragon Restaurant\",\r\n },\r\n { imageNumber: 34, imageName: \"georges-5.jpg\", title: \"\" },\r\n {\r\n imageNumber: 35,\r\n imageName: \"Georges Paragon Restaurant 6.jpg\",\r\n title: \"Georges Paragon Restaurant\",\r\n },\r\n {\r\n imageNumber: 36,\r\n imageName: \"Sanctuary Cove Restaurant.jpg\",\r\n title: \"Sanctuary Cove Restaurant\",\r\n },\r\n {\r\n imageNumber: 37,\r\n imageName: \"Bada Bing Restaurant.jpg\",\r\n title: \"Bada Bing Restaurant\",\r\n },\r\n {\r\n imageNumber: 38,\r\n imageName: \"Omeros Brothers Marina Mirage.jpg\",\r\n title: \"Omeros Brothers Marina Mirage\",\r\n },\r\n ],\r\n },\r\n {\r\n section: \"Clubs, Theme Parks, Recreation\",\r\n items: [\r\n { imageNumber: 39, imageName: \"sea-world-1.jpg\", title: \"\" },\r\n { imageNumber: 40, imageName: \"sea-world-2.jpg\", title: \"\" },\r\n {\r\n imageNumber: 41,\r\n imageName: \"sea-world-3.jpg\",\r\n title: \"Seaworld Jet Rescue\",\r\n },\r\n { imageNumber: 42, imageName: \"sea-world-4.jpg\", title: \"Movie World\" },\r\n {\r\n imageNumber: 43,\r\n imageName: \"Byron Bay Hospital.jpg\",\r\n title: \"Byron Bay Hospital\",\r\n },\r\n { imageNumber: 44, imageName: \"GCCC.jpg\", title: \"GCCC\" },\r\n {\r\n imageNumber: 45,\r\n imageName: \"Gold Coast Holiday Park.jpg\",\r\n title: \"Gold Coast Holiday Park\",\r\n },\r\n {\r\n imageNumber: 46,\r\n imageName: \"Mossman Bowls Club.jpg\",\r\n title: \"Mossman Bowls Club\",\r\n },\r\n {\r\n imageNumber: 47,\r\n imageName: \"Sheraton Grand Gold Coast.jpg\",\r\n title: \"Sheraton Grand Gold Coast\",\r\n },\r\n ],\r\n },\r\n {\r\n section: \"Schools\",\r\n items: [\r\n {\r\n imageNumber: 48,\r\n imageName: \"my-cubby-house-1.jpg\",\r\n title: \"My Cubby House\",\r\n },\r\n {\r\n imageNumber: 49,\r\n imageName: \"my-cubby-house-2.jpg\",\r\n title: \"My Cubby House\",\r\n },\r\n {\r\n imageNumber: 50,\r\n imageName: \"my-cubby-house-3.jpg\",\r\n title: \"My Cubby House\",\r\n },\r\n {\r\n imageNumber: 51,\r\n imageName: \"my-cubby-house-4.jpg\",\r\n title: \"My Cubby House\",\r\n },\r\n {\r\n imageNumber: 52,\r\n imageName: \"All Saints College.jpg\",\r\n title: \"All Saints College\",\r\n },\r\n {\r\n imageNumber: 53,\r\n imageName: \"Barrell Vault.jpg\",\r\n title: \"Barrell Vault\",\r\n },\r\n {\r\n imageNumber: 54,\r\n imageName: \"Griffith University.jpg\",\r\n title: \"Griffith University\",\r\n },\r\n { imageNumber: 55, imageName: \"Hopscotch.jpg\", title: \"Hopscotch\" },\r\n {\r\n imageNumber: 56,\r\n imageName: \"Marrymount College.jpg\",\r\n title: \"Marrymount College\",\r\n },\r\n ],\r\n },\r\n {\r\n section: \"Commercial Premises\",\r\n items: [\r\n { imageNumber: 57, imageName: \"Oracle 2.jpg\", title: \"Oracle\" },\r\n { imageNumber: 58, imageName: \"Oracle.jpg\", title: \"Oracle\" },\r\n {\r\n imageNumber: 59,\r\n imageName: \"Pivotal Point Southport.jpg\",\r\n title: \"Pivotal Point Southport\",\r\n },\r\n {\r\n imageNumber: 60,\r\n imageName: \"Sawtell Truck Yard.jpg\",\r\n title: \"Sawtell Truck Yard\",\r\n },\r\n { imageNumber: 61, imageName: \"office-shade.jpg\", title: \"\" },\r\n {\r\n imageNumber: 62,\r\n imageName: \"Caliope Bus Stop.jpg\",\r\n title: \"Caliope Bus Stop\",\r\n },\r\n {\r\n imageNumber: 63,\r\n imageName: \"Gold Coast Helitours Hanger.jpg\",\r\n title: \"Gold Coast Helitours Hanger\",\r\n },\r\n {\r\n imageNumber: 64,\r\n imageName: \"Marina Mirage.jpg\",\r\n title: \"Marina Mirage\",\r\n },\r\n { imageNumber: 65, imageName: \"membrane-1.jpg\", title: \"\" },\r\n ],\r\n },\r\n];\r\n\r\nexport default galleryItems;\r\n","import Playground from \"views/playground\";\r\nimport Home from \"views/home\";\r\nimport ContactUs from \"views/contact-us\";\r\nimport ContentPage from \"views/content-page\";\r\nimport Gallery from \"views/gallery\";\r\n\r\nconst ModuleRoutes = [\r\n // Test Routes\r\n {\r\n path: \"/playground/:path\",\r\n name: \"Playground\",\r\n component: Playground,\r\n privateRoute: false,\r\n },\r\n // Core Routes\r\n {\r\n path: \"/\",\r\n name: \"Home\",\r\n component: Home,\r\n privateRoute: false,\r\n },\r\n {\r\n path: \"/gallery/\",\r\n name: \"Gallery\",\r\n component: Gallery,\r\n privateRoute: false,\r\n },\r\n {\r\n path: \"/contact-us/\",\r\n name: \"Contact Us\",\r\n component: ContactUs,\r\n privateRoute: false,\r\n },\r\n // User Routes\r\n\r\n // Catch all Route\r\n {\r\n path: \"*\",\r\n component: ContentPage,\r\n privateRoute: false,\r\n },\r\n];\r\n\r\nexport default ModuleRoutes;\r\n","import React, { useState, useCallback } from \"react\";\r\nimport { Row, Col, CardImg, Card } from \"reactstrap\";\r\nimport EnhancedContentSection from \"./../../components/common/enhanced-content-section\";\r\nimport ImgsViewer from \"react-images-viewer\";\r\nimport \"./gallery.scss\";\r\nimport galleryItems from \"./gallery-items\";\r\n\r\nconst Gallery = ({ title }) => {\r\n const [currentImage, setCurrentImage] = useState(0);\r\n const [isViewerOpen, setIsViewerOpen] = useState(false);\r\n const [imageCount, setImageCount] = useState(0);\r\n\r\n const openImageViewer = useCallback((index) => {\r\n setCurrentImage(index);\r\n setImageCount(getFlattenedImageArray().length);\r\n setIsViewerOpen(true);\r\n }, []);\r\n\r\n const closeImageViewer = () => {\r\n setCurrentImage(0);\r\n setIsViewerOpen(false);\r\n };\r\n\r\n const onNextImage = () => {\r\n let newIndex = currentImage + 1;\r\n setCurrentImage(newIndex >= imageCount ? 0 : newIndex);\r\n };\r\n\r\n const onPreviousImage = () => {\r\n let newIndex = currentImage - 1;\r\n setCurrentImage(newIndex < 0 ? imageCount - 1 : newIndex);\r\n };\r\n\r\n const getFlattenedImageArray = () => {\r\n let images = [];\r\n\r\n galleryItems.forEach(function (section) {\r\n section.items.forEach(function (item) {\r\n images.push({\r\n src: `https://solvable.azureedge.net/horizon-sails/images/${item.imageName}`,\r\n caption: item.title,\r\n });\r\n });\r\n });\r\n\r\n return images;\r\n };\r\n\r\n return (\r\n \r\n {galleryItems.map((section, i) => (\r\n
\r\n

{section.section}

\r\n\r\n \r\n {section.items.map((x, index) => {\r\n return (\r\n openImageViewer(x.imageNumber)}\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n ))}\r\n\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Gallery;\r\n","export const navLinks = [\r\n {\r\n title: \"Home\",\r\n href: \"/\",\r\n subLinks: [],\r\n },\r\n {\r\n title: \"Solutions\",\r\n href: \"/solutions/\",\r\n subLinks: [\r\n {\r\n title: \"Shade Sail Structures\",\r\n href: \"/shade-sail-structures/\",\r\n },\r\n {\r\n title: \"PVC Membranes\",\r\n href: \"/pvc-membranes/\",\r\n },\r\n {\r\n title: \"Resort Umbrellas\",\r\n href: \"/resort-umbrellas/\",\r\n },\r\n ],\r\n },\r\n {\r\n title: \"Gallery\",\r\n href: \"/gallery/\",\r\n subLinks: [],\r\n },\r\n // {\r\n // title: \"Case Studies\",\r\n // href: \"/case-studies/\",\r\n // subLinks: [\r\n // {\r\n // title: \"My Cubby House\",\r\n // href: \"/case-studies/my-cubby-house/\",\r\n // },\r\n // {\r\n // title: \"Georges Paragon Resturant\",\r\n // href: \"/case-studies/georges-paragon-resturant/\",\r\n // },\r\n // {\r\n // title: \"Marina Mirage\",\r\n // href: \"/case-studies/marina-mirage/\",\r\n // },\r\n // {\r\n // title: \"IGA Supermarket\",\r\n // href: \"/case-studies/iga-supermarket/\",\r\n // },\r\n // {\r\n // title: \"Sanctuary Cove Umbrellas\",\r\n // href: \"/case-studies/sanctuary-cove-umbrellas/\",\r\n // },\r\n // {\r\n // title: \"Southport Yacht Club\",\r\n // href: \"/case-studies/southport-yacht-club/\",\r\n // },\r\n // ],\r\n // },\r\n {\r\n title: \"Contact\",\r\n href: \"/contact-us/\",\r\n subLinks: [],\r\n },\r\n];\r\n","import React from \"react\";\r\nimport NavBar from \"./../components/nav-bar\";\r\nimport Footer from \"./../components/footer\";\r\nimport ModuleRoutes from \"./../routes/routing\";\r\nimport { Route, Switch, Redirect } from \"react-router-dom\";\r\nimport { navLinks } from \"../constants/navigation\";\r\nimport \"./full-layout.scss\";\r\n\r\nconst FullLayout = () => {\r\n return (\r\n <>\r\n \r\n\r\n
\r\n \r\n {ModuleRoutes.map((prop, key) => {\r\n if (prop.navlabel) {\r\n return null;\r\n } else if (prop.collapse) {\r\n return prop.child.map((prop2, key2) => {\r\n if (prop2.collapse) {\r\n return prop2.subchild.map((prop3, key3) => {\r\n return (\r\n \r\n );\r\n });\r\n }\r\n return (\r\n \r\n );\r\n });\r\n } else if (prop.redirect) {\r\n return ;\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n })}\r\n \r\n
\r\n\r\n