chore: move assets to dedicated folder
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 652 KiB After Width: | Height: | Size: 652 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 202 KiB |
|
Before Width: | Height: | Size: 2.1 MiB After Width: | Height: | Size: 2.1 MiB |
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 9 KiB After Width: | Height: | Size: 9 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 202 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 1.6 MiB |
|
|
@ -22,7 +22,7 @@ const ErrorDialog = ({ className }) => {
|
||||||
<div className={classnames(className, styles['error-container'])}>
|
<div className={classnames(className, styles['error-container'])}>
|
||||||
<Image
|
<Image
|
||||||
className={styles['error-image']}
|
className={styles['error-image']}
|
||||||
src={require('/images/empty.png')}
|
src={require('/assets/images/empty.png')}
|
||||||
alt={' '}
|
alt={' '}
|
||||||
/>
|
/>
|
||||||
<div className={styles['error-message']}>
|
<div className={styles['error-message']}>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'PlusJakartaSans';
|
font-family: 'PlusJakartaSans';
|
||||||
src: url('/fonts/PlusJakartaSans.ttf') format('truetype');
|
src: url('/assets/fonts/PlusJakartaSans.ttf') format('truetype');
|
||||||
}
|
}
|
||||||
|
|
||||||
:global {
|
:global {
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ const HorizontalNavBar = React.memo(({ className, route, query, title, backButto
|
||||||
<div className={styles['logo-container']}>
|
<div className={styles['logo-container']}>
|
||||||
<Image
|
<Image
|
||||||
className={styles['logo']}
|
className={styles['logo']}
|
||||||
src={require('/images/stremio_symbol.png')}
|
src={require('/assets/images/stremio_symbol.png')}
|
||||||
alt={' '}
|
alt={' '}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -52,12 +52,12 @@ const NavMenuContent = ({ onClick }) => {
|
||||||
className={styles['avatar-container']}
|
className={styles['avatar-container']}
|
||||||
style={{
|
style={{
|
||||||
backgroundImage: profile.auth === null ?
|
backgroundImage: profile.auth === null ?
|
||||||
`url('${require('/images/anonymous.png')}')`
|
`url('${require('/assets/images/anonymous.png')}')`
|
||||||
:
|
:
|
||||||
profile.auth.user.avatar ?
|
profile.auth.user.avatar ?
|
||||||
`url('${profile.auth.user.avatar}')`
|
`url('${profile.auth.user.avatar}')`
|
||||||
:
|
:
|
||||||
`url('${require('/images/default_avatar.png')}')`
|
`url('${require('/assets/images/default_avatar.png')}')`
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<div className={styles['user-info-details']}>
|
<div className={styles['user-info-details']}>
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ const Placeholder = () => {
|
||||||
<div className={styles['image-container']}>
|
<div className={styles['image-container']}>
|
||||||
<Image
|
<Image
|
||||||
className={styles['image']}
|
className={styles['image']}
|
||||||
src={require('/images/calendar_placeholder.png')}
|
src={require('/assets/images/calendar_placeholder.png')}
|
||||||
alt={' '}
|
alt={' '}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -133,14 +133,14 @@ const Discover = ({ urlParams, queryParams }) => {
|
||||||
discover.catalog === null ?
|
discover.catalog === null ?
|
||||||
<DelayedRenderer delay={500}>
|
<DelayedRenderer delay={500}>
|
||||||
<div className={styles['message-container']}>
|
<div className={styles['message-container']}>
|
||||||
<Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />
|
<Image className={styles['image']} src={require('/assets/images/empty.png')} alt={' '} />
|
||||||
<div className={styles['message-label']}>{t('NO_CATALOG_SELECTED')}</div>
|
<div className={styles['message-label']}>{t('NO_CATALOG_SELECTED')}</div>
|
||||||
</div>
|
</div>
|
||||||
</DelayedRenderer>
|
</DelayedRenderer>
|
||||||
:
|
:
|
||||||
discover.catalog.content.type === 'Err' ?
|
discover.catalog.content.type === 'Err' ?
|
||||||
<div className={styles['message-container']}>
|
<div className={styles['message-container']}>
|
||||||
<Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />
|
<Image className={styles['image']} src={require('/assets/images/empty.png')} alt={' '} />
|
||||||
<div className={styles['message-label']}>{discover.catalog.content.content}</div>
|
<div className={styles['message-label']}>{discover.catalog.content.content}</div>
|
||||||
</div>
|
</div>
|
||||||
:
|
:
|
||||||
|
|
|
||||||
|
|
@ -296,7 +296,7 @@ const Intro = ({ queryParams }) => {
|
||||||
<div className={styles['background-container']} />
|
<div className={styles['background-container']} />
|
||||||
<div className={styles['heading-container']}>
|
<div className={styles['heading-container']}>
|
||||||
<div className={styles['logo-container']}>
|
<div className={styles['logo-container']}>
|
||||||
<Image className={styles['logo']} src={require('/images/logo.png')} alt={' '} />
|
<Image className={styles['logo']} src={require('/assets/images/logo.png')} alt={' '} />
|
||||||
</div>
|
</div>
|
||||||
<div className={styles['title-container']}>
|
<div className={styles['title-container']}>
|
||||||
{t('WEBSITE_SLOGAN_NEW_NEW')}
|
{t('WEBSITE_SLOGAN_NEW_NEW')}
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
bottom: -1rem;
|
bottom: -1rem;
|
||||||
left: -1rem;
|
left: -1rem;
|
||||||
right: -1rem;
|
right: -1rem;
|
||||||
background: url('/images/background_1.svg'), url('/images/background_2.svg');
|
background: url('/assets/images/background_1.svg'), url('/assets/images/background_2.svg');
|
||||||
background-color: var(--primary-background-color);
|
background-color: var(--primary-background-color);
|
||||||
background-position: bottom left, top right;
|
background-position: bottom left, top right;
|
||||||
background-size: 53%, 54%;
|
background-size: 53%, 54%;
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ const Library = ({ model, urlParams, queryParams }) => {
|
||||||
<div className={styles['message-container']}>
|
<div className={styles['message-container']}>
|
||||||
<Image
|
<Image
|
||||||
className={styles['image']}
|
className={styles['image']}
|
||||||
src={require('/images/empty.png')}
|
src={require('/assets/images/empty.png')}
|
||||||
alt={' '}
|
alt={' '}
|
||||||
/>
|
/>
|
||||||
<div className={styles['message-label']}>{model === 'library' ? t('LIBRARY_NOT_LOADED') : t('BOARD_CONTINUE_WATCHING_NOT_LOADED')}</div>
|
<div className={styles['message-label']}>{model === 'library' ? t('LIBRARY_NOT_LOADED') : t('BOARD_CONTINUE_WATCHING_NOT_LOADED')}</div>
|
||||||
|
|
@ -96,7 +96,7 @@ const Library = ({ model, urlParams, queryParams }) => {
|
||||||
<div className={styles['message-container']}>
|
<div className={styles['message-container']}>
|
||||||
<Image
|
<Image
|
||||||
className={styles['image']}
|
className={styles['image']}
|
||||||
src={require('/images/empty.png')}
|
src={require('/assets/images/empty.png')}
|
||||||
alt={' '}
|
alt={' '}
|
||||||
/>
|
/>
|
||||||
<div className={styles['message-label']}>{model === 'library' ? t('LIBRARY_EMPTY') : t('BOARD_CONTINUE_WATCHING_EMPTY')}</div>
|
<div className={styles['message-label']}>{model === 'library' ? t('LIBRARY_EMPTY') : t('BOARD_CONTINUE_WATCHING_EMPTY')}</div>
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ const Placeholder = () => {
|
||||||
<div className={styles['image-container']}>
|
<div className={styles['image-container']}>
|
||||||
<Image
|
<Image
|
||||||
className={styles['image']}
|
className={styles['image']}
|
||||||
src={require('/images/library_placeholder.png')}
|
src={require('/assets/images/library_placeholder.png')}
|
||||||
alt={' '}
|
alt={' '}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -130,20 +130,20 @@ const MetaDetails = ({ urlParams, queryParams }) => {
|
||||||
metaPath === null ?
|
metaPath === null ?
|
||||||
<DelayedRenderer delay={500}>
|
<DelayedRenderer delay={500}>
|
||||||
<div className={styles['meta-message-container']}>
|
<div className={styles['meta-message-container']}>
|
||||||
<Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />
|
<Image className={styles['image']} src={require('/assets/images/empty.png')} alt={' '} />
|
||||||
<div className={styles['message-label']}>{t('ERR_NO_META_SELECTED')}</div>
|
<div className={styles['message-label']}>{t('ERR_NO_META_SELECTED')}</div>
|
||||||
</div>
|
</div>
|
||||||
</DelayedRenderer>
|
</DelayedRenderer>
|
||||||
:
|
:
|
||||||
metaDetails.metaItem === null ?
|
metaDetails.metaItem === null ?
|
||||||
<div className={styles['meta-message-container']}>
|
<div className={styles['meta-message-container']}>
|
||||||
<Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />
|
<Image className={styles['image']} src={require('/assets/images/empty.png')} alt={' '} />
|
||||||
<div className={styles['message-label']}>{t('ERR_NO_ADDONS_FOR_META')}</div>
|
<div className={styles['message-label']}>{t('ERR_NO_ADDONS_FOR_META')}</div>
|
||||||
</div>
|
</div>
|
||||||
:
|
:
|
||||||
metaDetails.metaItem.content.type === 'Err' ?
|
metaDetails.metaItem.content.type === 'Err' ?
|
||||||
<div className={styles['meta-message-container']}>
|
<div className={styles['meta-message-container']}>
|
||||||
<Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />
|
<Image className={styles['image']} src={require('/assets/images/empty.png')} alt={' '} />
|
||||||
<div className={styles['message-label']}>{t('ERR_NO_META_FOUND')}</div>
|
<div className={styles['message-label']}>{t('ERR_NO_META_FOUND')}</div>
|
||||||
</div>
|
</div>
|
||||||
:
|
:
|
||||||
|
|
|
||||||
|
|
@ -132,7 +132,7 @@ const StreamsList = ({ className, video, type, onEpisodeSearch, ...props }) => {
|
||||||
<SeasonEpisodePicker className={styles['search']} onSubmit={handleEpisodePicker} />
|
<SeasonEpisodePicker className={styles['search']} onSubmit={handleEpisodePicker} />
|
||||||
: null
|
: null
|
||||||
}
|
}
|
||||||
<Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />
|
<Image className={styles['image']} src={require('/assets/images/empty.png')} alt={' '} />
|
||||||
<div className={styles['label']}>{t('ERR_NO_ADDONS_FOR_STREAMS')}</div>
|
<div className={styles['label']}>{t('ERR_NO_ADDONS_FOR_STREAMS')}</div>
|
||||||
</div>
|
</div>
|
||||||
:
|
:
|
||||||
|
|
@ -148,7 +148,7 @@ const StreamsList = ({ className, video, type, onEpisodeSearch, ...props }) => {
|
||||||
<div className={styles['label']}>{t('UPCOMING')}...</div>
|
<div className={styles['label']}>{t('UPCOMING')}...</div>
|
||||||
: null
|
: null
|
||||||
}
|
}
|
||||||
<Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />
|
<Image className={styles['image']} src={require('/assets/images/empty.png')} alt={' '} />
|
||||||
<div className={styles['label']}>{t('NO_STREAM')}</div>
|
<div className={styles['label']}>{t('NO_STREAM')}</div>
|
||||||
{
|
{
|
||||||
showInstallAddonsButton ?
|
showInstallAddonsButton ?
|
||||||
|
|
|
||||||
|
|
@ -124,7 +124,7 @@ const VideosList = ({ className, metaItem, libraryItem, season, seasonOnSelect,
|
||||||
metaItem.content.type === 'Err' || videosForSeason.length === 0 ?
|
metaItem.content.type === 'Err' || videosForSeason.length === 0 ?
|
||||||
<div className={styles['message-container']}>
|
<div className={styles['message-container']}>
|
||||||
<EpisodePicker className={styles['episode-picker']} onSubmit={onSeasonSearch} />
|
<EpisodePicker className={styles['episode-picker']} onSubmit={onSeasonSearch} />
|
||||||
<Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />
|
<Image className={styles['image']} src={require('/assets/images/empty.png')} alt={' '} />
|
||||||
<div className={styles['label']}>{t('ERR_NO_VIDEOS_FOR_META')}</div>
|
<div className={styles['label']}>{t('ERR_NO_VIDEOS_FOR_META')}</div>
|
||||||
</div>
|
</div>
|
||||||
:
|
:
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ const NotFound = () => {
|
||||||
<div className={styles['not-found-content']}>
|
<div className={styles['not-found-content']}>
|
||||||
<Image
|
<Image
|
||||||
className={styles['not-found-image']}
|
className={styles['not-found-image']}
|
||||||
src={require('/images/empty.png')}
|
src={require('/assets/images/empty.png')}
|
||||||
alt={' '}
|
alt={' '}
|
||||||
/>
|
/>
|
||||||
<div className={styles['not-found-label']}>{t('PAGE_NOT_FOUND')}</div>
|
<div className={styles['not-found-label']}>{t('PAGE_NOT_FOUND')}</div>
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ const BufferingLoader = React.forwardRef(({ className, logo }, ref) => {
|
||||||
className={styles['buffering-loader']}
|
className={styles['buffering-loader']}
|
||||||
src={logo}
|
src={logo}
|
||||||
alt={' '}
|
alt={' '}
|
||||||
fallbackSrc={require('/images/stremio_symbol.png')}
|
fallbackSrc={require('/assets/images/stremio_symbol.png')}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,7 @@ const Search = ({ queryParams }) => {
|
||||||
<div className={styles['message-container']}>
|
<div className={styles['message-container']}>
|
||||||
<Image
|
<Image
|
||||||
className={styles['image']}
|
className={styles['image']}
|
||||||
src={require('/images/empty.png')}
|
src={require('/assets/images/empty.png')}
|
||||||
alt={' '}
|
alt={' '}
|
||||||
/>
|
/>
|
||||||
<div className={styles['message-label']}>{ t.string('STREMIO_TV_SEARCH_NO_ADDONS') }</div>
|
<div className={styles['message-label']}>{ t.string('STREMIO_TV_SEARCH_NO_ADDONS') }</div>
|
||||||
|
|
|
||||||
|
|
@ -14,12 +14,12 @@ const User = ({ profile }: Props) => {
|
||||||
|
|
||||||
const avatar = useMemo(() => (
|
const avatar = useMemo(() => (
|
||||||
!profile.auth ?
|
!profile.auth ?
|
||||||
`url('${require('/images/anonymous.png')}')`
|
`url('${require('/assets/images/anonymous.png')}')`
|
||||||
:
|
:
|
||||||
profile.auth.user.avatar ?
|
profile.auth.user.avatar ?
|
||||||
`url('${profile.auth.user.avatar}')`
|
`url('${profile.auth.user.avatar}')`
|
||||||
:
|
:
|
||||||
`url('${require('/images/default_avatar.png')}')`
|
`url('${require('/assets/images/default_avatar.png')}')`
|
||||||
), [profile.auth]);
|
), [profile.auth]);
|
||||||
|
|
||||||
const onLogout = useCallback(() => {
|
const onLogout = useCallback(() => {
|
||||||
|
|
|
||||||
|
|
@ -228,9 +228,9 @@ module.exports = (env, argv) => ({
|
||||||
}),
|
}),
|
||||||
new CopyWebpackPlugin({
|
new CopyWebpackPlugin({
|
||||||
patterns: [
|
patterns: [
|
||||||
{ from: 'favicons', to: 'favicons' },
|
{ from: 'assets/favicons', to: 'favicons' },
|
||||||
{ from: 'images', to: 'images' },
|
{ from: 'assets/images', to: 'images' },
|
||||||
{ from: 'screenshots/*.webp', to: './' },
|
{ from: 'assets/screenshots/*.webp', to: 'screenshots/[name][ext]' },
|
||||||
{ from: '.well-known', to: '.well-known' },
|
{ from: '.well-known', to: '.well-known' },
|
||||||
{ from: 'manifest.json', to: 'manifest.json' },
|
{ from: 'manifest.json', to: 'manifest.json' },
|
||||||
]
|
]
|
||||||
|
|
|
||||||