Adding contact page.
This commit is contained in:
@ -27,6 +27,7 @@ import { HashRouter, Route, Switch } from 'react-router-dom';
|
||||
|
||||
//Pages
|
||||
import Homepage from './page/home/Homepage';
|
||||
import ContactPage from './page/contact/ContactPage';
|
||||
|
||||
class App extends React.Component {
|
||||
constructor(props) {
|
||||
@ -41,6 +42,7 @@ class App extends React.Component {
|
||||
<main className="o-main">
|
||||
<Switch>
|
||||
<Route exact path="/" component={ Homepage } />
|
||||
<Route exact path="/contact" component={ ContactPage } />
|
||||
</Switch>
|
||||
</main>
|
||||
</div>
|
||||
|
@ -4,10 +4,31 @@ module.exports = {
|
||||
"site": {
|
||||
"name": "domsPlace"
|
||||
},
|
||||
|
||||
|
||||
"navbar": {
|
||||
"home": "Home",
|
||||
"about": "About",
|
||||
"contact": "Contact"
|
||||
},
|
||||
|
||||
"pages": {
|
||||
"contact": {
|
||||
"name": {
|
||||
"label": "Name",
|
||||
"placeholder": "Enter your name."
|
||||
},
|
||||
|
||||
"email": {
|
||||
"label": "Email Address",
|
||||
"placeholder": "Enter your email address."
|
||||
},
|
||||
|
||||
"message": {
|
||||
"label": "Message",
|
||||
"placeholder": "Enter your message."
|
||||
},
|
||||
|
||||
"send": "Send"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,101 @@
|
||||
// Copyright (c) 2018 Dominic Masters
|
||||
//
|
||||
// MIT License
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining
|
||||
// a copy of this software and associated documentation files (the
|
||||
// "Software"), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to
|
||||
// permit persons to whom the Software is furnished to do so, subject to
|
||||
// the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be
|
||||
// included in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import Page, { PageBoundary } from './../Page';
|
||||
import Section, { BodySection } from './../../section/Section';
|
||||
import Input, { Form, InputGroup, TextArea, Label } from './../../input/input';
|
||||
import Language from './../../language/Language';
|
||||
|
||||
class ContactPage extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<Page style="contact-page" className="p-contact-page">
|
||||
<Section>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
</Section>
|
||||
|
||||
|
||||
<PageBoundary>
|
||||
<BodySection>
|
||||
<Form>
|
||||
<InputGroup>
|
||||
<Label>{ Language.get("pages.contact.name.label") }</Label>
|
||||
<Input
|
||||
type="text"
|
||||
placeholder={ Language.get("pages.contact.name.placeholder") }
|
||||
/>
|
||||
</InputGroup>
|
||||
|
||||
<InputGroup >
|
||||
<Label>{ Language.get("pages.contact.email.label") }</Label>
|
||||
<Input
|
||||
type="email"
|
||||
placeholder={ Language.get("pages.contact.email.placeholder") }
|
||||
/>
|
||||
</InputGroup>
|
||||
|
||||
<InputGroup>
|
||||
<Label>{ Language.get("pages.contact.message.label") }</Label>
|
||||
<TextArea
|
||||
placeholder={ Language.get("pages.contact.message.placeholder") }
|
||||
/>
|
||||
</InputGroup>
|
||||
|
||||
<InputGroup>
|
||||
<Input
|
||||
type="submit"
|
||||
value={ Language.get("pages.contact.send") }
|
||||
/>
|
||||
</InputGroup>
|
||||
</Form>
|
||||
</BodySection>
|
||||
</PageBoundary>
|
||||
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const mapStateToProps = function(state) {
|
||||
return {
|
||||
code: state.language.code
|
||||
}
|
||||
}
|
||||
|
||||
export default connect(mapStateToProps)(ContactPage);
|
@ -25,7 +25,6 @@ import React from 'react';
|
||||
import Page, { PageBoundary } from './../Page';
|
||||
import Section, { ImageSection } from './../../section/Section';
|
||||
import FloatingContentBox from './../../content/FloatingContentBox';
|
||||
import { Button } from './../../input/Inputs';
|
||||
import Image from './../../image/Image';
|
||||
import { Title, Subtitle } from './../../typography/Typography';
|
||||
|
||||
|
@ -43,8 +43,10 @@ export default class Section extends React.Component {
|
||||
|
||||
import ImageSection from './image/ImageSection';
|
||||
import VideoSection from './video/VideoSection';
|
||||
import BodySection from './body/BodySection';
|
||||
|
||||
export {
|
||||
ImageSection,
|
||||
VideoSection
|
||||
VideoSection,
|
||||
BodySection
|
||||
}
|
||||
|
34
public/section/body/BodySection.jsx
Normal file
34
public/section/body/BodySection.jsx
Normal file
@ -0,0 +1,34 @@
|
||||
// Copyright (c) 2018 Dominic Masters
|
||||
//
|
||||
// MIT License
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining
|
||||
// a copy of this software and associated documentation files (the
|
||||
// "Software"), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to
|
||||
// permit persons to whom the Software is furnished to do so, subject to
|
||||
// the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be
|
||||
// included in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
import React from 'react';
|
||||
import Section from './../Section';
|
||||
|
||||
export default function(props) {
|
||||
let clazz = "c-body-section";
|
||||
if(props.className) clazz += " " + props.className;
|
||||
|
||||
return (
|
||||
<Section {...props} className={clazz} />
|
||||
);
|
||||
};
|
16
public/styles/components/_body-section.scss
Normal file
16
public/styles/components/_body-section.scss
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Body Section
|
||||
* Body Section.
|
||||
*
|
||||
* Dependencies:
|
||||
* styles/settings/colors.scss
|
||||
*
|
||||
* Version:
|
||||
* 1.0.0 - 2018/05/13
|
||||
*/
|
||||
$c-body-section--padding: 1em;
|
||||
|
||||
.c-body-section {
|
||||
background: $s-color--background;
|
||||
padding: $c-body-section--padding;
|
||||
}
|
@ -64,6 +64,7 @@
|
||||
@import './objects/_video.scss';
|
||||
|
||||
//Components
|
||||
@import './components/_body-section.scss';
|
||||
@import './components/_image-section.scss';
|
||||
@import './components/_page.scss';
|
||||
@import './components/_section.scss';
|
||||
|
@ -26,6 +26,9 @@ $s-color--swatch-blue: #BAE1FF;
|
||||
/*
|
||||
== Color Definitions ==
|
||||
*/
|
||||
|
||||
$s-color--background: white;
|
||||
|
||||
//Hyperlink Colors
|
||||
$s-color--link: #FC78DE;
|
||||
$s-color--link-hover: lighten($s-color--link, 10%);
|
||||
|
Reference in New Issue
Block a user