@ozdao/martyrs 0.2.481 → 0.2.482

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 (436) hide show
  1. package/README.md +4 -13
  2. package/dist/{Media-CKk33U4A.js → Media-JBERcJWj.js} +1 -1
  3. package/dist/{Media-B1ZP3D7B.cjs → Media-p7Q8ZAQM.cjs} +1 -1
  4. package/dist/{abac-XF1JVCLI.cjs → abac-6LjoG9u-.cjs} +107 -26
  5. package/dist/{abac-BuL5pUZ4.js → abac-Cf_9lCSh.js} +107 -26
  6. package/dist/globals.server.cjs +1 -1
  7. package/dist/globals.server.js +1 -1
  8. package/dist/{main-BhAiwmnI.js → main-AtCVQKF9.js} +2855 -4162
  9. package/dist/main-B-we7C0w.cjs +11 -0
  10. package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +1 -1
  11. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -1
  12. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs +28 -7
  13. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs.map +1 -1
  14. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +29 -8
  15. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  16. package/dist/martyrs/src/components/Chips/{Chips.vue.cjs → Chips.vue2.cjs} +7 -10
  17. package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +1 -0
  18. package/dist/martyrs/src/components/Chips/{Chips.vue.js → Chips.vue2.js} +8 -11
  19. package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +1 -0
  20. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs +84 -0
  21. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs.map +1 -0
  22. package/dist/martyrs/src/components/Feed/Carousel.vue.js +84 -0
  23. package/dist/martyrs/src/components/Feed/Carousel.vue.js.map +1 -0
  24. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +4 -4
  25. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  26. package/dist/martyrs/src/components/Feed/Feed.vue.js +4 -4
  27. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  28. package/dist/martyrs/src/components/Field/Field.vue.cjs +2 -1
  29. package/dist/martyrs/src/components/Field/Field.vue.cjs.map +1 -1
  30. package/dist/martyrs/src/components/Field/Field.vue.js +2 -1
  31. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
  32. package/dist/martyrs/src/components/Menu/{Menu.vue.cjs → Menu.vue2.cjs} +2 -2
  33. package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +1 -0
  34. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  35. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  36. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs +203 -151
  37. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs.map +1 -1
  38. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +204 -152
  39. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js.map +1 -1
  40. package/dist/martyrs/src/components/Popup/{Popup.vue.cjs → Popup.vue2.cjs} +2 -2
  41. package/dist/martyrs/src/components/Popup/Popup.vue2.cjs.map +1 -0
  42. package/dist/martyrs/src/components/Popup/{Popup.vue.js → Popup.vue2.js} +2 -2
  43. package/dist/martyrs/src/components/Popup/{Popup.vue.cjs.map → Popup.vue2.js.map} +1 -1
  44. package/dist/martyrs/src/components/Radio/Radio.vue.cjs +2 -2
  45. package/dist/martyrs/src/components/Radio/Radio.vue.cjs.map +1 -1
  46. package/dist/martyrs/src/components/Radio/Radio.vue.js +2 -2
  47. package/dist/martyrs/src/components/Radio/Radio.vue.js.map +1 -1
  48. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs +4 -3
  49. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs.map +1 -1
  50. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js +4 -3
  51. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js.map +1 -1
  52. package/dist/martyrs/src/components/Slider/{Slider.native.vue.cjs → Slider.vue.cjs} +22 -80
  53. package/dist/martyrs/src/components/Slider/Slider.vue.cjs.map +1 -0
  54. package/dist/martyrs/src/components/Slider/{Slider.native.vue.js → Slider.vue.js} +23 -81
  55. package/dist/martyrs/src/components/Slider/Slider.vue.js.map +1 -0
  56. package/dist/martyrs/src/components/Status/Status.vue.cjs.map +1 -1
  57. package/dist/martyrs/src/components/Status/Status.vue.js.map +1 -1
  58. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.cjs +4 -2
  59. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.cjs.map +1 -1
  60. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js +4 -2
  61. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js.map +1 -1
  62. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +3 -1
  63. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
  64. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +4 -2
  65. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  66. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +22 -149
  67. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
  68. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +24 -151
  69. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
  70. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs +77 -0
  71. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs.map +1 -0
  72. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +77 -0
  73. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -0
  74. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +121 -0
  75. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs.map +1 -0
  76. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +121 -0
  77. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js.map +1 -0
  78. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs +38 -0
  79. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs.map +1 -0
  80. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js +38 -0
  81. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js.map +1 -0
  82. package/dist/martyrs/src/modules/auth/views/router/users.cjs +23 -16
  83. package/dist/martyrs/src/modules/auth/views/router/users.cjs.map +1 -1
  84. package/dist/martyrs/src/modules/auth/views/router/users.js +23 -16
  85. package/dist/martyrs/src/modules/auth/views/router/users.js.map +1 -1
  86. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
  87. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  88. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs +3 -3
  89. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs.map +1 -1
  90. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js +3 -3
  91. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
  92. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +6 -6
  93. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +5 -4
  94. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs.map +1 -1
  95. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +5 -4
  96. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js.map +1 -1
  97. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  98. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  99. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs +92 -62
  100. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs.map +1 -1
  101. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +93 -63
  102. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  103. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.cjs +82 -53
  104. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.cjs.map +1 -1
  105. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +82 -53
  106. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js.map +1 -1
  107. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs +2 -6
  108. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs.map +1 -1
  109. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js +2 -6
  110. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js.map +1 -1
  111. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -1
  112. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
  113. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
  114. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  115. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  116. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  117. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +1 -1
  118. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
  119. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +1 -1
  120. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -1
  121. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs +3 -9
  122. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs.map +1 -1
  123. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +3 -9
  124. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js.map +1 -1
  125. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs +1 -1
  126. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +5 -5
  127. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
  128. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +11 -11
  129. package/dist/martyrs/src/modules/globals/globals.client.cjs +2 -0
  130. package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
  131. package/dist/martyrs/src/modules/globals/globals.client.js +2 -0
  132. package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
  133. package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.cjs +1 -1
  134. package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.js +1 -1
  135. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
  136. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs.map +1 -1
  137. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
  138. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js.map +1 -1
  139. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs +84 -0
  140. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs.map +1 -0
  141. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js +84 -0
  142. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js.map +1 -0
  143. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
  144. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
  145. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
  146. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
  147. package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs +17 -0
  148. package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs.map +1 -1
  149. package/dist/martyrs/src/modules/globals/views/mixins/mixins.js +17 -0
  150. package/dist/martyrs/src/modules/globals/views/mixins/mixins.js.map +1 -1
  151. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.cjs +70 -0
  152. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.cjs.map +1 -0
  153. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.js +70 -0
  154. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.js.map +1 -0
  155. package/dist/martyrs/src/modules/icons/entities/IconList.vue.cjs +35 -0
  156. package/dist/martyrs/src/modules/icons/entities/IconList.vue.cjs.map +1 -0
  157. package/dist/martyrs/src/modules/icons/entities/IconList.vue.js +35 -0
  158. package/dist/martyrs/src/modules/icons/entities/IconList.vue.js.map +1 -0
  159. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.cjs +1 -3
  160. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.cjs.map +1 -1
  161. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.js +1 -3
  162. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.js.map +1 -1
  163. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.cjs +1 -3
  164. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.cjs.map +1 -1
  165. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.js +1 -3
  166. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.js.map +1 -1
  167. package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.cjs +1 -3
  168. package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.cjs.map +1 -1
  169. package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.js +1 -3
  170. package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.js.map +1 -1
  171. package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.cjs +1 -3
  172. package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.cjs.map +1 -1
  173. package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.js +1 -3
  174. package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.js.map +1 -1
  175. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.cjs +1 -3
  176. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.cjs.map +1 -1
  177. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.js +1 -3
  178. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.js.map +1 -1
  179. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.cjs +21 -20
  180. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.cjs.map +1 -1
  181. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.js +21 -20
  182. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.js.map +1 -1
  183. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.cjs +1 -3
  184. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.cjs.map +1 -1
  185. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.js +1 -3
  186. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.js.map +1 -1
  187. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.cjs +6 -13
  188. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.cjs.map +1 -1
  189. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.js +6 -13
  190. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.js.map +1 -1
  191. package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.cjs +1 -3
  192. package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.cjs.map +1 -1
  193. package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.js +1 -3
  194. package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.js.map +1 -1
  195. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.cjs +1 -3
  196. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.cjs.map +1 -1
  197. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.js +1 -3
  198. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.js.map +1 -1
  199. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +1 -3
  200. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs.map +1 -1
  201. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +41 -43
  202. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
  203. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.cjs +8 -8
  204. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.cjs.map +1 -1
  205. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js +8 -8
  206. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js.map +1 -1
  207. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs +50 -51
  208. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs.map +1 -1
  209. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +51 -52
  210. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  211. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
  212. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
  213. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -1
  214. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
  215. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
  216. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
  217. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
  218. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +1 -1
  219. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +2 -2
  220. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +2 -2
  221. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +1 -1
  222. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  223. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
  224. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  225. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
  226. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
  227. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +1 -1
  228. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +1 -1
  229. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  230. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  231. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +7 -4
  232. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -1
  233. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +18 -15
  234. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
  235. package/dist/martyrs/src/modules/organizations/router/organizations.cjs +1 -1
  236. package/dist/martyrs/src/modules/organizations/router/organizations.js +1 -1
  237. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
  238. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  239. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs +7 -2
  240. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs.map +1 -1
  241. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +8 -3
  242. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  243. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +12 -13
  244. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs.map +1 -1
  245. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +13 -14
  246. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  247. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs +33 -24
  248. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs.map +1 -1
  249. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +36 -27
  250. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
  251. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.cjs +4 -4
  252. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.cjs.map +1 -1
  253. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js +4 -4
  254. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js.map +1 -1
  255. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs +7 -5
  256. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs.map +1 -1
  257. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +7 -5
  258. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  259. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +1 -1
  260. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
  261. package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.cjs +1 -1
  262. package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.js +1 -1
  263. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs +2 -2
  264. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js +1 -1
  265. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +57 -40
  266. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
  267. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +59 -42
  268. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  269. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +104 -84
  270. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs.map +1 -1
  271. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +106 -86
  272. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
  273. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +1 -1
  274. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  275. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
  276. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
  277. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs +1 -1
  278. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js +1 -1
  279. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs +145 -0
  280. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs.map +1 -0
  281. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +145 -0
  282. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js.map +1 -0
  283. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +1 -1
  284. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
  285. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +45 -30
  286. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs.map +1 -1
  287. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +50 -35
  288. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
  289. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs +43 -0
  290. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs.map +1 -0
  291. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js +43 -0
  292. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js.map +1 -0
  293. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +131 -0
  294. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs.map +1 -0
  295. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +131 -0
  296. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -0
  297. package/dist/martyrs/src/modules/products/products.client.cjs +3 -3
  298. package/dist/martyrs/src/modules/products/products.client.cjs.map +1 -1
  299. package/dist/martyrs/src/modules/products/products.client.js +3 -3
  300. package/dist/martyrs/src/modules/products/products.client.js.map +1 -1
  301. package/dist/martyrs/src/modules/products/store/products.cjs +4 -0
  302. package/dist/martyrs/src/modules/products/store/products.cjs.map +1 -1
  303. package/dist/martyrs/src/modules/products/store/products.js +4 -0
  304. package/dist/martyrs/src/modules/products/store/products.js.map +1 -1
  305. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +1 -1
  306. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
  307. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
  308. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  309. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +1 -1
  310. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +1 -1
  311. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +1 -1
  312. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
  313. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
  314. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
  315. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +2 -2
  316. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
  317. package/dist/martyrs.cjs.js +1 -1
  318. package/dist/martyrs.css +1 -1
  319. package/dist/martyrs.es.js +1 -1
  320. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.cjs +1 -1
  321. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  322. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.cjs +1 -1
  323. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  324. package/dist/organizations.server.cjs +1 -1
  325. package/dist/organizations.server.js +1 -1
  326. package/dist/products.server.cjs +111 -34
  327. package/dist/products.server.js +111 -34
  328. package/dist/style.css +196 -170
  329. package/package.json +1 -1
  330. package/src/.martyrs/chunks.json +325 -0
  331. package/src/.martyrs/filemap.json +6802 -0
  332. package/src/.martyrs/semantic-analysis.json +307 -0
  333. package/src/.martyrs/toc.json +14 -0
  334. package/src/components/Button/Button.vue +2 -2
  335. package/src/components/Checkbox/Checkbox.vue +28 -16
  336. package/src/components/Chips/Chips.vue +4 -4
  337. package/src/components/Feed/Carousel.vue +72 -0
  338. package/src/components/Feed/Feed.vue +2 -2
  339. package/src/components/Field/Field.vue +1 -0
  340. package/src/components/PhotoViewer/PhotoViewer.vue +307 -220
  341. package/src/components/Radio/Radio.vue +2 -10
  342. package/src/components/Skeleton/Skeleton.vue +9 -12
  343. package/src/components/Slider/Slider.vue +220 -100
  344. package/src/components/Status/Status.vue +0 -1
  345. package/src/components/Tooltip/Tooltip.vue +2 -2
  346. package/src/modules/auth/views/components/pages/Profile.vue +1 -1
  347. package/src/modules/auth/views/components/pages/ProfileEdit.old.vue +189 -0
  348. package/src/modules/auth/views/components/pages/ProfileEdit.vue +19 -182
  349. package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +72 -0
  350. package/src/modules/auth/views/components/pages/ProfileEditProfile.vue +110 -0
  351. package/src/modules/auth/views/components/pages/ProfileEditSidebar.vue +28 -0
  352. package/src/modules/auth/views/router/users.js +23 -12
  353. package/src/modules/community/components/blocks/FooterBlogpost.vue +3 -3
  354. package/src/modules/community/components/pages/BlogPost.vue +2 -1
  355. package/src/modules/community/components/sections/Comment.vue +161 -57
  356. package/src/modules/community/components/sections/Comments.vue +120 -63
  357. package/src/modules/community/components/sections/HotPosts.vue +7 -7
  358. package/src/modules/events/components/sections/EventsHot.vue +26 -33
  359. package/src/modules/globals/controllers/classes/abac/abac.core.js +3 -1
  360. package/src/modules/globals/controllers/classes/abac/abac.fields.js +126 -42
  361. package/src/modules/globals/controllers/classes/abac/v2/abac-core-fixed.js +313 -0
  362. package/src/modules/globals/controllers/classes/abac/v2/abac-express-fixed.js +276 -0
  363. package/src/modules/globals/controllers/classes/abac/v2/abac-fields-fixed.js +422 -0
  364. package/src/modules/globals/controllers/classes/abac/v2/abac-main-fixed.js +295 -0
  365. package/src/modules/globals/controllers/classes/abac/v2/abac-policies-fixed.js +316 -0
  366. package/src/modules/globals/controllers/classes/abac/v2/abac-ws-fixed.js +237 -0
  367. package/src/modules/globals/globals.client.js +2 -0
  368. package/src/modules/globals/views/components/blocks/CardFooter.vue +3 -3
  369. package/src/modules/globals/views/components/blocks/CardHeader.vue +1 -1
  370. package/src/modules/globals/views/components/blocks/PopupAuth.vue +66 -0
  371. package/src/modules/globals/views/mixins/mixins.js +37 -17
  372. package/src/modules/globals/views/plugins/popup.auth.plugin.js +77 -0
  373. package/src/modules/icons/entities/IconList.vue +14 -0
  374. package/src/modules/icons/navigation/IconCheck.vue +1 -3
  375. package/src/modules/icons/navigation/IconDoubleCheck.vue +1 -3
  376. package/src/modules/icons/navigation/IconLike.vue +1 -3
  377. package/src/modules/icons/navigation/IconMute.vue +1 -3
  378. package/src/modules/icons/navigation/IconPause.vue +1 -3
  379. package/src/modules/icons/navigation/IconPlay.vue +12 -15
  380. package/src/modules/icons/navigation/IconRefresh.vue +1 -3
  381. package/src/modules/icons/navigation/IconShuffle.vue +11 -26
  382. package/src/modules/icons/navigation/IconUnMute.vue +1 -3
  383. package/src/modules/icons/navigation/IconVolume.vue +1 -3
  384. package/src/modules/icons/pages/IconsPage.vue +0 -2
  385. package/src/modules/music/components/pages/AlbumDetail.vue +2 -2
  386. package/src/modules/music/components/pages/PlaylistDetail.vue +2 -2
  387. package/src/modules/music/components/pages/TrackDetail.vue +1 -1
  388. package/src/modules/music/components/player/MusicPlayer.vue +2 -2
  389. package/src/modules/notifications/components/blocks/NotificationItem.vue +6 -51
  390. package/src/modules/notifications/components/elements/NotificationBadge.vue +53 -97
  391. package/src/modules/organizations/configs/navigation.organization.config.js +8 -4
  392. package/src/modules/products/components/blocks/CardProduct.vue +8 -2
  393. package/src/modules/products/components/blocks/ProductDiscounts.vue +3 -4
  394. package/src/modules/products/components/blocks/ProductImages.vue +32 -23
  395. package/src/modules/products/components/blocks/ProductVariants.vue +6 -4
  396. package/src/modules/products/components/elements/Price.vue +3 -3
  397. package/src/modules/products/components/pages/Product.vue +32 -26
  398. package/src/modules/products/components/pages/ProductEdit.vue +95 -72
  399. package/src/modules/products/components/sections/EditRecommended.vue +131 -0
  400. package/src/modules/products/components/sections/ProductConfigurator.vue +35 -21
  401. package/src/modules/products/components/sections/ProductsPopular.vue +44 -0
  402. package/src/modules/products/components/sections/ProductsRecommended.vue +134 -0
  403. package/src/modules/products/controllers/configs/products.lookup.config.js +20 -15
  404. package/src/modules/products/controllers/products.controller.js +7 -22
  405. package/src/modules/products/models/category.model.js +28 -1
  406. package/src/modules/products/models/leftover.model.js +32 -0
  407. package/src/modules/products/models/product.model.js +37 -1
  408. package/src/modules/products/models/variant.model.js +35 -0
  409. package/src/modules/products/products.client.js +3 -3
  410. package/src/modules/products/routes/products.routes.js +1 -0
  411. package/src/modules/products/store/products.js +4 -0
  412. package/src/styles/base/all.scss +0 -38
  413. package/src/styles/base/shadow_transitions_hover_refactor.scss +20 -51
  414. package/src/styles/config.scss +51 -1
  415. package/dist/main-C75EcBpE.cjs +0 -11
  416. package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +0 -1
  417. package/dist/martyrs/src/components/Chips/Chips.vue.js.map +0 -1
  418. package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +0 -1
  419. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  420. package/dist/martyrs/src/components/Popup/Popup.vue.js.map +0 -1
  421. package/dist/martyrs/src/components/Slider/Slider.native.vue.cjs.map +0 -1
  422. package/dist/martyrs/src/components/Slider/Slider.native.vue.js.map +0 -1
  423. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.cjs +0 -2
  424. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.cjs.map +0 -1
  425. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.js +0 -2
  426. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.js.map +0 -1
  427. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs +0 -34
  428. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs.map +0 -1
  429. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js +0 -34
  430. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js.map +0 -1
  431. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs +0 -124
  432. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs.map +0 -1
  433. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js +0 -124
  434. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js.map +0 -1
  435. package/src/components/Slider/Slider.native.vue +0 -313
  436. package/src/modules/products/components/sections/PopularProducts.vue +0 -156
