update cards

This commit is contained in:
2026-05-14 18:05:19 +03:00
parent 7815ce9587
commit 7c120c4f0b
29 changed files with 181 additions and 126 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

View File

@@ -0,0 +1,11 @@
<!-- Place these tags in your HTML head section -->
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png">
<link rel="icon" type="image/png" sizes="64x64" href="/favicon-64x64.png">
<link rel="icon" type="image/png" sizes="128x128" href="/favicon-128x128.png">
<link rel="icon" type="image/png" sizes="256x256" href="/favicon-256x256.png">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="apple-touch-icon" sizes="192x192" href="/android-chrome-192x192.png">
<link rel="manifest" href="/site.webmanifest">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -1,18 +1,17 @@
{ {
"name": "MyWebSite", "name": "Your Website",
"short_name": "MySite", "short_name": "Website",
"description": "Description of your website",
"icons": [ "icons": [
{ {
"src": "/web-app-manifest-192x192.png", "src": "/android-chrome-192x192.png",
"sizes": "192x192", "sizes": "192x192",
"type": "image/png", "type": "image/png"
"purpose": "maskable"
}, },
{ {
"src": "/web-app-manifest-512x512.png", "src": "/android-chrome-512x512.png",
"sizes": "512x512", "sizes": "512x512",
"type": "image/png", "type": "image/png"
"purpose": "maskable"
} }
], ],
"theme_color": "#ffffff", "theme_color": "#ffffff",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

View File

@@ -5,7 +5,7 @@
'is-animated': animated, 'is-animated': animated,
'hide-bg': !withBackground 'hide-bg': !withBackground
}" }"
:style="{ color: iconColor, transform: 'scale(1.08)', height: '1cap' }" :style="iconStyle"
/> />
<div <div
@@ -20,26 +20,41 @@
</template> </template>
<script setup> <script setup>
import { computed } from 'vue'
import { getCssVar } from 'quasar'
import LogoIcon from 'components/BaseLogoSvg.vue' import LogoIcon from 'components/BaseLogoSvg.vue'
defineProps({ const props = defineProps({
textColor: { textColor: {
type: String, type: String,
default: 'primary' default: 'primary'
}, },
iconColor: { iconColor: {
type: String, type: String,
default: 'white' default: 'primary'
}, },
withBackground: { withBackground: {
type: Boolean, type: Boolean,
default: true default: false
}, },
animated: { animated: {
type: Boolean, type: Boolean,
default: true default: true
} }
}) })
const iconStyle = computed(() => {
const color = getCssVar(props.iconColor) || props.iconColor
return {
color: color,
transform: 'scale(1.08)',
height: '1cap'
}
})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.hide-bg :deep(.logo-bg) {
display: none;
}
</style> </style>

View File

@@ -1,79 +1,85 @@
<template> <template>
<div class="w100 flex justify-between text-caption q-pa-md q-gutter-y-md text-grey-9"> <div>
<div class="flex column col-12 col-sm"> <div class="w100 flex items-center justify-between q-px-md">
<div class="q-pl-sm"> <div id="contact-block" class="flex column items-start q-py-sm">
<base-logo <base-logo
withBackground animated
animated class="text-h6"
class="text-h4" />
/>
<div class="flex items-center no-wrap"> <div class="flex items-center no-wrap">
<q-icon name="mdi-map-marker-outline" color="brand" class="q-pr-sm"/> <q-icon name="mdi-map-marker-outline" color="brand" class="q-pr-xs"/>
<span>{{ $t('footer__contacts_location') }}</span> <span>{{ $t('footer__contacts_location') }}</span>
</div>
<div class="flex items-center no-wrap">
<q-icon name="mdi-phone-outline" color="brand" class="q-pr-sm" />
<span>+7 (916) 439-04-25</span>
</div>
<div class="flex items-center no-wrap">
<q-icon name="mdi-email-outline" color="brand" class="q-pr-sm"/>
<a
href="mailto:info@tgcrew.ru"
style="text-decoration: none; color: inherit"
>
info@tgcrew.ru
</a>
</div>
<br>
<div class="">
{{ $t('footer__contacts_ogrnip') + ' ' }}
<span class="text-no-wrap">
318774600262084
</span>
</div>
<div class="">
{{ $t('footer__contacts_inn') + ' ' }}
<span class="text-no-wrap">
366316608346
</span>
</div>
<div class="">
{{ $t('footer__contacts_pdn') + ' ' }}
<span class="text-no-wrap">
77-25-471585
</span>
</div>
</div>
</div> </div>
<div class="flex column col-12 col-sm"> <div class="flex items-center no-wrap">
<div class="q-pl-sm"> <q-icon name="mdi-phone-outline" color="brand" class="q-pr-xs"/>
<span class="text-body1 text-bold"> <span>+7 (916) 439-04-25</span>
{{ $t('footer__docs') }} </div>
</span>
<div <div class="flex items-center no-wrap">
v-for="item in docs" <q-icon name="mdi-email-outline" color="brand" class="q-pr-xs"/>
:key="item.id" <a
class="text-caption" href="mailto:info@tgcrew.ru"
style="text-decoration: none; color: inherit"
> >
<span info@tgcrew.ru
@click="router.push({ name: item.route })" </a>
class="cursor-pointer"
style="text-decoration: underline; color: inherit"
>
{{ $t(item.translationKey) }}
</span>
</div>
</div> </div>
</div> </div>
<div class="flex column col-12 col-sm"> <div id="doc-block" class="text-grey q-py-sm">
<div class="text-grey q-pl-sm"> <div
{{ $t('footer__description_user_data') }} v-for="item in docs"
:key="item.id"
class="text-caption"
>
<span
@click="router.push({ name: item.route })"
class="cursor-pointer"
style="color: inherit"
>
{{ $t(item.translationKey) }}
</span>
</div> </div>
</div> </div>
</div> </div>
<q-separator/>
<div class="column q-py-sm q-px-md" id="law-block">
<div class="flex justify-center text-caption text-grey">
<span class="q-pr-md">
<span class="text-no-wrap">
{{ $t('footer__contacts_ip') }}
</span>
</span>
<span class="q-pr-md">
{{ $t('footer__contacts_ogrnip') + ' ' }}
<span class="text-no-wrap">
318774600262084
</span>
</span>
<span class="q-pr-md">
{{ $t('footer__contacts_inn') + ' ' }}
<span class="text-no-wrap">
366316608346
</span>
</span>
<span class="q-pr-md">
{{ $t('footer__contacts_pdn') + ' ' }}
<span class="text-no-wrap">
77-25-471585
</span>
</span>
</div>
<div class="text-grey-5 text-center text-caption">
{{ $t('footer__description_user_data') }}
</div>
</div>
</div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">

View File

@@ -18,9 +18,9 @@
object-position: center center; object-position: center center;
width: 100%; width: 100%;
height: 100%; height: 100%;
filter: blur(2px) brightness(0.75); filter: blur(2px) brightness(0.9);
" "
@canplay="$event.target.playbackRate = 0.5" @canplay="$event.target.playbackRate = 0.4"
/> />
<div <div
class="column items-center no-wrap" class="column items-center no-wrap"
@@ -33,8 +33,9 @@
</div> </div>
<div <div
class="text-white text-center q-py-lg center-block" class="text-white text-center q-py-lg center-block text-bold"
:class="$q.screen.lt.sm ? 'text-h4' : 'text-h3'" :class="$q.screen.lt.sm ? 'text-h4' : 'text-h3'"
style="line-height: 1.5em;"
> >
{{ $t('banner__slogan_body') }} {{ $t('banner__slogan_body') }}
<span class="text-no-wrap" color="primary"> <span class="text-no-wrap" color="primary">
@@ -62,7 +63,7 @@
<q-icon name="keyboard_arrow_right"/> <q-icon name="keyboard_arrow_right"/>
</div> </div>
</q-btn> </q-btn>
<div class="text-white q-pt-sm edge-block justify-start text-grey-2"> <div class="text-white q-pt-sm edge-block justify-start text-grey-4">
{{ $t('banner__main_btn_description')}} {{ $t('banner__main_btn_description')}}
</div> </div>
</div> </div>

View File

@@ -12,12 +12,23 @@
<div class="relative-position w60 q-pt-md"> <div class="relative-position w60 q-pt-md">
<div style="height: 60vh; position: relative;"> <div style="height: 60vh; position: relative;">
<iframe <iframe
v-if="item.name === 'intro'"
:key="item.name" :key="item.name"
:src="item.url" :src="item.url"
allow="autoplay; fullscreen; picture-in-picture; encrypted-media; gyroscope; accelerometer; clipboard-write; screen-wake-lock; fullscreen;" allow="autoplay; fullscreen; picture-in-picture; encrypted-media; gyroscope; accelerometer; clipboard-write; screen-wake-lock; fullscreen;"
frameborder="0" frameborder="0"
style="position: absolute; width: 100%; height: 100%; top: 0; left: 0;" style="position: absolute; width: 100%; height: 100%; top: 0; left: 0;"
/> />
<div v-else class="relative-position fit">
<q-skeleton
type="rect"
class="fit"
style="border-radius: var(--base-radius);"
/>
<div class="absolute-center text-h4 text-uppercase text-grey-8">
{{ $t('how_it_works__coming_soon') }}
</div>
</div>
</div> </div>
</div> </div>
</template> </template>

View File

@@ -84,10 +84,10 @@
] ]
const tariffs = [ const tariffs = [
{ id: 1, name: 'TEST', price: null, price_rub: null, chatsQty: 5 }, { id: 1, name: 'TEST', price: 0, price_rub: 0, chatsQty: 5 },
{ id: 2, name: 'START', price: 1000, price_rub: 2000, chatsQty: 15 }, { id: 2, name: 'START', price: 1000, price_rub: 2000, chatsQty: 15 },
{ id: 3, name: 'PRO', price: 5000, price_rub: 10000, chatsQty: 40 }, { id: 3, name: 'PRO', price: 5000, price_rub: 10000, chatsQty: 40 },
{ id: 4, name: 'VIP', price: 12000, price_rub: 24000, chatsQty: null } { id: 4, name: 'VIP', price: 12000, price_rub: null, chatsQty: null }
] ]
</script> </script>

