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