@@ -64,7 +64,7 @@ const _sfc_main = {
64
64
  });
65
65
  return (_ctx, _cache) => {
66
66
  return vue.openBlock(), vue.createElementBlock("div", {
67
- class: vue.normalizeClass(["skeleton-wrapper", { "skeleton-wrapper--loading": __props.loading }])
67
+ class: vue.normalizeClass(["w-100 pos-relative", { "skeleton-wrapper--loading": __props.loading }])
68
68
  }, [
69
69
  hasDefaultSlot.value && !__props.structure.length ? vue.renderSlot(_ctx.$slots, "default", { key: 0 }, void 0, true) : __props.structure.length ? (vue.openBlock(), vue.createElementBlock("div", {
70
70
  key: 1,
@@ -76,7 +76,8 @@ const _sfc_main = {
76
76
  class: vue.normalizeClass(["skeleton-item", [
77
77
  `skeleton-item--${item.block}`,
78
78
  `skeleton-item--${item.size || "medium"}`,
79
- { "skeleton-item--rounded": item.rounded }
79
+ { "skeleton-item--rounded": item.rounded },
80
+ item.class
80
81
  ]]),
81
82
  style: vue.normalizeStyle(item.style)
82
83
  }, null, 6);
@@ -90,6 +91,6 @@ const _sfc_main = {
90
91
  };
91
92
  }
92
93
  };
93
- const Skeleton = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-70b3339a"]]);
94
+ const Skeleton = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-b175ac0f"]]);
94
95
  exports.default = Skeleton;
95
96
  //# sourceMappingURL=Skeleton.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.vue.cjs","sources":["../../../../../src/components/Skeleton/Skeleton.vue"],"sourcesContent":["<template>\n <div class=\"skeleton-wrapper\" :class=\"{ 'skeleton-wrapper--loading': loading }\">\n <!-- Используем слот по умолчанию, если он есть -->\n <slot v-if=\"hasDefaultSlot && !structure.length\"></slot>\n \n <!-- Создаем скелетон на основе переданной структуры, если слот пустой -->\n <div v-else-if=\"structure.length\" class=\"skeleton-structure\" :class=\"{ 'skeleton-structure--horizontal': horizontal }\">\n <div \n v-for=\"(item, index) in structure\" \n :key=\"index\" \n class=\"skeleton-item\"\n :class=\"[\n `skeleton-item--${item.block}`,\n `skeleton-item--${item.size || 'medium'}`,\n { 'skeleton-item--rounded': item.rounded }\n ]\"\n :style=\"item.style\"\n ></div>\n </div>\n \n <!-- Если слот пустой и структура не определена - показываем дефолтный скелетон -->\n <div v-else class=\"skeleton-default\">\n <div class=\"skeleton-item skeleton-item--text skeleton-item--small\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--medium\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--large\"></div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, useSlots, computed, onMounted } from 'vue';\n\nconst slots = useSlots();\n\nconst props = defineProps({\n // Флаг загрузки, определяет, нужно ли показывать скелетон\n loading: {\n type: Boolean,\n default: false\n },\n // Структура скелетона, если не используется слот\n structure: {\n type: Array,\n default: () => []\n },\n // Горизонтальное расположение элементов (для карточек пользователей)\n horizontal: {\n type: Boolean,\n default: false\n },\n // Цвет фона карточки (светлый фон)\n cardColor: {\n type: String,\n default: 'rgb(var(--light))'\n },\n // Цвет блоков скелетона (серый)\n blockColor: {\n type: String,\n default: 'rgba(var(--white),0.25)'\n },\n // Цвет анимированной полосы (белый с прозрачностью)\n highlightColor: {\n type: String,\n default: 'rgba(var(--white), 0.9)'\n },\n // Скорость анимации в секундах\n animationDuration: {\n type: Number,\n default: 1.5\n },\n // Радиус закругления\n borderRadius: {\n type: String,\n default: '0.5rem'\n }\n});\n\n// Проверяем наличие слота по умолчанию\nconst hasDefaultSlot = computed(() => Boolean(slots.default));\n\n// Применяем CSS переменные для настройки стилей\nonMounted(() => {\n const root = document.documentElement;\n root.style.setProperty('--skeleton-card-color', props.cardColor);\n root.style.setProperty('--skeleton-block-color', props.blockColor);\n root.style.setProperty('--skeleton-highlight-color', props.highlightColor);\n root.style.setProperty('--skeleton-animation-duration', `${props.animationDuration}s`);\n root.style.setProperty('--skeleton-border-radius', props.borderRadius);\n});\n</script>\n\n<style scoped>\n.skeleton-wrapper {\n width: 100%;\n position: relative;\n background-color: var(--skeleton-card-color);\n padding: 1rem;\n}\n\n/* Стили для режима загрузки */\n.skeleton-wrapper--loading ::v-deep(*) {\n color: transparent !important;\n border-color: transparent !important;\n position: relative;\n}\n\n.skeleton-wrapper--loading ::v-deep(img),\n.skeleton-wrapper--loading ::v-deep(svg),\n.skeleton-wrapper--loading ::v-deep(button),\n.skeleton-wrapper--loading ::v-deep(a) {\n opacity: 0;\n}\n\n.skeleton-wrapper--loading ::v-deep(*::before),\n.skeleton-wrapper--loading ::v-deep(*::after) {\n display: none !important;\n}\n\n.skeleton-wrapper--loading ::v-deep(*) {\n position: relative;\n background-color: var(--skeleton-block-color) !important;\n border-radius: var(--skeleton-border-radius);\n overflow: hidden;\n}\n\n.skeleton-wrapper--loading ::v-deep(*)::before {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n display: block !important;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Стили для структурного скелетона */\n.skeleton-structure {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Горизонтальный скелетон для карточек пользователей */\n.skeleton-structure--horizontal {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n}\n\n.skeleton-item {\n background-color: var(--skeleton-block-color);\n border-radius: var(--skeleton-border-radius);\n position: relative;\n overflow: hidden;\n}\n\n.skeleton-item::after {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Типы блоков */\n.skeleton-item--text {\n height: 1rem;\n width: 100%;\n}\n\n.skeleton-item--text-group {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n flex: 1;\n}\n\n.skeleton-item--image {\n width: 100%;\n aspect-ratio: 16 / 9;\n}\n\n.skeleton-item--avatar {\n width: 4rem;\n height: 4rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--button {\n height: 3rem;\n width: 8rem;\n}\n\n.skeleton-item--circle {\n border-radius: 50%;\n}\n\n.skeleton-item--action {\n width: 2rem;\n height: 2rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--actions-group {\n display: flex;\n gap: 0.5rem;\n margin-left: auto;\n}\n\n.skeleton-item--square {\n aspect-ratio: 1 / 1;\n}\n\n/* Размеры */\n.skeleton-item--small {\n width: 30%;\n}\n\n.skeleton-item--medium {\n width: 60%;\n}\n\n.skeleton-item--large {\n width: 100%;\n}\n\n.skeleton-item--rounded {\n border-radius: 50%;\n}\n\n/* Дефолтный скелетон */\n.skeleton-default {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Анимация движения полосы */\n@keyframes shimmer {\n 0% {\n left: -100%;\n }\n 100% {\n left: 100%;\n }\n}\n</style>"],"names":["useSlots","computed","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,UAAM,QAAQA,IAAAA,SAAU;AAExB,UAAM,QAAQ;AA4Cd,UAAM,iBAAiBC,IAAAA,SAAS,MAAM,QAAQ,MAAM,OAAO,CAAC;AAG5DC,QAAAA,UAAU,MAAM;AACd,YAAM,OAAO,SAAS;AACtB,WAAK,MAAM,YAAY,yBAAyB,MAAM,SAAS;AAC/D,WAAK,MAAM,YAAY,0BAA0B,MAAM,UAAU;AACjE,WAAK,MAAM,YAAY,8BAA8B,MAAM,cAAc;AACzE,WAAK,MAAM,YAAY,iCAAiC,GAAG,MAAM,iBAAiB,GAAG;AACrF,WAAK,MAAM,YAAY,4BAA4B,MAAM,YAAY;AAAA,IACvE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Skeleton.vue.cjs","sources":["../../../../../src/components/Skeleton/Skeleton.vue"],"sourcesContent":["<template>\n <div class=\"w-100 pos-relative\" :class=\"{ 'skeleton-wrapper--loading': loading }\">\n <!-- Используем слот по умолчанию, если он есть -->\n <slot v-if=\"hasDefaultSlot && !structure.length\"></slot>\n \n <div \n v-else-if=\"structure.length\" \n class=\"skeleton-structure\"\n :class=\"{ 'skeleton-structure--horizontal': horizontal }\"\n >\n <div \n v-for=\"(item, index) in structure\" \n :key=\"index\" \n class=\"skeleton-item\"\n :class=\"[\n `skeleton-item--${item.block}`,\n `skeleton-item--${item.size || 'medium'}`,\n { 'skeleton-item--rounded': item.rounded },\n item.class\n ]\"\n :style=\"item.style\"\n />\n </div>\n \n <!-- Если слот пустой и структура не определена - показываем дефолтный скелетон -->\n <div v-else class=\"skeleton-default\">\n <div class=\"skeleton-item skeleton-item--text skeleton-item--small\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--medium\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--large\"></div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, useSlots, computed, onMounted } from 'vue';\n\nconst slots = useSlots();\n\nconst props = defineProps({\n // Флаг загрузки, определяет, нужно ли показывать скелетон\n loading: {\n type: Boolean,\n default: false\n },\n // Структура скелетона, если не используется слот\n structure: {\n type: Array,\n default: () => []\n },\n // Горизонтальное расположение элементов (для карточек пользователей)\n horizontal: {\n type: Boolean,\n default: false\n },\n // Цвет фона карточки (светлый фон)\n cardColor: {\n type: String,\n default: 'rgb(var(--light))'\n },\n // Цвет блоков скелетона (серый)\n blockColor: {\n type: String,\n default: 'rgba(var(--white),0.25)'\n },\n // Цвет анимированной полосы (белый с прозрачностью)\n highlightColor: {\n type: String,\n default: 'rgba(var(--white), 0.9)'\n },\n // Скорость анимации в секундах\n animationDuration: {\n type: Number,\n default: 1.5\n },\n // Радиус закругления\n borderRadius: {\n type: String,\n default: '0.5rem'\n }\n});\n\n// Проверяем наличие слота по умолчанию\nconst hasDefaultSlot = computed(() => Boolean(slots.default));\n\n// Применяем CSS переменные для настройки стилей\nonMounted(() => {\n const root = document.documentElement;\n root.style.setProperty('--skeleton-card-color', props.cardColor);\n root.style.setProperty('--skeleton-block-color', props.blockColor);\n root.style.setProperty('--skeleton-highlight-color', props.highlightColor);\n root.style.setProperty('--skeleton-animation-duration', `${props.animationDuration}s`);\n root.style.setProperty('--skeleton-border-radius', props.borderRadius);\n});\n</script>\n\n<style scoped>\n/* Стили для режима загрузки */\n.skeleton-wrapper--loading ::v-deep(*) {\n color: transparent !important;\n border-color: transparent !important;\n position: relative;\n}\n\n.skeleton-wrapper--loading ::v-deep(img),\n.skeleton-wrapper--loading ::v-deep(svg),\n.skeleton-wrapper--loading ::v-deep(button),\n.skeleton-wrapper--loading ::v-deep(a) {\n opacity: 0;\n}\n\n.skeleton-wrapper--loading ::v-deep(*::before),\n.skeleton-wrapper--loading ::v-deep(*::after) {\n display: none !important;\n}\n\n.skeleton-wrapper--loading ::v-deep(*) {\n position: relative;\n background-color: var(--skeleton-block-color) !important;\n border-radius: var(--skeleton-border-radius);\n overflow: hidden;\n}\n\n.skeleton-wrapper--loading ::v-deep(*)::before {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n display: block !important;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Стили для структурного скелетона */\n.skeleton-structure {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Горизонтальный скелетон для карточек пользователей */\n.skeleton-structure--horizontal {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n}\n\n.skeleton-item {\n background-color: var(--skeleton-block-color);\n border-radius: var(--skeleton-border-radius);\n position: relative;\n overflow: hidden;\n}\n\n.skeleton-item::after {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Типы блоков */\n.skeleton-item--text {\n height: 1rem;\n width: 100%;\n}\n\n.skeleton-item--text-group {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n flex: 1;\n}\n\n.skeleton-item--image {\n width: 100%;\n aspect-ratio: 16 / 9;\n}\n\n.skeleton-item--avatar {\n width: 4rem;\n height: 4rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--button {\n height: 3rem;\n width: 8rem;\n}\n\n.skeleton-item--circle {\n border-radius: 50%;\n}\n\n.skeleton-item--action {\n width: 2rem;\n height: 2rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--actions-group {\n display: flex;\n gap: 0.5rem;\n margin-left: auto;\n}\n\n.skeleton-item--square {\n aspect-ratio: 1 / 1;\n}\n\n/* Размеры */\n.skeleton-item--small {\n width: 30%;\n}\n\n.skeleton-item--medium {\n width: 60%;\n}\n\n.skeleton-item--large {\n width: 100%;\n}\n\n.skeleton-item--rounded {\n border-radius: 50%;\n}\n\n/* Дефолтный скелетон */\n.skeleton-default {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Анимация движения полосы */\n@keyframes shimmer {\n 0% {\n left: -100%;\n }\n 100% {\n left: 100%;\n }\n}\n</style>"],"names":["useSlots","computed","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,UAAM,QAAQA,IAAAA,SAAU;AAExB,UAAM,QAAQ;AA4Cd,UAAM,iBAAiBC,IAAAA,SAAS,MAAM,QAAQ,MAAM,OAAO,CAAC;AAG5DC,QAAAA,UAAU,MAAM;AACd,YAAM,OAAO,SAAS;AACtB,WAAK,MAAM,YAAY,yBAAyB,MAAM,SAAS;AAC/D,WAAK,MAAM,YAAY,0BAA0B,MAAM,UAAU;AACjE,WAAK,MAAM,YAAY,8BAA8B,MAAM,cAAc;AACzE,WAAK,MAAM,YAAY,iCAAiC,GAAG,MAAM,iBAAiB,GAAG;AACrF,WAAK,MAAM,YAAY,4BAA4B,MAAM,YAAY;AAAA,IACvE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -62,7 +62,7 @@ const _sfc_main = {
62
62
  });
63
63
  return (_ctx, _cache) => {
64
64
  return openBlock(), createElementBlock("div", {
65
- class: normalizeClass(["skeleton-wrapper", { "skeleton-wrapper--loading": __props.loading }])
65
+ class: normalizeClass(["w-100 pos-relative", { "skeleton-wrapper--loading": __props.loading }])
66
66
  }, [
67
67
  hasDefaultSlot.value && !__props.structure.length ? renderSlot(_ctx.$slots, "default", { key: 0 }, void 0, true) : __props.structure.length ? (openBlock(), createElementBlock("div", {
68
68
  key: 1,
@@ -74,7 +74,8 @@ const _sfc_main = {
74
74
  class: normalizeClass(["skeleton-item", [
75
75
  `skeleton-item--${item.block}`,
76
76
  `skeleton-item--${item.size || "medium"}`,
77
- { "skeleton-item--rounded": item.rounded }
77
+ { "skeleton-item--rounded": item.rounded },
78
+ item.class
78
79
  ]]),
79
80
  style: normalizeStyle(item.style)
80
81
  }, null, 6);
@@ -88,7 +89,7 @@ const _sfc_main = {
88
89
  };
89
90
  }
90
91
  };
91
- const Skeleton = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-70b3339a"]]);
92
+ const Skeleton = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-b175ac0f"]]);
92
93
  export {
93
94
  Skeleton as default
94
95
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.vue.js","sources":["../../../../../src/components/Skeleton/Skeleton.vue"],"sourcesContent":["<template>\n <div class=\"skeleton-wrapper\" :class=\"{ 'skeleton-wrapper--loading': loading }\">\n <!-- Используем слот по умолчанию, если он есть -->\n <slot v-if=\"hasDefaultSlot && !structure.length\"></slot>\n \n <!-- Создаем скелетон на основе переданной структуры, если слот пустой -->\n <div v-else-if=\"structure.length\" class=\"skeleton-structure\" :class=\"{ 'skeleton-structure--horizontal': horizontal }\">\n <div \n v-for=\"(item, index) in structure\" \n :key=\"index\" \n class=\"skeleton-item\"\n :class=\"[\n `skeleton-item--${item.block}`,\n `skeleton-item--${item.size || 'medium'}`,\n { 'skeleton-item--rounded': item.rounded }\n ]\"\n :style=\"item.style\"\n ></div>\n </div>\n \n <!-- Если слот пустой и структура не определена - показываем дефолтный скелетон -->\n <div v-else class=\"skeleton-default\">\n <div class=\"skeleton-item skeleton-item--text skeleton-item--small\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--medium\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--large\"></div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, useSlots, computed, onMounted } from 'vue';\n\nconst slots = useSlots();\n\nconst props = defineProps({\n // Флаг загрузки, определяет, нужно ли показывать скелетон\n loading: {\n type: Boolean,\n default: false\n },\n // Структура скелетона, если не используется слот\n structure: {\n type: Array,\n default: () => []\n },\n // Горизонтальное расположение элементов (для карточек пользователей)\n horizontal: {\n type: Boolean,\n default: false\n },\n // Цвет фона карточки (светлый фон)\n cardColor: {\n type: String,\n default: 'rgb(var(--light))'\n },\n // Цвет блоков скелетона (серый)\n blockColor: {\n type: String,\n default: 'rgba(var(--white),0.25)'\n },\n // Цвет анимированной полосы (белый с прозрачностью)\n highlightColor: {\n type: String,\n default: 'rgba(var(--white), 0.9)'\n },\n // Скорость анимации в секундах\n animationDuration: {\n type: Number,\n default: 1.5\n },\n // Радиус закругления\n borderRadius: {\n type: String,\n default: '0.5rem'\n }\n});\n\n// Проверяем наличие слота по умолчанию\nconst hasDefaultSlot = computed(() => Boolean(slots.default));\n\n// Применяем CSS переменные для настройки стилей\nonMounted(() => {\n const root = document.documentElement;\n root.style.setProperty('--skeleton-card-color', props.cardColor);\n root.style.setProperty('--skeleton-block-color', props.blockColor);\n root.style.setProperty('--skeleton-highlight-color', props.highlightColor);\n root.style.setProperty('--skeleton-animation-duration', `${props.animationDuration}s`);\n root.style.setProperty('--skeleton-border-radius', props.borderRadius);\n});\n</script>\n\n<style scoped>\n.skeleton-wrapper {\n width: 100%;\n position: relative;\n background-color: var(--skeleton-card-color);\n padding: 1rem;\n}\n\n/* Стили для режима загрузки */\n.skeleton-wrapper--loading ::v-deep(*) {\n color: transparent !important;\n border-color: transparent !important;\n position: relative;\n}\n\n.skeleton-wrapper--loading ::v-deep(img),\n.skeleton-wrapper--loading ::v-deep(svg),\n.skeleton-wrapper--loading ::v-deep(button),\n.skeleton-wrapper--loading ::v-deep(a) {\n opacity: 0;\n}\n\n.skeleton-wrapper--loading ::v-deep(*::before),\n.skeleton-wrapper--loading ::v-deep(*::after) {\n display: none !important;\n}\n\n.skeleton-wrapper--loading ::v-deep(*) {\n position: relative;\n background-color: var(--skeleton-block-color) !important;\n border-radius: var(--skeleton-border-radius);\n overflow: hidden;\n}\n\n.skeleton-wrapper--loading ::v-deep(*)::before {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n display: block !important;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Стили для структурного скелетона */\n.skeleton-structure {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Горизонтальный скелетон для карточек пользователей */\n.skeleton-structure--horizontal {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n}\n\n.skeleton-item {\n background-color: var(--skeleton-block-color);\n border-radius: var(--skeleton-border-radius);\n position: relative;\n overflow: hidden;\n}\n\n.skeleton-item::after {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Типы блоков */\n.skeleton-item--text {\n height: 1rem;\n width: 100%;\n}\n\n.skeleton-item--text-group {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n flex: 1;\n}\n\n.skeleton-item--image {\n width: 100%;\n aspect-ratio: 16 / 9;\n}\n\n.skeleton-item--avatar {\n width: 4rem;\n height: 4rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--button {\n height: 3rem;\n width: 8rem;\n}\n\n.skeleton-item--circle {\n border-radius: 50%;\n}\n\n.skeleton-item--action {\n width: 2rem;\n height: 2rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--actions-group {\n display: flex;\n gap: 0.5rem;\n margin-left: auto;\n}\n\n.skeleton-item--square {\n aspect-ratio: 1 / 1;\n}\n\n/* Размеры */\n.skeleton-item--small {\n width: 30%;\n}\n\n.skeleton-item--medium {\n width: 60%;\n}\n\n.skeleton-item--large {\n width: 100%;\n}\n\n.skeleton-item--rounded {\n border-radius: 50%;\n}\n\n/* Дефолтный скелетон */\n.skeleton-default {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Анимация движения полосы */\n@keyframes shimmer {\n 0% {\n left: -100%;\n }\n 100% {\n left: 100%;\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,UAAM,QAAQ,SAAU;AAExB,UAAM,QAAQ;AA4Cd,UAAM,iBAAiB,SAAS,MAAM,QAAQ,MAAM,OAAO,CAAC;AAG5D,cAAU,MAAM;AACd,YAAM,OAAO,SAAS;AACtB,WAAK,MAAM,YAAY,yBAAyB,MAAM,SAAS;AAC/D,WAAK,MAAM,YAAY,0BAA0B,MAAM,UAAU;AACjE,WAAK,MAAM,YAAY,8BAA8B,MAAM,cAAc;AACzE,WAAK,MAAM,YAAY,iCAAiC,GAAG,MAAM,iBAAiB,GAAG;AACrF,WAAK,MAAM,YAAY,4BAA4B,MAAM,YAAY;AAAA,IACvE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Skeleton.vue.js","sources":["../../../../../src/components/Skeleton/Skeleton.vue"],"sourcesContent":["<template>\n <div class=\"w-100 pos-relative\" :class=\"{ 'skeleton-wrapper--loading': loading }\">\n <!-- Используем слот по умолчанию, если он есть -->\n <slot v-if=\"hasDefaultSlot && !structure.length\"></slot>\n \n <div \n v-else-if=\"structure.length\" \n class=\"skeleton-structure\"\n :class=\"{ 'skeleton-structure--horizontal': horizontal }\"\n >\n <div \n v-for=\"(item, index) in structure\" \n :key=\"index\" \n class=\"skeleton-item\"\n :class=\"[\n `skeleton-item--${item.block}`,\n `skeleton-item--${item.size || 'medium'}`,\n { 'skeleton-item--rounded': item.rounded },\n item.class\n ]\"\n :style=\"item.style\"\n />\n </div>\n \n <!-- Если слот пустой и структура не определена - показываем дефолтный скелетон -->\n <div v-else class=\"skeleton-default\">\n <div class=\"skeleton-item skeleton-item--text skeleton-item--small\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--medium\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--large\"></div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, useSlots, computed, onMounted } from 'vue';\n\nconst slots = useSlots();\n\nconst props = defineProps({\n // Флаг загрузки, определяет, нужно ли показывать скелетон\n loading: {\n type: Boolean,\n default: false\n },\n // Структура скелетона, если не используется слот\n structure: {\n type: Array,\n default: () => []\n },\n // Горизонтальное расположение элементов (для карточек пользователей)\n horizontal: {\n type: Boolean,\n default: false\n },\n // Цвет фона карточки (светлый фон)\n cardColor: {\n type: String,\n default: 'rgb(var(--light))'\n },\n // Цвет блоков скелетона (серый)\n blockColor: {\n type: String,\n default: 'rgba(var(--white),0.25)'\n },\n // Цвет анимированной полосы (белый с прозрачностью)\n highlightColor: {\n type: String,\n default: 'rgba(var(--white), 0.9)'\n },\n // Скорость анимации в секундах\n animationDuration: {\n type: Number,\n default: 1.5\n },\n // Радиус закругления\n borderRadius: {\n type: String,\n default: '0.5rem'\n }\n});\n\n// Проверяем наличие слота по умолчанию\nconst hasDefaultSlot = computed(() => Boolean(slots.default));\n\n// Применяем CSS переменные для настройки стилей\nonMounted(() => {\n const root = document.documentElement;\n root.style.setProperty('--skeleton-card-color', props.cardColor);\n root.style.setProperty('--skeleton-block-color', props.blockColor);\n root.style.setProperty('--skeleton-highlight-color', props.highlightColor);\n root.style.setProperty('--skeleton-animation-duration', `${props.animationDuration}s`);\n root.style.setProperty('--skeleton-border-radius', props.borderRadius);\n});\n</script>\n\n<style scoped>\n/* Стили для режима загрузки */\n.skeleton-wrapper--loading ::v-deep(*) {\n color: transparent !important;\n border-color: transparent !important;\n position: relative;\n}\n\n.skeleton-wrapper--loading ::v-deep(img),\n.skeleton-wrapper--loading ::v-deep(svg),\n.skeleton-wrapper--loading ::v-deep(button),\n.skeleton-wrapper--loading ::v-deep(a) {\n opacity: 0;\n}\n\n.skeleton-wrapper--loading ::v-deep(*::before),\n.skeleton-wrapper--loading ::v-deep(*::after) {\n display: none !important;\n}\n\n.skeleton-wrapper--loading ::v-deep(*) {\n position: relative;\n background-color: var(--skeleton-block-color) !important;\n border-radius: var(--skeleton-border-radius);\n overflow: hidden;\n}\n\n.skeleton-wrapper--loading ::v-deep(*)::before {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n display: block !important;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Стили для структурного скелетона */\n.skeleton-structure {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Горизонтальный скелетон для карточек пользователей */\n.skeleton-structure--horizontal {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n}\n\n.skeleton-item {\n background-color: var(--skeleton-block-color);\n border-radius: var(--skeleton-border-radius);\n position: relative;\n overflow: hidden;\n}\n\n.skeleton-item::after {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Типы блоков */\n.skeleton-item--text {\n height: 1rem;\n width: 100%;\n}\n\n.skeleton-item--text-group {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n flex: 1;\n}\n\n.skeleton-item--image {\n width: 100%;\n aspect-ratio: 16 / 9;\n}\n\n.skeleton-item--avatar {\n width: 4rem;\n height: 4rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--button {\n height: 3rem;\n width: 8rem;\n}\n\n.skeleton-item--circle {\n border-radius: 50%;\n}\n\n.skeleton-item--action {\n width: 2rem;\n height: 2rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--actions-group {\n display: flex;\n gap: 0.5rem;\n margin-left: auto;\n}\n\n.skeleton-item--square {\n aspect-ratio: 1 / 1;\n}\n\n/* Размеры */\n.skeleton-item--small {\n width: 30%;\n}\n\n.skeleton-item--medium {\n width: 60%;\n}\n\n.skeleton-item--large {\n width: 100%;\n}\n\n.skeleton-item--rounded {\n border-radius: 50%;\n}\n\n/* Дефолтный скелетон */\n.skeleton-default {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Анимация движения полосы */\n@keyframes shimmer {\n 0% {\n left: -100%;\n }\n 100% {\n left: 100%;\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,UAAM,QAAQ,SAAU;AAExB,UAAM,QAAQ;AA4Cd,UAAM,iBAAiB,SAAS,MAAM,QAAQ,MAAM,OAAO,CAAC;AAG5D,cAAU,MAAM;AACd,YAAM,OAAO,SAAS;AACtB,WAAK,MAAM,YAAY,yBAAyB,MAAM,SAAS;AAC/D,WAAK,MAAM,YAAY,0BAA0B,MAAM,UAAU;AACjE,WAAK,MAAM,YAAY,8BAA8B,MAAM,cAAc;AACzE,WAAK,MAAM,YAAY,iCAAiC,GAAG,MAAM,iBAAiB,GAAG;AACrF,WAAK,MAAM,YAAY,4BAA4B,MAAM,YAAY;AAAA,IACvE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,46 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const vueRouter = require("vue-router");
5
- const vueI18n = require("vue-i18n");
6
- const Loader = require("../Loader/Loader.vue2.cjs");
7
- const _pluginVue_exportHelper = require("../../../../_virtual/_plugin-vue_export-helper.cjs");
4
+ ;/* empty css */
8
5
  const _hoisted_1 = { class: "pos-relative" };
9
6
  const _hoisted_2 = {
10
- key: 0,
11
- class: "h-20r radius-semi pos-relative w-100 bg-light"
12
- };
13
- const _hoisted_3 = {
14
- key: 1,
15
- class: "bg-light radius-semi flex flex-center w-100 h-20r"
16
- };
17
- const _hoisted_4 = { class: "text-gray-500" };
18
- const _hoisted_5 = {
19
7
  key: 0,
20
8
  class: "carousel__dots"
21
9
  };
22
- const _hoisted_6 = ["onClick"];
10
+ const _hoisted_3 = ["onClick"];
23
11
  const _sfc_main = {
24
- __name: "Slider.native",
12
+ __name: "Slider",
25
13
  props: {
26
14
  showDots: Boolean,
27
- store: Object,
28
- options: Object,
29
- text: Object,
30
- user: Object
15
+ slideCount: {
16
+ type: Number,
17
+ default: 0
18
+ }
31
19
  },
32
20
  setup(__props) {
33
21
  const props = __props;
34
- vueRouter.useRouter();
35
22
  const carouselRef = vue.ref(null);
36
- const entitiesState = vue.ref([]);
37
- const isLoading = vue.ref(true);
38
23
  const selectedIndex = vue.ref(0);
39
24
  const autoplayInterval = vue.ref(null);
40
25
  const scrollTimeout = vue.ref(null);
41
- const { t } = vueI18n.useI18n({
42
- messages: props.text
43
- });
44
26
  const scrollTo = (index) => {
45
27
  if (!carouselRef.value) return;
46
28
  const container = carouselRef.value.querySelector(".carousel__container");
@@ -69,7 +51,7 @@ const _sfc_main = {
69
51
  const scrollPosition = container.scrollLeft;
70
52
  const slideWidth = slides[0].offsetWidth;
71
53
  const index = Math.round(scrollPosition / slideWidth);
72
- const boundedIndex = Math.max(0, Math.min(index, entitiesState.value.length - 1));
54
+ const boundedIndex = Math.max(0, Math.min(index, slides.length - 1));
73
55
  selectedIndex.value = boundedIndex;
74
56
  };
75
57
  const setupAutoplay = () => {
@@ -77,20 +59,12 @@ const _sfc_main = {
77
59
  clearInterval(autoplayInterval.value);
78
60
  }
79
61
  autoplayInterval.value = setInterval(() => {
80
- const nextIndex = (selectedIndex.value + 1) % entitiesState.value.length;
62
+ const nextIndex = (selectedIndex.value + 1) % props.slideCount;
81
63
  scrollTo(nextIndex);
82
64
  }, 2e3);
83
65
  };
84
- vue.onMounted(async () => {
85
- try {
86
- entitiesState.value = await props.store.read(props.options);
87
- } catch (error) {
88
- console.error("Error loading entities:", error);
89
- entitiesState.value = [];
90
- } finally {
91
- isLoading.value = false;
92
- }
93
- if (entitiesState.value.length && carouselRef.value) {
66
+ vue.onMounted(() => {
67
+ if (carouselRef.value) {
94
68
  const container = carouselRef.value.querySelector(".carousel__container");
95
69
  const slides = container.querySelectorAll(".carousel__slide");
96
70
  const observer = new IntersectionObserver((entries) => {
@@ -166,21 +140,9 @@ const _sfc_main = {
166
140
  clearTimeout(scrollTimeout.value);
167
141
  }
168
142
  });
169
- vue.watch(entitiesState, (newValue) => {
170
- if (newValue.length && carouselRef.value) {
171
- selectedIndex.value = 0;
172
- scrollTo(0);
173
- setupAutoplay();
174
- }
175
- });
176
143
  return (_ctx, _cache) => {
177
144
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
178
- isLoading.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [
179
- vue.createVNode(Loader.default)
180
- ])) : !entitiesState.value.length ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3, [
181
- vue.createElementVNode("p", _hoisted_4, vue.toDisplayString(vue.unref(t)("title")), 1)
182
- ])) : (vue.openBlock(), vue.createElementBlock("div", {
183
- key: 2,
145
+ vue.createElementVNode("div", {
184
146
  class: "carousel",
185
147
  ref_key: "carouselRef",
186
148
  ref: carouselRef
@@ -189,41 +151,21 @@ const _sfc_main = {
189
151
  class: "carousel__container",
190
152
  onScroll: handleScroll
191
153
  }, [
192
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(entitiesState.value, (entity, key, index) => {
193
- return vue.openBlock(), vue.createElementBlock("div", {
194
- class: "carousel__slide pd-nano",
195
- key
196
- }, [
197
- vue.createVNode(vue.Transition, {
198
- name: "fade",
199
- mode: "out-in",
200
- appear: ""
201
- }, {
202
- default: vue.withCtx(() => [
203
- vue.renderSlot(_ctx.$slots, "default", {
204
- item: entity,
205
- user: __props.user
206
- }, void 0, true)
207
- ]),
208
- _: 2
209
- }, 1024)
210
- ]);
211
- }), 128))
154
+ vue.renderSlot(_ctx.$slots, "default")
212
155
  ], 32),
213
- __props.showDots && entitiesState.value.length > 1 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, [
214
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(entitiesState.value, (_, index) => {
156
+ __props.showDots && __props.slideCount > 1 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [
157
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.slideCount, (index) => {
215
158
  return vue.openBlock(), vue.createElementBlock("button", {
216
- key: index,
217
- class: vue.normalizeClass(["carousel__dot", { "carousel__dot--active": selectedIndex.value === index }]),
218
- onClick: ($event) => scrollTo(index)
219
- }, null, 10, _hoisted_6);
159
+ key: index - 1,
160
+ class: vue.normalizeClass(["carousel__dot", { "carousel__dot--active": selectedIndex.value === index - 1 }]),
161
+ onClick: ($event) => scrollTo(index - 1)
162
+ }, null, 10, _hoisted_3);
220
163
  }), 128))
221
164
  ])) : vue.createCommentVNode("", true)
222
- ], 512))
165
+ ], 512)
223
166
  ]);
224
167
  };
225
168
  }
226
169
  };