View File

@@ -1,5 +1,7 @@
<template> <template>
<div class="flex column items-center bg-white rounded-card q-pa-md"> <div
class="flex column items-center bg-white rounded-card q-pa-md crew-card fit"
>
<div class="text-h5 text-primary text-bold"> <div class="text-h5 text-primary text-bold">
{{ name }} {{ name }}
</div> </div>
@@ -23,9 +25,23 @@
</div> </div>
<span class="text-caption">{{ $t('price__per_month') }}</span> <span class="text-caption">{{ $t('price__per_month') }}</span>
</div> </div>
<div v-else class="text-bold text-h5"> <div v-else-if="price === 0" class="text-bold text-h5">
{{ $t('price__free_tax') }} {{ $t('price__free_tax') }}
</div> </div>
<div v-else>
<div class="text-center q-pt-md">
<a
href="mailto:info@tgcrew.ru"
style="text-decoration: none; color: inherit"
>
{{ $t('price__request') }}<br>
info@tgcrew.ru
</a>
</div>
</div>
</div> </div>
<div class="flex items-center q-pt-md" style="min-height: 50px;"> <div class="flex items-center q-pt-md" style="min-height: 50px;">

View File

@@ -3,7 +3,8 @@
<div <div
class="fit row" class="fit row"
> >
<div class="col-sm-6 col-xs-12 q-pa-lg" <div
class="flex col-sm-6 col-xs-12 q-pa-lg"
v-for="(item, idx) in problems" v-for="(item, idx) in problems"
:key="idx" :key="idx"
> >
@@ -11,6 +12,7 @@
:icon="item.icon" :icon="item.icon"
:title="item.title" :title="item.title"
:description="item.description" :description="item.description"
class="bg-red"
/> />
</div> </div>
</div> </div>

