diff --git a/packages/react-app/public/profile.jpg b/packages/react-app/public/profile.jpg new file mode 100644 index 0000000..3716955 Binary files /dev/null and b/packages/react-app/public/profile.jpg differ diff --git a/packages/react-app/public/register-association.html b/packages/react-app/public/register-association.html new file mode 100644 index 0000000..532824c --- /dev/null +++ b/packages/react-app/public/register-association.html @@ -0,0 +1,12 @@ + + + + Register page + + + +
+ + + \ No newline at end of file diff --git a/packages/react-app/public/register-user.html b/packages/react-app/public/register-user.html new file mode 100644 index 0000000..7bda89a --- /dev/null +++ b/packages/react-app/public/register-user.html @@ -0,0 +1,11 @@ + + + + Register page + + + +
+ + + diff --git a/packages/react-app/src/association-card.css b/packages/react-app/src/association-card.css new file mode 100644 index 0000000..0e9aae2 --- /dev/null +++ b/packages/react-app/src/association-card.css @@ -0,0 +1,175 @@ +body{ + font-family: 'Hind Guntur', sans-serif; + color: #054231; + display: flex; + justify-content: center; + background: #49afa8; + background-image: url('https://github.com/OlgaKoplik/CodePen/blob/master/leaf.png?raw=true'); + background-repeat: no-repeat, no-repeat; + background-position: 200% -40%; + background-size: 80%; +} + +.card{ + width: 310px; + height: 750px; + padding: 15px; + margin-top: 40px; + border-radius: 25px; + display: flex; + justify-content: center; + box-shadow: 15px 10px 25px 0px #3fa1a9; + background: #fff; + background-image: url('https://github.com/OlgaKoplik/CodePen/blob/master/leaf2.png?raw=true'), url('https://github.com/OlgaKoplik/CodePen/blob/master/leaf.png?raw=true'); + background-repeat: no-repeat, no-repeat; + background-position: 120% -5%, 200% -40%; + background-size: 40%, 80%; + animation: open .5s; +} +@keyframes open { + 0% {background-position: 166% -25%, 220% -69%;} + 100%{background-position: 120% -5%, 200% -40%;} +} +form{ + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.field{ + margin: 5px; + display: flex; + flex-direction: column; + } +input[type="file"] { + display: none; +} + +.custom-file-upload { + border-radius: 50%; + display: inline-block; + position: relative; + padding: 6px; + cursor: pointer; + background: linear-gradient(270deg, #3fa1a9, #79f1a4); + margin-bottom: 25px; +} + +.img-wrap{ + position: relative; + width: 200px; + height: 200px; + overflow: hidden; + border-radius: 50%; +} +.img-upload:before{ + content: "\f093"; + font-size: 90px; + position: absolute; + padding-top: 80px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + text-align: center; + color: #63d3a6; + width: 200px; + height: 200px; + border-radius: 50%; + opacity: 0; + transition: .5s ease; + background-color: #fff; +} +.img-upload:hover:before{ + opacity: 1; +} +img { + width: auto; + height: 100%; +} + +label{ + text-transform: uppercase; + font-weight: 700; + color: #676767; +} + +input{ + border-radius: 15px; + border: 1px solid #b7b7b7; + padding: 5px 5px 5px 10px; + font-size: 18px; + transition: 0.2s; +} +input:focus{ + outline: none; + border: 1px solid #64d488; +} +input::placeholder{ + color: #bebebe; +} +.name{ + text-align: center; + text-transform: uppercase; + font-weight: 700; + color: #676767; + max-width: 220px; + overflow-wrap: break-word; +} +.status{ + text-align: center; + max-width: 220px; + overflow-wrap: break-word; +} +button{ + position: relative; + color: #054231; + letter-spacing: 1px; + margin: 20px; + font-size: 18px; + padding: 10px; + text-align: center; + transition: 0.5s; + border-radius: 10px; + cursor: pointer; + border-radius: 25px; + border: none; + background: #64d488; +} +.save{ + font-weight: 600; + left: -20px; + text-transform: uppercase; + letter-spacing: 1px; + width: 20px; + box-shadow: 20px 0px 40px 0px #63d3a6; +} +.edit{ + color: #fff; + width: 180px; +} +button:hover{ + left: 0; + color: #fff; + width: 180px; + box-shadow: 0px 0px 20px 0px #63d3a6; +} +button:focus{ + outline: none; +} +.lds-ripple { + display: inline-block; + position: relative; + width: 64px; + height: 64px; +} +.lds-ripple div { + position: absolute; + border: 4px solid #fff; + opacity: 1; + border-radius: 50%; + animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite; +} +.lds-ripple div:nth-child(2) { + animation-delay: -0.5s; +} \ No newline at end of file diff --git a/packages/react-app/src/components/association-card.jsx b/packages/react-app/src/components/association-card.jsx new file mode 100644 index 0000000..428a067 --- /dev/null +++ b/packages/react-app/src/components/association-card.jsx @@ -0,0 +1,248 @@ +const ImgUpload =({ + onChange, + src +})=> + + + +const Name =({ + onChange, + value +})=> +
+ + +
+ + +const Status =({ + onChange, + value +})=> +
+ + +
+ + +const Website =({ + onChange, + value +})=> +
+ + +
+ +const Address =({ + onChange, + value +})=> +
+ + +
+ + const Legaladdress =({ + onChange, + value + })=> +
+ + +
+ + +const Profile =({ + onSubmit, + src, + name, + website, + address, + Legaladdress, + status, +})=> +
+
+

Association Card

+ +
{name}
+
{website}
+
{address}
+
{Legaladdress}
+
{status}
+ +
+
+ + +const Edit =({ + onSubmit, + children, +})=> +
+
+

Association Card

+ {children} + +
+
+ +class CardProfile extends React.Component { + state = { + file: '', + //imagePreviewUrl: 'https://github.com/OlgaKoplik/CodePen/blob/master/profile.jpg?raw=true', + imagePreviewUrl: '../../public/profile.jpg', + name:'', + status:'', + active: 'edit' + } + + photoUpload = e =>{ + e.preventDefault(); + const reader = new FileReader(); + const file = e.target.files[0]; + reader.onloadend = () => { + this.setState({ + file: file, + imagePreviewUrl: reader.result + }); + } + reader.readAsDataURL(file); + } + + editName = e =>{ + const name = e.target.value; + this.setState({ + name, + }); + } + + editWebsite = e => { + const website = e.target.value; + this.setState({ + website, + }); + } + + editAddress = e => { + const address = e.target.value; + this.setState({ + address, + }); + } + + editLegalAddress = e =>{ + const legaladdress = e.target.value; + this.setState({ + legaladdress, + }); + } + + editStatus = e => { + const status = e.target.value; + this.setState({ + status, + }); + } + + handleSubmit= e =>{ + e.preventDefault(); + let activeP = this.state.active === 'edit' ? 'profile' : 'edit'; + this.setState({ + active: activeP, + }) + } + + render() { + const {imagePreviewUrl, + name, + website, + address, + legaladdress, + status, + active} = this.state; + return ( +
+ {(active === 'edit')?( + + + + +
+ + + + ):( + )} + +
+ ) + } +} + +ReactDOM.render( + , + document.getElementById('associationcard') +) \ No newline at end of file diff --git a/packages/react-app/src/components/user-card.jsx b/packages/react-app/src/components/user-card.jsx new file mode 100644 index 0000000..7583c07 --- /dev/null +++ b/packages/react-app/src/components/user-card.jsx @@ -0,0 +1,187 @@ +const ImgUpload =({ + onChange, + src +})=> + + +const Name =({ + onChange, + value +})=> +
+ + +
+ + +const Status =({ + onChange, + value +})=> +
+ + +
+ + +const Website =({ + onChange, + value +})=> +
+ + +
+ + +const Profile =({ + onSubmit, + src, + name, + status, + website, +})=> +
+
+