227
- const SliderNative = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-a766dedc"]]);
228
- exports.default = SliderNative;
229
- //# sourceMappingURL=Slider.native.vue.cjs.map
170
+ exports.default = _sfc_main;
171
+ //# sourceMappingURL=Slider.vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Slider.vue.cjs","sources":["../../../../../src/components/Slider/Slider.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <!-- Native Carousel -->\n <div class=\"carousel\" ref=\"carouselRef\">\n <div class=\"carousel__container\" @scroll=\"handleScroll\">\n <slot></slot>\n </div>\n \n <!-- Navigation Dots (optional) -->\n <div class=\"carousel__dots\" v-if=\"showDots && slideCount > 1\">\n <button \n v-for=\"index in slideCount\" \n :key=\"index - 1\"\n class=\"carousel__dot\"\n :class=\"{ 'carousel__dot--active': selectedIndex === index - 1 }\"\n @click=\"scrollTo(index - 1)\"\n ></button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted, onBeforeUnmount, computed } from 'vue'\n\n// Props for customization\nconst props = defineProps({\n showDots: Boolean,\n slideCount: {\n type: Number,\n default: 0\n }\n});\n\nconst carouselRef = ref(null)\nconst selectedIndex = ref(0)\nconst autoplayInterval = ref(null)\nconst scrollTimeout = ref(null)\n\n// Scroll to specific slide\nconst scrollTo = (index) => {\n if (!carouselRef.value) return\n \n const container = carouselRef.value.querySelector('.carousel__container')\n const slides = container.querySelectorAll('.carousel__slide')\n \n if (slides[index]) {\n container.scrollTo({\n left: slides[index].offsetLeft,\n behavior: 'smooth'\n })\n \n selectedIndex.value = index\n }\n}\n\n// Handle scroll event with debounce\nconst handleScroll = () => {\n // Clear previous timeout\n if (scrollTimeout.value) {\n clearTimeout(scrollTimeout.value)\n }\n \n // Set a timeout to update the index when scrolling stops\n scrollTimeout.value = setTimeout(() => {\n updateSelectedIndex()\n }, 50) // Small delay to ensure scroll has completed\n}\n\n// Update selected index when scrolling\nconst updateSelectedIndex = () => {\n if (!carouselRef.value) return\n \n const container = carouselRef.value.querySelector('.carousel__container')\n const slides = container.querySelectorAll('.carousel__slide')\n \n if (!slides.length) return\n \n const scrollPosition = container.scrollLeft\n const slideWidth = slides[0].offsetWidth\n \n // Find current slide index based on scroll position\n const index = Math.round(scrollPosition / slideWidth)\n \n // Ensure index is within bounds\n const boundedIndex = Math.max(0, Math.min(index, slides.length - 1))\n \n // Update selected index\n selectedIndex.value = boundedIndex\n}\n\n// Setup autoplay functionality\nconst setupAutoplay = () => {\n if (autoplayInterval.value) {\n clearInterval(autoplayInterval.value)\n }\n \n autoplayInterval.value = setInterval(() => {\n const nextIndex = (selectedIndex.value + 1) % props.slideCount\n scrollTo(nextIndex)\n }, 2000) // 2 seconds interval like in original\n}\n\nonMounted(() => {\n // Initialize native carousel after component is mounted\n if (carouselRef.value) {\n // Listen for scroll end using intersection observer for better performance\n const container = carouselRef.value.querySelector('.carousel__container')\n const slides = container.querySelectorAll('.carousel__slide')\n \n // Create intersection observer to detect when slides are visible\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n // Find the index of the visible slide\n const slideIndex = Array.from(slides).indexOf(entry.target)\n if (slideIndex !== -1) {\n selectedIndex.value = slideIndex\n }\n }\n })\n }, {\n root: container,\n threshold: 0.7 // Consider slide visible when 70% is in view\n })\n \n // Observe all slides\n slides.forEach(slide => {\n observer.observe(slide)\n })\n \n // Add focus/blur events to pause autoplay on focus\n container.addEventListener('focusin', () => {\n if (autoplayInterval.value) {\n clearInterval(autoplayInterval.value)\n }\n })\n \n container.addEventListener('focusout', () => {\n setupAutoplay()\n })\n \n // Stop autoplay on touch/mouse interaction\n container.addEventListener('mousedown', () => {\n if (autoplayInterval.value) {\n clearInterval(autoplayInterval.value)\n }\n })\n \n container.addEventListener('touchstart', () => {\n if (autoplayInterval.value) {\n clearInterval(autoplayInterval.value)\n }\n })\n \n // Resume autoplay after interaction ends\n container.addEventListener('mouseup', () => {\n setupAutoplay()\n })\n \n container.addEventListener('touchend', () => {\n setupAutoplay()\n })\n \n // Initialize autoplay\n setupAutoplay()\n \n // Store observer for cleanup\n carouselRef.value._observer = observer\n }\n})\n\nonBeforeUnmount(() => {\n // Clean up all resources\n if (carouselRef.value) {\n // Clean up intersection observer\n if (carouselRef.value._observer) {\n carouselRef.value._observer.disconnect()\n }\n \n // Clean up event listeners\n const container = carouselRef.value.querySelector('.carousel__container')\n if (container) {\n container.removeEventListener('focusin', () => {})\n container.removeEventListener('focusout', () => {})\n container.removeEventListener('mousedown', () => {})\n container.removeEventListener('touchstart', () => {})\n container.removeEventListener('mouseup', () => {})\n container.removeEventListener('touchend', () => {})\n }\n }\n \n // Clear all timeouts and intervals\n if (autoplayInterval.value) {\n clearInterval(autoplayInterval.value)\n }\n \n if (scrollTimeout.value) {\n clearTimeout(scrollTimeout.value)\n }\n})\n</script>\n\n<style >\n.carousel {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel__container {\n display: flex;\n scroll-snap-type: x mandatory;\n overflow-x: scroll;\n scrollbar-width: none; /* Firefox */\n -ms-overflow-style: none; /* IE and Edge */\n scroll-behavior: smooth;\n}\n\n.carousel__container::-webkit-scrollbar {\n display: none; /* Chrome, Safari, Opera */\n}\n\n.carousel__slide {\n flex: 0 0 100%;\n width: 100%;\n scroll-snap-align: start;\n scroll-snap-stop: always;\n}\n\n/* Navigation dots */\n.carousel__dots {\n display: flex;\n justify-content: center;\n gap: 0.5rem;\n margin-top: 1rem;\n}\n\n.carousel__dot {\n width: 0.625rem;\n height: 0.625rem;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.2);\n border: none;\n padding: 0;\n cursor: pointer;\n transition: background-color 0.3s ease;\n}\n\n.carousel__dot--active {\n background-color: rgba(0, 0, 0, 0.6);\n}\n</style>"],"names":["ref","onMounted","onBeforeUnmount"],"mappings":"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"}
@@ -1,44 +1,26 @@
1
- import { ref, onMounted, onBeforeUnmount, watch, createElementBlock, openBlock, createVNode, createElementVNode, toDisplayString, unref, createCommentVNode, Fragment, renderList, Transition, withCtx, renderSlot, normalizeClass } from "vue";
2
- import { useRouter } from "vue-router";
3
- import { useI18n } from "vue-i18n";
4
- import Loader from "../Loader/Loader.vue2.js";
5
- import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
1
+ import { ref, onMounted, onBeforeUnmount, createElementBlock, openBlock, createElementVNode, createCommentVNode, renderSlot, Fragment, renderList, normalizeClass } from "vue";
2
+ /* empty css */
6
3
  const _hoisted_1 = { class: "pos-relative" };
