itube-specs 0.0.793 → 0.0.794
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/adv/native-banner.vue +22 -17
- package/components/adv/native-bottom.vue +8 -6
- package/components/adv/native-player.vue +8 -6
- package/components/adv/ntv.vue +4 -3
- package/components/auth/icon.vue +4 -3
- package/components/auth/login.vue +39 -33
- package/components/auth/popup.vue +30 -24
- package/components/auth/recovery.vue +29 -24
- package/components/auth/register.vue +59 -50
- package/components/card/category-mini.vue +6 -4
- package/components/card/category.vue +25 -21
- package/components/card/channel-mini.vue +17 -13
- package/components/card/channel.vue +36 -29
- package/components/card/model-mini.vue +24 -19
- package/components/card/model.vue +43 -33
- package/components/card/playlist-mini.vue +19 -16
- package/components/card/playlist.vue +97 -73
- package/components/card/round.vue +16 -13
- package/components/card/video/dropdown.vue +55 -41
- package/components/card/video/index.vue +99 -81
- package/components/card/video/mini.vue +19 -15
- package/components/card/video/preview.vue +7 -6
- package/components/category/by-letter.vue +4 -3
- package/components/category/group.vue +18 -13
- package/components/category/letter-groups.vue +4 -3
- package/components/category/list.vue +19 -16
- package/components/category/nav.vue +15 -12
- package/components/filter/btn.vue +13 -10
- package/components/filter/chips.vue +8 -7
- package/components/filter/main.vue +27 -23
- package/components/filter/model-field.vue +43 -38
- package/components/filter/model.vue +33 -28
- package/components/filter/page.vue +53 -43
- package/components/filter/popup.vue +75 -60
- package/components/filter/selects.vue +63 -49
- package/components/filter/slider.vue +23 -20
- package/components/filter/videos-chips.vue +3 -2
- package/components/grid/categories.vue +5 -4
- package/components/grid/channels.vue +9 -7
- package/components/grid/models.vue +10 -8
- package/components/grid/playlists.vue +6 -5
- package/components/grid/videos.vue +35 -31
- package/components/info/grid.vue +43 -34
- package/components/info/main.vue +94 -71
- package/components/info/socials.vue +13 -11
- package/components/layout/burger-item.vue +44 -36
- package/components/layout/burger.vue +45 -35
- package/components/layout/cookie.vue +14 -11
- package/components/layout/extra-links.vue +6 -5
- package/components/layout/footer-language.vue +35 -28
- package/components/layout/header-user.vue +66 -51
- package/components/layout/header.vue +55 -42
- package/components/layout/language.vue +67 -54
- package/components/layout/logo.vue +11 -9
- package/components/layout/nav.vue +36 -29
- package/components/layout/skip-link.vue +3 -2
- package/components/player/aside-videos.vue +10 -8
- package/components/player/autoplay.vue +7 -5
- package/components/player/channel.vue +25 -19
- package/components/player/core.vue +11 -10
- package/components/player/follow.vue +17 -13
- package/components/player/info.vue +9 -6
- package/components/player/interface.vue +50 -38
- package/components/player/like.vue +32 -24
- package/components/player/main.vue +12 -10
- package/components/player/playlist.vue +79 -61
- package/components/player/sponsored.vue +20 -16
- package/components/playlist/add.vue +89 -71
- package/components/playlist/delete-video.vue +23 -18
- package/components/playlist/edit.vue +64 -49
- package/components/playlist/input.vue +32 -24
- package/components/playlist/main.vue +21 -18
- package/components/playlist/private-toggle.vue +4 -3
- package/components/profile/delete.vue +7 -6
- package/components/profile/guest.vue +10 -7
- package/components/profile/password.vue +25 -22
- package/components/profile/setup.vue +88 -71
- package/components/report/main.vue +89 -71
- package/components/search/input.vue +37 -31
- package/components/search/item.vue +22 -18
- package/components/search/main.vue +34 -26
- package/components/search/result.vue +72 -57
- package/components/section/categories-island.server.vue +7 -5
- package/components/section/categories.vue +4 -3
- package/components/section/models.vue +4 -3
- package/components/section/nav-links.vue +8 -7
- package/components/section/seo-text.vue +9 -6
- package/components/section/swiper-cards.vue +19 -14
- package/components/section/toolbar.vue +26 -20
- package/components/share/main.vue +32 -26
- package/components/ui/avatar.vue +10 -8
- package/components/ui/breadcrumbs.vue +33 -25
- package/components/ui/btn.vue +13 -12
- package/components/ui/checkbox.vue +21 -17
- package/components/ui/chips.vue +33 -29
- package/components/ui/count.vue +4 -3
- package/components/ui/dropdown.vue +42 -34
- package/components/ui/empty-state.vue +11 -9
- package/components/ui/expand-row.vue +34 -28
- package/components/ui/full-descr.vue +6 -4
- package/components/ui/icon.vue +4 -3
- package/components/ui/img.vue +11 -10
- package/components/ui/input.vue +75 -66
- package/components/ui/label.vue +4 -3
- package/components/ui/link.vue +20 -18
- package/components/ui/notification.vue +22 -17
- package/components/ui/pagination.vue +89 -76
- package/components/ui/popup.vue +39 -30
- package/components/ui/radio.vue +17 -14
- package/components/ui/section-title.vue +20 -15
- package/components/ui/segmented.vue +19 -15
- package/components/ui/select.vue +44 -35
- package/components/ui/slider.vue +16 -13
- package/components/ui/snackbar.vue +7 -5
- package/components/ui/swiper.vue +32 -24
- package/components/ui/toggle.vue +17 -14
- package/components/ui/tooltip.vue +15 -12
- package/components/view/model-videos.vue +71 -57
- package/components/view/models.vue +71 -57
- package/components/view/video.vue +64 -51
- package/components/view/videos.vue +55 -45
- package/package.json +1 -1
|
@@ -1,27 +1,32 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<ClientOnly>
|
|
3
|
-
<div
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
<div
|
|
4
|
+
v-if="spot"
|
|
5
|
+
:class="{
|
|
6
|
+
'ntv': isNtv,
|
|
7
|
+
}"
|
|
8
|
+
class="adv-native-card"
|
|
8
9
|
>
|
|
9
|
-
<div
|
|
10
|
-
|
|
10
|
+
<div
|
|
11
|
+
v-once
|
|
12
|
+
class="adv-native-card__slot"
|
|
11
13
|
>
|
|
12
|
-
<div
|
|
13
|
-
|
|
14
|
+
<div
|
|
15
|
+
data-asg-ins
|
|
16
|
+
:data-spots="spot"
|
|
14
17
|
/>
|
|
15
18
|
</div>
|
|
16
|
-
<div
|
|
17
|
-
|
|
19
|
+
<div
|
|
20
|
+
v-if="!isNtv"
|
|
21
|
+
class="adv-native-card__bottom"
|
|
18
22
|
>
|
|
19
|
-
<UiImg
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
<UiImg
|
|
24
|
+
:alt="t('advertising_banner')"
|
|
25
|
+
class="adv-native-card__channel-logo"
|
|
26
|
+
width="32"
|
|
27
|
+
height="32"
|
|
28
|
+
src="/img/user-uploaded.svg"
|
|
29
|
+
sizes="32px"
|
|
25
30
|
/>
|
|
26
31
|
|
|
27
32
|
<div class="adv-native-card__titles">
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<iframe
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
<iframe
|
|
3
|
+
:src="`/embed/${BannerHelper.getBannerSpot(AdBannerType.NativeBottom, AdSpotType.Primary)}`"
|
|
4
|
+
class="adv-native-bottom"
|
|
5
|
+
title="content"
|
|
5
6
|
/>
|
|
6
|
-
<iframe
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
<iframe
|
|
8
|
+
:src="`/embed/${BannerHelper.getBannerSpot(AdBannerType.NativeBottom, AdSpotType.Secondary)}`"
|
|
9
|
+
class="adv-native-bottom"
|
|
10
|
+
title="content"
|
|
9
11
|
/>
|
|
10
12
|
</template>
|
|
11
13
|
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<iframe
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
<iframe
|
|
3
|
+
:src="`/embed/${BannerHelper.getBannerSpot(AdBannerType.NativePlayer, AdSpotType.Primary)}`"
|
|
4
|
+
class="adv-native-player"
|
|
5
|
+
title="content"
|
|
5
6
|
/>
|
|
6
|
-
<iframe
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
<iframe
|
|
8
|
+
:src="`/embed/${BannerHelper.getBannerSpot(AdBannerType.NativePlayer, AdSpotType.Secondary)}`"
|
|
9
|
+
class="adv-native-player"
|
|
10
|
+
title="content"
|
|
9
11
|
/>
|
|
10
12
|
</template>
|
|
11
13
|
|
package/components/adv/ntv.vue
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<iframe
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
<iframe
|
|
3
|
+
:src="`/embed/${BannerHelper.getBannerSpot(AdBannerType.NTV, AdSpotType.Primary)}?ntv=1`"
|
|
4
|
+
class="adv-ntv"
|
|
5
|
+
title="content"
|
|
5
6
|
/>
|
|
6
7
|
</template>
|
|
7
8
|
|
package/components/auth/icon.vue
CHANGED
|
@@ -1,52 +1,58 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
|
|
2
|
+
<div
|
|
3
|
+
:class="{ _loading: loading }"
|
|
4
|
+
class="auth-login"
|
|
4
5
|
>
|
|
5
6
|
<AuthIcon class="auth-login__icon" />
|
|
6
7
|
|
|
7
|
-
<UiInput
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
<UiInput
|
|
9
|
+
v-model="form.username"
|
|
10
|
+
:label="t('auth.username')"
|
|
11
|
+
:placeholder="t('auth.username')"
|
|
12
|
+
hide-label
|
|
13
|
+
:error="error.username"
|
|
14
|
+
name="login-name"
|
|
15
|
+
enterkeyhint="next"
|
|
16
|
+
@update:error="(val: boolean) => (error.username = val)"
|
|
17
|
+
@enter="passwordRef?.focus()"
|
|
16
18
|
/>
|
|
17
|
-
<UiInput
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
<UiInput
|
|
20
|
+
ref="passwordRef"
|
|
21
|
+
v-model="form.password_hash"
|
|
22
|
+
:label="t('auth.password')"
|
|
23
|
+
:placeholder="t('auth.password')"
|
|
24
|
+
hide-label
|
|
25
|
+
:error="error.password_hash"
|
|
26
|
+
type="password"
|
|
27
|
+
enterkeyhint="go"
|
|
28
|
+
@update:error="(val: boolean) => (error.password_hash = val)"
|
|
29
|
+
@enter="login"
|
|
27
30
|
/>
|
|
28
31
|
|
|
29
32
|
<div class="auth-login__buttons">
|
|
30
|
-
<UiBtn
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
<UiBtn
|
|
34
|
+
:disabled="loading"
|
|
35
|
+
class="auth-login__login"
|
|
36
|
+
wide
|
|
37
|
+
size="l"
|
|
38
|
+
theme="primary"
|
|
39
|
+
@click="login"
|
|
36
40
|
>{{ t("auth.log_in") }}
|
|
37
41
|
</UiBtn>
|
|
38
|
-
<button
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
<button
|
|
43
|
+
class="auth-login__forgot"
|
|
44
|
+
type="button"
|
|
45
|
+
@click="onForgotClick"
|
|
41
46
|
>
|
|
42
47
|
{{ t("auth.forgot") }}
|
|
43
48
|
</button>
|
|
44
49
|
|
|
45
50
|
<p class="auth-login__back">
|
|
46
51
|
{{ t("register_text") }}
|
|
47
|
-
<button
|
|
48
|
-
|
|
49
|
-
|
|
52
|
+
<button
|
|
53
|
+
class="auth-login__back-button"
|
|
54
|
+
type="button"
|
|
55
|
+
@click="onCreateClick"
|
|
50
56
|
>
|
|
51
57
|
{{ t("auth.sign_up") }}
|
|
52
58
|
</button>
|
|
@@ -1,44 +1,50 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
|
|
2
|
+
<div
|
|
3
|
+
v-if="isAuthPopupOpen"
|
|
4
|
+
class="auth-popup__decorate"
|
|
4
5
|
/>
|
|
5
6
|
<transition mode="out-in">
|
|
6
|
-
<UiPopup
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
<UiPopup
|
|
8
|
+
v-if="currentStep === AuthSteps.Registration && isAuthPopupOpen"
|
|
9
|
+
v-model="isAuthPopupOpen"
|
|
10
|
+
transparent-backdrop
|
|
11
|
+
:back="isBackShow"
|
|
12
|
+
class="auth-popup"
|
|
13
|
+
@back="currentStep -= 1"
|
|
12
14
|
>
|
|
13
15
|
<template #title>{{ $t('auth.create_new') }}</template>
|
|
14
|
-
<AuthRegister
|
|
15
|
-
|
|
16
|
+
<AuthRegister
|
|
17
|
+
:additional-text="additionalText"
|
|
18
|
+
@login="onLoginClick"
|
|
16
19
|
/>
|
|
17
20
|
</UiPopup>
|
|
18
21
|
</transition>
|
|
19
22
|
|
|
20
23
|
<transition mode="out-in">
|
|
21
|
-
<UiPopup
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
<UiPopup
|
|
25
|
+
v-if="currentStep === AuthSteps.Login && isAuthPopupOpen"
|
|
26
|
+
v-model="isAuthPopupOpen"
|
|
27
|
+
transparent-backdrop
|
|
28
|
+
:back="isBackShow"
|
|
29
|
+
class="auth-popup"
|
|
30
|
+
@back="currentStep -= 1"
|
|
27
31
|
>
|
|
28
32
|
<template #title>{{ $t('auth.welcome_back') }}</template>
|
|
29
|
-
<AuthLogin
|
|
30
|
-
|
|
33
|
+
<AuthLogin
|
|
34
|
+
@forgot="onRecoveryClick"
|
|
35
|
+
@create="currentStep -= 1"
|
|
31
36
|
/>
|
|
32
37
|
</UiPopup>
|
|
33
38
|
</transition>
|
|
34
39
|
|
|
35
40
|
<transition mode="out-in">
|
|
36
|
-
<UiPopup
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
<UiPopup
|
|
42
|
+
v-if="currentStep === AuthSteps.Recovery && isAuthPopupOpen"
|
|
43
|
+
v-model="isAuthPopupOpen"
|
|
44
|
+
transparent-backdrop
|
|
45
|
+
:back="isBackShow"
|
|
46
|
+
class="auth-popup"
|
|
47
|
+
@back="currentStep -= 1"
|
|
42
48
|
>
|
|
43
49
|
<template #title>{{ $t('auth.recovery_title')}}</template>
|
|
44
50
|
<AuthRecovery @login="onLoginClick"/>
|
|
@@ -1,37 +1,42 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
|
|
2
|
+
<div
|
|
3
|
+
:class="{'_loading': loading}"
|
|
4
|
+
class="auth-recovery"
|
|
4
5
|
>
|
|
5
6
|
|
|
6
|
-
<AuthIcon
|
|
7
|
-
|
|
7
|
+
<AuthIcon
|
|
8
|
+
class="auth-recovery__icon"
|
|
9
|
+
icon="envelope"
|
|
8
10
|
/>
|
|
9
11
|
|
|
10
12
|
<p class="auth-recovery__text">{{ t('auth.recovery_text') }}</p>
|
|
11
|
-
<UiInput
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
<UiInput
|
|
14
|
+
v-model="form.email"
|
|
15
|
+
:label="$t('email')"
|
|
16
|
+
:placeholder="$t('email')"
|
|
17
|
+
hide-label
|
|
18
|
+
:error="error.email"
|
|
19
|
+
type="email"
|
|
20
|
+
inputmode="email"
|
|
21
|
+
enterkeyhint="send"
|
|
22
|
+
autocomplete="email"
|
|
23
|
+
@update:error="(val: boolean) => error.email = val"
|
|
24
|
+
@enter="submit"
|
|
22
25
|
/>
|
|
23
26
|
|
|
24
|
-
<UiBtn
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
<UiBtn
|
|
28
|
+
:disabled="loading"
|
|
29
|
+
class="auth-recovery__button"
|
|
30
|
+
wide
|
|
31
|
+
size="l"
|
|
32
|
+
theme="primary"
|
|
33
|
+
@click="submit"
|
|
30
34
|
>{{ t('auth.get_recovery') }}
|
|
31
35
|
</UiBtn>
|
|
32
|
-
<button
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
<button
|
|
37
|
+
class="auth-recovery__login"
|
|
38
|
+
type="button"
|
|
39
|
+
@click="onLoginClick"
|
|
35
40
|
>{{ t('auth.back_to_login') }}
|
|
36
41
|
</button>
|
|
37
42
|
</div>
|
|
@@ -1,62 +1,69 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<ClientOnly>
|
|
3
|
-
<div
|
|
4
|
-
|
|
3
|
+
<div
|
|
4
|
+
:class="{'_loading': loading}"
|
|
5
|
+
class="auth-register"
|
|
5
6
|
>
|
|
6
7
|
<AuthIcon class="auth-register__icon" />
|
|
7
|
-
<p
|
|
8
|
-
|
|
8
|
+
<p
|
|
9
|
+
v-if="additionalText"
|
|
10
|
+
class="auth-register__text"
|
|
9
11
|
>{{ t(additionalText) }}
|
|
10
12
|
</p>
|
|
11
|
-
<UiInput
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
<UiInput
|
|
14
|
+
v-model="form.email"
|
|
15
|
+
:placeholder="t('email')"
|
|
16
|
+
:label="t('email')"
|
|
17
|
+
hide-label
|
|
18
|
+
:error="error.email"
|
|
19
|
+
type="email"
|
|
20
|
+
inputmode="email"
|
|
21
|
+
enterkeyhint="next"
|
|
22
|
+
autocomplete="email"
|
|
23
|
+
@update:error="(val: boolean) => error.email = val"
|
|
24
|
+
@enter="usernameRef?.focus()"
|
|
22
25
|
/>
|
|
23
|
-
<UiInput
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
<UiInput
|
|
27
|
+
ref="usernameRef"
|
|
28
|
+
v-model="form.username"
|
|
29
|
+
:label="t('login')"
|
|
30
|
+
:placeholder="t('login')"
|
|
31
|
+
hide-label
|
|
32
|
+
:error="error.username"
|
|
33
|
+
name="login-name"
|
|
34
|
+
enterkeyhint="next"
|
|
35
|
+
@update:error="(val: boolean) => error.username = val"
|
|
36
|
+
@enter="passwordRef?.focus()"
|
|
33
37
|
/>
|
|
34
|
-
<UiInput
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
<UiInput
|
|
39
|
+
ref="passwordRef"
|
|
40
|
+
v-model="form.password_hash"
|
|
41
|
+
:label="t('auth.password')"
|
|
42
|
+
:placeholder="t('auth.password')"
|
|
43
|
+
hide-label
|
|
44
|
+
:error="error.password_hash"
|
|
45
|
+
type="password"
|
|
46
|
+
enterkeyhint="send"
|
|
47
|
+
autocomplete="new-password"
|
|
48
|
+
@update:error="(val: boolean) => error.password_hash = val"
|
|
49
|
+
@enter="submit"
|
|
45
50
|
/>
|
|
46
51
|
|
|
47
52
|
<div class="auth-register__buttons">
|
|
48
|
-
<UiBtn
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
<UiBtn
|
|
54
|
+
:disabled="loading"
|
|
55
|
+
wide
|
|
56
|
+
size="l"
|
|
57
|
+
theme="primary"
|
|
58
|
+
@click="submit"
|
|
53
59
|
>{{ t('auth.sign_up') }}
|
|
54
60
|
</UiBtn>
|
|
55
61
|
<p class="auth-register__login">
|
|
56
62
|
{{ t('login_text') }}
|
|
57
|
-
<button
|
|
58
|
-
|
|
59
|
-
|
|
63
|
+
<button
|
|
64
|
+
class="auth-register__login-button"
|
|
65
|
+
type="button"
|
|
66
|
+
@click="onLoginClick"
|
|
60
67
|
>
|
|
61
68
|
{{ t('auth.log_in') }}
|
|
62
69
|
</button>
|
|
@@ -64,15 +71,17 @@
|
|
|
64
71
|
</div>
|
|
65
72
|
|
|
66
73
|
<p class="auth-register__agreement">{{ t('auth.agree_begin') }}
|
|
67
|
-
<NuxtLink
|
|
68
|
-
|
|
69
|
-
|
|
74
|
+
<NuxtLink
|
|
75
|
+
class="auth-register__agreement-link"
|
|
76
|
+
to="/terms"
|
|
77
|
+
target="_blank"
|
|
70
78
|
>{{ t('auth.agree_terms') }}
|
|
71
79
|
</NuxtLink>
|
|
72
80
|
{{ t('auth.agree_and') }}
|
|
73
|
-
<NuxtLink
|
|
74
|
-
|
|
75
|
-
|
|
81
|
+
<NuxtLink
|
|
82
|
+
class="auth-register__agreement-link"
|
|
83
|
+
to="/policy"
|
|
84
|
+
target="_blank"
|
|
76
85
|
>{{ t('auth.agree_policy') }}
|
|
77
86
|
</NuxtLink>
|
|
78
87
|
</p>
|
|
@@ -5,13 +5,15 @@
|
|
|
5
5
|
<p class="card-category-mini__name">{{ card.title }}</p>
|
|
6
6
|
<div class="card-category-mini__info">
|
|
7
7
|
<span class="card-category-mini__detail">
|
|
8
|
-
<UiIcon
|
|
9
|
-
|
|
8
|
+
<UiIcon
|
|
9
|
+
name="video-camera"
|
|
10
|
+
size="14"
|
|
10
11
|
/>
|
|
11
12
|
{{ $n(card.videosCount, 'compact') }}
|
|
12
13
|
</span>
|
|
13
|
-
<span
|
|
14
|
-
|
|
14
|
+
<span
|
|
15
|
+
v-if="$features.FeatureFollowEnabled"
|
|
16
|
+
class="card-category-mini__detail"
|
|
15
17
|
>{{ $n(8400, 'compact') }}</span>
|
|
16
18
|
</div>
|
|
17
19
|
</div>
|
|
@@ -1,35 +1,39 @@
|
|
|
1
1
|
<!-- Карточка категории: обложка, название с флагом, счётчик видео -->
|
|
2
2
|
<template>
|
|
3
|
-
<NuxtLink
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
<NuxtLink
|
|
4
|
+
:title="card.title"
|
|
5
|
+
:to="localePath(`/categories/${convertString().toSlug(slug)}`)"
|
|
6
|
+
class="card-category"
|
|
6
7
|
>
|
|
7
|
-
<UiImg
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
<UiImg
|
|
9
|
+
:alt="card.title"
|
|
10
|
+
:src="currentImage"
|
|
11
|
+
:loading="priority ? 'eager' : 'lazy'"
|
|
12
|
+
:priority="priority"
|
|
13
|
+
class="card-category__img"
|
|
14
|
+
sizes="320px"
|
|
15
|
+
width="320"
|
|
16
|
+
height="180"
|
|
17
|
+
@error="onImageError"
|
|
16
18
|
/>
|
|
17
19
|
<div class="card-category__wrapper">
|
|
18
20
|
<div class="card-category__wrapper-header">
|
|
19
21
|
<span class="card-category__title">
|
|
20
22
|
{{ card.title }}
|
|
21
|
-
<img
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
<img
|
|
24
|
+
v-if="card.icon"
|
|
25
|
+
:src="`/icons/flags/${card.icon}.svg`"
|
|
26
|
+
:alt="card.icon"
|
|
27
|
+
class="card-category__icon"
|
|
28
|
+
width="17"
|
|
29
|
+
height="17"
|
|
30
|
+
loading="lazy"
|
|
28
31
|
>
|
|
29
32
|
</span>
|
|
30
33
|
<span class="card-category__count">
|
|
31
|
-
<UiIcon
|
|
32
|
-
|
|
34
|
+
<UiIcon
|
|
35
|
+
name="video-camera"
|
|
36
|
+
size="14"
|
|
33
37
|
/>
|
|
34
38
|
{{ $n(card.videosCount, 'compact') }}
|
|
35
39
|
</span>
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
<!-- Мини-карточка канала: логотип слева, название, счётчик видео (горизонтальная) -->
|
|
2
2
|
<template>
|
|
3
3
|
<div class="card-channel-mini">
|
|
4
|
-
<img
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
<img
|
|
5
|
+
v-if="card.avatarUrl && !imageError"
|
|
6
|
+
:src="card.avatarUrl"
|
|
7
|
+
:alt="card.name"
|
|
8
|
+
class="card-channel-mini__logo"
|
|
9
|
+
width="64"
|
|
10
|
+
height="64"
|
|
11
|
+
@error="imageError = true"
|
|
11
12
|
>
|
|
12
|
-
<span
|
|
13
|
-
|
|
13
|
+
<span
|
|
14
|
+
v-else
|
|
15
|
+
class="card-channel-mini__logo --placeholder"
|
|
14
16
|
>
|
|
15
17
|
{{ card.name.charAt(0) }}
|
|
16
18
|
</span>
|
|
@@ -18,13 +20,15 @@
|
|
|
18
20
|
<p class="card-channel-mini__name">{{ card.name }}</p>
|
|
19
21
|
<div class="card-channel-mini__info">
|
|
20
22
|
<span class="card-channel-mini__detail">
|
|
21
|
-
<UiIcon
|
|
22
|
-
|
|
23
|
+
<UiIcon
|
|
24
|
+
name="video-camera"
|
|
25
|
+
size="14"
|
|
23
26
|
/>
|
|
24
27
|
{{ card.videosCount }}
|
|
25
28
|
</span>
|
|
26
|
-
<span
|
|
27
|
-
|
|
29
|
+
<span
|
|
30
|
+
v-if="$features.FeatureFollowEnabled"
|
|
31
|
+
class="card-channel-mini__detail"
|
|
28
32
|
>{{ $n(8400, 'compact') }}</span>
|
|
29
33
|
</div>
|
|
30
34
|
</div>
|