Profile Card

+ +
{name}
+
{status}
+
{website}
+ +
+
+ + +const Edit =({ + onSubmit, + children, +})=> +
+
+

Profile Card

+ {children} + +
+
+ +class CardProfile extends React.Component { + state = { + file: '', + //imagePreviewUrl: 'https://github.com/OlgaKoplik/CodePen/blob/master/profile.jpg?raw=true', + imagePreviewUrl: '../../public/profile.jpg', + name:'', + status:'', + active: 'edit' + } + + photoUpload = e =>{ + e.preventDefault(); + const reader = new FileReader(); + const file = e.target.files[0]; + reader.onloadend = () => { + this.setState({ + file: file, + imagePreviewUrl: reader.result + }); + } + reader.readAsDataURL(file); + } + + editName = e =>{ + const name = e.target.value; + this.setState({ + name, + }); + } + + editWebsite = e => { + const website = e.target.value; + this.setState({ + website, + }); + } + + editStatus = e => { + const status = e.target.value; + this.setState({ + status, + }); + } + + handleSubmit= e =>{ + e.preventDefault(); + let activeP = this.state.active === 'edit' ? 'profile' : 'edit'; + this.setState({ + active: activeP, + }) + } + + render() { + const {imagePreviewUrl, + name, + website, + status, + active} = this.state; + return ( +
+ {(active === 'edit')?( + + + + + + + ):( + )} + +
+ ) + } +} + +ReactDOM.render( + , + document.getElementById('usercard') +) \ No newline at end of file diff --git a/packages/react-app/src/user-card.css b/packages/react-app/src/user-card.css new file mode 100644 index 0000000..a1ef484 --- /dev/null +++ b/packages/react-app/src/user-card.css @@ -0,0 +1,175 @@ +body{ + font-family: 'Hind Guntur', sans-serif; + color: #054231; + display: flex; + justify-content: center; + background: #49afa8; + background-image: url('https://github.com/OlgaKoplik/CodePen/blob/master/leaf.png?raw=true'); + background-repeat: no-repeat, no-repeat; + background-position: 200% -40%; + background-size: 80%; + } + + .card{ + width: 310px; + height: 627px; + padding: 15px; + margin-top: 40px; + border-radius: 25px; + display: flex; + justify-content: center; + box-shadow: 15px 10px 25px 0px #3fa1a9; + background: #fff; + background-image: url('https://github.com/OlgaKoplik/CodePen/blob/master/leaf2.png?raw=true'), url('https://github.com/OlgaKoplik/CodePen/blob/master/leaf.png?raw=true'); + background-repeat: no-repeat, no-repeat; + background-position: 120% -5%, 200% -40%; + background-size: 40%, 80%; + animation: open .5s; + } + @keyframes open { + 0% {background-position: 166% -25%, 220% -69%;} + 100%{background-position: 120% -5%, 200% -40%;} + } + form{ + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + } + + .field{ + margin: 5px; + display: flex; + flex-direction: column; + } + input[type="file"] { + display: none; + } + + .custom-file-upload { + border-radius: 50%; + display: inline-block; + position: relative; + padding: 6px; + cursor: pointer; + background: linear-gradient(270deg, #3fa1a9, #79f1a4); + margin-bottom: 25px; + } + + .img-wrap{ + position: relative; + width: 200px; + height: 200px; + overflow: hidden; + border-radius: 50%; + } + .img-upload:before{ + content: "\f093"; + font-size: 90px; + position: absolute; + padding-top: 80px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + text-align: center; + color: #63d3a6; + width: 200px; + height: 200px; + border-radius: 50%; + opacity: 0; + transition: .5s ease; + background-color: #fff; + } + .img-upload:hover:before{ + opacity: 1; + } + img { + width: auto; + height: 100%; + } + + label{ + text-transform: uppercase; + font-weight: 700; + color: #676767; + } + + input{ + border-radius: 15px; + border: 1px solid #b7b7b7; + padding: 5px 5px 5px 10px; + font-size: 18px; + transition: 0.2s; + } + input:focus{ + outline: none; + border: 1px solid #64d488; + } + input::placeholder{ + color: #bebebe; + } + .name{ + text-align: center; + text-transform: uppercase; + font-weight: 700; + color: #676767; + max-width: 220px; + overflow-wrap: break-word; + } + .status{ + text-align: center; + max-width: 220px; + overflow-wrap: break-word; + } + button{ + position: relative; + color: #054231; + letter-spacing: 1px; + margin: 20px; + font-size: 18px; + padding: 10px; + text-align: center; + transition: 0.5s; + border-radius: 10px; + cursor: pointer; + border-radius: 25px; + border: none; + background: #64d488; + } + .save{ + font-weight: 600; + left: -20px; + text-transform: uppercase; + letter-spacing: 1px; + width: 20px; + box-shadow: 20px 0px 40px 0px #63d3a6; + } + .edit{ + color: #fff; + width: 180px; + } + button:hover{ + left: 0; + color: #fff; + width: 180px; + box-shadow: 0px 0px 20px 0px #63d3a6; + } + button:focus{ + outline: none; + } + .lds-ripple { + display: inline-block; + position: relative; + width: 64px; + height: 64px; + } + .lds-ripple div { + position: absolute; + border: 4px solid #fff; + opacity: 1; + border-radius: 50%; + animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite; + } + .lds-ripple div:nth-child(2) { + animation-delay: -0.5s; + } \ No newline at end of file