7
4
  const _hoisted_2 = {
8
- key: 0,
9
- class: "h-20r radius-semi pos-relative w-100 bg-light"
10
- };
11
- const _hoisted_3 = {
12
- key: 1,
13
- class: "bg-light radius-semi flex flex-center w-100 h-20r"
14
- };
15
- const _hoisted_4 = { class: "text-gray-500" };
16
- const _hoisted_5 = {
17
5
  key: 0,
18
6
  class: "carousel__dots"
19
7
  };
20
- const _hoisted_6 = ["onClick"];
8
+ const _hoisted_3 = ["onClick"];
21
9
  const _sfc_main = {
22
- __name: "Slider.native",
10
+ __name: "Slider",
23
11
  props: {
24
12
  showDots: Boolean,
25
- store: Object,
26
- options: Object,
27
- text: Object,
28
- user: Object
13
+ slideCount: {
14
+ type: Number,
15
+ default: 0
16
+ }
29
17
  },
30
18
  setup(__props) {
31
19
  const props = __props;
32
- useRouter();
33
20
  const carouselRef = ref(null);
34
- const entitiesState = ref([]);
35
- const isLoading = ref(true);
36
21
  const selectedIndex = ref(0);
37
22
  const autoplayInterval = ref(null);
38
23
  const scrollTimeout = ref(null);
39
- const { t } = useI18n({
40
- messages: props.text
41
- });
42
24
  const scrollTo = (index) => {
43
25
  if (!carouselRef.value) return;
44
26
  const container = carouselRef.value.querySelector(".carousel__container");
@@ -67,7 +49,7 @@ const _sfc_main = {
67
49
  const scrollPosition = container.scrollLeft;
68
50
  const slideWidth = slides[0].offsetWidth;
69
51
  const index = Math.round(scrollPosition / slideWidth);
70
- const boundedIndex = Math.max(0, Math.min(index, entitiesState.value.length - 1));
52
+ const boundedIndex = Math.max(0, Math.min(index, slides.length - 1));
71
53
  selectedIndex.value = boundedIndex;
72
54
  };
73
55
  const setupAutoplay = () => {
@@ -75,20 +57,12 @@ const _sfc_main = {
75
57
  clearInterval(autoplayInterval.value);
76
58
  }
77
59
  autoplayInterval.value = setInterval(() => {
78
- const nextIndex = (selectedIndex.value + 1) % entitiesState.value.length;
60
+ const nextIndex = (selectedIndex.value + 1) % props.slideCount;
79
61
  scrollTo(nextIndex);
80
62
  }, 2e3);
81
63
  };
82
- onMounted(async () => {
83
- try {
84
- entitiesState.value = await props.store.read(props.options);
85
- } catch (error) {
86
- console.error("Error loading entities:", error);
87
- entitiesState.value = [];
88
- } finally {
89
- isLoading.value = false;
90
- }
91
- if (entitiesState.value.length && carouselRef.value) {
64
+ onMounted(() => {
65
+ if (carouselRef.value) {
92
66
  const container = carouselRef.value.querySelector(".carousel__container");
93
67
  const slides = container.querySelectorAll(".carousel__slide");
94
68
  const observer = new IntersectionObserver((entries) => {
@@ -164,21 +138,9 @@ const _sfc_main = {
164
138
  clearTimeout(scrollTimeout.value);
165
139
  }
166
140
  });
167
- watch(entitiesState, (newValue) => {
168
- if (newValue.length && carouselRef.value) {
169
- selectedIndex.value = 0;
170
- scrollTo(0);
171
- setupAutoplay();
172
- }
173
- });
174
141
  return (_ctx, _cache) => {
175
142
  return openBlock(), createElementBlock("div", _hoisted_1, [
176
- isLoading.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
177
- createVNode(Loader)
178
- ])) : !entitiesState.value.length ? (openBlock(), createElementBlock("div", _hoisted_3, [
179
- createElementVNode("p", _hoisted_4, toDisplayString(unref(t)("title")), 1)
180
- ])) : (openBlock(), createElementBlock("div", {
181
- key: 2,
143
+ createElementVNode("div", {
182
144
  class: "carousel",
183
145
  ref_key: "carouselRef",
184
146
  ref: carouselRef
@@ -187,43 +149,23 @@ const _sfc_main = {
187
149
  class: "carousel__container",
188
150
  onScroll: handleScroll
189
151
  }, [
190
- (openBlock(true), createElementBlock(Fragment, null, renderList(entitiesState.value, (entity, key, index) => {
191
- return openBlock(), createElementBlock("div", {
192
- class: "carousel__slide pd-nano",
193
- key
194
- }, [
195
- createVNode(Transition, {
196
- name: "fade",
197
- mode: "out-in",
198
- appear: ""
199
- }, {
200
- default: withCtx(() => [
201
- renderSlot(_ctx.$slots, "default", {
202
- item: entity,
203
- user: __props.user
204
- }, void 0, true)
205
- ]),
206
- _: 2
207
- }, 1024)
208
- ]);
209
- }), 128))
152
+ renderSlot(_ctx.$slots, "default")
210
153
  ], 32),
211
- __props.showDots && entitiesState.value.length > 1 ? (openBlock(), createElementBlock("div", _hoisted_5, [
212
- (openBlock(true), createElementBlock(Fragment, null, renderList(entitiesState.value, (_, index) => {
154
+ __props.showDots && __props.slideCount > 1 ? (openBlock(), createElementBlock("div", _hoisted_2, [
155
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.slideCount, (index) => {
213
156
  return openBlock(), createElementBlock("button", {
214
- key: index,
215
- class: normalizeClass(["carousel__dot", { "carousel__dot--active": selectedIndex.value === index }]),
216
- onClick: ($event) => scrollTo(index)
217
- }, null, 10, _hoisted_6);
157
+ key: index - 1,
158
+ class: normalizeClass(["carousel__dot", { "carousel__dot--active": selectedIndex.value === index - 1 }]),
159
+ onClick: ($event) => scrollTo(index - 1)
160
+ }, null, 10, _hoisted_3);
218
161
  }), 128))
219
162
  ])) : createCommentVNode("", true)
220
- ], 512))
163
+ ], 512)
221
164
  ]);
222
165
  };
223
166
  }
224
167
  };
225
- const SliderNative = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-a766dedc"]]);
226
168
  export {
227
- SliderNative as default
169
+ _sfc_main as default
228
170
  };
229
- //# sourceMappingURL=Slider.native.vue.js.map
171
+ //# sourceMappingURL=Slider.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Slider.vue.js","sources":["../../../../../src/components/Slider/Slider.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <!-- Native Carousel -->\n <div class=\"carousel\" ref=\"carouselRef\">\n <div class=\"carousel__container\" @scroll=\"handleScroll\">\n <slot></slot>\n </div>\n \n <!-- Navigation Dots (optional) -->\n <div class=\"carousel__dots\" v-if=\"showDots && slideCount > 1\">\n <button \n v-for=\"index in slideCount\" \n :key=\"index - 1\"\n class=\"carousel__dot\"\n :class=\"{ 'carousel__dot--active': selectedIndex === index - 1 }\"\n @click=\"scrollTo(index - 1)\"\n ></button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted, onBeforeUnmount, computed } from 'vue'\n\n// Props for customization\nconst props = defineProps({\n showDots: Boolean,\n slideCount: {\n type: Number,\n default: 0\n }\n});\n\nconst carouselRef = ref(null)\nconst selectedIndex = ref(0)\nconst autoplayInterval = ref(null)\nconst scrollTimeout = ref(null)\n\n// Scroll to specific slide\nconst scrollTo = (index) => {\n if (!carouselRef.value) return\n \n const container = carouselRef.value.querySelector('.carousel__container')\n const slides = container.querySelectorAll('.carousel__slide')\n \n if (slides[index]) {\n container.scrollTo({\n left: slides[index].offsetLeft,\n behavior: 'smooth'\n })\n \n selectedIndex.value = index\n }\n}\n\n// Handle scroll event with debounce\nconst handleScroll = () => {\n // Clear previous timeout\n if (scrollTimeout.value) {\n clearTimeout(scrollTimeout.value)\n }\n \n // Set a timeout to update the index when scrolling stops\n scrollTimeout.value = setTimeout(() => {\n updateSelectedIndex()\n }, 50) // Small delay to ensure scroll has completed\n}\n\n// Update selected index when scrolling\nconst updateSelectedIndex = () => {\n if (!carouselRef.value) return\n \n const container = carouselRef.value.querySelector('.carousel__container')\n const slides = container.querySelectorAll('.carousel__slide')\n \n if (!slides.length) return\n \n const scrollPosition = container.scrollLeft\n const slideWidth = slides[0].offsetWidth\n \n // Find current slide index based on scroll position\n const index = Math.round(scrollPosition / slideWidth)\n \n // Ensure index is within bounds\n const boundedIndex = Math.max(0, Math.min(index, slides.length - 1))\n \n // Update selected index\n selectedIndex.value = boundedIndex\n}\n\n// Setup autoplay functionality\nconst setupAutoplay = () => {\n if (autoplayInterval.value) {\n clearInterval(autoplayInterval.value)\n }\n \n autoplayInterval.value = setInterval(() => {\n const nextIndex = (selectedIndex.value + 1) % props.slideCount\n scrollTo(nextIndex)\n }, 2000) // 2 seconds interval like in original\n}\n\nonMounted(() => {\n // Initialize native carousel after component is mounted\n if (carouselRef.value) {\n // Listen for scroll end using intersection observer for better performance\n const container = carouselRef.value.querySelector('.carousel__container')\n const slides = container.querySelectorAll('.carousel__slide')\n \n // Create intersection observer to detect when slides are visible\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n // Find the index of the visible slide\n const slideIndex = Array.from(slides).indexOf(entry.target)\n if (slideIndex !== -1) {\n selectedIndex.value = slideIndex\n }\n }\n })\n }, {\n root: container,\n threshold: 0.7 // Consider slide visible when 70% is in view\n })\n \n // Observe all slides\n slides.forEach(slide => {\n observer.observe(slide)\n })\n \n // Add focus/blur events to pause autoplay on focus\n container.addEventListener('focusin', () => {\n if (autoplayInterval.value) {\n clearInterval(autoplayInterval.value)\n }\n })\n \n container.addEventListener('focusout', () => {\n setupAutoplay()\n })\n \n // Stop autoplay on touch/mouse interaction\n container.addEventListener('mousedown', () => {\n if (autoplayInterval.value) {\n clearInterval(autoplayInterval.value)\n }\n })\n \n container.addEventListener('touchstart', () => {\n if (autoplayInterval.value) {\n clearInterval(autoplayInterval.value)\n }\n })\n \n // Resume autoplay after interaction ends\n container.addEventListener('mouseup', () => {\n setupAutoplay()\n })\n \n container.addEventListener('touchend', () => {\n setupAutoplay()\n })\n \n // Initialize autoplay\n setupAutoplay()\n \n // Store observer for cleanup\n carouselRef.value._observer = observer\n }\n})\n\nonBeforeUnmount(() => {\n // Clean up all resources\n if (carouselRef.value) {\n // Clean up intersection observer\n if (carouselRef.value._observer) {\n carouselRef.value._observer.disconnect()\n }\n \n // Clean up event listeners\n const container = carouselRef.value.querySelector('.carousel__container')\n if (container) {\n container.removeEventListener('focusin', () => {})\n container.removeEventListener('focusout', () => {})\n container.removeEventListener('mousedown', () => {})\n container.removeEventListener('touchstart', () => {})\n container.removeEventListener('mouseup', () => {})\n container.removeEventListener('touchend', () => {})\n }\n }\n \n // Clear all timeouts and intervals\n if (autoplayInterval.value) {\n clearInterval(autoplayInterval.value)\n }\n \n if (scrollTimeout.value) {\n clearTimeout(scrollTimeout.value)\n }\n})\n</script>\n\n<style >\n.carousel {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel__container {\n display: flex;\n scroll-snap-type: x mandatory;\n overflow-x: scroll;\n scrollbar-width: none; /* Firefox */\n -ms-overflow-style: none; /* IE and Edge */\n scroll-behavior: smooth;\n}\n\n.carousel__container::-webkit-scrollbar {\n display: none; /* Chrome, Safari, Opera */\n}\n\n.carousel__slide {\n flex: 0 0 100%;\n width: 100%;\n scroll-snap-align: start;\n scroll-snap-stop: always;\n}\n\n/* Navigation dots */\n.carousel__dots {\n display: flex;\n justify-content: center;\n gap: 0.5rem;\n margin-top: 1rem;\n}\n\n.carousel__dot {\n width: 0.625rem;\n height: 0.625rem;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.2);\n border: none;\n padding: 0;\n cursor: pointer;\n transition: background-color 0.3s ease;\n}\n\n.carousel__dot--active {\n background-color: rgba(0, 0, 0, 0.6);\n}\n</style>"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Status.vue.cjs","sources":["../../../../../src/components/Status/Status.vue"],"sourcesContent":["<template>\n\t<div class=\"pd-small error-wrapper\">\n\t\t<div class=\"\n\t\t\tflex-nowrap flex\n\t\t\tradius-small\n\t\t\tpd-small\n\t\t\tt-white \n\t\t\tbg-fourth\n\t\t\">\n\t\t\t<p class=\"w-100\">\n\t\t\t\t{{data.message}}\n\t\t\t\t<!-- <span class=\"t-semi\">Ошибка: {{status}} </span> -->\n\t\t\t\t<br>\n\t\t\t\t<!-- <span>Сообщение: {{message}}</span> -->\n\t\t\t</p>\n\t\t\t\n\t\t\t<IconCross @click=\"closeError()\" class=\"cursor-pointer hover-scale-1 i-regular z-index-5\"/>\n\t\t</div>\n\t</div>\n</template>\n\n\n<script setup=\"props\">\n\timport { computed } from 'vue'\n\timport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\n\tconst emits = defineEmits('close')\n\n\tconst props = defineProps({\n\t status: String,\n\t message: String,\n\t show: Boolean,\n\t data: Object\n\t})\n\n\tfunction closeError () {\n\t\temits('close')\n\t} \n</script>\n\n<style lang=\"scss\">\n\t.error-wrapper {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tright: 0;\n\t\topacity: 0.9\n\t}\n</style>\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA0BC,UAAM,QAAQ;AASd,aAAS,aAAc;AACtB,YAAM,OAAO;AAAA,IACb;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Status.vue.cjs","sources":["../../../../../src/components/Status/Status.vue"],"sourcesContent":["<template>\n\t<div class=\"pd-small error-wrapper\">\n\t\t<div class=\"\n\t\t\tflex-nowrap flex\n\t\t\tradius-small\n\t\t\tpd-small\n\t\t\tt-white \n\t\t\tbg-fourth\n\t\t\">\n\t\t\t<p class=\"w-100\">\n\t\t\t\t{{data.message}}\n\t\t\t\t<!-- <span class=\"t-semi\">Ошибка: {{status}} </span> -->\n\t\t\t\t<br>\n\t\t\t\t<!-- <span>Сообщение: {{message}}</span> -->\n\t\t\t</p>\n\t\t\t\n\t\t\t<IconCross @click=\"closeError()\" class=\"cursor-pointer hover-scale-1 i-regular z-index-5\"/>\n\t\t</div>\n\t</div>\n</template>\n\n\n<script setup=\"props\">\n\timport { computed } from 'vue'\n\timport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\n\tconst emits = defineEmits('close')\n\n\tconst props = defineProps({\n\t status: String,\n\t message: String,\n\t show: Boolean,\n\t data: Object\n\t})\n\n\tfunction closeError () {\n\t\temits('close')\n\t} \n</script>\n\n<style lang=\"scss\">\n\t.error-wrapper {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tright: 0;\n\t}\n</style>\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA0BC,UAAM,QAAQ;AASd,aAAS,aAAc;AACtB,YAAM,OAAO;AAAA,IACb;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Status.vue.js","sources":["../../../../../src/components/Status/Status.vue"],"sourcesContent":["<template>\n\t<div class=\"pd-small error-wrapper\">\n\t\t<div class=\"\n\t\t\tflex-nowrap flex\n\t\t\tradius-small\n\t\t\tpd-small\n\t\t\tt-white \n\t\t\tbg-fourth\n\t\t\">\n\t\t\t<p class=\"w-100\">\n\t\t\t\t{{data.message}}\n\t\t\t\t<!-- <span class=\"t-semi\">Ошибка: {{status}} </span> -->\n\t\t\t\t<br>\n\t\t\t\t<!-- <span>Сообщение: {{message}}</span> -->\n\t\t\t</p>\n\t\t\t\n\t\t\t<IconCross @click=\"closeError()\" class=\"cursor-pointer hover-scale-1 i-regular z-index-5\"/>\n\t\t</div>\n\t</div>\n</template>\n\n\n<script setup=\"props\">\n\timport { computed } from 'vue'\n\timport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\n\tconst emits = defineEmits('close')\n\n\tconst props = defineProps({\n\t status: String,\n\t message: String,\n\t show: Boolean,\n\t data: Object\n\t})\n\n\tfunction closeError () {\n\t\temits('close')\n\t} \n</script>\n\n<style lang=\"scss\">\n\t.error-wrapper {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tright: 0;\n\t\topacity: 0.9\n\t}\n</style>\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AA0BC,UAAM,QAAQ;AASd,aAAS,aAAc;AACtB,YAAM,OAAO;AAAA,IACb;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Status.vue.js","sources":["../../../../../src/components/Status/Status.vue"],"sourcesContent":["<template>\n\t<div class=\"pd-small error-wrapper\">\n\t\t<div class=\"\n\t\t\tflex-nowrap flex\n\t\t\tradius-small\n\t\t\tpd-small\n\t\t\tt-white \n\t\t\tbg-fourth\n\t\t\">\n\t\t\t<p class=\"w-100\">\n\t\t\t\t{{data.message}}\n\t\t\t\t<!-- <span class=\"t-semi\">Ошибка: {{status}} </span> -->\n\t\t\t\t<br>\n\t\t\t\t<!-- <span>Сообщение: {{message}}</span> -->\n\t\t\t</p>\n\t\t\t\n\t\t\t<IconCross @click=\"closeError()\" class=\"cursor-pointer hover-scale-1 i-regular z-index-5\"/>\n\t\t</div>\n\t</div>\n</template>\n\n\n<script setup=\"props\">\n\timport { computed } from 'vue'\n\timport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\n\tconst emits = defineEmits('close')\n\n\tconst props = defineProps({\n\t status: String,\n\t message: String,\n\t show: Boolean,\n\t data: Object\n\t})\n\n\tfunction closeError () {\n\t\temits('close')\n\t} \n</script>\n\n<style lang=\"scss\">\n\t.error-wrapper {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tright: 0;\n\t}\n</style>\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AA0BC,UAAM,QAAQ;AASd,aAAS,aAAc;AACtB,YAAM,OAAO;AAAA,IACb;;;;;;;;;;;;;;;;;"}
@@ -18,7 +18,7 @@ const _sfc_main = {
18
18
  zIndex: 1e3,
19
19
  background: "#333",
20
20
  color: "#fff",
21
- padding: "5px 10px",
21
+ padding: "5px",
22
22
  borderRadius: "3px",
23
23
  fontSize: "14px",
24
24
  display: "none"
@@ -43,7 +43,9 @@ const _sfc_main = {
43
43
  vue.createElementVNode("div", {
44
44
  class: "tooltip-content",
45
45
  style: vue.normalizeStyle(tooltipStyle)
46
- }, vue.toDisplayString(__props.text), 5)
46
+ }, [
47
+ vue.createElementVNode("span", null, vue.toDisplayString(__props.text), 1)
48
+ ], 4)
47
49
  ], 32);
48
50
  };
49
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.vue2.cjs","sources":["../../../../../src/components/Tooltip/Tooltip.vue"],"sourcesContent":["<template>\n <div class=\"cursor-pointer tooltip-container\" @mouseover=\"showTooltip\" @mouseleave=\"hideTooltip\">\n <slot></slot>\n <div class=\"tooltip-content\" :style=\"tooltipStyle\">\n {{ text }}\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, reactive } from 'vue';\n\nconst props = defineProps({\n text: {\n type: String,\n required: true\n }\n});\n\nconst visible = ref(false);\n\nconst tooltipStyle = reactive({\n position: 'absolute',\n width: 'max-content',\n zIndex: 1000,\n background: '#333',\n color: '#fff',\n padding: '5px 10px',\n borderRadius: '3px',\n fontSize: '14px',\n display: 'none',\n});\n\nfunction showTooltip(event) {\n visible.value = true;\n tooltipStyle.left = `${(event.clientX / 100) + 10 }px`;\n tooltipStyle.top = `${(event.clientY / 100) + 10 }px`;\n tooltipStyle.display = 'block';\n}\n\nfunction hideTooltip() {\n visible.value = false;\n tooltipStyle.display = 'none';\n}\n</script>\n\n<style >\n.tooltip-container {\n position: relative;\n display: inline-block;\n}\n\n.tooltip-content {\n pointer-events: none;\n}\n</style>"],"names":["ref","reactive"],"mappings":";;;;;;;;;;;;;AAmBA,UAAM,UAAUA,IAAG,IAAC,KAAK;AAEzB,UAAM,eAAeC,IAAAA,SAAS;AAAA,MAC5B,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,SAAS;AAAA,MACT,cAAc;AAAA,MACd,UAAU;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAED,aAAS,YAAY,OAAO;AAC1B,cAAQ,QAAQ;AAChB,mBAAa,OAAO,GAAI,MAAM,UAAU,MAAO,EAAE;AACjD,mBAAa,MAAM,GAAI,MAAM,UAAU,MAAO,EAAE;AAChD,mBAAa,UAAU;AAAA,IACzB;AAEA,aAAS,cAAc;AACrB,cAAQ,QAAQ;AAChB,mBAAa,UAAU;AAAA,IACzB;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Tooltip.vue2.cjs","sources":["../../../../../src/components/Tooltip/Tooltip.vue"],"sourcesContent":["<template>\n <div class=\"cursor-pointer tooltip-container\" @mouseover=\"showTooltip\" @mouseleave=\"hideTooltip\">\n <slot></slot>\n <div class=\"tooltip-content\" :style=\"tooltipStyle\">\n <span>{{ text }}</span>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, reactive } from 'vue';\n\nconst props = defineProps({\n text: {\n type: String,\n required: true\n }\n});\n\nconst visible = ref(false);\n\nconst tooltipStyle = reactive({\n position: 'absolute',\n width: 'max-content',\n zIndex: 1000,\n background: '#333',\n color: '#fff',\n padding: '5px',\n borderRadius: '3px',\n fontSize: '14px',\n display: 'none',\n});\n\nfunction showTooltip(event) {\n visible.value = true;\n tooltipStyle.left = `${(event.clientX / 100) + 10 }px`;\n tooltipStyle.top = `${(event.clientY / 100) + 10 }px`;\n tooltipStyle.display = 'block';\n}\n\nfunction hideTooltip() {\n visible.value = false;\n tooltipStyle.display = 'none';\n}\n</script>\n\n<style >\n.tooltip-container {\n position: relative;\n display: inline-block;\n}\n\n.tooltip-content {\n pointer-events: none;\n}\n</style>"],"names":["ref","reactive"],"mappings":";;;;;;;;;;;;;AAmBA,UAAM,UAAUA,IAAG,IAAC,KAAK;AAEzB,UAAM,eAAeC,IAAAA,SAAS;AAAA,MAC5B,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,SAAS;AAAA,MACT,cAAc;AAAA,MACd,UAAU;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAED,aAAS,YAAY,OAAO;AAC1B,cAAQ,QAAQ;AAChB,mBAAa,OAAO,GAAI,MAAM,UAAU,MAAO,EAAE;AACjD,mBAAa,MAAM,GAAI,MAAM,UAAU,MAAO,EAAE;AAChD,mBAAa,UAAU;AAAA,IACzB;AAEA,aAAS,cAAc;AACrB,cAAQ,QAAQ;AAChB,mBAAa,UAAU;AAAA,IACzB;;;;;;;;;;;;;;;;;;;"}
@@ -16,7 +16,7 @@ const _sfc_main = {
16
16
  zIndex: 1e3,
17
17
  background: "#333",
18
18
  color: "#fff",
19
- padding: "5px 10px",
19
+ padding: "5px",
20
20
  borderRadius: "3px",
21
21
  fontSize: "14px",
22
22
  display: "none"
@@ -41,7 +41,9 @@ const _sfc_main = {
41
41
  createElementVNode("div", {
42
42
  class: "tooltip-content",
43
43
  style: normalizeStyle(tooltipStyle)
44
- }, toDisplayString(__props.text), 5)
44
+ }, [
45
+ createElementVNode("span", null, toDisplayString(__props.text), 1)
46
+ ], 4)
45
47
  ], 32);
