adata-ui 2.1.40-beta.18 → 2.1.40-beta.19

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 (211) hide show
  1. package/.playground/app.vue +102 -0
  2. package/assets/styles/index.scss +67 -5
  3. package/components/elements/a-select-row/ASelectRowV2.vue +214 -0
  4. package/components/elements/a-select-row/index.vue +3 -5
  5. package/components/elements/accordion/AAccordion.vue +5 -3
  6. package/components/elements/accordion/AAccordionGroup/AAccordionGroup.vue +3 -3
  7. package/components/elements/alert/AAlert.vue +34 -47
  8. package/components/elements/bg-block/ABgBlock.vue +1 -1
  9. package/components/elements/button/AButton.vue +3 -3
  10. package/components/elements/button/AButtonV2.vue +133 -0
  11. package/components/elements/button-login/index.vue +6 -10
  12. package/components/elements/chip-wrapper/AChipWrapper.vue +1 -1
  13. package/components/elements/chips/AChips.vue +2 -2
  14. package/components/elements/companies/AOurClients.vue +3 -1
  15. package/components/elements/curve-block-v2/ACurveBlockV2.vue +85 -0
  16. package/components/elements/digit-badge/ADigitBadge.vue +24 -22
  17. package/components/elements/feature-description/AFeatureDescription.vue +1 -1
  18. package/components/elements/leave-note/ALeaveNote.vue +39 -18
  19. package/components/elements/pagination/APagination.vue +7 -7
  20. package/components/elements/segmented/ASegmentedV2.vue +151 -0
  21. package/components/elements/select/ASelect.vue +4 -4
  22. package/components/elements/select/ASelectMobile.vue +2 -2
  23. package/components/elements/select/ASelectV2.vue +588 -0
  24. package/components/elements/select/ui/select-button.vue +1 -1
  25. package/components/elements/show-more/AShowMoreV2.vue +26 -0
  26. package/components/elements/slider/ASlider.vue +174 -0
  27. package/components/elements/slider/ASliderItem.vue +31 -0
  28. package/components/elements/slider/types.ts +21 -0
  29. package/components/elements/star-rating/AStarRating.vue +12 -4
  30. package/components/elements/status-badge/AStatusBadge.vue +91 -44
  31. package/components/elements/step-slider/AStepSliderColCard.vue +232 -0
  32. package/components/elements/step-slider/AStepSliderColNumber.vue +178 -0
  33. package/components/elements/table/ATable.vue +1 -1
  34. package/components/elements/table/table.config.ts +2 -2
  35. package/components/elements/tree-select/ATreeSelect.vue +97 -113
  36. package/components/elements/tree-select/TreeService.ts +142 -207
  37. package/components/elements/tree-select/components/ATreeSelectNode.vue +104 -0
  38. package/components/elements/tree-select/types.ts +40 -11
  39. package/components/elements/tree-select/utils.ts +30 -0
  40. package/components/elements/tree-select-modal/ATreeSelectModal.vue +217 -0
  41. package/components/features/color-mode/AColorMode.client.vue +74 -32
  42. package/components/features/dropdown/ADropdownV2.vue +140 -0
  43. package/components/features/lang-switcher/lang-switcher.vue +125 -40
  44. package/components/features/payment/banner/BasicPlusLimitBanner.vue +3 -3
  45. package/components/features/payment/banner/PaymentBanner.vue +3 -3
  46. package/components/features/payment/banner/UpSellBanner.vue +3 -3
  47. package/components/features/payment/process/PaymentKaspiQrSidePanel.vue +45 -27
  48. package/components/features/payment/process/PaymentKaspiRedirectSidePanel.vue +34 -23
  49. package/components/features/payment/process/PaymentMethodSidePanel.vue +66 -49
  50. package/components/features/payment/process/PaymentProcess.vue +6 -6
  51. package/components/features/payment/process/PaymentTopUpSidePanel.vue +49 -63
  52. package/components/features/pk-mobile-services/APkMobileServices.vue +6 -28
  53. package/components/features//321/201hange-version/AChangeVersion.vue +2 -2
  54. package/components/forms/checkbox/ACheckbox.vue +1 -1
  55. package/components/forms/checkbox/ACheckboxV2.vue +229 -0
  56. package/components/forms/feedback-form/FeedbackForm.vue +8 -8
  57. package/components/forms/feedback-form/FeedbackFormV2.vue +182 -0
  58. package/components/forms/input/AInputV2.vue +542 -0
  59. package/components/forms/input/date/AInputDate.vue +2 -2
  60. package/components/forms/input/password/AInputPassword.vue +8 -2
  61. package/components/forms/input/standard/AInputStandard.vue +3 -3
  62. package/components/forms/input/textarea/ATextarea.vue +2 -2
  63. package/components/forms/input/textarea/ATextareaV2.vue +248 -0
  64. package/components/forms/toggle/AToggle.vue +2 -3
  65. package/components/forms/toggle/AToggleV2.vue +71 -0
  66. package/components/modals/AnotherDeviceModal.vue +22 -18
  67. package/components/modals/ApplicationAcceptedModal.vue +12 -15
  68. package/components/modals/ConnectingTariffModal.vue +13 -20
  69. package/components/modals/ContactsMobileModel.vue +1 -1
  70. package/components/modals/ContentNavigationModal.vue +77 -333
  71. package/components/modals/Insufficient-funds-modal.vue +18 -33
  72. package/components/modals/LimitReachedModal.vue +17 -14
  73. package/components/modals/NoAccessModal.vue +9 -11
  74. package/components/modals/PaymentMethodModal.vue +1 -1
  75. package/components/modals/ReportBugConfirmModal.vue +12 -10
  76. package/components/modals/ReportBugModal.vue +46 -38
  77. package/components/modals/Resend.vue +9 -10
  78. package/components/modals/SubmitApplicationModal.vue +27 -24
  79. package/components/modals/id/IdBanner.vue +3 -3
  80. package/components/modals/id/IdConfirmAccountOtpModal.vue +4 -9
  81. package/components/modals/id/IdLoginModal.vue +3 -8
  82. package/components/modals/id/IdModals.vue +23 -10
  83. package/components/modals/id/IdRecoveryModal.vue +1 -1
  84. package/components/modals/id/IdTwoFactorModal.vue +3 -8
  85. package/components/navigation/bottom-navigation/ABottomNavigation.vue +1 -1
  86. package/components/navigation/breadcrumbs/ABreadcrumbs.vue +106 -45
  87. package/components/navigation/breadcrumbs/types.ts +3 -0
  88. package/components/navigation/footer/AFooter.vue +39 -40
  89. package/components/navigation/footer/ui/a-footer-accordion.vue +9 -9
  90. package/components/navigation/header/AHeader.vue +68 -51
  91. package/components/navigation/header/AlmatyContacts.vue +78 -78
  92. package/components/navigation/header/CardGallery.vue +9 -7
  93. package/components/navigation/header/ContactMenu.vue +26 -92
  94. package/components/navigation/header/HeaderLink.vue +181 -213
  95. package/components/navigation/header/HeaderUsage.vue +139 -0
  96. package/components/navigation/header/ListItem.vue +2 -2
  97. package/components/navigation/header/NavCard.vue +1 -1
  98. package/components/navigation/header/NavList.vue +33 -92
  99. package/components/navigation/header/NotificationsMenu.vue +2 -3
  100. package/components/navigation/header/ProductMenu.vue +81 -127
  101. package/components/navigation/header/ProfileMenu.vue +122 -151
  102. package/components/navigation/header/SystemNotification.vue +108 -0
  103. package/components/navigation/mobile-navigation/AMobileNavigation.vue +23 -15
  104. package/components/navigation/pill-tabs/APillTabs.vue +2 -2
  105. package/components/navigation/pill-tabs/APillTabsV2.vue +226 -0
  106. package/components/overlays/drawer/ADrawerV2.vue +335 -0
  107. package/components/overlays/modal/AModal.vue +4 -4
  108. package/components/overlays/modal/AModalV2.vue +397 -0
  109. package/components/overlays/side-panel/ASidePanel.vue +10 -7
  110. package/components/overlays/sideover/ASlideover.vue +6 -6
  111. package/components/overlays/tooltip/ATooltip.vue +1 -1
  112. package/components/overlays/tooltip/ATooltipV2.vue +223 -0
  113. package/components/overlays/tooltip/types.ts +26 -0
  114. package/components/overlays/tooltip/useTooltipTrigger.ts +101 -0
  115. package/components/transitions/ATransitionHeight.vue +1 -1
  116. package/composables/useAccessTokenCookie.ts +25 -0
  117. package/composables/useActiveNavigation.ts +84 -0
  118. package/composables/useChipOverflow.ts +92 -0
  119. package/composables/useHeaderNavigationLinks.ts +140 -98
  120. package/icons/archive.vue +16 -0
  121. package/icons/arrow/arrow-left-right.vue +8 -0
  122. package/icons/arrow/arrow-right.vue +14 -0
  123. package/icons/arrow/arrows-in.vue +11 -0
  124. package/icons/arrow/arrows-out.vue +11 -0
  125. package/icons/arrow/arrows-resize-in.vue +38 -0
  126. package/icons/arrow/arrows-resize-out.vue +17 -0
  127. package/icons/bill.vue +3 -0
  128. package/icons/bot.vue +52 -0
  129. package/icons/briefcase.vue +14 -0
  130. package/icons/building.vue +9 -0
  131. package/icons/car-side.vue +16 -0
  132. package/icons/cart.vue +15 -0
  133. package/icons/chart-no-axes-column.vue +3 -0
  134. package/icons/clock-time.vue +24 -0
  135. package/icons/cloud/cloud-upload.vue +3 -0
  136. package/icons/code.vue +9 -0
  137. package/icons/compare-outlined.vue +8 -0
  138. package/icons/dots-horizontal.vue +31 -0
  139. package/icons/download-line.vue +13 -0
  140. package/icons/download-rounded.vue +15 -0
  141. package/icons/egov.vue +41 -0
  142. package/icons/elicense.vue +38 -0
  143. package/icons/favourite-bookmark-outline.vue +17 -0
  144. package/icons/file/file-check-corner.vue +3 -0
  145. package/icons/file/file-spreadsheet.vue +3 -0
  146. package/icons/file-pen.vue +31 -0
  147. package/icons/file-stack.vue +31 -0
  148. package/icons/file-types/excel.vue +131 -0
  149. package/icons/file-types/html.vue +13 -0
  150. package/icons/file-types/jpeg.vue +16 -0
  151. package/icons/file-types/pdf.vue +11 -0
  152. package/icons/file-types/png.vue +11 -0
  153. package/icons/file-types/rar.vue +11 -0
  154. package/icons/file-types/word.vue +50 -0
  155. package/icons/file-types/zip.vue +11 -0
  156. package/icons/gauge.vue +17 -0
  157. package/icons/git-compare.vue +38 -0
  158. package/icons/git-fork.vue +3 -0
  159. package/icons/graduation-cap.vue +31 -0
  160. package/icons/graph-loading.vue +34 -0
  161. package/icons/headset.vue +6 -0
  162. package/icons/help-question-circle.vue +26 -0
  163. package/icons/in-row-type.vue +46 -0
  164. package/icons/in-table-type.vue +29 -0
  165. package/icons/landmark.vue +3 -0
  166. package/icons/layers.vue +3 -0
  167. package/icons/letter/letter-a.vue +6 -0
  168. package/icons/letter/letter-b.vue +6 -0
  169. package/icons/letter/letter-c.vue +6 -0
  170. package/icons/letter/letter-d.vue +6 -0
  171. package/icons/letter/letter-e.vue +6 -0
  172. package/icons/link-url.vue +3 -0
  173. package/icons/list-tree.vue +3 -0
  174. package/icons/mail-question-mark.vue +8 -0
  175. package/icons/message/message-square.vue +3 -0
  176. package/icons/message-dotted.vue +30 -0
  177. package/icons/network.vue +3 -0
  178. package/icons/newspaper.vue +3 -0
  179. package/icons/notification-error.vue +17 -0
  180. package/icons/person.vue +22 -0
  181. package/icons/phone-call.vue +6 -0
  182. package/icons/phone-reversed.vue +3 -0
  183. package/icons/route.vue +7 -0
  184. package/icons/scan-search.vue +3 -0
  185. package/icons/settings.vue +26 -0
  186. package/icons/shield-alert.vue +31 -0
  187. package/icons/shield-verified.vue +14 -0
  188. package/icons/socials/facebook-color.vue +16 -0
  189. package/icons/socials/globe-color.vue +16 -0
  190. package/icons/socials/instagram-color.vue +46 -0
  191. package/icons/socials/linkedin-color.vue +14 -0
  192. package/icons/socials/telegram-color.vue +16 -0
  193. package/icons/socials/tiktok-color.vue +14 -0
  194. package/icons/socials/vk-color.vue +16 -0
  195. package/icons/socials/youtube-color.vue +16 -0
  196. package/icons/sparkles.vue +3 -0
  197. package/icons/sun.vue +13 -3
  198. package/icons/users-round.vue +3 -0
  199. package/icons/view-eye-open.vue +13 -0
  200. package/icons/workflow.vue +3 -0
  201. package/icons/zap.vue +3 -0
  202. package/lang/en.ts +49 -5
  203. package/lang/kk.ts +50 -6
  204. package/lang/ru.ts +51 -7
  205. package/package.json +1 -1
  206. package/plugins/toast.client.ts +38 -55
  207. package/shared/constans/pages.ts +8 -2
  208. package/tailwind.config.ts +147 -116
  209. package/utils/twMerge.ts +34 -0
  210. package/components/elements/tree-select/components/tree-select-nodes.vue +0 -91
  211. package/components/navigation/header/TopHeader.vue +0 -196
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import { PAGES } from '#adata-ui/shared/constans/pages'
2
+ import { useActiveNavigation } from '#adata-ui/composables/useActiveNavigation'
3
3
 
