Skip to content

Commit a89ae9d

Browse files
feat(ui): add links to studio sessions/discord
1 parent ad1fcb3 commit a89ae9d

File tree

3 files changed

+42
-3
lines changed

3 files changed

+42
-3
lines changed

invokeai/frontend/web/public/locales/en.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2130,6 +2130,8 @@
21302130
"gettingStarted": "Getting Started",
21312131
"controlCanvas": "Control Canvas",
21322132
"watchOnYoutube": "Watch on YouTube",
2133+
"studioSessionsDesc1": "Check out the <StudioSessionsPlaylistLink /> for Invoke deep dives.",
2134+
"studioSessionsDesc2": "Join our <DiscordLink /> to participate in the live sessions and ask questions. Sessions are uploaded to the playlist the following week.",
21332135
"videos": {
21342136
"creatingYourFirstImage": {
21352137
"title": "Creating Your First Image",

invokeai/frontend/web/src/features/system/components/VideosModal/VideosModal.tsx

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {
2+
ExternalLink,
23
Flex,
34
Modal,
45
ModalBody,
@@ -7,16 +8,42 @@ import {
78
ModalFooter,
89
ModalHeader,
910
ModalOverlay,
11+
Text,
1012
} from '@invoke-ai/ui-library';
1113
import ScrollableContent from 'common/components/OverlayScrollbars/ScrollableContent';
1214
import { buildUseDisclosure } from 'common/hooks/useBoolean';
13-
import { controlCanvasVideos, gettingStartedVideos } from 'features/system/components/VideosModal/data';
15+
import {
16+
controlCanvasVideos,
17+
gettingStartedVideos,
18+
studioSessionsPlaylistLink,
19+
} from 'features/system/components/VideosModal/data';
1420
import { VideoCardList } from 'features/system/components/VideosModal/VideoCardList';
21+
import { discordLink } from 'features/system/store/constants';
1522
import { memo } from 'react';
16-
import { useTranslation } from 'react-i18next';
23+
import { Trans, useTranslation } from 'react-i18next';
1724

1825
export const [useVideosModal] = buildUseDisclosure(false);
1926

27+
const StudioSessionsPlaylistLink = () => {
28+
return (
29+
<ExternalLink
30+
fontWeight="semibold"
31+
href={studioSessionsPlaylistLink}
32+
display="inline-flex"
33+
label="Studio Sessions playlist"
34+
/>
35+
);
36+
};
37+
38+
const DiscordLink = () => {
39+
return <ExternalLink fontWeight="semibold" href={discordLink} display="inline-flex" label="Discord" />;
40+
};
41+
42+
const components = {
43+
StudioSessionsPlaylistLink: <StudioSessionsPlaylistLink />,
44+
DiscordLink: <DiscordLink />,
45+
};
46+
2047
export const VideosModal = memo(() => {
2148
const { t } = useTranslation();
2249
const videosModal = useVideosModal();
@@ -27,9 +54,17 @@ export const VideosModal = memo(() => {
2754
<ModalContent maxH="80vh" h="80vh">
2855
<ModalHeader bg="none">{t('supportVideos.supportVideos')}</ModalHeader>
2956
<ModalCloseButton />
30-
<ModalBody display="flex" flexDir="column" gap={4}>
57+
<ModalBody>
3158
<ScrollableContent>
3259
<Flex flexDir="column" gap={4}>
60+
<Flex flexDir="column" gap={2} pb={2}>
61+
<Text fontSize="md">
62+
<Trans i18nKey="supportVideos.studioSessionsDesc1" components={components} />
63+
</Text>
64+
<Text fontSize="md">
65+
<Trans i18nKey="supportVideos.studioSessionsDesc2" components={components} />
66+
</Text>
67+
</Flex>
3368
<VideoCardList category={t('supportVideos.gettingStarted')} videos={gettingStartedVideos} />
3469
<VideoCardList category={t('supportVideos.controlCanvas')} videos={controlCanvasVideos} />
3570
</Flex>

invokeai/frontend/web/src/features/system/components/VideosModal/data.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,5 @@ export const controlCanvasVideos: VideoData[] = [
8484
length: { minutes: 0, seconds: 48 },
8585
},
8686
];
87+
88+
export const studioSessionsPlaylistLink = 'https://www.youtube.com/playlist?list=PLvWK1Kc8iXGq_8tWZqnwDVaf9uhlDC09U';

0 commit comments

Comments
 (0)