+
+
handleDrop(e, idx)}
+ onClick={(e) => fileInputRefs.current[idx].click(e)}
+ isLoading={isUploading[idx]}>
+ {!isUploading[idx] && instance.coverPhoto ? <>
+
+
+ > : }
+
+
fileInputRefs.current[idx] = element}
+ accept="image/*"
+ onChange={(e) => handleFiles(e, idx)}>
+
+
+
+
+
+ handleInstanceTitleChange(e, idx)}
+ />
+
+
+ handleInstanceSubtitleChange(e, idx)}
+ />
+
+
+
handleNewInstanceUrlChange(e, idx)}
+ InputProps={{
+ endAdornment: (
handleAddNewInstanceUrl(e, idx)}>
-
- )
- }}/>
-
- {instance.urls.map(url =>
- handleDeleteUrl(e, idx, url)}>
-
-
- {url}
-
)}
+ )
+ }}/>
+
+ {instance.urls.map(url =>
+ handleDeleteUrl(e, idx, url)}>
+
+
+ {url}
+
)}
+
-
-
-
-
-
-
-
+
+
+
Home layout:
+
+ {homeLayouts.map(layout =>
+
handleSelectLayout(idx, layout.id)}>
+ {instance.homeLayout === layout.id ? :
+ }
+
+ {layout.name}
+
+ )}
+
+
+
+
+
+
+
+
+
+
- )}
+
)}
;
}
\ No newline at end of file
diff --git a/admin-client/src/pages/instances-page.scss b/admin-client/src/pages/instances-page.scss
index d2a686d..1b4e3e0 100644
--- a/admin-client/src/pages/instances-page.scss
+++ b/admin-client/src/pages/instances-page.scss
@@ -13,9 +13,11 @@
img {
position: relative;
}
+
.btn-edit-photo {
display: none;
}
+
&:hover {
.btn-edit-photo {
position: absolute;
@@ -27,6 +29,7 @@
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.2);
+
svg {
color: white;
font-size: 48px;
@@ -70,5 +73,4 @@
}
}
}
-
}
\ No newline at end of file
diff --git a/admin-client/src/pages/no-access.js b/admin-client/src/pages/no-access-page.js
similarity index 100%
rename from admin-client/src/pages/no-access.js
rename to admin-client/src/pages/no-access-page.js
diff --git a/client/src/components/home-layouts/home-layout1.js b/client/src/components/home-layouts/home-layout1.js
new file mode 100644
index 0000000..eec8e2c
--- /dev/null
+++ b/client/src/components/home-layouts/home-layout1.js
@@ -0,0 +1,20 @@
+import {NavLink} from "react-router-dom";
+import {ArrowRightAlt} from "@mui/icons-material";
+import "./home-layout1.scss";
+
+export function HomeLayout1({instance}) {
+ return
+
+

+
+
+
+
{instance.title}
+
{instance.subtitle}
+
+ ENTER
+
+
+
+
;
+}
\ No newline at end of file
diff --git a/client/src/public/pages/home-page.scss b/client/src/components/home-layouts/home-layout1.scss
similarity index 80%
rename from client/src/public/pages/home-page.scss
rename to client/src/components/home-layouts/home-layout1.scss
index 039a2be..9418391 100644
--- a/client/src/public/pages/home-page.scss
+++ b/client/src/components/home-layouts/home-layout1.scss
@@ -1,4 +1,4 @@
-#home {
+#homeLayout1 {
height: 100vh;
width: 100vw;
display: grid;
@@ -36,15 +36,17 @@
padding: 60px;
max-width: 620px;
text-align: center;
+ @media(max-width: 600px) {
+ padding: 0;
+ max-width: 90vw;
+ }
h1 {
text-align: center;
display: inline-block;
font-size: 37px;
line-height: 1em;
- margin: 0;
- margin-bottom: 22px;
- //font-family: proxima-nova;
+ margin: 0 0 22px;
font-weight: 700;
font-style: normal;
text-transform: uppercase;
@@ -65,29 +67,38 @@
letter-spacing: .28em;
line-height: 1.7em;
color: #333;
- margin: 0;
- margin-bottom: 36px;
+ margin: 0 0 36px;
}
.goto-website-link {
text-rendering: optimizeLegibility;
white-space: nowrap;
- line-height: 1em;
//font-family: proxima-nova;
- font-weight: 500;
font-style: normal;
- font-size: 14px;
text-transform: uppercase;
letter-spacing: 0;
text-align: center;
- padding: 1em calc(1.44em - 0em) 1em 1.44em;
- display: inline-block;
+ padding: 1em 1.44em;
text-decoration: none;
background-color: transparent;
color: #333;
border: 2px solid #333;
+ display: inline-block;
+ height: calc(22px + 2em);
transition: background-color 170ms ease-in-out, color 170ms ease-in-out;
- //transition: color 170ms ease-in-out, border-color 170ms ease-in-out;
+
+ span {
+ display: inline-block;
+ vertical-align: top;
+ line-height: 22px;
+ font-size: 14px;
+ font-weight: 500;
+ }
+
+ svg {
+ margin-left: 5px;
+ font-size: 22px;
+ }
&:hover {
background-color: black;
diff --git a/client/src/components/home-layouts/home-layout2.js b/client/src/components/home-layouts/home-layout2.js
new file mode 100644
index 0000000..2171b28
--- /dev/null
+++ b/client/src/components/home-layouts/home-layout2.js
@@ -0,0 +1,20 @@
+import {NavLink} from "react-router-dom";
+import {ArrowRightAlt} from "@mui/icons-material";
+import "./home-layout2.scss";
+
+export function HomeLayout2({instance}) {
+ return
+
+
+
{instance.title}
+
{instance.subtitle}
+
+ ENTER
+
+
+
+
+

+
+
;
+}
\ No newline at end of file
diff --git a/client/src/components/home-layouts/home-layout2.scss b/client/src/components/home-layouts/home-layout2.scss
new file mode 100644
index 0000000..986da72
--- /dev/null
+++ b/client/src/components/home-layouts/home-layout2.scss
@@ -0,0 +1,110 @@
+#homeLayout2 {
+ height: 100vh;
+ width: 100vw;
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+
+ @media(max-width: 1200px) {
+ grid-template-columns: 1fr;
+ grid-template-rows: 1fr 1fr;
+ }
+
+ .cover-photo {
+ overflow: hidden;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ img {
+ width: 100%;
+ height: 100%;
+ object-position: 50% 50%;
+ object-fit: cover;
+ }
+ }
+
+ .instance-details {
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+
+ .box {
+ position: static !important;
+ transform: none;
+ margin-left: auto;
+ margin-right: auto;
+ padding: 60px;
+ max-width: 620px;
+ text-align: center;
+ @media(max-width: 600px) {
+ padding: 0;
+ max-width: 90vw;
+ }
+
+ h1 {
+ text-align: center;
+ display: inline-block;
+ font-size: 37px;
+ line-height: 1em;
+ margin: 0 0 22px;
+ font-weight: 700;
+ font-style: normal;
+ text-transform: uppercase;
+ letter-spacing: .1em;
+ color: #333;
+
+ @media(max-width: 600px) {
+ font-size: 24px;
+ }
+ }
+
+ h2 {
+ //font-family: minion-pro;
+ font-size: 19px;
+ font-weight: 400;
+ font-style: normal;
+ text-transform: uppercase;
+ letter-spacing: .28em;
+ line-height: 1.7em;
+ color: #333;
+ margin: 0 0 36px;
+ }
+
+ .goto-website-link {
+ text-rendering: optimizeLegibility;
+ white-space: nowrap;
+ //font-family: proxima-nova;
+ font-style: normal;
+ text-transform: uppercase;
+ letter-spacing: 0;
+ text-align: center;
+ padding: 1em 1.44em;
+ text-decoration: none;
+ background-color: transparent;
+ color: #333;
+ border: 2px solid #333;
+ display: inline-block;
+ height: calc(22px + 2em);
+ transition: background-color 170ms ease-in-out, color 170ms ease-in-out;
+
+ span {
+ display: inline-block;
+ vertical-align: top;
+ line-height: 22px;
+ font-size: 14px;
+ font-weight: 500;
+ }
+
+ svg {
+ margin-left: 5px;
+ font-size: 22px;
+ }
+
+ &:hover {
+ background-color: black;
+ color: white;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/src/components/home-layouts/home-layout3.js b/client/src/components/home-layouts/home-layout3.js
new file mode 100644
index 0000000..0334a5f
--- /dev/null
+++ b/client/src/components/home-layouts/home-layout3.js
@@ -0,0 +1,20 @@
+import {NavLink} from "react-router-dom";
+import {ArrowRightAlt} from "@mui/icons-material";
+import "./home-layout3.scss";
+
+export function HomeLayout3({instance}) {
+ return
+
+

+
+
+
{instance.title}
+
{instance.subtitle}
+
+ ENTER
+
+
+
+
+
;
+}
\ No newline at end of file
diff --git a/client/src/components/home-layouts/home-layout3.scss b/client/src/components/home-layouts/home-layout3.scss
new file mode 100644
index 0000000..fc8869b
--- /dev/null
+++ b/client/src/components/home-layouts/home-layout3.scss
@@ -0,0 +1,110 @@
+#homeLayout3 {
+ height: 100vh;
+ width: 100vw;
+
+ .cover-photo {
+ overflow: hidden;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ img {
+ position: absolute;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ object-position: 50% 50%;
+ object-fit: cover;
+ }
+ }
+
+ .instance-details {
+ margin-top: calc(50vh - 125px);
+ height: 250px;
+ width: 100vw;
+ background-color: white;
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+ position: relative;
+
+ .box {
+ position: static !important;
+ transform: none;
+ margin-left: auto;
+ margin-right: auto;
+ padding: 60px;
+ max-width: 620px;
+ text-align: center;
+ @media(max-width: 600px) {
+ padding: 0;
+ max-width: 90vw;
+ }
+
+ h1 {
+ text-align: center;
+ display: inline-block;
+ font-size: 37px;
+ line-height: 1em;
+ margin: 0 0 22px;
+ font-weight: 700;
+ font-style: normal;
+ text-transform: uppercase;
+ letter-spacing: .1em;
+ color: #333;
+
+ @media(max-width: 600px) {
+ font-size: 24px;
+ }
+ }
+
+ h2 {
+ //font-family: minion-pro;
+ font-size: 19px;
+ font-weight: 400;
+ font-style: normal;
+ text-transform: uppercase;
+ letter-spacing: .28em;
+ line-height: 1.7em;
+ color: #333;
+ margin: 0 0 36px;
+ }
+
+ .goto-website-link {
+ text-rendering: optimizeLegibility;
+ white-space: nowrap;
+ //font-family: proxima-nova;
+ font-style: normal;
+ text-transform: uppercase;
+ letter-spacing: 0;
+ text-align: center;
+ padding: 1em 1.44em;
+ text-decoration: none;
+ background-color: transparent;
+ color: #333;
+ border: 2px solid #333;
+ display: inline-block;
+ height: calc(22px + 2em);
+ transition: background-color 170ms ease-in-out, color 170ms ease-in-out;
+
+ span {
+ display: inline-block;
+ vertical-align: top;
+ line-height: 22px;
+ font-size: 14px;
+ font-weight: 500;
+ }
+
+ svg {
+ margin-left: 5px;
+ font-size: 22px;
+ }
+
+ &:hover {
+ background-color: black;
+ color: white;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/src/models/instance.js b/client/src/models/instance.js
index 69ba8ac..0ef42d6 100644
--- a/client/src/models/instance.js
+++ b/client/src/models/instance.js
@@ -7,5 +7,6 @@ export class Instance {
this.title = instance?.title;
this.subtitle = instance?.subtitle;
this.coverPhoto = instance?.coverPhoto ? new Photo(instance.coverPhoto) : null;
+ this.homeLayout = instance?.homeLayout;
}
}
\ No newline at end of file
diff --git a/client/src/public/pages/album.js b/client/src/public/pages/album.js
index 4902b5f..fbb1004 100644
--- a/client/src/public/pages/album.js
+++ b/client/src/public/pages/album.js
@@ -30,7 +30,7 @@ export default function AlbumPage() {
dangerouslySetInnerHTML={{__html: selectedAlbum.description.replace(/\n/g, "
")}}>
}