diff --git a/src/views/studio/l10n.json b/src/views/studio/l10n.json
index 1541aa564..c35e84f35 100644
--- a/src/views/studio/l10n.json
+++ b/src/views/studio/l10n.json
@@ -11,6 +11,11 @@
"studio.projectsHeader": "Projects",
"studio.addProjectsHeader": "Add Projects",
"studio.addProject": "Add",
+
+ "studio.projectsEmptyCanAdd1": "Your studio is looking a little empty.",
+ "studio.projectsEmptyCanAdd2": "Add your first project!",
+ "studio.projectsEmpty1": "This studio has no projects yet.",
+ "studio.projectsEmpty2": "Suggest projects you want to add in the comments!",
"studio.browseProjects": "Browse Projects",
"studio.creatorRole": "Studio Creator",
@@ -24,6 +29,9 @@
"studio.inviteCuratorsHeader": "Invite Curators",
"studio.inviteCurator": "Invite",
"studio.curatorAcceptInvite": "Accept Invite",
+ "studio.curatorsEmptyCanAdd1": "You don’t have curators right now.",
+ "studio.curatorsEmptyCanAdd2": "Add some curators to collaborate with!",
+ "studio.curatorsEmpty1": "This studio has no curators right now.",
"studio.commentsHeader": "Comments",
diff --git a/src/views/studio/studio-curators.jsx b/src/views/studio/studio-curators.jsx
index adffbb989..c2608b021 100644
--- a/src/views/studio/studio-curators.jsx
+++ b/src/views/studio/studio-curators.jsx
@@ -2,6 +2,7 @@ import React, {useEffect} from 'react';
import PropTypes from 'prop-types';
import {connect} from 'react-redux';
import {FormattedMessage} from 'react-intl';
+import classNames from 'classnames';
import {curators} from './lib/redux-modules';
import Debug from './debug.jsx';
@@ -27,22 +28,48 @@ const StudioCurators = ({
data={error}
/>}
- {items.map(item =>
- (
)
+ {items.length === 0 && !loading ? (
+
+
+ {canInviteCurators ? (
+
+ ) : (
+
+ )}
+
+ ) : (
+
+ {items.map(item =>
+ ()
+ )}
+ {moreToLoad &&
+
+
+
+ }
+
)}
-
- {loading ? Loading... : (
- moreToLoad ?
- :
- No more to load
- )}
-
);
};
diff --git a/src/views/studio/studio-managers.jsx b/src/views/studio/studio-managers.jsx
index e934df55d..064e173b5 100644
--- a/src/views/studio/studio-managers.jsx
+++ b/src/views/studio/studio-managers.jsx
@@ -2,6 +2,7 @@ import React, {useEffect} from 'react';
import PropTypes from 'prop-types';
import {connect} from 'react-redux';
import {FormattedMessage} from 'react-intl';
+import classNames from 'classnames';
import {managers} from './lib/redux-modules';
import {loadManagers} from './lib/studio-member-actions';
@@ -30,15 +31,18 @@ const StudioManagers = ({items, error, loading, moreToLoad, onLoadMore}) => {
image={item.profile.images['90x90']}
/>)
)}
-
- {loading ? Loading... : (
- moreToLoad ?
- :
- No more to load
- )}
-
+ {moreToLoad &&
+
+
+
+ }
);
diff --git a/src/views/studio/studio-projects.jsx b/src/views/studio/studio-projects.jsx
index def04e13b..08801c133 100644
--- a/src/views/studio/studio-projects.jsx
+++ b/src/views/studio/studio-projects.jsx
@@ -10,6 +10,7 @@ import Debug from './debug.jsx';
import StudioProjectAdder from './studio-project-adder.jsx';
import StudioProjectTile from './studio-project-tile.jsx';
import {loadProjects} from './lib/studio-project-actions.js';
+import classNames from 'classnames';
const StudioProjects = ({
canAddProjects, canEditOpenToAll, items, error, loading, moreToLoad, onLoadMore
@@ -28,27 +29,64 @@ const StudioProjects = ({
data={error}
/>}
- {items.map(item =>
- (
)
+ {items.length === 0 && !loading ? (
+
+ {canAddProjects ? (
+
+
+
+
+ ) : (
+
+
+
+
+ )}
+
+ ) : (
+
+ {items.map(item =>
+ ()
+ )}
+ {moreToLoad &&
+
+
+
+ }
+
)}
-
- {loading ? Loading... : (
- moreToLoad ?
- :
- No more to load
- )}
-
);
diff --git a/src/views/studio/studio.scss b/src/views/studio/studio.scss
index 523546886..a2a885da8 100644
--- a/src/views/studio/studio.scss
+++ b/src/views/studio/studio.scss
@@ -267,6 +267,22 @@ $radius: 8px;
}
}
+.studio-empty {
+ grid-column: 1 / -1; /* take up all columns */
+ text-align: center;
+
+ .studio-empty-img {
+ margin-top: 45px;
+ margin-bottom: 25px;
+ }
+
+ .studio-empty-msg {
+ font-size: 20px;
+ line-height: 30px;
+ font-style: italic;
+ }
+}
+
/* Modification classes for different interaction states */
.mod-fetching { /* When a field has no content to display yet */
position: relative;
diff --git a/static/images/studios/curators-empty.png b/static/images/studios/curators-empty.png
new file mode 100644
index 000000000..76589073a
Binary files /dev/null and b/static/images/studios/curators-empty.png differ
diff --git a/static/images/studios/projects-empty-can-add.png b/static/images/studios/projects-empty-can-add.png
new file mode 100644
index 000000000..937e2e5e5
Binary files /dev/null and b/static/images/studios/projects-empty-can-add.png differ
diff --git a/static/images/studios/projects-empty.png b/static/images/studios/projects-empty.png
new file mode 100644
index 000000000..d23d9df7b
Binary files /dev/null and b/static/images/studios/projects-empty.png differ