adata-ui 0.3.99 → 2.0.0

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 (535) hide show
  1. package/-error.vue +170 -0
  2. package/.editorconfig +12 -0
  3. package/.eslintrc.cjs +4 -0
  4. package/.gitlab-ci.yml +16 -0
  5. package/.nuxtrc +1 -0
  6. package/.nvmrc +1 -0
  7. package/.playground/app.config.ts +5 -0
  8. package/.playground/nuxt.config.ts +4 -0
  9. package/.prettierignore +24 -0
  10. package/.prettierrc +10 -0
  11. package/README.md +75 -7
  12. package/app.config.ts +27 -0
  13. package/app.vue +7 -0
  14. package/assets/img/adata-mobile.png +0 -0
  15. package/assets/img/analytics-mobile.png +0 -0
  16. package/assets/img/compliance-mobile.png +0 -0
  17. package/assets/img/empty-box.png +0 -0
  18. package/assets/img/fea-mobile.png +0 -0
  19. package/assets/img/fines-mobile.png +0 -0
  20. package/assets/img/pk-mobile.png +0 -0
  21. package/assets/img/tenders-mobile.png +0 -0
  22. package/assets/img/work-mobile.png +0 -0
  23. package/assets/styles/index.scss +101 -0
  24. package/assets/styles/modules/_base.scss +5 -0
  25. package/assets/styles/modules/_typography.scss +152 -0
  26. package/components/elements/README.md +1 -0
  27. package/components/elements/a-select-row/index.vue +140 -0
  28. package/components/elements/accordion/AAccordion.vue +196 -0
  29. package/components/elements/accordion/AAccordionGroup/AAccordionGroup.vue +145 -0
  30. package/components/elements/accordion/AAccordionGroup/types.ts +20 -0
  31. package/components/elements/accordion/AAccordionGroup/ui.config.ts +22 -0
  32. package/components/elements/accordion/types.ts +14 -0
  33. package/components/elements/accordion/ui.config.ts +22 -0
  34. package/components/elements/alert/AAlert.vue +65 -0
  35. package/components/elements/banner/ABanner.vue +49 -0
  36. package/components/elements/bg-block/ABgBlock.vue +11 -0
  37. package/components/elements/button/AButton.vue +188 -0
  38. package/components/elements/button/types.ts +24 -0
  39. package/components/elements/calendar/ACalendar.vue +83 -0
  40. package/components/elements/carousel/ACarousel.vue +159 -0
  41. package/components/elements/carousel/config.ui.ts +15 -0
  42. package/components/elements/carousel/types.ts +18 -0
  43. package/components/elements/chip-wrapper/AChipWrapper.vue +80 -0
  44. package/components/elements/chip-wrapper/types.ts +12 -0
  45. package/components/elements/chips/AChips.vue +32 -0
  46. package/components/elements/companies/AOurClients.vue +42 -0
  47. package/components/elements/curve-block/ACurveBlock.vue +196 -0
  48. package/components/elements/digit-badge/ADigitBadge.vue +83 -0
  49. package/components/elements/error-template/index.vue +48 -0
  50. package/components/elements/error-template/types.ts +23 -0
  51. package/components/elements/feature-description/AFeatureDescription.vue +112 -0
  52. package/components/elements/illustrations/noAccess.vue +62 -0
  53. package/components/elements/infinite-carousel/AInfiniteCarousel.vue +55 -0
  54. package/components/elements/infinite-scroll/AInfiniteScroll.vue +33 -0
  55. package/components/elements/leave-note/ALeaveNote.vue +77 -0
  56. package/components/elements/pagination/APagination.vue +110 -0
  57. package/components/elements/photos-animation/APhotosAnimation.vue +83 -0
  58. package/components/elements/select/ASelect.vue +389 -0
  59. package/components/elements/select/ASelectMobile.vue +186 -0
  60. package/components/elements/select/ui/select-button.vue +112 -0
  61. package/components/elements/select/ui/select-list.vue +99 -0
  62. package/components/elements/show-more/AShowMore.vue +35 -0
  63. package/components/elements/skeleton/ASkeleton.vue +44 -0
  64. package/components/elements/star-rating/AStarRating.vue +181 -0
  65. package/components/elements/star-rating/types.ts +8 -0
  66. package/components/elements/star-rating/ui/Star.vue +74 -0
  67. package/components/elements/status-badge/AStatusBadge.vue +74 -0
  68. package/components/elements/table/ATable.vue +93 -0
  69. package/components/elements/table/table.config.ts +32 -0
  70. package/components/elements/tree-select/ATreeSelect.vue +169 -0
  71. package/components/elements/tree-select/TreeService.ts +249 -0
  72. package/components/elements/tree-select/components/tree-select-nodes.vue +90 -0
  73. package/components/elements/tree-select/types.ts +34 -0
  74. package/components/elements/tree-select-mobile/ATreeSelectMobile.vue +79 -0
  75. package/components/elements/tree-select-mobile/components/ATreeSelectNodesMobile.vue +175 -0
  76. package/components/features/color-mode/AColorMode.client.vue +53 -0
  77. package/components/features/dropdown/ADropdown.vue +124 -0
  78. package/components/features/go-top/GoTop.vue +58 -0
  79. package/components/features/lang-switcher/lang-switcher.vue +56 -0
  80. package/components/features/pk-mobile-services/APkMobileServices.vue +130 -0
  81. package/components/features//321/201hange-version/AChangeVersion.vue +20 -0
  82. package/components/forms/README.md +1 -0
  83. package/components/forms/checkbox/ACheckbox.vue +151 -0
  84. package/components/forms/feedback-form/FeedbackForm.vue +171 -0
  85. package/components/forms/input/button/AInputButton.vue +53 -0
  86. package/components/forms/input/date/AInputDate.vue +213 -0
  87. package/components/forms/input/password/AInputPassword.vue +53 -0
  88. package/components/forms/input/standard/AInputStandard.vue +412 -0
  89. package/components/forms/input/textarea/ATextarea.vue +200 -0
  90. package/components/forms/radio-button/ARadioButton.vue +87 -0
  91. package/components/forms/request-demo/ARequestDemo.vue +90 -0
  92. package/components/forms/toggle/AToggle.vue +157 -0
  93. package/components/forms/toggle/types.ts +16 -0
  94. package/components/modals/AboutTariffModal.vue +113 -0
  95. package/components/modals/AnotherDeviceModal.vue +59 -0
  96. package/components/modals/ApplicationAcceptedModal.vue +47 -0
  97. package/components/modals/AuthModal.vue +50 -0
  98. package/components/modals/ConnectingTariffModal.vue +68 -0
  99. package/components/modals/ContactsMobileModel.vue +182 -0
  100. package/components/modals/ContentNavigationModal.vue +282 -0
  101. package/components/modals/Insufficient-funds-modal.vue +74 -0
  102. package/components/modals/LimitReachedModal.vue +29 -0
  103. package/components/modals/NoAccessModal.vue +37 -0
  104. package/components/modals/PaymentMethodModal.vue +101 -0
  105. package/components/modals/RedirectsBanksModal.vue +69 -0
  106. package/components/modals/ReplenishModal.vue +132 -0
  107. package/components/modals/ReportBugConfirmModal.vue +30 -0
  108. package/components/modals/ReportBugModal.vue +156 -0
  109. package/components/modals/SubmitApplicationModal.vue +111 -0
  110. package/components/navigation/README.md +1 -0
  111. package/components/navigation/bottom-navigation/ABottomNavigation.vue +101 -0
  112. package/components/navigation/breadcrumbs/ABreadcrumbs.vue +66 -0
  113. package/components/navigation/breadcrumbs/types.ts +4 -0
  114. package/components/navigation/footer/AFooter.vue +126 -0
  115. package/components/navigation/footer/NewFooter.vue +276 -0
  116. package/components/navigation/footer/ui/footer-acccordion.vue +119 -0
  117. package/components/navigation/footer/ui/new-footer-accordion.vue +120 -0
  118. package/components/navigation/header/AHeader.vue +187 -0
  119. package/components/navigation/header/AlmatyContacts.vue +143 -0
  120. package/components/navigation/header/AstanaContacts.vue +65 -0
  121. package/components/navigation/header/CardGallery.vue +248 -0
  122. package/components/navigation/header/ContactMenu.vue +114 -0
  123. package/components/navigation/header/HeaderLink.vue +247 -0
  124. package/components/navigation/header/ListItem.vue +31 -0
  125. package/components/navigation/header/NavCard.vue +41 -0
  126. package/components/navigation/header/NavList.vue +115 -0
  127. package/components/navigation/header/NotificationsMenu.vue +51 -0
  128. package/components/navigation/header/ProductMenu.vue +212 -0
  129. package/components/navigation/header/ProfileMenu.vue +189 -0
  130. package/components/navigation/header/TopHeader.vue +181 -0
  131. package/components/navigation/header/types.ts +28 -0
  132. package/components/navigation/line-tabs/ALineTabs.vue +111 -0
  133. package/components/navigation/line-tabs/types.ts +21 -0
  134. package/components/navigation/mobile-navigation/AMobileNavigation.vue +104 -0
  135. package/components/navigation/pill-tabs/APillTabs.vue +157 -0
  136. package/components/navigation/pill-tabs/types.ts +22 -0
  137. package/components/navigation/side-navigation/ASideNavigation.vue +404 -0
  138. package/components/overlays/README.md +1 -0
  139. package/components/overlays/modal/AModal.vue +332 -0
  140. package/components/overlays/sideover/ASlideover.vue +351 -0
  141. package/components/overlays/tooltip/ATooltip.vue +242 -0
  142. package/components/transitions/ATransitionHeight.vue +67 -0
  143. package/components/utils/index.ts +19 -0
  144. package/composables/highlight.ts +18 -0
  145. package/composables/modalsState.ts +8 -0
  146. package/composables/projectState.ts +2 -0
  147. package/composables/useAdaptive.ts +46 -0
  148. package/composables/useCarouselScroll.ts +49 -0
  149. package/composables/useHeaderNavigationLinks.ts +576 -0
  150. package/composables/useUIValidation.ts +16 -0
  151. package/histoire.config.ts +10 -0
  152. package/i18n/i18n.config.ts +21 -0
  153. package/i18n.config.ts +21 -0
  154. package/icons/adata-logo.vue +17 -0
  155. package/icons/arrow/arrow-bottom-left-on-square.vue +5 -0
  156. package/icons/arrow/arrow-circle-down.vue +20 -0
  157. package/icons/arrow/arrow-circle-reset.vue +16 -0
  158. package/icons/arrow/arrow-corner.vue +9 -0
  159. package/icons/arrow/arrow-graph-down.vue +13 -0
  160. package/icons/arrow/arrow-graph-up.vue +14 -0
  161. package/icons/arrow/arrow-square-down.vue +15 -0
  162. package/icons/arrow/arrow-top-right-on-square.vue +6 -0
  163. package/icons/arrow-currency-gray.vue +5 -0
  164. package/icons/arrow-currency-green.vue +5 -0
  165. package/icons/arrow-currency-red.vue +5 -0
  166. package/icons/arrow-side-up.vue +6 -0
  167. package/icons/avatar.vue +12 -0
  168. package/icons/block.vue +16 -0
  169. package/icons/bookmark/bookmark-filled.vue +18 -0
  170. package/icons/bookmark/bookmark.vue +5 -0
  171. package/icons/browsers/browser-duck.vue +65 -0
  172. package/icons/browsers/browser-google.vue +24 -0
  173. package/icons/browsers/browser-yandex.vue +13 -0
  174. package/icons/building-vector.vue +7 -0
  175. package/icons/calculator.vue +7 -0
  176. package/icons/calendar.vue +24 -0
  177. package/icons/car.vue +7 -0
  178. package/icons/check/check-circle.vue +6 -0
  179. package/icons/check/check-shield.vue +14 -0
  180. package/icons/check/check.vue +17 -0
  181. package/icons/check/checkmark-circle.vue +6 -0
  182. package/icons/checkbox/checkbox-active.vue +17 -0
  183. package/icons/checkbox/checkbox-empty.vue +10 -0
  184. package/icons/checkbox/checkbox-intermediate.vue +7 -0
  185. package/icons/chevron/chevron-down.vue +5 -0
  186. package/icons/chevron/chevron-left.vue +5 -0
  187. package/icons/chevron/chevron-right.vue +5 -0
  188. package/icons/chevron/chevron-up.vue +5 -0
  189. package/icons/chevron/double-chevron-right.vue +12 -0
  190. package/icons/clipboard-text.vue +7 -0
  191. package/icons/clock.vue +9 -0
  192. package/icons/company/company-bazis.vue +21 -0
  193. package/icons/company/company-bereke.vue +25 -0
  194. package/icons/company/company-bigroup.vue +16 -0
  195. package/icons/company/company-erg.vue +17 -0
  196. package/icons/company/company-forte.vue +23 -0
  197. package/icons/company/company-halyk.vue +15 -0
  198. package/icons/company/company-jusan.vue +14 -0
  199. package/icons/company/company-kaspi.vue +14 -0
  200. package/icons/company/company-mycar.vue +13 -0
  201. package/icons/company/company-samruk.vue +21 -0
  202. package/icons/company-egov-small.vue +15 -0
  203. package/icons/company.vue +8 -0
  204. package/icons/copy.vue +7 -0
  205. package/icons/currency/currency-dollar.vue +16 -0
  206. package/icons/currency/currency-down.vue +22 -0
  207. package/icons/currency/currency-eur.vue +57 -0
  208. package/icons/currency/currency-rub.vue +7 -0
  209. package/icons/currency/currency-usd.vue +221 -0
  210. package/icons/currency/currency-yuan.vue +25 -0
  211. package/icons/delete.vue +7 -0
  212. package/icons/document.vue +5 -0
  213. package/icons/download.vue +11 -0
  214. package/icons/edit.vue +7 -0
  215. package/icons/education.vue +16 -0
  216. package/icons/egov-small.vue +7 -0
  217. package/icons/expand-window.vue +7 -0
  218. package/icons/eye-closed.vue +26 -0
  219. package/icons/eye-open.vue +7 -0
  220. package/icons/eye-opened.vue +23 -0
  221. package/icons/file/file.vue +16 -0
  222. package/icons/file/files.vue +16 -0
  223. package/icons/filter.vue +5 -0
  224. package/icons/flag.vue +7 -0
  225. package/icons/gift.vue +8 -0
  226. package/icons/globe.vue +16 -0
  227. package/icons/graph-pie.vue +14 -0
  228. package/icons/hand/hand-thumb-up-filled.vue +5 -0
  229. package/icons/hand/hand-thumb-up.vue +5 -0
  230. package/icons/hand-with-phone/hand-with-phone-dark.vue +52 -0
  231. package/icons/hand-with-phone/hand-with-phone-light.vue +52 -0
  232. package/icons/handshake.vue +5 -0
  233. package/icons/hcheck.vue +14 -0
  234. package/icons/hdocument.vue +7 -0
  235. package/icons/history.vue +5 -0
  236. package/icons/horizontal-more.vue +13 -0
  237. package/icons/hummer.vue +16 -0
  238. package/icons/id.vue +7 -0
  239. package/icons/info/info-circle.vue +29 -0
  240. package/icons/invoice.vue +7 -0
  241. package/icons/judge.vue +14 -0
  242. package/icons/link-chain.vue +28 -0
  243. package/icons/link.vue +7 -0
  244. package/icons/linkedin.vue +24 -0
  245. package/icons/loader-circle.vue +27 -0
  246. package/icons/location.vue +8 -0
  247. package/icons/lock.vue +5 -0
  248. package/icons/logo.vue +15 -0
  249. package/icons/logout.vue +16 -0
  250. package/icons/magnify/magnifying-glass-minus.vue +8 -0
  251. package/icons/magnify/magnifying-glass-plus.vue +9 -0
  252. package/icons/magnify/magnifying-glass.vue +9 -0
  253. package/icons/mail.vue +7 -0
  254. package/icons/main-filter.vue +5 -0
  255. package/{dist/img/location.807c7100.svg → icons/map/map-pin-filled.vue} +7 -4
  256. package/icons/map/map-pin-rect.vue +15 -0
  257. package/{src/assets/location.svg → icons/map/map-pin.vue} +7 -4
  258. package/icons/map-marker-start.vue +7 -0
  259. package/icons/map-paper.vue +5 -0
  260. package/icons/medal.vue +7 -0
  261. package/icons/menu-filled.vue +20 -0
  262. package/icons/menu.vue +8 -0
  263. package/icons/message/message.vue +12 -0
  264. package/icons/minus/minus-circle.vue +10 -0
  265. package/icons/money.vue +5 -0
  266. package/icons/monitoring.vue +10 -0
  267. package/icons/moon.vue +8 -0
  268. package/icons/more.vue +29 -0
  269. package/icons/note-pencil.vue +14 -0
  270. package/icons/note.vue +14 -0
  271. package/icons/notification.vue +16 -0
  272. package/icons/paperclip.vue +7 -0
  273. package/icons/payment/payment-card.vue +6 -0
  274. package/icons/payment/payment-kaspi.vue +11 -0
  275. package/icons/person-vector.vue +7 -0
  276. package/icons/person-with-briefcase.vue +10 -0
  277. package/icons/phone-filled.vue +5 -0
  278. package/icons/phone.vue +7 -0
  279. package/icons/plus/plus-circle.vue +8 -0
  280. package/icons/plus/plus.vue +13 -0
  281. package/icons/profile.vue +5 -0
  282. package/icons/radio/radio-check.vue +8 -0
  283. package/icons/radio/radio-empty.vue +10 -0
  284. package/icons/receipt.vue +8 -0
  285. package/icons/robot.vue +14 -0
  286. package/icons/scales/scale.vue +16 -0
  287. package/icons/scales/scales.vue +5 -0
  288. package/icons/scales/standing-scales.vue +15 -0
  289. package/icons/search.vue +15 -0
  290. package/icons/share/share-alt.vue +5 -0
  291. package/icons/share/share.vue +14 -0
  292. package/icons/ship.vue +8 -0
  293. package/icons/socials/face-book.vue +15 -0
  294. package/icons/socials/instagram.vue +19 -0
  295. package/icons/socials/telegram.vue +15 -0
  296. package/icons/socials/tik-tok.vue +15 -0
  297. package/icons/socials/youtube.vue +16 -0
  298. package/icons/sort/sort-asc.vue +15 -0
  299. package/icons/sort/sort-desc.vue +15 -0
  300. package/icons/splitting-arrows.vue +8 -0
  301. package/icons/star/star-filled.vue +40 -0
  302. package/icons/star/star-half-filled.vue +20 -0
  303. package/icons/star/star.vue +25 -0
  304. package/icons/sun.vue +14 -0
  305. package/icons/sviazi.vue +5 -0
  306. package/icons/tag.vue +30 -0
  307. package/icons/tender-search.vue +11 -0
  308. package/icons/toasts/check-circle-toast.vue +6 -0
  309. package/icons/toasts/warning-triangle-toast.vue +7 -0
  310. package/icons/trash.vue +13 -0
  311. package/icons/triangle.vue +10 -0
  312. package/icons/truck.vue +7 -0
  313. package/icons/user-square.vue +14 -0
  314. package/icons/user.vue +22 -0
  315. package/icons/users-focus.vue +8 -0
  316. package/icons/users-three.vue +7 -0
  317. package/icons/users.vue +8 -0
  318. package/icons/warning/warning-circle.vue +29 -0
  319. package/icons/warning/warning-triangle-filled.vue +12 -0
  320. package/icons/warning/warning-triangle.vue +28 -0
  321. package/icons/whatsapp.vue +8 -0
  322. package/icons/work-bag.vue +11 -0
  323. package/icons/work-search.vue +10 -0
  324. package/icons/work.vue +5 -0
  325. package/icons/x-mark.vue +15 -0
  326. package/illustrations/address-location.vue +38 -0
  327. package/illustrations/ball-with-chain.vue +120 -0
  328. package/illustrations/bill.vue +133 -0
  329. package/illustrations/buildings.vue +82 -0
  330. package/illustrations/calendar.vue +156 -0
  331. package/illustrations/chains.vue +152 -0
  332. package/illustrations/coin-percent.vue +126 -0
  333. package/illustrations/coins-stack.vue +202 -0
  334. package/illustrations/delete-dark.vue +31 -0
  335. package/illustrations/delete.vue +32 -0
  336. package/illustrations/doc-with-stamp.vue +126 -0
  337. package/illustrations/document.vue +64 -0
  338. package/illustrations/door.vue +74 -0
  339. package/illustrations/empty-box.vue +77 -0
  340. package/illustrations/empty-wallet.vue +161 -0
  341. package/illustrations/graph-in-coin.vue +119 -0
  342. package/illustrations/hammer.vue +156 -0
  343. package/illustrations/hand-cash.vue +108 -0
  344. package/illustrations/info.vue +39 -0
  345. package/illustrations/mail.vue +68 -0
  346. package/illustrations/ok.vue +62 -0
  347. package/illustrations/people-group.vue +237 -0
  348. package/illustrations/person-with-phone.vue +187 -0
  349. package/illustrations/person.vue +159 -0
  350. package/illustrations/phone-check.vue +90 -0
  351. package/illustrations/phone-payment-method.vue +223 -0
  352. package/illustrations/stop-hand.vue +77 -0
  353. package/illustrations/stop-sign.vue +34 -0
  354. package/illustrations/suit.vue +111 -0
  355. package/illustrations/suitcase.vue +105 -0
  356. package/illustrations/terminal-dark.vue +48 -0
  357. package/illustrations/terminal.vue +234 -0
  358. package/illustrations/trash-can.vue +108 -0
  359. package/illustrations/turn-on-tariff.vue +38 -0
  360. package/illustrations/two-persons.vue +169 -0
  361. package/lang/en.ts +593 -0
  362. package/lang/kk.ts +594 -0
  363. package/lang/ru.ts +595 -0
  364. package/layouts/default.vue +13 -0
  365. package/nuxt.config.ts +64 -0
  366. package/package.json +65 -76
  367. package/plugins/maska.ts +5 -0
  368. package/plugins/toast.client.ts +58 -0
  369. package/public/error-illustrations/401.webp +0 -0
  370. package/public/error-illustrations/403.webp +0 -0
  371. package/public/error-illustrations/404.webp +0 -0
  372. package/public/error-illustrations/500.webp +0 -0
  373. package/public/error-illustrations/502.webp +0 -0
  374. package/public/error-illustrations/503.webp +0 -0
  375. package/public/error-illustrations/504.webp +0 -0
  376. package/public/header/compliance.webp +0 -0
  377. package/public/header/unload.webp +0 -0
  378. package/public/header/ved.webp +0 -0
  379. package/public/mode/dark-analytics-en.webp +0 -0
  380. package/public/mode/dark-analytics-kk.webp +0 -0
  381. package/public/mode/dark-analytics-ru.webp +0 -0
  382. package/public/mode/dark-complience-en.webp +0 -0
  383. package/public/mode/dark-complience-kk.webp +0 -0
  384. package/public/mode/dark-complience-ru.webp +0 -0
  385. package/public/mode/dark-fea-en.webp +0 -0
  386. package/public/mode/dark-fea-kk.webp +0 -0
  387. package/public/mode/dark-fea-ru.webp +0 -0
  388. package/public/mode/dark-fines-en.webp +0 -0
  389. package/public/mode/dark-fines-kk.webp +0 -0
  390. package/public/mode/dark-fines-ru.webp +0 -0
  391. package/public/mode/dark-pk-en.webp +0 -0
  392. package/public/mode/dark-pk-kk.webp +0 -0
  393. package/public/mode/dark-pk-ru.webp +0 -0
  394. package/public/mode/dark-tenders-en.webp +0 -0
  395. package/public/mode/dark-tenders-kk.webp +0 -0
  396. package/public/mode/dark-tenders-ru.webp +0 -0
  397. package/public/mode/dark-work-en.webp +0 -0
  398. package/public/mode/dark-work-kk.webp +0 -0
  399. package/public/mode/dark-work-ru.webp +0 -0
  400. package/public/mode/light-analytics-en.webp +0 -0
  401. package/public/mode/light-analytics-kk.webp +0 -0
  402. package/public/mode/light-analytics-ru.webp +0 -0
  403. package/public/mode/light-complience-en.webp +0 -0
  404. package/public/mode/light-complience-kk.webp +0 -0
  405. package/public/mode/light-complience-ru.webp +0 -0
  406. package/public/mode/light-fea-en.webp +0 -0
  407. package/public/mode/light-fea-kk.webp +0 -0
  408. package/public/mode/light-fea-ru.webp +0 -0
  409. package/public/mode/light-fines-en.webp +0 -0
  410. package/public/mode/light-fines-kk.webp +0 -0
  411. package/public/mode/light-fines-ru.webp +0 -0
  412. package/public/mode/light-pk-en.webp +0 -0
  413. package/public/mode/light-pk-kk.webp +0 -0
  414. package/public/mode/light-pk-ru.webp +0 -0
  415. package/public/mode/light-tenders-en.webp +0 -0
  416. package/public/mode/light-tenders-kk.webp +0 -0
  417. package/public/mode/light-tenders-ru.webp +0 -0
  418. package/public/mode/light-work-en.webp +0 -0
  419. package/public/mode/light-work-kk.webp +0 -0
  420. package/public/mode/light-work-ru.webp +0 -0
  421. package/public/tariff/subtract.png +0 -0
  422. package/shared/constans/pages.ts +73 -0
  423. package/tailwind.config.ts +163 -0
  424. package/tests/AButton.test.ts +81 -0
  425. package/tsconfig.json +6 -0
  426. package/utils/getMaxZindex.ts +25 -0
  427. package/utils/localizedNavigation.ts +36 -0
  428. package/vitest.config.ts +14 -0
  429. package/babel.config.js +0 -5
  430. package/dist/adata-ui.common.js +0 -10910
  431. package/dist/adata-ui.common.js.map +0 -1
  432. package/dist/adata-ui.css +0 -1
  433. package/dist/adata-ui.umd.js +0 -10920
  434. package/dist/adata-ui.umd.js.map +0 -1
  435. package/dist/adata-ui.umd.min.js +0 -7
  436. package/dist/adata-ui.umd.min.js.map +0 -1
  437. package/dist/demo.html +0 -10
  438. package/dist/img/expand-window.39c851da.svg +0 -3
  439. package/dist/img/facebook.797d820f.svg +0 -4
  440. package/dist/img/instagram.8a77381c.svg +0 -6
  441. package/dist/img/linkedIn.607d9542.svg +0 -13
  442. package/dist/img/logo-desktop-main.4d169395.svg +0 -8
  443. package/dist/img/logo-mobile-main.397bce24.svg +0 -4
  444. package/dist/img/logo-white-desktop.7d0e3481.svg +0 -8
  445. package/dist/img/mail.e4826575.svg +0 -3
  446. package/dist/img/phone.ae6c1746.svg +0 -3
  447. package/dist/img/telegram.be0d1008.svg +0 -4
  448. package/dist/img/tiktok.eaeb39cb.svg +0 -4
  449. package/dist/img/up-down.e2b28f72.svg +0 -3
  450. package/dist/img/youtube.125aace6.svg +0 -5
  451. package/package-lock.json +0 -27138
  452. package/public/favicon.ico +0 -0
  453. package/public/index.html +0 -17
  454. package/public/logo.svg +0 -4
  455. package/src/App.vue +0 -31
  456. package/src/assets/_text_field.scss +0 -225
  457. package/src/assets/expand-window.svg +0 -3
  458. package/src/assets/facebook.svg +0 -4
  459. package/src/assets/instagram.svg +0 -6
  460. package/src/assets/linkedIn.svg +0 -13
  461. package/src/assets/logo-desktop-main.svg +0 -8
  462. package/src/assets/logo-desktop.svg +0 -9
  463. package/src/assets/logo-desktop.webp +0 -0
  464. package/src/assets/logo-mobile-main.svg +0 -4
  465. package/src/assets/logo-mobile.svg +0 -9
  466. package/src/assets/logo-mobile.webp +0 -0
  467. package/src/assets/logo-white-desktop.svg +0 -8
  468. package/src/assets/mail.svg +0 -3
  469. package/src/assets/phone.svg +0 -3
  470. package/src/assets/style.scss +0 -1
  471. package/src/assets/telegram.svg +0 -4
  472. package/src/assets/tiktok.svg +0 -4
  473. package/src/assets/up-down.svg +0 -3
  474. package/src/assets/youtube.svg +0 -5
  475. package/src/components/Alert/Alert.stories.js +0 -17
  476. package/src/components/Alert/Alert.vue +0 -63
  477. package/src/components/BottomNavigationBar/ABottomNavigationBar.vue +0 -160
  478. package/src/components/BottomNavigationBar/BottomNavigationBar.stories.js +0 -25
  479. package/src/components/Button/AButton.vue +0 -231
  480. package/src/components/Button/Button.stories.js +0 -23
  481. package/src/components/Checkbox/ACheckbox.vue +0 -114
  482. package/src/components/Checkbox/Checkbox.stories.js +0 -15
  483. package/src/components/CheckboxMenu/CheckboxMenu.stories.js +0 -24
  484. package/src/components/CheckboxMenu/CheckboxMenu.vue +0 -108
  485. package/src/components/ErrorPages/BadGateway.vue +0 -224
  486. package/src/components/ErrorPages/Forbidden.vue +0 -468
  487. package/src/components/ErrorPages/InternalServerError.vue +0 -275
  488. package/src/components/ErrorPages/NotFound.vue +0 -995
  489. package/src/components/ErrorPages/Unavailable.vue +0 -3705
  490. package/src/components/Footer/Footer.stories.js +0 -20
  491. package/src/components/Footer/Footer.vue +0 -292
  492. package/src/components/Header/ChildLinks.vue +0 -144
  493. package/src/components/Header/Header.stories.js +0 -56
  494. package/src/components/Header/Header.vue +0 -1306
  495. package/src/components/Header/InfoHeader.vue +0 -319
  496. package/src/components/Header/Profile.vue +0 -670
  497. package/src/components/Header/ProfileMenu.vue +0 -293
  498. package/src/components/Header/ProfileMobile.vue +0 -308
  499. package/src/components/Header/ProfileOld.vue +0 -781
  500. package/src/components/InternalServerError/InternalServerError.stories.js +0 -17
  501. package/src/components/InternalServerError/InternalServerError.vue +0 -262
  502. package/src/components/Introduction.stories.mdx +0 -7
  503. package/src/components/Loader/Loader.stories.js +0 -25
  504. package/src/components/Loader/Loader.vue +0 -325
  505. package/src/components/MailTo/MailTo.stories.js +0 -15
  506. package/src/components/MailTo/MailTo.vue +0 -258
  507. package/src/components/NavIcon/ANavIcon.vue +0 -50
  508. package/src/components/NavIcon/NavIcon.stories.js +0 -15
  509. package/src/components/PasswordField/PasswordField.stories.js +0 -16
  510. package/src/components/PasswordField/PasswordField.vue +0 -77
  511. package/src/components/SearchTextField/SearchTextField.stories.js +0 -78
  512. package/src/components/SearchTextField/SearchTextField.vue +0 -230
  513. package/src/components/ServiceSlider/AServiceSlider.vue +0 -793
  514. package/src/components/ServiceSlider/ServiceSlider.stories.js +0 -20
  515. package/src/components/Table/ATable.vue +0 -117
  516. package/src/components/Table/Table.stories.js +0 -15
  517. package/src/components/TextArea/TextArea.stories.js +0 -17
  518. package/src/components/TextArea/TextArea.vue +0 -116
  519. package/src/components/TextError/TextError.stories.js +0 -15
  520. package/src/components/TextError/TextError.vue +0 -57
  521. package/src/components/TextField/TextField.stories.js +0 -17
  522. package/src/components/TextField/TextField.vue +0 -107
  523. package/src/components/index.js +0 -56
  524. package/src/components/newComponents/FooterNew/FooterBottom.vue +0 -153
  525. package/src/components/newComponents/FooterNew/FooterItem.vue +0 -114
  526. package/src/components/newComponents/FooterNew/FooterNew.stories.js +0 -20
  527. package/src/components/newComponents/FooterNew/FooterNew.vue +0 -39
  528. package/src/components/newComponents/FooterNew/FooterTop.vue +0 -321
  529. package/src/components/newComponents/FooterRedesign/FooterAccordion.vue +0 -221
  530. package/src/components/newComponents/FooterRedesign/FooterRedesign.vue +0 -430
  531. package/src/components/transitions/SlideToggle.vue +0 -55
  532. package/src/components/transitions/VerticalMobileToggle.vue +0 -75
  533. package/src/configs/icons.js +0 -112
  534. package/src/configs/profileDropDown.js +0 -134
  535. package/src/main.js +0 -12
