adata-ui 2.1.41-beta.1 → 2.1.41-beta.10
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/-error.vue +1 -1
- package/CLAUDE.md +1 -1
- package/assets/styles/theme.css +11 -4
- package/components/elements/button/AButtonV2.vue +2 -0
- package/components/elements/curve-block-v2/ACurveBlockV2.vue +2 -0
- package/components/elements/empty-box/empty-box-V2.vue +1 -1
- package/components/elements/error-template/index.vue +8 -3
- package/components/elements/select/ACascadeSelectV2.vue +710 -0
- package/components/elements/select/ASelectV2.vue +70 -143
- package/components/elements/select/cascade-utils.ts +115 -0
- package/components/elements/select/types.ts +27 -0
- package/components/elements/select/ui/cascade-drawer.vue +146 -0
- package/components/elements/select/ui/cascade-panel.vue +237 -0
- package/components/elements/select/ui/select-trigger.vue +167 -0
- package/components/elements/step-slider/AStepSliderColCard.vue +8 -12
- package/components/features/go-top/GoTop.vue +4 -0
- package/components/forms/feedback-form/FeedbackFormV2.vue +16 -16
- package/components/forms/input/AInputV2.vue +43 -39
- package/components/modals/ReportBugModal.vue +1 -1
- package/components/modals/id/IdModals.vue +14 -10
- package/components/navigation/bottom-navigation/ABottomNavigation.vue +1 -1
- package/components/navigation/header/AHeader.vue +6 -2
- package/components/overlays/drawer/ADrawerV2.vue +9 -2
- package/components/overlays/modal/AModalV2.vue +1 -0
- package/icons/ai/ai-diamond-unfilled.vue +26 -0
- package/icons/ai/ai-diamond.vue +11 -0
- package/icons/arrow/arrow-down-left.vue +6 -0
- package/icons/arrow/arrow-up-right.vue +6 -0
- package/icons/clock-rotate-ccw.vue +7 -0
- package/icons/crown.vue +6 -0
- package/icons/list-checks.vue +3 -0
- package/icons/log-out.vue +21 -0
- package/icons/main-filter.vue +6 -1
- package/icons/refresh-cw.vue +8 -0
- package/icons/shield-check.vue +20 -0
- package/icons/shuffle.vue +3 -0
- package/icons/user-plus.vue +3 -0
- package/icons/wallet.vue +6 -0
- package/illustrations/notes-search.vue +20 -0
- package/illustrations/notes-sticky.vue +20 -0
- package/illustrations/scheme-notes.vue +21 -0
- package/illustrations/scheme-waypoints.vue +25 -0
- package/lang/en.ts +2 -1
- package/lang/kk.ts +3 -2
- package/lang/ru.ts +2 -1
- package/package.json +1 -1
- package/utils/toCssSize.ts +11 -0
|
@@ -19,6 +19,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
19
19
|
loading: false,
|
|
20
20
|
variant: 'default',
|
|
21
21
|
mask: undefined,
|
|
22
|
+
dropdownStrategy: 'absolute',
|
|
22
23
|
autocompleteList: () => [] as T[],
|
|
23
24
|
autocompleteKey: undefined,
|
|
24
25
|
autocompleteOption: undefined,
|
|
@@ -51,6 +52,7 @@ interface Props {
|
|
|
51
52
|
loading?: boolean
|
|
52
53
|
variant?: 'default' | 'gray' | 'blue' | 'canvas'
|
|
53
54
|
mask?: string
|
|
55
|
+
dropdownStrategy?: 'absolute' | 'fixed'
|
|
54
56
|
inputId?: string
|
|
55
57
|
autocomplete?: string
|
|
56
58
|
autocompleteList?: T[]
|
|
@@ -105,7 +107,7 @@ const fieldRef = ref<HTMLElement | null>(null)
|
|
|
105
107
|
const floatingRef = ref<HTMLElement | null>(null)
|
|
106
108
|
const { x, y, strategy, update } = useFloating(fieldRef, floatingRef, {
|
|
107
109
|
placement: 'bottom-start',
|
|
108
|
-
strategy:
|
|
110
|
+
strategy: computed(() => props.dropdownStrategy),
|
|
109
111
|
middleware: [
|
|
110
112
|
offset(6),
|
|
111
113
|
flip({ fallbackPlacements: ['top-start'] }),
|
|
@@ -136,7 +138,7 @@ onUnmounted(() => cleanup?.())
|
|
|
136
138
|
const wrapperRef = ref<HTMLDivElement | null>(null)
|
|
137
139
|
onClickOutside(wrapperRef, () => {
|
|
138
140
|
if (isFocused.value) inputRef.value?.blur()
|
|
139
|
-
})
|
|
141
|
+
}, { ignore: [floatingRef] })
|
|
140
142
|
|
|
141
143
|
function resolveSelectedValue(item: T): AutocompleteValue {
|
|
142
144
|
if (props.autocompleteFn) return props.autocompleteFn(item) as AutocompleteValue
|
|
@@ -398,43 +400,45 @@ function rowDisplay(item: T): unknown {
|
|
|
398
400
|
<slot name="endButton" />
|
|
399
401
|
</div>
|
|
400
402
|
|
|
401
|
-
<
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
<div
|
|
410
|
-
v-if="isDropdownOpen"
|
|
411
|
-
ref="floatingRef"
|
|
412
|
-
class="input-v2__dropdown z-10000 flex flex-col gap-2 rounded-xl border border-default bg-main p-1.5 shadow-[0_24px_50px_-24px] shadow-brand-500/50"
|
|
413
|
-
:style="{
|
|
414
|
-
position: strategy,
|
|
415
|
-
left: x != null ? `${x}px` : '',
|
|
416
|
-
top: y != null ? `${y}px` : '',
|
|
417
|
-
}"
|
|
403
|
+
<teleport to="body">
|
|
404
|
+
<transition
|
|
405
|
+
enter-active-class="input-v2__dropdown-enter-active"
|
|
406
|
+
enter-from-class="input-v2__dropdown-enter-from"
|
|
407
|
+
enter-to-class="input-v2__dropdown-enter-to"
|
|
408
|
+
leave-active-class="input-v2__dropdown-leave-active"
|
|
409
|
+
leave-from-class="input-v2__dropdown-leave-from"
|
|
410
|
+
leave-to-class="input-v2__dropdown-leave-to"
|
|
418
411
|
>
|
|
419
|
-
<
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
:
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
412
|
+
<div
|
|
413
|
+
v-if="isDropdownOpen"
|
|
414
|
+
ref="floatingRef"
|
|
415
|
+
class="input-v2__dropdown z-10001 flex flex-col gap-2 rounded-xl border border-default bg-main p-1.5 shadow-[0_24px_50px_-24px] shadow-brand-500/50"
|
|
416
|
+
:style="{
|
|
417
|
+
position: strategy,
|
|
418
|
+
left: x != null ? `${x}px` : '',
|
|
419
|
+
top: y != null ? `${y}px` : '',
|
|
420
|
+
}"
|
|
421
|
+
>
|
|
422
|
+
<ul ref="autocompleteListEl" class="input-v2__list flex flex-col">
|
|
423
|
+
<li
|
|
424
|
+
v-for="(item, idx) in autocompleteList"
|
|
425
|
+
:key="idx"
|
|
426
|
+
class="cursor-pointer rounded-lg px-3.5 py-2.5 text-body-md transition-colors duration-100 hover:bg-brand-subtle"
|
|
427
|
+
:class="{ 'input-v2__option--active': currentItemIndex === idx }"
|
|
428
|
+
@mousedown.prevent="onSelectOption(item)"
|
|
429
|
+
@touchend.prevent="onTouchEndOption(item)"
|
|
430
|
+
@touchmove="isTouchScrolling = true"
|
|
431
|
+
>
|
|
432
|
+
<slot name="autocomplete-option" :item="item">
|
|
433
|
+
{{ rowDisplay(item) }}
|
|
434
|
+
</slot>
|
|
435
|
+
</li>
|
|
436
|
+
</ul>
|
|
437
|
+
|
|
438
|
+
<slot name="autocomplete-buttons" :value="modelValue" />
|
|
439
|
+
</div>
|
|
440
|
+
</transition>
|
|
441
|
+
</teleport>
|
|
438
442
|
|
|
439
443
|
<transition
|
|
440
444
|
enter-active-class="input-v2__error-enter-active"
|
|
@@ -509,7 +513,7 @@ function rowDisplay(item: T): unknown {
|
|
|
509
513
|
}
|
|
510
514
|
|
|
511
515
|
.input-v2__list {
|
|
512
|
-
|
|
516
|
+
min-height: 0;
|
|
513
517
|
overflow-y: auto;
|
|
514
518
|
overflow-x: hidden;
|
|
515
519
|
scrollbar-width: none;
|
|
@@ -100,7 +100,7 @@ async function send() {
|
|
|
100
100
|
|
|
101
101
|
<div class="flex flex-col gap-5 px-6 py-4">
|
|
102
102
|
<div class="flex flex-col items-center justify-center gap-4">
|
|
103
|
-
<a-ill-
|
|
103
|
+
<a-ill-mail-active class="size-[140px]" />
|
|
104
104
|
<slot name="title">
|
|
105
105
|
<p class="text-body-md text-center">
|
|
106
106
|
{{ name }}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import IdAutoLogoutModal from '#adata-ui/components/modals/id/IdAutoLogoutModal.vue'
|
|
3
|
-
import IdConfirmAccountOtpModal from '#adata-ui/components/modals/id/IdConfirmAccountOtpModal.vue'
|
|
4
|
-
import IdConfirmSuccessfulModal from '#adata-ui/components/modals/id/IdConfirmSuccessfulModal.vue'
|
|
5
|
-
import IdLoginModal from '#adata-ui/components/modals/id/IdLoginModal.vue'
|
|
6
|
-
import IdNewPasswordModal from '#adata-ui/components/modals/id/IdNewPasswordModal.vue'
|
|
7
|
-
import IdPasswordSuccessfulModal from '#adata-ui/components/modals/id/IdPasswordSuccessfulModal.vue'
|
|
8
|
-
import IdRecoveryModal from '#adata-ui/components/modals/id/IdRecoveryModal.vue'
|
|
9
|
-
import IdRegistrationModal from '#adata-ui/components/modals/id/IdRegistrationModal.vue'
|
|
10
|
-
import IdResetPasswordOtpModal from '#adata-ui/components/modals/id/IdResetPasswordOtpModal.vue'
|
|
11
|
-
import IdTwoFactorModal from '#adata-ui/components/modals/id/IdTwoFactorModal.vue'
|
|
12
2
|
import { removeTrailingSlash } from '#adata-ui/components/utils/removeTrailingSlash'
|
|
13
3
|
import { writeAccessTokenCookie } from '#adata-ui/composables/useAccessTokenCookie'
|
|
4
|
+
// Каждое из этих окон рендерится только под своим v-if, но статический import
|
|
5
|
+
// всё равно тащил все десять (плюс zod, который они используют для валидации)
|
|
6
|
+
// в стартовый чанк каждого приложения-потребителя. defineAsyncComponent грузит
|
|
7
|
+
// чанк в момент открытия окна: поведение то же, стартовый бандл меньше.
|
|
8
|
+
const IdAutoLogoutModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdAutoLogoutModal.vue'))
|
|
9
|
+
const IdConfirmAccountOtpModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdConfirmAccountOtpModal.vue'))
|
|
10
|
+
const IdConfirmSuccessfulModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdConfirmSuccessfulModal.vue'))
|
|
11
|
+
const IdLoginModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdLoginModal.vue'))
|
|
12
|
+
const IdNewPasswordModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdNewPasswordModal.vue'))
|
|
13
|
+
const IdPasswordSuccessfulModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdPasswordSuccessfulModal.vue'))
|
|
14
|
+
const IdRecoveryModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdRecoveryModal.vue'))
|
|
15
|
+
const IdRegistrationModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdRegistrationModal.vue'))
|
|
16
|
+
const IdResetPasswordOtpModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdResetPasswordOtpModal.vue'))
|
|
17
|
+
const IdTwoFactorModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdTwoFactorModal.vue'))
|
|
14
18
|
|
|
15
19
|
const emit = defineEmits<{
|
|
16
20
|
(e: 'closed', value: boolean): void
|
|
@@ -56,7 +56,7 @@ const profile: string = 'modals.mobile_navigation.type_profile'
|
|
|
56
56
|
</script>
|
|
57
57
|
|
|
58
58
|
<template>
|
|
59
|
-
<header class="mx-3 mb-3 overflow-hidden rounded-full border border-default bg-
|
|
59
|
+
<header class="mx-3 mb-3 overflow-hidden rounded-full border border-default bg-main/10 shadow-lg backdrop-blur-lg backdrop-saturate-140">
|
|
60
60
|
<div class="grid w-full grid-cols-3 justify-items-center">
|
|
61
61
|
<slot>
|
|
62
62
|
<button
|
|
@@ -107,7 +107,7 @@ onMounted(() => {
|
|
|
107
107
|
<system-notification />
|
|
108
108
|
<header
|
|
109
109
|
ref="headerRef"
|
|
110
|
-
class="relative h-16 border-b border-default bg-main/
|
|
110
|
+
class="relative h-16 border-b border-default bg-main/10 backdrop-blur-lg backdrop-saturate-140"
|
|
111
111
|
>
|
|
112
112
|
<div class="a-container mobile-padding flex h-full items-center justify-between gap-2">
|
|
113
113
|
<!-- Desktop hidden -->
|
|
@@ -152,11 +152,15 @@ onMounted(() => {
|
|
|
152
152
|
/>
|
|
153
153
|
</div>
|
|
154
154
|
<!-- Mobile hidden -->
|
|
155
|
+
<!--
|
|
156
|
+
role="list" здесь был вреден: у <nav> уже есть неявная роль navigation,
|
|
157
|
+
а list требует, чтобы прямые потомки были listitem — ими логотип и
|
|
158
|
+
header-link не являются. Разметка списка живёт внутри HeaderLink (ul/li).
|
|
159
|
+
-->
|
|
155
160
|
<nav
|
|
156
161
|
class="hidden items-center gap-4 lg:flex"
|
|
157
162
|
itemscope
|
|
158
163
|
itemtype="https://schema.org/SiteNavigationElement"
|
|
159
|
-
role="list"
|
|
160
164
|
>
|
|
161
165
|
<nuxt-link-locale
|
|
162
166
|
aria-label="Adata-logo"
|
|
@@ -14,7 +14,10 @@ const props = withDefaults(defineProps<{
|
|
|
14
14
|
swipeToClose?: boolean
|
|
15
15
|
swipeThreshold?: number
|
|
16
16
|
showDragHandle?: boolean
|
|
17
|
+
/** Фиксированная общая высота листа («70dvh»). По умолчанию высота по контенту. */
|
|
18
|
+
height?: string
|
|
17
19
|
maxHeight?: string
|
|
20
|
+
zIndex?: number | string
|
|
18
21
|
}>(), {
|
|
19
22
|
closeOnOverlay: true,
|
|
20
23
|
closeOnEsc: true,
|
|
@@ -26,7 +29,9 @@ const props = withDefaults(defineProps<{
|
|
|
26
29
|
swipeToClose: true,
|
|
27
30
|
swipeThreshold: 65,
|
|
28
31
|
showDragHandle: true,
|
|
32
|
+
height: undefined,
|
|
29
33
|
maxHeight: '100dvh',
|
|
34
|
+
zIndex: 10000,
|
|
30
35
|
})
|
|
31
36
|
|
|
32
37
|
const emit = defineEmits<{
|
|
@@ -54,12 +59,13 @@ const blurClass = computed(() => {
|
|
|
54
59
|
})
|
|
55
60
|
|
|
56
61
|
const overlayClass = computed(() => {
|
|
57
|
-
const base = ['drawer-v2-overlay fixed inset-0
|
|
62
|
+
const base = ['drawer-v2-overlay fixed inset-0 flex items-end justify-stretch bg-overlay']
|
|
58
63
|
if (blurClass.value) base.push(blurClass.value)
|
|
59
64
|
return base.join(' ')
|
|
60
65
|
})
|
|
61
66
|
|
|
62
|
-
const
|
|
67
|
+
const overlayStyle = computed(() => ({ zIndex: props.zIndex }))
|
|
68
|
+
const contentStyle = computed(() => ({ height: props.height, maxHeight: props.maxHeight }))
|
|
63
69
|
|
|
64
70
|
const overlayTransitionName = computed(() => {
|
|
65
71
|
if (swipeClosing.value) return ''
|
|
@@ -226,6 +232,7 @@ function onTouchEnd() {
|
|
|
226
232
|
v-if="open"
|
|
227
233
|
ref="overlayRef"
|
|
228
234
|
:class="overlayClass"
|
|
235
|
+
:style="overlayStyle"
|
|
229
236
|
@mousedown="onOverlayClick"
|
|
230
237
|
>
|
|
231
238
|
<transition :name="contentTransitionName" appear>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg
|
|
3
|
+
width="20"
|
|
4
|
+
height="20"
|
|
5
|
+
viewBox="0 0 20 20"
|
|
6
|
+
fill="none"
|
|
7
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
8
|
+
>
|
|
9
|
+
<g clip-path="url(#clip0_29288_75589)">
|
|
10
|
+
<path
|
|
11
|
+
d="M8.28086 12.9167C8.20647 12.6283 8.05615 12.3651 7.84555 12.1545C7.63494 11.9439 7.37176 11.7936 7.08336 11.7192L1.97086 10.4009C1.88364 10.3761 1.80687 10.3236 1.75221 10.2512C1.69754 10.1789 1.66797 10.0907 1.66797 10C1.66797 9.90938 1.69754 9.82118 1.75221 9.74884C1.80687 9.6765 1.88364 9.62397 1.97086 9.59921L7.08336 8.28005C7.37166 8.20572 7.63477 8.05552 7.84537 7.84508C8.05596 7.63463 8.20634 7.37162 8.28086 7.08338L9.5992 1.97088C9.6237 1.88331 9.67618 1.80616 9.74863 1.75121C9.82108 1.69625 9.90951 1.6665 10.0004 1.6665C10.0914 1.6665 10.1798 1.69625 10.2523 1.75121C10.3247 1.80616 10.3772 1.88331 10.4017 1.97088L11.7192 7.08338C11.7936 7.37177 11.9439 7.63496 12.1545 7.84556C12.3651 8.05616 12.6283 8.20648 12.9167 8.28088L18.0292 9.59921C18.1164 9.62397 18.1932 9.6765 18.2479 9.74884C18.3025 9.82118 18.3321 9.90938 18.3321 10C18.3321 10.0907 18.3025 10.1789 18.2479 10.2512C18.1932 10.3236 18.1164 10.3761 18.0292 10.4009L12.9167 11.7192C12.6283 11.7936 12.3651 11.9439 12.1545 12.1545C11.9439 12.3651 11.7936 12.6283 11.7192 12.9167L10.4009 18.0292C10.3764 18.1168 10.3239 18.1939 10.2514 18.2489C10.179 18.3038 10.0905 18.3336 9.99961 18.3336C9.90868 18.3336 9.82025 18.3038 9.7478 18.2489C9.67535 18.1939 9.62287 18.1168 9.59836 18.0292L8.28086 12.9167Z"
|
|
12
|
+
stroke="currentColor"
|
|
13
|
+
stroke-width="1.5"
|
|
14
|
+
/>
|
|
15
|
+
</g>
|
|
16
|
+
<defs>
|
|
17
|
+
<clipPath id="clip0_29288_75589">
|
|
18
|
+
<rect
|
|
19
|
+
width="20"
|
|
20
|
+
height="20"
|
|
21
|
+
fill="currentColor"
|
|
22
|
+
/>
|
|
23
|
+
</clipPath>
|
|
24
|
+
</defs>
|
|
25
|
+
</svg>
|
|
26
|
+
</template>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg
|
|
3
|
+
width="16"
|
|
4
|
+
height="16"
|
|
5
|
+
viewBox="0 0 16 16"
|
|
6
|
+
fill="none"
|
|
7
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
8
|
+
>
|
|
9
|
+
<path d="M6.6243 10.3332C6.56478 10.1025 6.44453 9.89191 6.27605 9.72343C6.10756 9.55495 5.89702 9.43469 5.6663 9.37517L1.5763 8.32051C1.50652 8.3007 1.44511 8.25868 1.40138 8.2008C1.35765 8.14293 1.33398 8.07238 1.33398 7.99984C1.33398 7.9273 1.35765 7.85675 1.40138 7.79888C1.44511 7.74101 1.50652 7.69898 1.5763 7.67917L5.6663 6.62384C5.89693 6.56438 6.10743 6.44422 6.2759 6.27587C6.44438 6.10751 6.56468 5.8971 6.6243 5.66651L7.67897 1.57651C7.69857 1.50645 7.74056 1.44474 7.79851 1.40077C7.85647 1.35681 7.92722 1.33301 7.99997 1.33301C8.07271 1.33301 8.14346 1.35681 8.20142 1.40077C8.25938 1.44474 8.30136 1.50645 8.32097 1.57651L9.37497 5.66651C9.43449 5.89722 9.55474 6.10777 9.72322 6.27625C9.8917 6.44473 10.1023 6.56499 10.333 6.62451L14.423 7.67917C14.4927 7.69898 14.5542 7.74101 14.5979 7.79888C14.6416 7.85675 14.6653 7.9273 14.6653 7.99984C14.6653 8.07238 14.6416 8.14293 14.5979 8.2008C14.5542 8.25868 14.4927 8.3007 14.423 8.32051L10.333 9.37517C10.1023 9.43469 9.8917 9.55495 9.72322 9.72343C9.55474 9.89191 9.43449 10.1025 9.37497 10.3332L8.3203 14.4232C8.3007 14.4932 8.25871 14.5549 8.20075 14.5989C8.1428 14.6429 8.07205 14.6667 7.9993 14.6667C7.92655 14.6667 7.85581 14.6429 7.79785 14.5989C7.73989 14.5549 7.69791 14.4932 7.6783 14.4232L6.6243 10.3332Z" fill="currentColor" />
|
|
10
|
+
</svg>
|
|
11
|
+
</template>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-down-left-icon lucide-arrow-down-left">
|
|
3
|
+
<path d="M17 7 7 17"/>
|
|
4
|
+
<path d="M17 17H7V7"/>
|
|
5
|
+
</svg>
|
|
6
|
+
</template>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right-icon lucide-arrow-up-right">
|
|
3
|
+
<path d="M7 7h10v10"/>
|
|
4
|
+
<path d="M7 17 17 7"/>
|
|
5
|
+
</svg>
|
|
6
|
+
</template>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-ccw-clock-icon lucide-rotate-ccw-clock">
|
|
3
|
+
<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/>
|
|
4
|
+
<path d="M3 3v5h5"/>
|
|
5
|
+
<path d="M12 7v5l4 2"/>
|
|
6
|
+
</svg>
|
|
7
|
+
</template>
|
package/icons/crown.vue
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-crown-icon lucide-crown">
|
|
3
|
+
<path d="M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294z"/>
|
|
4
|
+
<path d="M5 21h14"/>
|
|
5
|
+
</svg>
|
|
6
|
+
</template>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-list-checks-icon lucide-list-checks"><path d="m3 17 2 2 4-4"/><path d="m3 7 2 2 4-4"/><path d="M13 6h8"/><path d="M13 12h8"/><path d="M13 18h8"/></svg>
|
|
3
|
+
</template>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<template>
|
|
5
|
+
<svg
|
|
6
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
7
|
+
width="24"
|
|
8
|
+
height="24"
|
|
9
|
+
viewBox="0 0 24 24"
|
|
10
|
+
fill="none"
|
|
11
|
+
stroke="currentColor"
|
|
12
|
+
stroke-width="2"
|
|
13
|
+
stroke-linecap="round"
|
|
14
|
+
stroke-linejoin="round"
|
|
15
|
+
class="lucide lucide-log-out-icon lucide-log-out"
|
|
16
|
+
>
|
|
17
|
+
<path d="m16 17 5-5-5-5" />
|
|
18
|
+
<path d="M21 12H9" />
|
|
19
|
+
<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" />
|
|
20
|
+
</svg>
|
|
21
|
+
</template>
|
package/icons/main-filter.vue
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
-
<path
|
|
3
|
+
<path
|
|
4
|
+
fill-rule="evenodd"
|
|
5
|
+
clip-rule="evenodd"
|
|
6
|
+
fill="currentColor"
|
|
7
|
+
d="M15.1487 5.43944C15.1487 4.71477 15.7361 4.1273 16.4608 4.1273C17.1855 4.1273 17.7729 4.71477 17.7729 5.43944C17.7729 6.16411 17.1855 6.75158 16.4608 6.75158C15.7361 6.75158 15.1487 6.16411 15.1487 5.43944ZM13.683 6.22775H2.29021C1.85541 6.22775 1.50293 5.87527 1.50293 5.44046C1.50293 5.00566 1.85541 4.65318 2.29021 4.65318H13.6825C14.0248 3.44103 15.1391 2.55273 16.4608 2.55273C17.7825 2.55273 18.8968 3.44103 19.2391 4.65318H21.7128C22.1476 4.65318 22.5 5.00566 22.5 5.44046C22.5 5.87527 22.1476 6.22775 21.7128 6.22775H19.2386C18.8955 7.43886 17.7818 8.32615 16.4608 8.32615C15.1398 8.32615 14.0261 7.43886 13.683 6.22775ZM8.59002 9.11292C9.91221 9.11292 11.0268 10.0018 11.3687 11.2146H21.7099C22.1447 11.2146 22.4972 11.5671 22.4972 12.0019C22.4972 12.4367 22.1447 12.7892 21.7099 12.7892H11.3674C11.024 13.9997 9.91053 14.8863 8.59002 14.8863C7.2695 14.8863 6.15608 13.9997 5.81263 12.7892H2.29021C1.85541 12.7892 1.50293 12.4367 1.50293 12.0019C1.50293 11.5671 1.85541 11.2146 2.29021 11.2146H5.81132C6.15325 10.0018 7.26783 9.11292 8.59002 9.11292ZM8.59002 10.6875C7.86534 10.6875 7.27788 11.2749 7.27788 11.9996C7.27788 12.7243 7.86534 13.3118 8.59002 13.3118C9.31469 13.3118 9.90216 12.7243 9.90216 11.9996C9.90216 11.2749 9.31469 10.6875 8.59002 10.6875ZM19.2386 19.349C18.8956 20.5602 17.7818 21.4475 16.4608 21.4475C15.1398 21.4475 14.026 20.5602 13.683 19.349H2.29021C1.85541 19.349 1.50293 18.9965 1.50293 18.5617C1.50293 18.1269 1.85541 17.7744 2.29021 17.7744H13.6825C14.0249 16.5624 15.1391 15.6741 16.4608 15.6741C17.7825 15.6741 18.8967 16.5624 19.2391 17.7744H21.7128C22.1476 17.7744 22.5 18.1269 22.5 18.5617C22.5 18.9965 22.1476 19.349 21.7128 19.349H19.2386ZM15.1487 18.5608C15.1487 17.8362 15.7361 17.2487 16.4608 17.2487C17.1855 17.2487 17.7729 17.8362 17.7729 18.5608C17.7729 19.2855 17.1855 19.873 16.4608 19.873C15.7361 19.873 15.1487 19.2855 15.1487 18.5608Z"
|
|
8
|
+
/>
|
|
4
9
|
</svg>
|
|
5
10
|
</template>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-cw-icon lucide-refresh-cw">
|
|
3
|
+
<path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"/>
|
|
4
|
+
<path d="M21 3v5h-5"/>
|
|
5
|
+
<path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"/>
|
|
6
|
+
<path d="M8 16H3v5"/>
|
|
7
|
+
</svg>
|
|
8
|
+
</template>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<template>
|
|
5
|
+
<svg
|
|
6
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
7
|
+
width="24"
|
|
8
|
+
height="24"
|
|
9
|
+
viewBox="0 0 24 24"
|
|
10
|
+
fill="none"
|
|
11
|
+
stroke="currentColor"
|
|
12
|
+
stroke-width="2"
|
|
13
|
+
stroke-linecap="round"
|
|
14
|
+
stroke-linejoin="round"
|
|
15
|
+
class="lucide lucide-shield-check-icon lucide-shield-check"
|
|
16
|
+
>
|
|
17
|
+
<path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z" />
|
|
18
|
+
<path d="m9 12 2 2 4-4" />
|
|
19
|
+
</svg>
|
|
20
|
+
</template>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shuffle-icon lucide-shuffle"><path d="m18 14 4 4-4 4"/><path d="m18 2 4 4-4 4"/><path d="M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22"/><path d="M2 6h1.972a4 4 0 0 1 3.6 2.2"/><path d="M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45"/></svg>
|
|
3
|
+
</template>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-user-plus-icon lucide-user-plus"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><path d="M19 8v6"/><path d="M22 11h-6"/><circle cx="9" cy="7" r="4"/></svg>
|
|
3
|
+
</template>
|
package/icons/wallet.vue
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wallet-icon lucide-wallet">
|
|
3
|
+
<path d="M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1"/>
|
|
4
|
+
<path d="M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4"/>
|
|
5
|
+
</svg>
|
|
6
|
+
</template>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<template>
|
|
5
|
+
<svg
|
|
6
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
7
|
+
width="24"
|
|
8
|
+
height="24"
|
|
9
|
+
viewBox="0 0 24 24"
|
|
10
|
+
fill="none"
|
|
11
|
+
stroke="currentColor"
|
|
12
|
+
stroke-width="2"
|
|
13
|
+
stroke-linecap="round"
|
|
14
|
+
stroke-linejoin="round"
|
|
15
|
+
class="lucide lucide-search-icon lucide-search"
|
|
16
|
+
>
|
|
17
|
+
<path d="m21 21-4.34-4.34" />
|
|
18
|
+
<circle cx="11" cy="11" r="8" />
|
|
19
|
+
</svg>
|
|
20
|
+
</template>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<template>
|
|
5
|
+
<svg
|
|
6
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
7
|
+
width="24"
|
|
8
|
+
height="24"
|
|
9
|
+
viewBox="0 0 24 24"
|
|
10
|
+
fill="none"
|
|
11
|
+
stroke="currentColor"
|
|
12
|
+
stroke-width="2"
|
|
13
|
+
stroke-linecap="round"
|
|
14
|
+
stroke-linejoin="round"
|
|
15
|
+
class="lucide lucide-sticky-note-icon lucide-sticky-note"
|
|
16
|
+
>
|
|
17
|
+
<path d="M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z" />
|
|
18
|
+
<path d="M15 3v5a1 1 0 0 0 1 1h5" />
|
|
19
|
+
</svg>
|
|
20
|
+
</template>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<template>
|
|
5
|
+
<svg
|
|
6
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
7
|
+
width="24"
|
|
8
|
+
height="24"
|
|
9
|
+
viewBox="0 0 24 24"
|
|
10
|
+
fill="none"
|
|
11
|
+
stroke="currentColor"
|
|
12
|
+
stroke-width="2"
|
|
13
|
+
stroke-linecap="round"
|
|
14
|
+
stroke-linejoin="round"
|
|
15
|
+
class="lucide lucide-info-icon lucide-info"
|
|
16
|
+
>
|
|
17
|
+
<circle cx="12" cy="12" r="10"
|
|
18
|
+
/><path d="M12 16v-4" />
|
|
19
|
+
<path d="M12 8h.01"/>
|
|
20
|
+
</svg>
|
|
21
|
+
</template>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<template>
|
|
5
|
+
<svg
|
|
6
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
7
|
+
width="24"
|
|
8
|
+
height="24"
|
|
9
|
+
viewBox="0 0 24 24"
|
|
10
|
+
fill="none"
|
|
11
|
+
stroke="currentColor"
|
|
12
|
+
stroke-width="2"
|
|
13
|
+
stroke-linecap="round"
|
|
14
|
+
stroke-linejoin="round"
|
|
15
|
+
class="lucide lucide-waypoints-icon lucide-waypoints"
|
|
16
|
+
>
|
|
17
|
+
<path d="m10.586 5.414-5.172 5.172" />
|
|
18
|
+
<path d="m18.586 13.414-5.172 5.172" />
|
|
19
|
+
<path d="M6 12h12" />
|
|
20
|
+
<circle cx="12" cy="20" r="2" />
|
|
21
|
+
<circle cx="12" cy="4" r="2" />
|
|
22
|
+
<circle cx="20" cy="12" r="2" />
|
|
23
|
+
<circle cx="4" cy="12" r="2" />
|
|
24
|
+
</svg>
|
|
25
|
+
</template>
|
package/lang/en.ts
CHANGED
|
@@ -21,6 +21,7 @@ const EnLocale: RuLocale = {
|
|
|
21
21
|
yes: 'Yes',
|
|
22
22
|
or: 'Or',
|
|
23
23
|
successfully: 'Successfully',
|
|
24
|
+
goTop: 'Back to top',
|
|
24
25
|
},
|
|
25
26
|
header: {
|
|
26
27
|
top: {
|
|
@@ -473,7 +474,7 @@ const EnLocale: RuLocale = {
|
|
|
473
474
|
},
|
|
474
475
|
forms: {
|
|
475
476
|
feedback: {
|
|
476
|
-
value: '
|
|
477
|
+
value: 'FEEDBACK',
|
|
477
478
|
title: 'Still have questions about the check?',
|
|
478
479
|
subtitle: 'Leave a request — we\'ll show you how to check counterparties for your specific tasks and help you get started.',
|
|
479
480
|
email: 'Email',
|
package/lang/kk.ts
CHANGED
|
@@ -21,6 +21,7 @@ const KkLocale: RuLocale = {
|
|
|
21
21
|
yes: 'Иә',
|
|
22
22
|
or: 'Немесе',
|
|
23
23
|
successfully: 'Сәтті',
|
|
24
|
+
goTop: 'Жоғарыға',
|
|
24
25
|
},
|
|
25
26
|
header: {
|
|
26
27
|
top: {
|
|
@@ -474,7 +475,7 @@ const KkLocale: RuLocale = {
|
|
|
474
475
|
},
|
|
475
476
|
forms: {
|
|
476
477
|
feedback: {
|
|
477
|
-
value: '
|
|
478
|
+
value: 'КЕРІ БАЙЛАНЫС ',
|
|
478
479
|
title: 'Тексеру бойынша сұрақтарыңыз қалды ма?',
|
|
479
480
|
subtitle: 'Өтінім қалдырыңыз — контрагенттерді сіздің міндеттеріңізге сай қалай тексеру керектігін көрсетеміз және бастауға көмектесеміз.',
|
|
480
481
|
email: 'Электрондық пошта',
|
|
@@ -483,7 +484,7 @@ const KkLocale: RuLocale = {
|
|
|
483
484
|
send: 'Өтінімді жіберу',
|
|
484
485
|
close: 'Жабу',
|
|
485
486
|
consent: 'Батырманы басу арқылы сіз',
|
|
486
|
-
consentAccent: 'дербес деректерді өңдеуге',
|
|
487
|
+
consentAccent: 'дербес деректерді өңдеуге келісесіз',
|
|
487
488
|
fieldRequired: 'Өріс міндетті түрде толтырылуы қажет',
|
|
488
489
|
emailValid: 'Дұрыс email енгізіңіз',
|
|
489
490
|
phoneMinLength: 'Телефон нөмірінің минималды ұзындығы {count} символ болуы керек',
|
package/lang/ru.ts
CHANGED
|
@@ -17,6 +17,7 @@ const RuLocale = {
|
|
|
17
17
|
yes: 'Да',
|
|
18
18
|
or: 'Или',
|
|
19
19
|
successfully: 'Успешно',
|
|
20
|
+
goTop: 'Наверх',
|
|
20
21
|
},
|
|
21
22
|
header: {
|
|
22
23
|
top: {
|
|
@@ -473,7 +474,7 @@ const RuLocale = {
|
|
|
473
474
|
},
|
|
474
475
|
forms: {
|
|
475
476
|
feedback: {
|
|
476
|
-
value: '
|
|
477
|
+
value: 'ОБРАТНАЯ СВЯЗЬ',
|
|
477
478
|
title: 'Остались вопросы по проверке?',
|
|
478
479
|
subtitle: 'Оставьте заявку — покажем, как проверять контрагентов под ваши задачи, и поможем со стартом.',
|
|
479
480
|
email: 'Электронная почта',
|
package/package.json
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Нормализует размер из props в CSS-значение: число трактуем как пиксели,
|
|
3
|
+
* строку отдаём как есть (`70dvh`, `min(320px, 50vw)`), пустое — как «не задано».
|
|
4
|
+
*
|
|
5
|
+
* Общая для селектов и дроверов: и `ASelectV2`, и `ACascadeSelectV2` принимают
|
|
6
|
+
* размеры выпадашки в виде `number | string`.
|
|
7
|
+
*/
|
|
8
|
+
export function toCssSize(value?: number | string | null): string | undefined {
|
|
9
|
+
if (value == null || value === '') return undefined
|
|
10
|
+
return typeof value === 'number' ? `${value}px` : value
|
|
11
|
+
}
|