4
4
  interface NavList {
5
5
  title: string
@@ -13,119 +13,60 @@ const props = defineProps<{
13
13
  title: string
14
14
  link: string
15
15
  badge?: boolean
16
- to: string
16
+ to?: string
17
17
  navList: NavList[]
18
18
  currentModule: boolean
19
19
  }>()
20
20
 
21
- const colorMode = useColorMode()
22
-
23
- const isDark = computed(() => colorMode.value === 'dark')
21
+ const { isActiveService } = useActiveNavigation()
24
22
 
25
23
  function isActive(itemPath: string) {
26
24
  if (!props.currentModule) return false
27
-
28
- const currentUrl = window.location.href.split('/').filter(item => !['kk', 'en'].includes(item)).join('/')
29
- const section = PAGES[props.id]
30
-
31
- const currentPath = itemPath.split('/').filter(item => !['kk', 'en'].includes(item)).join('/')
32
-
33
- if (currentUrl === currentPath) return true
34
-
35
- if (currentPath.endsWith('/')) {
36
- let atLeastOne = false
37
-
38
- for (const key in section) {
39
- const path = section[key]
40
- if (key !== 'main') {
41
- const includes = currentUrl.includes(path) || currentUrl.includes('car-result')
42
- if (includes) {
43
- atLeastOne = true
44
- break
45
- }
46
- }
47
- }
48
-
49
- return !atLeastOne
50
- }
51
-
52
- if (currentPath.includes('check-car')) {
53
- if (currentUrl.includes('car-result')) {
54
- return true
55
- }
56
- }
57
-
58
- for (const key in section) {
59
- const path = section[key]
60
- if (key !== 'main') {
61
- const includesBoth = currentUrl.includes(path) && currentUrl.startsWith(currentPath)
62
- if (includesBoth) {
63
- return true
64
- }
65
- }
66
- }
67
-
68
- return false
25
+ return isActiveService(itemPath)
69
26
  }
70
27
  </script>
71
28
 
72
29
  <template>
73
- <div
74
- class="flex flex-col gap-2"
75
- :class="{ 'rounded-md bg-gray-50 p-2 dark:bg-gray-800': currentModule }"
76
- >
77
- <nuxt-link-locale class="flex items-center gap-2 pl-[10px] hover:text-blue-700 dark:hover:text-blue-500" :to="link">
78
- <p class="text-sm font-semibold">
79
- {{ title }}
80
- </p>
81
- <a-status-badge
82
- v-if="badge"
83
- type="primary"
84
- class="w-fit"
85
- size="xs"
86
- view="inverted"
30
+ <section class="group/section overflow-hidden flex flex-col ">
31
+ <div class="mb-3 flex items-start justify-between gap-2">
32
+ <nuxt-link-locale
33
+ :to="link"
34
+ class="group/title flex min-w-0 items-center gap-2 text-base font-semibold text-deepblue-900 transition-colors hover:text-blue-700 dark:text-gray-100 dark:hover:text-blue-500"
87
35
  >
88
- NEW
89
- </a-status-badge>
90
- </nuxt-link-locale>
91
- <ul class="flex flex-col gap-2">
36
+ <span
37
+ class="flex size-8 shrink-0 items-center justify-center rounded-md bg-blue-50 text-blue-500 transition-colors group-hover/title:bg-blue-700 group-hover/title:text-white dark:bg-blue-500/10 dark:text-blue-500 dark:group-hover/title:bg-blue-500">
38
+ <component
39
+ :is="icon"
40
+ class="size-4"
41
+ />
42
+ </span>
43
+ <span class="block truncate normal-case">{{ title }}</span>
44
+ </nuxt-link-locale>
45
+ </div>
46
+
47
+ <ul class="grid gap-1">
92
48
  <li
93
49
  v-for="item in navList"
94
50
  :key="item.title"
95
- class="flex w-full items-center gap-2 rounded-md px-[10px] py-[6px] hover:bg-blue-100 dark:hover:bg-gray-200/10 text-gray-600 dark:text-gray-200 hover:text-blue-700 dark:hover:text-blue-500"
96
- :class="{ 'bg-blue-100 dark:bg-gray-200/10': isActive(item.to) }"
97
51
  >
98
- <div class="rounded-lg p-1" :class="{ 'bg-gradient-blue-dark ': isDark, 'bg-gradient-blue-light': !isDark }">
99
- <component
100
- :is="item.icon"
101
- class="size-[18px] text-white dark:text-gray-900"
102
- />
103
- </div>
104
52
  <nuxt-link-locale
105
53
  v-if="item.to"
106
54
  :to="item.to"
107
55
  itemprop="name"
108
- class="inline-block normal-case w-full cursor-pointer align-middle text-sm font-semibold text-inherit hover:text-inherit"
56
+ class="group/item flex items-center gap-2 rounded-md px-2 py-1.5 transition-colors hover:bg-gray-50 dark:hover:bg-gray-200/10"
57
+ :class="{ 'bg-blue-100 dark:bg-gray-200/10': isActive(item.to) }"
109
58
  >
110
- {{ item.title }}
59
+ <a-icon-chevron-right class="size-[14px] shrink-0 text-gray-300 group-hover/item:text-blue-500 dark:group-hover/item:text-blue-700" />
60
+ <span
61
+ class="min-w-0 text-sm normal-case transition-colors group-hover/item:text-deepblue-900 group-hover/item:font-semibold dark:group-hover/item:text-gray-100"
62
+ :class="isActive(item.to)
63
+ ? 'text-blue-700 dark:text-blue-500'
64
+ : 'text-gray-600 dark:text-gray-300'"
65
+ >{{ item.title }}</span>
111
66
  </nuxt-link-locale>
112
- <div
113
- v-else
114
- class="inline-block w-full align-middle text-sm font-semibold text-gray-600 dark:text-gray-200"
115
- >
116
- {{ item.title }}
117
- </div>
118
67
  </li>
119
68
  </ul>
120
- </div>
121
- </template>
122
-
123
- <style scoped lang="scss">
124
- .bg-gradient-blue-dark {
125
- background: linear-gradient(236.46deg, #4FBDFF -2.39%, #1B98E2 79.1%);
126
- }
127
69
 
128
- .bg-gradient-blue-light {
129
- background: linear-gradient(236.46deg, #479FFF -2.39%, #0070EB 79.1%);
130
- }
131
- </style>
70
+ <slot name="bottom" />
71
+ </section>
72
+ </template>
@@ -14,9 +14,8 @@ defineProps<{
14
14
  }>()
15
15
  </script>
16
16
  <template>
17
- <div class="flex w-[423px] flex-col gap-4 rounded-lg bg-white p-4 dark:bg-gray-900">
17
+ <div class="flex w-[423px] flex-col gap-4 rounded-md bg-white p-4 dark:bg-gray-900">
18
18
  <div class="flex items-center justify-between">
19
- <!-- <h4 class="heading-04">{{ $t('header.notifications.title') }}</h4>-->
20
19
  <h4 class="heading-04">Уведомления</h4>
21
20
  <ADigitBadge :value="`${notifications?.length} новых`" size="lg" />
22
21
  </div>
@@ -26,7 +25,7 @@ defineProps<{
26
25
  <li
27
26
  v-for="(notification, idx) in notifications"
28
27
  :key="idx"
29
- class="flex items-center justify-between gap-2.5 rounded-md bg-gray-50 px-4 py-2 dark:bg-gray-950"
28
+ class="flex items-center justify-between gap-2.5 rounded-sm bg-gray-50 px-4 py-2 dark:bg-gray-950"
30
29
  >
31
30
  <div class="rounded-full bg-blue-500 p-2">
32
31
  <icon-user />
@@ -1,146 +1,100 @@
1
1
  <script setup lang="ts">
2
- import { useHeaderNavigationLinks } from '#adata-ui/composables/useHeaderNavigationLinks'
3
2
  import NavList from '#adata-ui/components/navigation/header/NavList.vue'
4
- import CardGallery from '#adata-ui/components/navigation/header/CardGallery.vue'
5
-
6
- const props = withDefaults(
7
- defineProps<{
8
- animation?: string
9
- index?: number
10
- url?: string
11
- }>(),
12
- {
13
- animation: 'next',
14
- index: 0,
15
- url: ''
16
- }
17
- )
3
+ import { useActiveNavigation } from '#adata-ui/composables/useActiveNavigation'
4
+ import { useHeaderNavigationLinks } from '#adata-ui/composables/useHeaderNavigationLinks'
5
+ import { useUrls } from '#adata-ui/composables/useUrls'
6
+ import AIconArrowRight from '#adata-ui/icons/arrow/arrow-right.vue'
7
+ import AIconDownloadRounded from '#adata-ui/icons/download-rounded.vue'
8
+ import { PAGES } from '#adata-ui/shared/constans/pages'
18
9
 
10
+ defineProps<{ url?: string }>()
19
11
  defineEmits(['outerClick', 'mouseOver'])
20
12
 
21
- const pageUrl = useRequestURL()
22
- const filteredItems = useHeaderNavigationLinks()
13
+ const urls = useUrls()
14
+ const { t, locale } = useI18n()
15
+ const modules = useHeaderNavigationLinks()
16
+ const { isActiveModule } = useActiveNavigation()
23
17
 
24
- function isCurrentModule(currentModule: string) {
25
- if (currentModule === 'fines') return 'avto'
26
- if (currentModule === 'analytics') return 'analytics'
27
- if (currentModule === 'compliance') return 'ac'
28
- if (currentModule === 'fea') return 'tnved'
29
- if (currentModule === 'tenders') return 'zakupki'
18
+ const COLUMN_KEYS = [['edo'], ['pk'], ['compliance', 'fines'], ['tenders', 'analytics'], ['fea', 'work']]
19
+ const catalogColumns = computed(() =>
20
+ COLUMN_KEYS.map(keys =>
21
+ keys
22
+ .map(key => modules.value.find(module => module.key === key))
23
+ .filter((module): module is NonNullable<typeof module> => module !== undefined),
24
+ ),
25
+ )
30
26
 
31
- return currentModule
27
+ function handleExportClick() {
28
+ navigateToLocalizedPage({
29
+ locale: locale.value,
30
+ projectUrl: urls.pk,
31
+ path: PAGES.pk.unload,
32
+ })
32
33
  }
33
34
  </script>
34
35
 
35
36
  <template>
36
37
  <div class="capitalize">
37
38
  <div class="relative bg-white dark:bg-gray-950">
38
- <transition :name="animation">
39
- <div
40
- :key="index"
41
- class="a-container py-8"
42
- >
43
- <div class="flex justify-between gap-5">
44
- <div class="flex gap-[10px] divide-x divide-gray-500/50">
45
- <div class="flex flex-col gap-5 w-[290px]">
46
- <nav-list
47
- v-for="module in filteredItems.slice(0,3)"
48
- :id="module.key"
49
- :key="module.key"
50
- :current-module="pageUrl.hostname.startsWith(isCurrentModule(module.key))"
51
- :title="module.name"
52
- :link="module.link"
53
- :nav-list="module.items"
54
- :to="module.to"
55
- :icon="module.icon"
56
- :badge="module.is_new"
57
- :data-test-id="module.data_attribute"
58
- />
59
- </div>
60
- <div class="flex flex-col gap-5 w-[290px] pl-[10px]">
61
- <nav-list
62
- v-for="module in filteredItems.slice(3,5)"
63
- :id="module.key"
64
- :key="module.key"
65
- :current-module="pageUrl.hostname.startsWith(isCurrentModule(module.key))"
66
- :title="module.name"
67
- :link="module.link"
68
- :nav-list="module.items"
69
- :to="module.to"
70
- :icon="module.icon"
71
- :badge="module.is_new"
72
- :data-test-id="module.data_attribute"
73
- />
74
- </div>
75
- <div class="flex flex-col gap-5 w-[330px] pl-[10px]">
76
- <nav-list
77
- v-for="module in filteredItems.slice(5,8)"
78
- :id="module.key"
79
- :key="module.key"
80
- :current-module="pageUrl.hostname.startsWith(isCurrentModule(module.key))"
81
- :title="module.name"
82
- :link="module.link"
83
- :nav-list="module.items"
84
- :to="module.to"
85
- :icon="module.icon"
86
- :badge="module.is_new"
87
- :data-test-id="module.data_attribute"
88
- />
89
- </div>
39
+ <div class="a-container max-h-[calc(100dvh-4rem)] overflow-y-auto overscroll-contain py-8">
40
+ <div class="flex justify-between gap-5">
41
+ <div class="grid min-w-0 flex-1 grid-cols-5 gap-3">
42
+ <div
43
+ v-for="(column, index) in catalogColumns"
44
+ :key="index"
45
+ class="flex flex-col gap-[22px]"
46
+ :class="index > 0 ? 'border-l border-gray-100 pl-3 dark:border-gray-800' : ''"
47
+ >
48
+ <nav-list
49
+ v-for="module in column"
50
+ :id="module.key"
51
+ :key="module.key"
52
+ :current-module="isActiveModule(module)"
53
+ :title="module.name"
54
+ :link="module.link"
55
+ :nav-list="module.items"
56
+ :to="module.to"
57
+ :icon="module.icon"
58
+ :badge="module.is_new"
59
+ :data-test-id="module.data_attribute"
60
+ >
61
+ <template
62
+ v-if="module.key === 'edo'"
63
+ #bottom
64
+ >
65
+ <div class="mt-4 flex flex-col gap-4 rounded-lg bg-blue-700 p-4 normal-case text-white dark:bg-blue-500">
66
+ <div class="flex items-center gap-3">
67
+ <span class="rounded-[10px] bg-white p-[10px] dark:bg-gray-950">
68
+ <a-icon-download-rounded class="size-5 text-blue-700 dark:text-blue-500" />
69
+ </span>
70
+ <span class="font-semibold text-white dark:text-gray-950">
71
+ {{ t('header.products.exportCard.title') }}
72
+ </span>
73
+ </div>
74
+
75
+ <div class="text-xs text-white dark:text-gray-950">
76
+ {{ t('header.products.exportCard.subTitle') }}
77
+ </div>
78
+
79
+ <a-button-v2
80
+ view="soft"
81
+ class="!h-9 w-fit !bg-white text-blue-700 dark:!bg-gray-950 dark:text-blue-500"
82
+ size="sm"
83
+ :icon="AIconArrowRight"
84
+ icon-right
85
+ @click="handleExportClick"
86
+ >
87
+ <span class="text-sm">
88
+ {{ t('header.products.exportCard.receive') }}
89
+ </span>
90
+ </a-button-v2>
91
+ </div>
92
+ </template>
93
+ </nav-list>
90
94
  </div>
91
- <card-gallery class="hidden xl:block" />
92
95
  </div>
93
96
  </div>
94
- </transition>
95
- <button
96
- class="absolute right-8 top-4"
97
- @click="$emit('outerClick')"
98
- >
99
- <a-icon-x-mark
100
- width="32"
101
- height="32"
102
- />
103
- </button>
97
+ </div>
104
98
  </div>
105
99
  </div>
106
100
  </template>
107
-
108
- <style scoped lang="scss">
109
- $percent: 30%;
110
- .next-enter-from,
111
- .next-leave-to {
112
- opacity: 0;
113
- transform: translateX($percent);
114
- position: absolute;
115
- }
116
-
117
- .next-enter-active {
118
- transition: all 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275);
119
- }
120
-
121
- .next-leave-active {
122
- transition: all 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275);
123
- opacity: 0;
124
- transform: translateX(-$percent);
125
- }
126
-
127
- // Backwards transition
128
-
129
- .prev-enter-from,
130
- .prev-leave-to {
131
- position: absolute;
132
-
133
- opacity: 0;
134
- transform: translateX(-$percent);
135
- }
136
-
137
- .prev-enter-active {
138
- transition: all 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275);
139
- }
140
-
141
- .prev-leave-active {
142
- transition: all 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275);
143
- opacity: 0;
144
- transform: translateX($percent);
145
- }
146
- </style>