@@ -0,0 +1,188 @@
1
+ <script lang="ts" setup>
2
+ // TODO: refactor Ilkham
3
+ import { twJoin, twMerge } from 'tailwind-merge'
4
+ import type { Component } from 'vue'
5
+ import type { DisabledViewSwitchValues, SizeSwitchValues, ViewSwitchValues } from './types'
6
+ import { NuxtLinkLocale} from '#components'
7
+
8
+ defineOptions({ name: 'AButton' })
9
+
10
+ interface Props {
11
+ variant?: 'primary' | 'success' | 'danger' | 'gray' | 'ghost'
12
+ view?: 'default' | 'outline' | 'transparent' | 'rounded'
13
+ size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl'
14
+ form?: 'icon' | 'button'
15
+ icon?: Component
16
+ iconClass?: string
17
+ loading?: boolean
18
+ disabled?: boolean
19
+ block?: boolean
20
+ active?: boolean
21
+ to?: string
22
+ }
23
+
24
+ const props = withDefaults(defineProps<Props>(), {
25
+ variant: 'primary',
26
+ view: 'default',
27
+ size: 'lg',
28
+ form: 'button',
29
+ loading: false,
30
+ disabled: false,
31
+ block: false,
32
+ active: false,
33
+ iconClass: '',
34
+ to: ''
35
+ })
36
+
37
+ const classes = computed(() => [
38
+ 'body-600 rounded-md cursor-pointer outline-none transition duration-200 select-none',
39
+ props.block ? 'w-full' : '',
40
+ typeSwitchValues[props.view][props.variant],
41
+ sizeSwitchValues[props.form][props.size]
42
+ ])
43
+ const disabledClasses = computed(() => [
44
+ 'body-600 rounded-md outline-none transition duration-200 select-none',
45
+ props.block ? 'w-full' : '',
46
+ disabledTypeSwitchValues[props.view],
47
+ sizeSwitchValues[props.form][props.size]
48
+ ])
49
+
50
+ const typeSwitchActiveValues: ViewSwitchValues = {
51
+ default: {
52
+ primary: 'bg-deepblue-900 text-white dark:bg-gray-200',
53
+ success: 'bg-deepblue-900 text-white dark:bg-gray-200',
54
+ danger: 'bg-deepblue-900 text-white dark:bg-gray-200 ',
55
+ gray: 'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200',
56
+ ghost:
57
+ 'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200'
58
+ },
59
+ transparent: {
60
+ primary: 'bg-blue-700 text-white dark:bg-blue-500 dark:text-gray-900',
61
+ success: 'bg-green-500 text-white dark:bg-green-400 dark:text-gray-900',
62
+ danger: 'bg-red-500 text-white dark:bg-red-400 dark:text-gray-900',
63
+ gray: 'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200',
64
+ ghost:
65
+ 'bg-white text-deepblue-900 dark:bg-gray-900 dark:text-gray-200 hover:text-deepblue-900 dark:hover:text-gray-200'
66
+ },
67
+ outline: {
68
+ primary: 'bg-blue-700 text-white dark:bg-blue-500 dark:text-gray-900',
69
+ success: 'bg-green-500 text-white dark:bg-green-400 dark:text-gray-900',
70
+ danger: 'bg-red-500 text-white dark:bg-red-400 dark:text-gray-900',
71
+ gray: 'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200',
72
+ ghost:
73
+ 'bg-gray-500 text-white dark:bg-gray-500 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200'
74
+ },
75
+ rounded: {
76
+ primary: 'bg-deepblue-900 text-white dark:bg-gray-200',
77
+ success: 'bg-deepblue-900 text-white dark:bg-gray-200',
78
+ danger: 'bg-deepblue-900 text-white dark:bg-gray-200 ',
79
+ gray: 'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200',
80
+ ghost:
81
+ 'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200'
82
+ },
83
+ }
84
+
85
+ const typeSwitchValues: ViewSwitchValues = {
86
+ default: {
87
+ primary:
88
+ 'bg-blue-700 text-white hover:bg-blue-900 active:bg-deepblue-900 active:text-white dark:bg-blue-500 dark:text-gray-900 dark:hover:bg-blue-700 dark:active:bg-gray-200',
89
+ success:
90
+ 'bg-green-500 text-white hover:bg-green-900 active:bg-deepblue-900 active:text-white dark:bg-green dark:text-gray-900 dark:hover:bg-green-300 dark:active:bg-gray-200',
91
+ danger:
92
+ 'bg-red-500 text-white hover:bg-red-700 active:bg-deepblue-900 active:text-white dark:bg-red-400 dark:text-gray-900 dark:hover:bg-red-300 dark:active:bg-gray-200',
93
+ gray: 'bg-deepblue-900/5 text-deepblue-900 hover:bg-deepblue-900/10 active:bg-deepblue-900 active:text-white dark:bg-gray-200/5 dark:hover:bg-gray-200/10 dark:active:bg-gray-200 dark:text-gray-200 dark:active:text-gray-900',
94
+ ghost:
95
+ 'bg-white text-deepblue-900 hover:bg-deepblue-900/5 active:bg-deepblue-900 active:text-white dark:bg-gray-900 dark:text-gray-200 dark:bg-gray-900 dark:hover:bg-gray-200/5 dark:active:bg-gray-200 dark:active:text-gray-900'
96
+ },
97
+ transparent: {
98
+ primary:
99
+ 'text-blue-700 hover:bg-blue-100 active:bg-blue-700 active:text-white dark:text-blue-500 dark:hover:bg-blue-500/20 dark:active:bg-blue-500 dark:active:text-gray-900',
100
+ success:
101
+ 'text-green-500 hover:bg-green-500/20 active:bg-green-500 active:text-white dark:text-green-400 dark:hover:bg-green-400/20 dark:active:bg-green-400 dark:active:text-gray-900',
102
+ danger:
103
+ 'text-red-500 hover:bg-red-500/20 active:bg-red-500 active:text-white dark:text-red-400 dark:hover:bg-red-400/20 dark:active:bg-red-400 dark:active:text-gray-900',
104
+ gray: 'text-deepblue-900 hover:bg-deepblue-900/10 active:bg-deepblue-900 active:text-white dark:text-gray-200 dark:hover:bg-gray-200/5 dark:active:bg-gray-200 dark:active:text-gray-900',
105
+ ghost:
106
+ 'text-white hover:bg-deepblue-900/10 active:bg-white active:text-deepblue-900 dark:text-gray-200 dark:hover:bg-gray-200/5 dark:active:bg-gray-900 dark:active:text-gray-200'
107
+ },
108
+ outline: {
109
+ primary:
110
+ 'border border-blue-700 text-blue-700 hover:bg-blue-100 active:bg-blue-700 active:text-white dark:border-blue-500 dark:text-blue-500 dark:hover:bg-blue-500/20 dark:active:bg-blue-500 dark:active:text-gray-900',
111
+ success:
112
+ 'border border-green-500 text-green-500 hover:bg-green-500/20 active:bg-green-500 active:text-white dark:border-green-400 dark:text-green-400 dark:hover:bg-green-400/20 dark:active:bg-green-400 dark:active:text-gray-900',
113
+ danger:
114
+ 'border border-red-500 text-red-500 hover:bg-red-500/20 active:bg-red-500 active:text-white dark:text-red-400 dark:border-red-400 dark:hover:bg-red-400/20 dark:active:bg-red-400 dark:active:text-gray-900',
115
+ gray: 'border border-gray-500/50 text-deepblue-900 hover:bg-deepblue-900/10 active:bg-deepblue-900 active:text-white dark:border-gray-500/50 dark:text-gray-200 dark:hover:bg-gray-200/5 dark:active:bg-gray-200 dark:active:text-gray-900',
116
+ ghost:
117
+ 'border border-white text-white hover:bg-deepblue-900 active:bg-gray-500 active:text-white dark:border-gray-200 dark:text-gray-200 dark:hover:bg-gray-200/5 dark:active:bg-gray-500 dark:active:text-gray-900'
118
+ },
119
+ rounded: {
120
+ primary:
121
+ 'rounded-[32px] bg-blue-700 text-white hover:bg-blue-900 active:bg-deepblue-900 active:text-white dark:bg-blue-500 dark:text-gray-900 dark:hover:bg-blue-700 dark:active:bg-gray-200',
122
+ success:
123
+ 'rounded-[32px] bg-green-500 text-white hover:bg-green-900 active:bg-deepblue-900 active:text-white dark:bg-green dark:text-gray-900 dark:hover:bg-green-300 dark:active:bg-gray-200',
124
+ danger:
125
+ 'rounded-[32px] bg-red-500 text-white hover:bg-red-700 active:bg-deepblue-900 active:text-white dark:bg-red-400 dark:text-gray-900 dark:hover:bg-red-300 dark:active:bg-gray-200',
126
+ gray: 'rounded-[32px] bg-deepblue-900/5 text-deepblue-900 hover:bg-deepblue-900/10 active:bg-deepblue-900 active:text-white dark:bg-gray-200/5 dark:hover:bg-gray-200/10 dark:active:bg-gray-200 dark:text-gray-200 dark:active:text-gray-900',
127
+ ghost:
128
+ 'rounded-[32px] bg-white text-deepblue-900 hover:bg-deepblue-900/5 active:bg-deepblue-900 active:text-white dark:bg-gray-900 dark:text-gray-200 dark:bg-gray-900 dark:hover:bg-gray-200/5 dark:active:bg-gray-200 dark:active:text-gray-900'
129
+ },
130
+ }
131
+
132
+ const disabledTypeSwitchValues: DisabledViewSwitchValues = {
133
+ default:
134
+ 'bg-deepblue-900/5 text-deepblue-900/20 dark:bg-gray-200/5 dark:text-gray-200/20 pointer-events-none',
135
+ transparent: 'text-gray-500/50 pointer-events-none',
136
+ outline: 'border border-gray-500/50 text-gray-500/50 pointer-events-none'
137
+ }
138
+
139
+ const sizeSwitchValues: SizeSwitchValues = {
140
+ icon: {
141
+ sm: 'p-1 text-base',
142
+ md: 'p-2 text-base',
143
+ lg: 'p-2 text-2xl',
144
+ xl: 'p-4 text-3xl',
145
+ },
146
+ button: {
147
+ sm: 'px-4 py-1.5 leading-4 !h-[28px]',
148
+ md: 'px-4 py-1.5 !h-[32px]',
149
+ lg: 'px-4 py-2.5',
150
+ xl: 'px-8 py-2.5',
151
+ '2xl': 'px-6 py-[14px] text-xl',
152
+ }
153
+ }
154
+
155
+ const buttonClasses = computed(() =>
156
+ twMerge(
157
+ twJoin(
158
+ props.disabled ? disabledClasses.value : classes.value,
159
+ props.active ? typeSwitchActiveValues[props.view][props.variant] : '',
160
+ props.to ? 'inline-block' : ''
161
+ )
162
+ )
163
+ )
164
+ </script>
165
+ <template>
166
+ <component
167
+ :is="to ? NuxtLinkLocale : 'button'"
168
+ :class="[buttonClasses, 'relative h-fit transition flex items-center justify-center']"
169
+ :disabled="disabled"
170
+ :to="to"
171
+ >
172
+ <span
173
+ :class="[
174
+ { 'opacity-0': loading },
175
+ 'flex items-center justify-center gap-2 whitespace-nowrap'
176
+ ]"
177
+ >
178
+ <component :is="icon" :class="[`${iconClass}`]" />
179
+ <slot />
180
+ </span>
181
+ <span
182
+ v-if="loading"
183
+ class="absolute left-1/2 top-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center"
184
+ >
185
+ <a-icon-loader-circle class="animate-spin"/>
186
+ </span>
187
+ </component>
188
+ </template>
@@ -0,0 +1,24 @@
1
+ export type TypeSwitchValues = {
2
+ [key in 'primary' | 'success' | 'danger' | 'gray' | 'ghost']: string;
3
+ };
4
+
5
+ export type ViewSwitchValues = {
6
+ default: TypeSwitchValues;
7
+ transparent: TypeSwitchValues;
8
+ outline: TypeSwitchValues;
9
+ };
10
+
11
+ export type SizeSwitchValues = {
12
+ icon: {
13
+ [key in 'sm' | 'md' | 'lg' | 'xl']: string;
14
+ };
15
+ button: {
16
+ [key in 'sm' | 'md' | 'lg' | 'xl']: string;
17
+ };
18
+ };
19
+
20
+ export type DisabledViewSwitchValues = {
21
+ default: string;
22
+ transparent: string;
23
+ outline: string;
24
+ }
@@ -0,0 +1,83 @@
1
+ <script lang="ts" setup>
2
+ import { ref } from '#imports'
3
+
4
+ defineOptions({
5
+ name: 'ACalendar'
6
+ })
7
+
8
+ interface Props {
9
+ locale?: 'ru' | 'en'
10
+ color: 'blue' | 'red' | 'yellow' | 'gray' | 'green'
11
+ type: 'single-date' | 'range-date'
12
+ mode: 'date' | 'time' | 'dateTime'
13
+ }
14
+
15
+ const props = withDefaults(defineProps<Props>(), {
16
+ locale: 'ru',
17
+ color: 'blue',
18
+ type: 'range-date',
19
+ mode: 'date'
20
+ })
21
+
22
+ const date = defineModel<Date>({
23
+ default: new Date()
24
+ })
25
+
26
+ const range = defineModel<{
27
+ value: {
28
+ start: Date
29
+ end: Date
30
+ }
31
+ }>('range', {
32
+ default: {
33
+ start: new Date(),
34
+ end: new Date(new Date().setDate(new Date().getDate() + 14))
35
+ }
36
+ })
37
+
38
+ const popover = {
39
+ visibility: 'click',
40
+ placement: 'bottom-end',
41
+ }
42
+ </script>
43
+
44
+ <template>
45
+ <div>
46
+ <client-only>
47
+ <VDatePicker
48
+ v-if="type === 'range-date'"
49
+ v-model.range="range"
50
+ :is-dark="{ selector: ':root', darkClass: 'dark' }"
51
+ :color="color"
52
+ :locale="locale"
53
+ :mode="mode"
54
+ title-position="left"
55
+ :popover="popover"
56
+ >
57
+ <template
58
+ v-if="$slots.default"
59
+ #default="value"
60
+ >
61
+ <slot v-bind="value" />
62
+ </template>
63
+ </VDatePicker>
64
+ <VDatePicker
65
+ v-else
66
+ v-model="date"
67
+ :is-dark="{ selector: ':root', darkClass: 'dark' }"
68
+ :color="color"
69
+ :locale="locale"
70
+ :mode="mode"
71
+ title-position="left"
72
+ :popover="popover"
73
+ >
74
+ <template
75
+ v-if="$slots.default"
76
+ #default="value"
77
+ >
78
+ <slot v-bind="value" />
79
+ </template>
80
+ </VDatePicker>
81
+ </client-only>
82
+ </div>
83
+ </template>
@@ -0,0 +1,159 @@
1
+ <template>
2
+ <div
3
+ :class="ui.wrapper"
4
+ v-bind="attrs"
5
+ >
6
+ <div
7
+ ref="carouselRef"
8
+ :class="ui.container"
9
+ class="no-scrollbar"
10
+ >
11
+ <div
12
+ v-for="(item, index) in items"
13
+ :key="index"
14
+ :class="ui.item"
15
+ :role="indicators ? 'tabpanel' : null"
16
+ >
17
+ <slot
18
+ :item="item"
19
+ :index="index"
20
+ />
21
+ </div>
22
+ </div>
23
+
24
+ <div
25
+ v-if="arrows"
26
+ :class="ui.arrows.wrapper"
27
+ >
28
+ <slot
29
+ name="prev"
30
+ :on-click="onClickPrev"
31
+ :disabled="isFirst"
32
+ />
33
+
34
+ <slot
35
+ name="next"
36
+ :on-click="onClickNext"
37
+ :disabled="isLast"
38
+ />
39
+ </div>
40
+
41
+ <div
42
+ v-if="indicators"
43
+ role="tablist"
44
+ :class="ui.indicators.wrapper"
45
+ >
46
+ <template
47
+ v-for="page in pages"
48
+ :key="page"
49
+ >
50
+ <slot
51
+ name="indicator"
52
+ :on-click="onClick"
53
+ :active="page === currentPage"
54
+ :page="page"
55
+ >
56
+ <button
57
+ type="button"
58
+ role="tab"
59
+ :aria-selected="page === currentPage"
60
+ :class="[
61
+ ui.indicators.base,
62
+ page === currentPage ? ui.indicators.active : ui.indicators.inactive
63
+ ]"
64
+ :aria-label="`set slide ${page}`"
65
+ @click="onClick(page)"
66
+ />
67
+ </slot>
68
+ </template>
69
+ </div>
70
+ </div>
71
+ </template>
72
+
73
+ <script setup lang="ts" generic="T">
74
+ import {useScroll, useResizeObserver, useElementSize} from '@vueuse/core'
75
+ import {useCarouselScroll} from "#adata-ui/composables/useCarouselScroll";
76
+ import {ui as defaultUi} from './config.ui';
77
+ import {computed, ref, toRefs} from "vue";
78
+ import type {Ui} from "#adata-ui/components/elements/carousel/types";
79
+ import {mergeConfig} from "#adata-ui/components/utils";
80
+
81
+ defineOptions({
82
+ inheritAttrs: false
83
+ })
84
+ const attrs = useAttrs()
85
+
86
+
87
+ interface Props {
88
+ items: T[]
89
+ indicators?: boolean
90
+ arrows?: boolean
91
+ defaultUi?: Ui
92
+ }
93
+
94
+ const props = withDefaults(defineProps<Props>(), {
95
+ indicators: false,
96
+ arrows: false,
97
+ defaultUi: () => {
98
+ }
99
+ })
100
+ const ui = computed(() =>mergeConfig<Ui>(defaultUi, props.defaultUi))
101
+ const carouselRef = ref<HTMLElement>()
102
+ const itemWidth = ref(0)
103
+
104
+ const {x, arrivedState} = useScroll(carouselRef, {behavior: 'smooth'})
105
+ const {width: carouselWidth} = useElementSize(carouselRef)
106
+
107
+ const {left: isFirst, right: isLast} = toRefs(arrivedState)
108
+
109
+ useCarouselScroll(carouselRef)
110
+
111
+ useResizeObserver(carouselRef, (entries) => {
112
+ const [entry] = entries
113
+
114
+ itemWidth.value = entry?.target?.firstElementChild?.clientWidth || 0
115
+ })
116
+
117
+ const currentPage = computed(() => Math.round(x.value / itemWidth.value) + 1)
118
+
119
+ const pages = computed(() => {
120
+ if (!itemWidth.value) {
121
+ return 0
122
+ }
123
+
124
+ return props.items.length - Math.round(carouselWidth.value / itemWidth.value) + 1
125
+ })
126
+
127
+ function onClickNext() {
128
+ x.value += itemWidth.value
129
+ }
130
+
131
+ function onClickPrev() {
132
+ x.value -= itemWidth.value
133
+ }
134
+
135
+ function onClick(page: number) {
136
+ x.value = (page - 1) * itemWidth.value
137
+ }
138
+
139
+ defineExpose({
140
+ pages,
141
+ page: currentPage,
142
+ prev: onClickPrev,
143
+ next: onClickNext,
144
+ select: onClick
145
+ })
146
+ </script>
147
+
148
+ <style scoped>
149
+ /* Hide scrollbar for Chrome, Safari and Opera */
150
+ .no-scrollbar::-webkit-scrollbar {
151
+ display: none;
152
+ }
153
+
154
+ /* Hide scrollbar for IE, Edge and Firefox */
155
+ .no-scrollbar {
156
+ -ms-overflow-style: none; /* IE and Edge */
157
+ scrollbar-width: none; /* Firefox */
158
+ }
159
+ </style>
@@ -0,0 +1,15 @@
1
+ export const ui = {
2
+ wrapper: 'relative',
3
+ container: 'relative w-full flex overflow-x-auto snap-x snap-mandatory scroll-smooth',
4
+ item: 'flex flex-none snap-center',
5
+ arrows: {
6
+ wrapper: 'flex items-center justify-between',
7
+ },
8
+ indicators: {
9
+ wrapper: 'absolute z-10 flex items-center justify-center gap-3 bottom-4 inset-x-0',
10
+ base: 'rounded-full h-3 w-3',
11
+ active: 'bg-primary-500 dark:bg-primary-400 bg-blue-700',
12
+ inactive: 'bg-gray-200 dark:bg-gray-800 mix-blend-overlay',
13
+ },
14
+ }
15
+ export default {ui}
@@ -0,0 +1,18 @@
1
+ export interface Ui {
2
+ wrapper: string;
3
+ container: string;
4
+ item: string;
5
+ arrows: Arrows;
6
+ indicators: Indicators;
7
+ }
8
+
9
+ export interface Arrows {
10
+ wrapper: string;
11
+ }
12
+
13
+ export interface Indicators {
14
+ wrapper: string;
15
+ base: string;
16
+ active: string;
17
+ inactive: string;
18
+ }
@@ -0,0 +1,80 @@
1
+ <script setup lang="ts">
2
+ import type {Props} from './types'
3
+ import {twJoin, twMerge} from "tailwind-merge";
4
+
5
+ defineOptions({
6
+ inheritAttrs: false
7
+ })
8
+ const props = withDefaults(defineProps<Props>(), {
9
+ position: 'top-right',
10
+ show: true,
11
+ size: 'sm',
12
+ color: 'green',
13
+ inset: false,
14
+ })
15
+ const ui = {
16
+ wrapper: 'relative inline-flex items-center justify-center flex-shrink-0',
17
+ base: 'absolute rounded-full ring-1 ring-white dark:ring-gray-900 flex items-center justify-center text-white dark:text-gray-900 font-medium whitespace-nowrap',
18
+ background: {
19
+ green: 'bg-green-500 dark:bg-green-500'
20
+ },
21
+ position: {
22
+ 'top-right': 'top-0 right-0',
23
+ 'bottom-right': 'bottom-0 right-0',
24
+ 'top-left': 'top-0 left-0',
25
+ 'bottom-left': 'bottom-0 left-0',
26
+ },
27
+ translate: {
28
+ 'top-right': '-translate-y-1/2 translate-x-1/2 transform',
29
+ 'bottom-right': 'translate-y-1/2 translate-x-1/2 transform',
30
+ 'top-left': '-translate-y-1/2 -translate-x-1/2 transform',
31
+ 'bottom-left': 'translate-y-1/2 -translate-x-1/2 transform',
32
+ },
33
+ size: {
34
+ '3xs': 'h-[4px] min-w-[4px] text-[4px] p-px',
35
+ '2xs': 'h-[5px] min-w-[5px] text-[5px] p-px',
36
+ xs: 'h-1.5 min-w-[0.375rem] text-[6px] p-px',
37
+ sm: 'h-2 min-w-[0.5rem] text-[7px] p-0.5',
38
+ md: 'h-2.5 min-w-[0.625rem] text-[8px] p-0.5',
39
+ lg: 'h-3 min-w-[0.75rem] text-[10px] p-0.5',
40
+ xl: 'h-3.5 min-w-[0.875rem] text-[11px] p-1',
41
+ '2xl': 'h-4 min-w-[1rem] text-[12px] p-1',
42
+ '3xl': 'h-5 min-w-[1.25rem] text-[14px] p-1',
43
+ },
44
+ }
45
+ const attrs = useAttrs()
46
+ const chipClass = computed(() => {
47
+ return twMerge(
48
+ twJoin(
49
+ ui.base,
50
+ ui.size[props.size],
51
+ ui.position[props.position],
52
+ props.inset ? null : ui.translate[props.position],
53
+ ui.background[props.color],
54
+ props.class,
55
+ )
56
+ )
57
+ })
58
+ </script>
59
+
60
+ <template>
61
+ <div
62
+ :class="ui.wrapper"
63
+ v-bind="attrs"
64
+ >
65
+ <slot/>
66
+
67
+ <span
68
+ v-if="show"
69
+ :class="chipClass"
70
+ >
71
+ <slot name="content">
72
+ {{ text }}
73
+ </slot>
74
+ </span>
75
+ </div>
76
+ </template>
77
+
78
+ <style scoped>
79
+
80
+ </style>
@@ -0,0 +1,12 @@
1
+ type Position = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'
2
+ type Color = 'green'
3
+ type Size = '3xs' | '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';
4
+ export interface Props {
5
+ position?: Position
6
+ text?: string
7
+ show?: boolean
8
+ class?: string
9
+ color?: Color
10
+ inset?: boolean
11
+ size?: Size
12
+ }
@@ -0,0 +1,32 @@
1
+ <script setup lang="ts">
2
+ import {twMerge} from "tailwind-merge";
3
+
4
+ type Props = {
5
+ size?: 'sm' | 'md' | 'lg'
6
+ view?: 'standard' | 'outline'
7
+ }
8
+
9
+ withDefaults(defineProps<Props>(), {view: 'outline', size: 'sm'})
10
+
11
+
12
+ const chipView = {
13
+ standard: 'text-deepblue border-gray focus-visible:outline-gray',
14
+ outline: 'text-blue border-blue focus-visible:outline-blue'
15
+ }
16
+
17
+ const sizeOptions = {
18
+ sm: 'h-4',
19
+ md: 'h-5',
20
+ lg: 'h-7'
21
+ }
22
+ </script>
23
+
24
+ <template>
25
+ <button
26
+ :class="twMerge(['flex items-center gap-2 rounded-3xl border border-solid px-2.5 text-xs hover:bg-deepblue-100 dark:hover:bg-[#E3E5E80D] focus-visible:shadow-[0_0_0_4px#1B64B3] active:bg-blue active:text-white disabled:border-deepblue-200 disabled:text-deepblue-200', chipView[view], sizeOptions[size]], $attrs.class)"
27
+ >
28
+ <slot/>
29
+ </button>
30
+ </template>
31
+
32
+ <style scoped></style>
@@ -0,0 +1,42 @@
1
+ <template>
2
+ <div class="flex flex-col gap-4 lg:gap-8">
3
+ <h2 class="lg:heading-01 heading-02 lg:text-left text-center ">{{ t('our_clients.title') }}</h2>
4
+ <a-infinite-carousel>
5
+ <div class="flex items-center justify-center">
6
+ <a-icon-company-forte class="max-w-[150px] sm:max-w-none"></a-icon-company-forte>
7
+ </div>
8
+ <div class="flex items-center justify-center">
9
+ <a-icon-company-mycar class="max-w-[150px] sm:max-w-none"></a-icon-company-mycar>
10
+ </div>
11
+ <div class="flex items-center justify-center">
12
+ <a-icon-company-jusan class="max-w-[150px] sm:max-w-none"></a-icon-company-jusan>
13
+ </div>
14
+ <div class="flex items-center justify-center">
15
+ <a-icon-company-bereke class="max-w-[150px] sm:max-w-none"></a-icon-company-bereke>
16
+ </div>
17
+ <div class="flex items-center justify-center">
18
+ <a-icon-company-halyk class="max-w-[150px] sm:max-w-none"></a-icon-company-halyk>
19
+ </div>
20
+ <div class="flex items-center justify-center">
21
+ <a-icon-company-kaspi class="max-w-[150px] sm:max-w-none"></a-icon-company-kaspi>
22
+ </div>
23
+ <div class="flex items-center justify-center">
24
+ <a-icon-company-bigroup class="max-w-[150px] sm:max-w-none"></a-icon-company-bigroup>
25
+ </div>
26
+ <div class="flex items-center justify-center">
27
+ <a-icon-company-samruk class="max-w-[150px] sm:max-w-none"></a-icon-company-samruk>
28
+ </div>
29
+ <div class="flex items-center justify-center">
30
+ <a-icon-company-bazis class="max-w-[150px] sm:max-w-none"></a-icon-company-bazis>
31
+ </div>
32
+ <div class="flex items-center justify-center">
33
+ <a-icon-company-erg class="max-w-[150px] sm:max-w-none"></a-icon-company-erg>
34
+ </div>
35
+ </a-infinite-carousel>
36
+ </div>
37
+ </template>
38
+ <script setup lang="ts">
39
+ import AInfiniteCarousel from "#adata-ui/components/elements/infinite-carousel/AInfiniteCarousel.vue";
40
+
41
+ const { t } = useI18n()
42
+ </script>