46
48
  };
47
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.vue2.js","sources":["../../../../../src/components/Tooltip/Tooltip.vue"],"sourcesContent":["<template>\n <div class=\"cursor-pointer tooltip-container\" @mouseover=\"showTooltip\" @mouseleave=\"hideTooltip\">\n <slot></slot>\n <div class=\"tooltip-content\" :style=\"tooltipStyle\">\n {{ text }}\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, reactive } from 'vue';\n\nconst props = defineProps({\n text: {\n type: String,\n required: true\n }\n});\n\nconst visible = ref(false);\n\nconst tooltipStyle = reactive({\n position: 'absolute',\n width: 'max-content',\n zIndex: 1000,\n background: '#333',\n color: '#fff',\n padding: '5px 10px',\n borderRadius: '3px',\n fontSize: '14px',\n display: 'none',\n});\n\nfunction showTooltip(event) {\n visible.value = true;\n tooltipStyle.left = `${(event.clientX / 100) + 10 }px`;\n tooltipStyle.top = `${(event.clientY / 100) + 10 }px`;\n tooltipStyle.display = 'block';\n}\n\nfunction hideTooltip() {\n visible.value = false;\n tooltipStyle.display = 'none';\n}\n</script>\n\n<style >\n.tooltip-container {\n position: relative;\n display: inline-block;\n}\n\n.tooltip-content {\n pointer-events: none;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;AAmBA,UAAM,UAAU,IAAI,KAAK;AAEzB,UAAM,eAAe,SAAS;AAAA,MAC5B,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,SAAS;AAAA,MACT,cAAc;AAAA,MACd,UAAU;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAED,aAAS,YAAY,OAAO;AAC1B,cAAQ,QAAQ;AAChB,mBAAa,OAAO,GAAI,MAAM,UAAU,MAAO,EAAE;AACjD,mBAAa,MAAM,GAAI,MAAM,UAAU,MAAO,EAAE;AAChD,mBAAa,UAAU;AAAA,IACzB;AAEA,aAAS,cAAc;AACrB,cAAQ,QAAQ;AAChB,mBAAa,UAAU;AAAA,IACzB;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Tooltip.vue2.js","sources":["../../../../../src/components/Tooltip/Tooltip.vue"],"sourcesContent":["<template>\n <div class=\"cursor-pointer tooltip-container\" @mouseover=\"showTooltip\" @mouseleave=\"hideTooltip\">\n <slot></slot>\n <div class=\"tooltip-content\" :style=\"tooltipStyle\">\n <span>{{ text }}</span>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, reactive } from 'vue';\n\nconst props = defineProps({\n text: {\n type: String,\n required: true\n }\n});\n\nconst visible = ref(false);\n\nconst tooltipStyle = reactive({\n position: 'absolute',\n width: 'max-content',\n zIndex: 1000,\n background: '#333',\n color: '#fff',\n padding: '5px',\n borderRadius: '3px',\n fontSize: '14px',\n display: 'none',\n});\n\nfunction showTooltip(event) {\n visible.value = true;\n tooltipStyle.left = `${(event.clientX / 100) + 10 }px`;\n tooltipStyle.top = `${(event.clientY / 100) + 10 }px`;\n tooltipStyle.display = 'block';\n}\n\nfunction hideTooltip() {\n visible.value = false;\n tooltipStyle.display = 'none';\n}\n</script>\n\n<style >\n.tooltip-container {\n position: relative;\n display: inline-block;\n}\n\n.tooltip-content {\n pointer-events: none;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;AAmBA,UAAM,UAAU,IAAI,KAAK;AAEzB,UAAM,eAAe,SAAS;AAAA,MAC5B,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,SAAS;AAAA,MACT,cAAc;AAAA,MACd,UAAU;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAED,aAAS,YAAY,OAAO;AAC1B,cAAQ,QAAQ;AAChB,mBAAa,OAAO,GAAI,MAAM,UAAU,MAAO,EAAE;AACjD,mBAAa,MAAM,GAAI,MAAM,UAAU,MAAO,EAAE;AAChD,mBAAa,UAAU;AAAA,IACzB;AAEA,aAAS,cAAc;AACrB,cAAQ,QAAQ;AAChB,mBAAa,UAAU;AAAA,IACzB;;;;;;;;;;;;;;;;;;"}
@@ -4,7 +4,7 @@ const vue = require("vue");
4
4
  ;/* empty css */
