itube-specs 0.0.1013 → 0.0.1018
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/assets/scss/themes/dark/_theme.scss +14 -3
- package/assets/scss/themes/light/_theme.scss +19 -8
- package/components/layout/burger.vue +5 -5
- package/components/layout/footer-language.vue +3 -2
- package/components/layout/footer.vue +3 -9
- package/components/layout/header.vue +21 -23
- package/components/layout/niche-list.vue +90 -0
- package/components/layout/niche.vue +110 -93
- package/package.json +1 -1
- package/public/img/model-placeholder/gay-light-portrait.avif +0 -0
- package/public/img/model-placeholder/gay-light-portrait.webp +0 -0
- package/public/img/model-placeholder/gay-light-square.avif +0 -0
- package/public/img/model-placeholder/gay-light-square.webp +0 -0
- package/public/img/model-placeholder/shemale-light-portrait.avif +0 -0
- package/public/img/model-placeholder/shemale-light-portrait.webp +0 -0
- package/public/img/model-placeholder/shemale-light-square.avif +0 -0
- package/public/img/model-placeholder/shemale-light-square.webp +0 -0
- package/public/img/model-placeholder/straight-light-portrait.avif +0 -0
- package/public/img/model-placeholder/straight-light-portrait.webp +0 -0
- package/public/img/model-placeholder/straight-light-square.avif +0 -0
- package/public/img/model-placeholder/straight-light-square.webp +0 -0
|
@@ -389,16 +389,25 @@ $language-description: $color-zinc-500;
|
|
|
389
389
|
$language-empty-text: $color-zinc-300;
|
|
390
390
|
|
|
391
391
|
// ─── Niche ───
|
|
392
|
+
$niche-trigger-bg: $color-zinc-800-50;
|
|
393
|
+
$niche-trigger-bg--hover: $color-zinc-700;
|
|
392
394
|
$niche-trigger-text: $color-zinc-400;
|
|
393
|
-
$niche-
|
|
394
|
-
$niche-
|
|
395
|
-
$niche-value-text: $color-white;
|
|
395
|
+
$niche-trigger-text--hover: $color-white;
|
|
396
|
+
$niche-value-text: $color-zinc-200;
|
|
396
397
|
$niche-menu-bg: $color-night;
|
|
397
398
|
$niche-menu-border: $color-zinc-800;
|
|
399
|
+
$niche-menu-shadow: 0 20px 25px -5px #{$mono-black-10}, 0 8px 10px -6px #{$mono-black-10};
|
|
398
400
|
$niche-item-text: $color-zinc-300;
|
|
399
401
|
$niche-item-bg--hover: $color-zinc-800;
|
|
402
|
+
$niche-item-icon: $color-zinc-400;
|
|
403
|
+
$niche-item-check: $color-white;
|
|
400
404
|
$niche-item-text--current: $color-white;
|
|
401
405
|
$niche-item-bg--current: $color-zinc-700;
|
|
406
|
+
$niche-switch-bg: $color-zinc-800;
|
|
407
|
+
$niche-switch-text: $color-zinc-400;
|
|
408
|
+
$niche-switch-text--hover: $color-white;
|
|
409
|
+
$niche-switch-bg--checked: $color-zinc-700;
|
|
410
|
+
$niche-switch-text--checked: $color-white;
|
|
402
411
|
|
|
403
412
|
// ─── Footer language ───
|
|
404
413
|
$footer-language-bg: $color-zinc-800-50;
|
|
@@ -438,6 +447,8 @@ $header-burger-icon: $color-zinc-200;
|
|
|
438
447
|
$header-user-icon: $color-zinc-500;
|
|
439
448
|
$header-language-trigger: $color-zinc-400;
|
|
440
449
|
$header-language-trigger--hover: $color-white;
|
|
450
|
+
$header-language-trigger-bg: transparent;
|
|
451
|
+
$header-language-trigger-bg--hover: transparent;
|
|
441
452
|
$header-language-badge-bg: $color-zinc-800;
|
|
442
453
|
$header-language-badge-text: $color-zinc-200;
|
|
443
454
|
$header-language-menu-bg: $color-night;
|
|
@@ -445,16 +445,25 @@ $language-description: $color-gray-500;
|
|
|
445
445
|
$language-empty-text: $color-gray-400;
|
|
446
446
|
|
|
447
447
|
// ─── Niche ───
|
|
448
|
-
$niche-trigger-
|
|
449
|
-
$niche-
|
|
450
|
-
$niche-
|
|
451
|
-
$niche-
|
|
448
|
+
$niche-trigger-bg: $color-slate-750;
|
|
449
|
+
$niche-trigger-bg--hover: $color-slate-700;
|
|
450
|
+
$niche-trigger-text: $color-gray-400;
|
|
451
|
+
$niche-trigger-text--hover: $color-white;
|
|
452
|
+
$niche-value-text: $color-gray-200;
|
|
452
453
|
$niche-menu-bg: $color-slate-850;
|
|
453
454
|
$niche-menu-border: $color-white-10;
|
|
455
|
+
$niche-menu-shadow: 0 20px 25px -5px #{$mono-black-25}, 0 8px 10px -6px #{$mono-black-25};
|
|
454
456
|
$niche-item-text: $color-gray-300;
|
|
455
457
|
$niche-item-bg--hover: $color-slate-750;
|
|
458
|
+
$niche-item-icon: $color-gray-400;
|
|
459
|
+
$niche-item-check: $color-white;
|
|
456
460
|
$niche-item-text--current: $color-white;
|
|
457
|
-
$niche-item-bg--current: $color-
|
|
461
|
+
$niche-item-bg--current: $color-slate-700;
|
|
462
|
+
$niche-switch-bg: $color-slate-750;
|
|
463
|
+
$niche-switch-text: $color-gray-400;
|
|
464
|
+
$niche-switch-text--hover: $color-white;
|
|
465
|
+
$niche-switch-bg--checked: $color-slate-700;
|
|
466
|
+
$niche-switch-text--checked: $color-white;
|
|
458
467
|
|
|
459
468
|
// ─── Footer language ───
|
|
460
469
|
$footer-language-bg: $color-slate-750;
|
|
@@ -492,9 +501,11 @@ $burger-item-child-icon: $color-gray-400;
|
|
|
492
501
|
$header-bg: $color-slate-800;
|
|
493
502
|
$header-burger-icon: $color-gray-200;
|
|
494
503
|
$header-user-icon: $color-gray-500;
|
|
495
|
-
$header-language-trigger: $color-
|
|
496
|
-
$header-language-trigger--hover: $color-
|
|
497
|
-
$header-language-
|
|
504
|
+
$header-language-trigger: $color-white;
|
|
505
|
+
$header-language-trigger--hover: $color-white;
|
|
506
|
+
$header-language-trigger-bg: $color-slate-750;
|
|
507
|
+
$header-language-trigger-bg--hover: $color-slate-700;
|
|
508
|
+
$header-language-badge-bg: $color-slate-850;
|
|
498
509
|
$header-language-badge-text: $color-white;
|
|
499
510
|
$header-language-menu-bg: $color-slate-850;
|
|
500
511
|
$header-language-menu-border: $color-white-10;
|
|
@@ -19,6 +19,11 @@
|
|
|
19
19
|
/>
|
|
20
20
|
</button>
|
|
21
21
|
<div class="layout-burger__wrapper">
|
|
22
|
+
<LayoutNiche
|
|
23
|
+
burger
|
|
24
|
+
class="layout-burger__niche"
|
|
25
|
+
/>
|
|
26
|
+
|
|
22
27
|
<div class="layout-burger__buttons">
|
|
23
28
|
<NuxtLink
|
|
24
29
|
v-if="isAuthorized && data"
|
|
@@ -69,11 +74,6 @@
|
|
|
69
74
|
</div>
|
|
70
75
|
</nav>
|
|
71
76
|
|
|
72
|
-
<LayoutNiche
|
|
73
|
-
class="layout-burger__niche"
|
|
74
|
-
icon-size="20"
|
|
75
|
-
/>
|
|
76
|
-
|
|
77
77
|
<LayoutLanguage
|
|
78
78
|
burger
|
|
79
79
|
class="layout-burger__language"
|
|
@@ -76,8 +76,9 @@ function handler() {
|
|
|
76
76
|
column-gap: 8px;
|
|
77
77
|
align-items: center;
|
|
78
78
|
flex-wrap: nowrap;
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
height: 36px;
|
|
80
|
+
padding: 0 12px;
|
|
81
|
+
border-radius: $radius-md;
|
|
81
82
|
background-color: $footer-language-bg;
|
|
82
83
|
color: $footer-language-text;
|
|
83
84
|
|
|
@@ -57,23 +57,17 @@ $breakpoint-footer: sm;
|
|
|
57
57
|
|
|
58
58
|
.layout-footer__middle {
|
|
59
59
|
display: flex;
|
|
60
|
-
|
|
61
|
-
row-gap: 16px;
|
|
60
|
+
column-gap: 8px;
|
|
62
61
|
align-items: center;
|
|
63
62
|
|
|
64
63
|
@include from-br($breakpoint-footer) {
|
|
65
|
-
flex-direction: row;
|
|
66
|
-
column-gap: 24px;
|
|
67
64
|
margin: 0 auto;
|
|
68
65
|
}
|
|
69
66
|
}
|
|
70
67
|
|
|
71
68
|
.layout-footer__niche .layout-niche__list {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
bottom: auto;
|
|
75
|
-
transform: translateY(-100%);
|
|
76
|
-
}
|
|
69
|
+
top: auto;
|
|
70
|
+
bottom: calc(100% + 8px);
|
|
77
71
|
}
|
|
78
72
|
|
|
79
73
|
.layout-footer__copyright {
|
|
@@ -10,15 +10,15 @@
|
|
|
10
10
|
glow
|
|
11
11
|
class="layout-header__logo"
|
|
12
12
|
/>
|
|
13
|
-
<LayoutNotifications
|
|
14
|
-
v-if="featureFlags.FeatureFollowEnabled"
|
|
15
|
-
class="layout-header__notifications"
|
|
16
|
-
/>
|
|
17
13
|
|
|
18
14
|
<LayoutNiche
|
|
19
15
|
class="layout-header__niche _from-sd"
|
|
20
16
|
icon-size="20"
|
|
21
17
|
/>
|
|
18
|
+
<LayoutNotifications
|
|
19
|
+
v-if="featureFlags.FeatureFollowEnabled"
|
|
20
|
+
class="layout-header__notifications"
|
|
21
|
+
/>
|
|
22
22
|
|
|
23
23
|
<div
|
|
24
24
|
ref="languageRef"
|
|
@@ -127,7 +127,7 @@ function closeLanguage() {
|
|
|
127
127
|
width: 100%;
|
|
128
128
|
|
|
129
129
|
@include from-br($brkpnt-burger) {
|
|
130
|
-
grid-template-columns: auto minmax(0, 1fr) auto auto auto
|
|
130
|
+
grid-template-columns: auto auto minmax(0, 1fr) auto auto auto;
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
/* поиск | лого | колокольчик | бургер — 1fr держит лого по центру */
|
|
@@ -139,7 +139,7 @@ function closeLanguage() {
|
|
|
139
139
|
|
|
140
140
|
.layout-header.--no-notifications {
|
|
141
141
|
@include from-br($brkpnt-burger) {
|
|
142
|
-
grid-template-columns: auto minmax(0, 1fr) auto auto
|
|
142
|
+
grid-template-columns: auto auto minmax(0, 1fr) auto auto;
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
@include to-br($brkpnt-burger) {
|
|
@@ -147,12 +147,6 @@ function closeLanguage() {
|
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
.layout-header.--no-notifications .layout-header__niche {
|
|
151
|
-
@include from-br($brkpnt-burger) {
|
|
152
|
-
grid-column: 3;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
150
|
.layout-header.--no-notifications .layout-header__language {
|
|
157
151
|
@include from-br($brkpnt-burger) {
|
|
158
152
|
grid-column: 4;
|
|
@@ -200,16 +194,15 @@ function closeLanguage() {
|
|
|
200
194
|
|
|
201
195
|
/**
|
|
202
196
|
* Поиск стоит строго по центру ШАПКИ, а не по центру свободного места: он растянут
|
|
203
|
-
* на всю строку сетки и центрирован `justify-self`. Иначе центр уезжал
|
|
204
|
-
*
|
|
205
|
-
* переключателя ниш перекос дошёл до сотни пикселей.
|
|
197
|
+
* на всю строку сетки и центрирован `justify-self`. Иначе центр уезжал бы к более
|
|
198
|
+
* узкой группе: левая (лого + ниша) и правая (колокольчик, язык, вход) разной ширины.
|
|
206
199
|
*
|
|
207
200
|
* Наезжать при этом не на что: по обе стороны резервируется `--header-side-space`
|
|
208
|
-
* — ширина более широкой (
|
|
201
|
+
* — ширина более широкой группы (сейчас левая: лого + ниша ~340, правая ~290).
|
|
209
202
|
* Считается БЕЗ бокового паддинга шапки, потому что `100%` у поиска — это уже
|
|
210
203
|
* контентная ширина. Не хватило места — поиск сужается, а боковые группы остаются
|
|
211
204
|
* на своих местах. Значение вынесено в переменную: у сайта без переключателя ниш
|
|
212
|
-
*
|
|
205
|
+
* левая группа уже, и он может его уменьшить.
|
|
213
206
|
*/
|
|
214
207
|
.layout-header__search {
|
|
215
208
|
--header-side-space: 358px;
|
|
@@ -246,8 +239,9 @@ function closeLanguage() {
|
|
|
246
239
|
|
|
247
240
|
.layout-header__niche {
|
|
248
241
|
@include from-br($brkpnt-burger) {
|
|
249
|
-
grid-column:
|
|
242
|
+
grid-column: 2;
|
|
250
243
|
grid-row: 1;
|
|
244
|
+
margin-left: 4px;
|
|
251
245
|
}
|
|
252
246
|
}
|
|
253
247
|
|
|
@@ -259,7 +253,7 @@ function closeLanguage() {
|
|
|
259
253
|
|
|
260
254
|
.layout-header__notifications {
|
|
261
255
|
@include from-br($brkpnt-burger) {
|
|
262
|
-
grid-column:
|
|
256
|
+
grid-column: 4;
|
|
263
257
|
grid-row: 1;
|
|
264
258
|
}
|
|
265
259
|
}
|
|
@@ -272,18 +266,22 @@ function closeLanguage() {
|
|
|
272
266
|
}
|
|
273
267
|
}
|
|
274
268
|
|
|
275
|
-
.layout-header__language-trigger{
|
|
269
|
+
.layout-header__language-trigger {
|
|
276
270
|
@include from-br($brkpnt-burger) {
|
|
277
271
|
display: flex;
|
|
278
272
|
flex-wrap: nowrap;
|
|
279
273
|
align-items: center;
|
|
280
|
-
|
|
281
|
-
|
|
274
|
+
column-gap: 8px;
|
|
275
|
+
height: 36px;
|
|
276
|
+
padding: 0 12px;
|
|
282
277
|
color: $header-language-trigger;
|
|
278
|
+
background-color: $header-language-trigger-bg;
|
|
279
|
+
border-radius: $radius-md;
|
|
283
280
|
}
|
|
284
281
|
|
|
285
|
-
@include hover(color) {
|
|
282
|
+
@include hover(color, background-color) {
|
|
286
283
|
color: $header-language-trigger--hover;
|
|
284
|
+
background-color: $header-language-trigger-bg--hover;
|
|
287
285
|
}
|
|
288
286
|
}
|
|
289
287
|
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
:aria-label="$t('niche')"
|
|
4
|
+
class="layout-niche-list"
|
|
5
|
+
role="listbox"
|
|
6
|
+
>
|
|
7
|
+
<button
|
|
8
|
+
v-for="item in niches"
|
|
9
|
+
:key="`niche-${item.name}`"
|
|
10
|
+
:class="{'--current': item.name === current}"
|
|
11
|
+
:aria-selected="item.name === current"
|
|
12
|
+
class="layout-niche-list__item"
|
|
13
|
+
role="option"
|
|
14
|
+
type="button"
|
|
15
|
+
@click="$emit('select', item.name)"
|
|
16
|
+
>
|
|
17
|
+
<UiIcon
|
|
18
|
+
:name="item.icon"
|
|
19
|
+
class="layout-niche-list__icon"
|
|
20
|
+
size="20"
|
|
21
|
+
/>
|
|
22
|
+
<span class="layout-niche-list__text">{{ $t(item.label) }}</span>
|
|
23
|
+
<UiIcon
|
|
24
|
+
v-if="item.name === current"
|
|
25
|
+
class="layout-niche-list__check"
|
|
26
|
+
name="check"
|
|
27
|
+
size="20"
|
|
28
|
+
/>
|
|
29
|
+
</button>
|
|
30
|
+
</div>
|
|
31
|
+
</template>
|
|
32
|
+
|
|
33
|
+
<script setup lang="ts">
|
|
34
|
+
import type { Niche } from '../../runtime';
|
|
35
|
+
import type { INicheItem } from '../../composables/use-niches';
|
|
36
|
+
|
|
37
|
+
defineProps<{
|
|
38
|
+
niches: INicheItem[]
|
|
39
|
+
current: Niche
|
|
40
|
+
}>();
|
|
41
|
+
|
|
42
|
+
defineEmits<{
|
|
43
|
+
select: [name: Niche]
|
|
44
|
+
}>();
|
|
45
|
+
</script>
|
|
46
|
+
|
|
47
|
+
<style lang="scss">
|
|
48
|
+
.layout-niche-list {
|
|
49
|
+
display: flex;
|
|
50
|
+
flex-direction: column;
|
|
51
|
+
row-gap: 4px;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.layout-niche-list__item {
|
|
55
|
+
@include font-sm;
|
|
56
|
+
|
|
57
|
+
display: flex;
|
|
58
|
+
align-items: center;
|
|
59
|
+
column-gap: 12px;
|
|
60
|
+
width: 100%;
|
|
61
|
+
padding: 10px 8px;
|
|
62
|
+
color: $niche-item-text;
|
|
63
|
+
text-align: start;
|
|
64
|
+
border-radius: $radius-md;
|
|
65
|
+
|
|
66
|
+
@include hover(background-color) {
|
|
67
|
+
background-color: $niche-item-bg--hover;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.layout-niche-list__item.--current {
|
|
72
|
+
color: $niche-item-text--current;
|
|
73
|
+
background-color: $niche-item-bg--current;
|
|
74
|
+
pointer-events: none;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.layout-niche-list__icon {
|
|
78
|
+
flex-shrink: 0;
|
|
79
|
+
color: $niche-item-icon;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.layout-niche-list__text {
|
|
83
|
+
flex: 1;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.layout-niche-list__check {
|
|
87
|
+
flex-shrink: 0;
|
|
88
|
+
color: $niche-item-check;
|
|
89
|
+
}
|
|
90
|
+
</style>
|
|
@@ -1,13 +1,33 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
|
-
v-if="niches.length > 1"
|
|
3
|
+
v-if="niches.length > 1 && burger"
|
|
4
|
+
:aria-label="$t('niche')"
|
|
5
|
+
class="layout-niche --burger"
|
|
6
|
+
role="radiogroup"
|
|
7
|
+
>
|
|
8
|
+
<button
|
|
9
|
+
v-for="item in niches"
|
|
10
|
+
:key="`niche-${item.name}`"
|
|
11
|
+
:class="{'--checked': item.name === currentNiche.name}"
|
|
12
|
+
:aria-checked="item.name === currentNiche.name"
|
|
13
|
+
class="layout-niche__option"
|
|
14
|
+
role="radio"
|
|
15
|
+
type="button"
|
|
16
|
+
@click="changeNiche(item.name)"
|
|
17
|
+
>
|
|
18
|
+
{{ $t(item.label) }}
|
|
19
|
+
</button>
|
|
20
|
+
</div>
|
|
21
|
+
<div
|
|
22
|
+
v-else-if="niches.length > 1"
|
|
4
23
|
ref="nicheRef"
|
|
5
24
|
class="layout-niche"
|
|
6
25
|
>
|
|
7
26
|
<button
|
|
8
27
|
:class="{'--open': isOpen}"
|
|
9
28
|
:aria-expanded="isOpen"
|
|
10
|
-
:aria-label="$t('niche')"
|
|
29
|
+
:aria-label="`${$t('niche')}: ${$t(currentNiche.label)}`"
|
|
30
|
+
aria-haspopup="listbox"
|
|
11
31
|
class="layout-niche__trigger"
|
|
12
32
|
type="button"
|
|
13
33
|
@click="isOpen = !isOpen"
|
|
@@ -17,55 +37,56 @@
|
|
|
17
37
|
:size="iconSize"
|
|
18
38
|
class="layout-niche__icon"
|
|
19
39
|
/>
|
|
20
|
-
<span class="layout-
|
|
21
|
-
<span>{{ $t('niche') }}: </span>
|
|
22
|
-
<span class="layout-niche__text">{{ $t(currentNiche.label) }}</span>
|
|
23
|
-
</span>
|
|
40
|
+
<span class="layout-niche__text">{{ $t(currentNiche.label) }}</span>
|
|
24
41
|
<UiIcon
|
|
25
42
|
class="layout-niche__angle"
|
|
26
43
|
name="angle-down"
|
|
27
44
|
size="12"
|
|
28
45
|
/>
|
|
29
46
|
</button>
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
v-for="item in niches"
|
|
36
|
-
:key="`niche-${item.name}`"
|
|
47
|
+
<transition mode="out-in">
|
|
48
|
+
<UiPopup
|
|
49
|
+
v-if="isBurgerMenu && isOpen"
|
|
50
|
+
v-model="isOpen"
|
|
51
|
+
sheet
|
|
37
52
|
>
|
|
38
|
-
<
|
|
39
|
-
|
|
40
|
-
:
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
@
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
53
|
+
<template #title>{{ $t('model.orientation') }}</template>
|
|
54
|
+
<LayoutNicheList
|
|
55
|
+
:niches="niches"
|
|
56
|
+
:current="currentNiche.name"
|
|
57
|
+
class="layout-niche__sheet"
|
|
58
|
+
@select="select"
|
|
59
|
+
/>
|
|
60
|
+
</UiPopup>
|
|
61
|
+
</transition>
|
|
62
|
+
<LayoutNicheList
|
|
63
|
+
v-if="!isBurgerMenu && isOpen"
|
|
64
|
+
:niches="niches"
|
|
65
|
+
:current="currentNiche.name"
|
|
66
|
+
class="layout-niche__list"
|
|
67
|
+
@select="select"
|
|
68
|
+
/>
|
|
54
69
|
</div>
|
|
55
70
|
</template>
|
|
56
71
|
|
|
57
72
|
<script setup lang="ts">
|
|
58
73
|
import type { Niche } from '../../runtime';
|
|
74
|
+
import { checkDeviceWidth } from '../../runtime';
|
|
75
|
+
import { CSS_BREAKPOINTS } from '../../config/css-breakpoints';
|
|
59
76
|
|
|
60
77
|
withDefaults(defineProps<{
|
|
61
78
|
iconSize?: string
|
|
79
|
+
burger?: boolean
|
|
62
80
|
}>(), {
|
|
63
|
-
iconSize: '20'
|
|
81
|
+
iconSize: '20',
|
|
82
|
+
burger: false
|
|
64
83
|
}
|
|
65
84
|
);
|
|
66
85
|
|
|
67
86
|
const { niches, currentNiche, changeNiche } = useNiches();
|
|
68
87
|
|
|
88
|
+
const { isBurgerMenu } = checkDeviceWidth(CSS_BREAKPOINTS);
|
|
89
|
+
|
|
69
90
|
const nicheRef = ref<HTMLElement>();
|
|
70
91
|
const isOpen = ref(false);
|
|
71
92
|
|
|
@@ -81,97 +102,93 @@ function select(name: Niche) {
|
|
|
81
102
|
|
|
82
103
|
<style lang="scss">
|
|
83
104
|
.layout-niche {
|
|
105
|
+
position: relative;
|
|
84
106
|
display: grid;
|
|
107
|
+
justify-content: start;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.layout-niche.--burger {
|
|
111
|
+
display: flex;
|
|
112
|
+
column-gap: 4px;
|
|
113
|
+
width: 100%;
|
|
114
|
+
padding: 4px;
|
|
115
|
+
background-color: $niche-switch-bg;
|
|
116
|
+
border-radius: $radius-md;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.layout-niche__option {
|
|
120
|
+
@include font-sm;
|
|
85
121
|
|
|
86
|
-
|
|
87
|
-
|
|
122
|
+
display: flex;
|
|
123
|
+
flex: 1;
|
|
124
|
+
align-items: center;
|
|
125
|
+
justify-content: center;
|
|
126
|
+
height: 36px;
|
|
127
|
+
color: $niche-switch-text;
|
|
128
|
+
font-weight: 500;
|
|
129
|
+
border-radius: $radius-6;
|
|
130
|
+
|
|
131
|
+
@include hover(color) {
|
|
132
|
+
color: $niche-switch-text--hover;
|
|
88
133
|
}
|
|
89
134
|
}
|
|
90
135
|
|
|
136
|
+
.layout-niche__option.--checked {
|
|
137
|
+
color: $niche-switch-text--checked;
|
|
138
|
+
background-color: $niche-switch-bg--checked;
|
|
139
|
+
}
|
|
140
|
+
|
|
91
141
|
.layout-niche__trigger {
|
|
92
|
-
|
|
93
|
-
|
|
142
|
+
@include font-sm;
|
|
143
|
+
|
|
144
|
+
display: flex;
|
|
94
145
|
align-items: center;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
padding:
|
|
146
|
+
column-gap: 8px;
|
|
147
|
+
height: 36px;
|
|
148
|
+
padding: 0 12px;
|
|
98
149
|
color: $niche-trigger-text;
|
|
150
|
+
background-color: $niche-trigger-bg;
|
|
151
|
+
border-radius: $radius-md;
|
|
99
152
|
|
|
100
|
-
@include
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
padding: 10px 16px;
|
|
104
|
-
column-gap: 16px;
|
|
153
|
+
@include hover(background-color, color) {
|
|
154
|
+
color: $niche-trigger-text--hover;
|
|
155
|
+
background-color: $niche-trigger-bg--hover;
|
|
105
156
|
}
|
|
106
157
|
}
|
|
107
158
|
|
|
108
|
-
.layout-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
display: grid;
|
|
112
|
-
grid-template-columns: auto 1fr;
|
|
113
|
-
color: $niche-title;
|
|
159
|
+
.layout-niche__icon {
|
|
160
|
+
flex-shrink: 0;
|
|
114
161
|
}
|
|
115
162
|
|
|
116
163
|
.layout-niche__text {
|
|
117
164
|
color: $niche-value-text;
|
|
118
165
|
font-weight: 500;
|
|
166
|
+
line-height: 1;
|
|
119
167
|
}
|
|
120
168
|
|
|
121
169
|
.layout-niche__angle {
|
|
122
170
|
pointer-events: none;
|
|
123
|
-
transition: transform var(--transition)
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
.layout-niche__trigger:hover .layout-niche__angle {
|
|
127
|
-
color: $niche-angle--hover;
|
|
171
|
+
transition: transform var(--transition);
|
|
128
172
|
}
|
|
129
173
|
|
|
130
174
|
.layout-niche__trigger.--open .layout-niche__angle {
|
|
131
175
|
transform: rotate(180deg);
|
|
132
176
|
}
|
|
133
177
|
|
|
134
|
-
.layout-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
@include from-br($brkpnt-burger) {
|
|
138
|
-
position: absolute;
|
|
139
|
-
right: 0;
|
|
140
|
-
bottom: -8px;
|
|
141
|
-
z-index: $z-index-plus;
|
|
142
|
-
min-width: 180px;
|
|
143
|
-
padding: 8px;
|
|
144
|
-
background-color: $niche-menu-bg;
|
|
145
|
-
border: 1px solid $niche-menu-border;
|
|
146
|
-
border-radius: $radius-xl;
|
|
147
|
-
transform: translateY(100%);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
.layout-niche__item {
|
|
152
|
-
@include font-sm;
|
|
153
|
-
|
|
154
|
-
display: grid;
|
|
155
|
-
grid-template-columns: 20px 1fr;
|
|
156
|
-
align-items: center;
|
|
157
|
-
column-gap: 12px;
|
|
158
|
-
width: 100%;
|
|
159
|
-
padding: 10px 16px;
|
|
160
|
-
color: $niche-item-text;
|
|
161
|
-
text-align: start;
|
|
162
|
-
border-radius: $radius-lg;
|
|
163
|
-
|
|
164
|
-
@include hover(background-color) {
|
|
165
|
-
background-color: $niche-item-bg--hover;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
@include from-br($brkpnt-burger) {
|
|
169
|
-
padding: 8px 10px;
|
|
170
|
-
}
|
|
178
|
+
.layout-niche__sheet {
|
|
179
|
+
padding: 12px 12px calc(12px + env(safe-area-inset-bottom));
|
|
171
180
|
}
|
|
172
181
|
|
|
173
|
-
.layout-
|
|
174
|
-
|
|
175
|
-
|
|
182
|
+
.layout-niche__list {
|
|
183
|
+
position: absolute;
|
|
184
|
+
top: calc(100% + 8px);
|
|
185
|
+
left: 0;
|
|
186
|
+
z-index: $z-index-plus;
|
|
187
|
+
width: 192px;
|
|
188
|
+
padding: 8px;
|
|
189
|
+
background-color: $niche-menu-bg;
|
|
190
|
+
border: 1px solid $niche-menu-border;
|
|
191
|
+
border-radius: $radius-xl;
|
|
192
|
+
box-shadow: $niche-menu-shadow;
|
|
176
193
|
}
|
|
177
194
|
</style>
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|