View File

@@ -1,13 +1,17 @@
<template> <template>
<div class="column items-center bg-white fit q-pa-lg rounded-card fit"> <div
class="crew-card column items-center q-pa-xl cursor-pointer fit"
>
<q-icon <q-icon
:name="icon" :name="icon"
size="xl" size="xl"
color="primary" color="primary"
/> />
<div class="text-bold text-h5 text-center q-pt-md"> <div class="text-bold text-h5 text-center q-pt-md">
{{ $t(title ?? '') }} {{ $t(title ?? '') }}
</div> </div>
<div class="text-grey text-body1 text-center q-pt-sm text-wrap"> <div class="text-grey text-body1 text-center q-pt-sm text-wrap">
{{ $t(description ?? '') }} {{ $t(description ?? '') }}
</div> </div>
@@ -15,12 +19,14 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
defineProps({ defineProps({
icon: String, icon: String,
title: String, title: String,
description: String description: String
}) })
</script> </script>
<style scoped> <style scoped lang="scss">
</style> </style>

View File

@@ -107,6 +107,24 @@ body, html, #q-app {
border-radius: var(--base-radius); border-radius: var(--base-radius);
} }
.crew-card {
background: linear-gradient(
135deg,
rgba(255, 255, 255, 0.9) 0%,
rgba(255, 255, 255, 0.5) 100%
) !important;
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-radius: 24px;
border: 1px solid rgba(255, 255, 255, 0.3);
transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
&.is-hovered {
transform: translateY(-1px);
background: white;
}
}
@font-face { @font-face {
font-family: 'myFont'; font-family: 'myFont';
src: url(./fonts/Inter-Regular.woff2); src: url(./fonts/Inter-Regular.woff2);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -23,6 +23,7 @@
<base-logo <base-logo
ref="logo" ref="logo"
class="text-h5" class="text-h5"
:icon-color="isHeroScroll ? 'white' : 'primary'"
:text-color="isHeroScroll ? 'white' : 'primary'" :text-color="isHeroScroll ? 'white' : 'primary'"
/> />
<div <div