5
5
  ;/* empty css */
6
6
  const Dropdown = require("../../../../../components/Dropdown/Dropdown.vue.cjs");
7
- const Menu = require("../../../../../components/Menu/Menu.vue.cjs");
7
+ const Menu = require("../../../../../components/Menu/Menu.vue2.cjs");
8
8
  const MenuItem = require("../../../../../components/Menu/MenuItem.vue.cjs");
9
9
  const ButtonToggleMembership = require("../../../../organizations/components/elements/ButtonToggleMembership.vue.cjs");
10
10
  const FormReport = require("../../../../reports/components/sections/FormReport.vue.cjs");
@@ -105,6 +105,7 @@ const _sfc_main = {
105
105
  }
106
106
  return (_ctx, _cache) => {
107
107
  var _a;
108
+ const _component_RouterView = vue.resolveComponent("RouterView");
108
109
  return show.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
109
110
  ((_a = users.state.current) == null ? void 0 : _a.status) === "removed" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, " Sorry, user has been removed. ")) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_3, [
110
111
  vue.createElementVNode("section", _hoisted_4, [
@@ -193,6 +194,7 @@ const _sfc_main = {
193
194
  class: "mn-r-auto mn-l-auto"
194
195
  }, null, 8, ["telegram", "facebook", "instagram", "twitter"])
195
196
  ]),
197
+ vue.createVNode(_component_RouterView),
196
198
  filteredModules.value.length > 0 ? (vue.openBlock(), vue.createBlock(Menu.default, {
197
199
  key: 0,
198
200
  class: "mn-b-regular bg-light"