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.
Files changed (47) hide show
  1. package/-error.vue +1 -1
  2. package/CLAUDE.md +1 -1
  3. package/assets/styles/theme.css +11 -4
  4. package/components/elements/button/AButtonV2.vue +2 -0
  5. package/components/elements/curve-block-v2/ACurveBlockV2.vue +2 -0
  6. package/components/elements/empty-box/empty-box-V2.vue +1 -1
  7. package/components/elements/error-template/index.vue +8 -3
  8. package/components/elements/select/ACascadeSelectV2.vue +710 -0
  9. package/components/elements/select/ASelectV2.vue +70 -143
  10. package/components/elements/select/cascade-utils.ts +115 -0
  11. package/components/elements/select/types.ts +27 -0
  12. package/components/elements/select/ui/cascade-drawer.vue +146 -0
  13. package/components/elements/select/ui/cascade-panel.vue +237 -0
  14. package/components/elements/select/ui/select-trigger.vue +167 -0
  15. package/components/elements/step-slider/AStepSliderColCard.vue +8 -12
  16. package/components/features/go-top/GoTop.vue +4 -0
  17. package/components/forms/feedback-form/FeedbackFormV2.vue +16 -16
  18. package/components/forms/input/AInputV2.vue +43 -39
  19. package/components/modals/ReportBugModal.vue +1 -1
  20. package/components/modals/id/IdModals.vue +14 -10
  21. package/components/navigation/bottom-navigation/ABottomNavigation.vue +1 -1
  22. package/components/navigation/header/AHeader.vue +6 -2
  23. package/components/overlays/drawer/ADrawerV2.vue +9 -2
  24. package/components/overlays/modal/AModalV2.vue +1 -0
  25. package/icons/ai/ai-diamond-unfilled.vue +26 -0
  26. package/icons/ai/ai-diamond.vue +11 -0
  27. package/icons/arrow/arrow-down-left.vue +6 -0
  28. package/icons/arrow/arrow-up-right.vue +6 -0
  29. package/icons/clock-rotate-ccw.vue +7 -0
  30. package/icons/crown.vue +6 -0
  31. package/icons/list-checks.vue +3 -0
  32. package/icons/log-out.vue +21 -0
  33. package/icons/main-filter.vue +6 -1
  34. package/icons/refresh-cw.vue +8 -0
  35. package/icons/shield-check.vue +20 -0
  36. package/icons/shuffle.vue +3 -0
  37. package/icons/user-plus.vue +3 -0
  38. package/icons/wallet.vue +6 -0
  39. package/illustrations/notes-search.vue +20 -0
  40. package/illustrations/notes-sticky.vue +20 -0
  41. package/illustrations/scheme-notes.vue +21 -0
  42. package/illustrations/scheme-waypoints.vue +25 -0
  43. package/lang/en.ts +2 -1
  44. package/lang/kk.ts +3 -2
  45. package/lang/ru.ts +2 -1
  46. package/package.json +1 -1
  47. 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: 'absolute',
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
- <transition
402
- enter-active-class="input-v2__dropdown-enter-active"
403
- enter-from-class="input-v2__dropdown-enter-from"
404
- enter-to-class="input-v2__dropdown-enter-to"
405
- leave-active-class="input-v2__dropdown-leave-active"
406
- leave-from-class="input-v2__dropdown-leave-from"
407
- leave-to-class="input-v2__dropdown-leave-to"
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
- <ul ref="autocompleteListEl" class="input-v2__list flex flex-col">
420
- <li
421
- v-for="(item, idx) in autocompleteList"
422
- :key="idx"
423
- class="cursor-pointer rounded-lg px-3.5 py-2.5 text-body-md transition-colors duration-100 hover:bg-brand-subtle"
424
- :class="{ 'input-v2__option--active': currentItemIndex === idx }"
425
- @mousedown.prevent="onSelectOption(item)"
426
- @touchend.prevent="onTouchEndOption(item)"
427
- @touchmove="isTouchScrolling = true"
428
- >
429
- <slot name="autocomplete-option" :item="item">
430
- {{ rowDisplay(item) }}
431
- </slot>
432
- </li>
433
- </ul>
434
-
435
- <slot name="autocomplete-buttons" :value="modelValue" />
436
- </div>
437
- </transition>
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
- max-height: 250px;
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-stop-sign class="size-[140px]" />
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-subtle shadow-lg backdrop-blur-lg">
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/72 backdrop-blur-[14px] backdrop-saturate-140"
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 z-[10000] flex items-end justify-stretch bg-overlay']
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 contentStyle = computed(() => ({ maxHeight: props.maxHeight }))
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>
@@ -7,6 +7,7 @@ const props = withDefaults(defineProps<{
7
7
  title?: string
8
8
  size?: ModalSize
9
9
  width?: string
10
+ rounded?: string
10
11
  closeOnOverlay?: boolean
11
12
  closeOnEsc?: boolean
12
13
  lockScroll?: boolean
@@ -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>
@@ -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>
@@ -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 class="fill-icon-strong" fill-rule="evenodd" clip-rule="evenodd" 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"/>
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>
@@ -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: 'Feedback',
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "adata-ui",
3
3
  "type": "module",
4
- "version": "2.1.41-beta.1",
4
+ "version": "2.1.41-beta.10",
5
5
  "main": "./nuxt.config.ts",
6
6
  "scripts": {
7
7
  "dev": "nuxi dev .playground",
@@ -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
+ }