@ozdao/martyrs 0.2.593 → 0.2.595

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 (64) hide show
  1. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js → Dropdown.vue.js} +2 -2
  2. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +1 -0
  3. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  4. package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
  5. package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +2 -2
  6. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
  7. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  8. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  9. package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
  10. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
  11. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  12. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  13. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
  14. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  15. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  16. package/dist/martyrs/src/modules/core/locales/en.js +3 -0
  17. package/dist/martyrs/src/modules/core/locales/en.js.map +1 -1
  18. package/dist/martyrs/src/modules/core/locales/ru.js +3 -0
  19. package/dist/martyrs/src/modules/core/locales/ru.js.map +1 -1
  20. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +1 -1
  21. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +1 -1
  22. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +15 -5
  23. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  24. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +22 -7
  25. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
  26. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +4 -4
  27. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
  28. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js +4 -2
  29. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js.map +1 -1
  30. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  31. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  32. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
  33. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  34. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  35. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +1 -1
  36. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
  37. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  38. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +1 -1
  39. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
  40. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +2 -2
  41. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
  42. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +2 -2
  43. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
  44. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +2 -2
  45. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js +1 -1
  46. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
  47. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +2 -2
  48. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  49. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
  50. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  51. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +2 -2
  52. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  53. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  54. package/dist/style.css +20 -20
  55. package/package.json +1 -1
  56. package/src/modules/core/locales/en.js +3 -0
  57. package/src/modules/core/locales/ru.js +3 -0
  58. package/src/modules/core/views/components/layouts/Client.vue +7 -1
  59. package/src/modules/core/views/components/partials/Header.vue +17 -3
  60. package/src/modules/core/views/components/partials/Navigation.vue +2 -2
  61. package/src/modules/core/views/components/partials/Sidebar.vue +3 -1
  62. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.js.map +0 -1
  63. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +0 -1
  64. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Navigation.vue.js","sources":["../../../../../../../../src/modules/core/views/components/partials/Navigation.vue"],"sourcesContent":["<script setup>\nimport { ref, watch, computed } from 'vue'\nimport { useRouter, useRoute } from 'vue-router'\n\nimport IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\n\nconst store = useStore()\nconst router = useRouter()\nconst route = useRoute()\n\nimport Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue'\nimport Spoiler from '@martyrs/src/components/Spoiler/Spoiler.vue'\n\nconst props = defineProps({\n navigationItems: Array,\n theme: {\n type: String,\n default: \"light\"\n },\n stateSidebar: {\n type: Boolean,\n default: false\n },\n horizontal: {\n type: Boolean,\n default: false\n }\n})\n\nconst emits = defineEmits([\n 'closeSidebar'\n])\n\nconst expandedSections = ref([])\n\nconst toggleSection = (title) => {\n if (!props.stateSidebar) {\n if (menuItems.value.flatMap(section => section.items).find(item => item.title === title && item.subItems)) {\n emits('closeSidebar')\n setTimeout(() => {\n expandedSections.value.push(title)\n }, 50)\n }\n return\n }\n \n const index = expandedSections.value.indexOf(title)\n\n if (index === -1) {\n expandedSections.value.push(title)\n } else {\n expandedSections.value.splice(index, 1)\n }\n}\n\nconst isSectionExpanded = (title) => {\n return expandedSections.value.includes(title)\n}\n\n// Process route functions with auth data and route\nconst processRoute = (routeFn) => {\n if (typeof routeFn === 'function') {\n return routeFn(auth.state, route)\n }\n return routeFn\n}\n\n</script>\n\n<template>\n <nav\n class=\"ease-quint-out\"\n :class=\"[\n stateSidebar ? 'pd-small' : 'pd-micro',\n horizontal ? 'w-100 desktop-only gap-thin flex flex-center flex-nowrap o-y-visible o-x-visible' : 'gap-medium flex flex-column',\n ]\"\n >\n <div \n v-for=\"section in props.navigationItems\" \n v-show=\"!section.visible || (typeof section.visible === 'function' ? section.visible(auth.state, route) : true)\"\n :key=\"section.category\" \n class=\"ease-quint-out\"\n :class=\"[\n horizontal ? 'w-max flex-child-default flex flex-nowrap' : '',\n stateSidebar && !horizontal ? '' : '',\n ]\"\n >\n <div\n v-if=\"section.category && stateSidebar && !horizontal\"\n class=\"uppercase fw-medium t-transp p-small\"\n :class=\"{\n 't-black': theme === 'light',\n 't-white': theme === 'dark'\n }\"\n >\n {{ section.category }}\n </div>\n\n <ul \n :class=\"[\n horizontal ? 'w-100 gap-micro flex flex-nowrap' : 'flex flex-column gap-micro',\n ]\"\n >\n <li\n v-for=\"item in section.items\"\n v-show=\"!item.visible || (typeof item.visible === 'function' ? item.visible(auth.state, route) : true)\"\n class=\"w-100 pos-relative\"\n :key=\"item.title\"\n\n >\n <Dropdown\n v-if=\"item.subItems && horizontal\"\n class=\"w-100\"\n align=\"left\"\n trigger=\"hover\"\n >\n <template #label>\n <button\n class=\"ease-quint-out w-100 flex radius-small flex-nowrap cursor-pointer flex-v-center pd-thin\"\n @click=\"item.route ? router.push(processRoute(item.route)) : null\"\n :class=\"[\n item.route && route.path === processRoute(item.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <span class=\"fw-medium\">{{ item.title }}</span>\n <!-- <IconChevronBottom :fill=\"theme === 'dark' ? 'rgb(var(--white))': 'rgb(var(--black))'\" class=\"i-small mn-l-thin\"/> -->\n </button>\n </template>\n <ul class=\"dropdown-submenu\">\n <li v-for=\"subItem in item.subItems\" :key=\"subItem.title\">\n <a\n @click=\"subItem.route ? router.push(processRoute(subItem.route)) : null\"\n href=\"#\"\n class=\"group ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small\"\n :class=\"[\n subItem.route && route.path === processRoute(subItem.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <component\n v-if=\"subItem.iconComponent\"\n :is=\"subItem.iconComponent\"\n class=\"i-medium t-black-transp-25 group-hover:t-main\"\n />\n <span v-else class=\"\">{{ subItem.icon }}</span>\n <span class=\"w-100\">{{ subItem.title }}</span>\n </a>\n </li>\n </ul>\n </Dropdown>\n <button\n v-else\n class=\"group ease-quint-out w-100 flex radius-small flex-nowrap cursor-pointer flex-v-center\"\n @click=\"item.route ? (isPhone ? (stateSidebar = false) : null, route.path !== processRoute(item.route) ? router.push(processRoute(item.route)) : null) : null\"\n :class=\"[\n horizontal ? 'pd-thin' : '',\n item.route && route.path === processRoute(item.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <div v-if=\"!horizontal\" class=\"w-100 flex-child-default w-max-big flex flex-center aspect-1x1\">\n <component\n v-if=\"item.iconComponent\"\n :is=\"item.iconComponent\"\n class=\"i-medium flex-child-default ease-quint-out t-black-transp-25 group-hover:t-main\"\n />\n <span\n v-if=\"!item.iconComponent \"\n class=\"p-regular\"\n >\n {{ item.icon }}\n </span>\n </div>\n\n <span\n class=\"ease-quint-out w-100 t-left fw-medium\"\n :class=\"{ 'hidden': !stateSidebar && !horizontal, 'visible': stateSidebar || horizontal }\"\n >\n {{ item.title }}\n </span>\n\n <span\n v-if=\"item.subItems && stateSidebar && !horizontal\"\n class=\"mn-l-auto mn-r-small sidebar-dropdown-icon\"\n :class=\"{ 'rotate-180deg': isSectionExpanded(item.title) }\"\n @click.stop=\"toggleSection(item.title)\"\n >\n <IconChevronBottom :class=\"{ 'rotate-180deg mn-t-micro-negative': isOpen }\" :fill=\" theme === 'dark' ? 'rgb(var(--white))': 'rgb(var(--black))'\" class=\"i-small\"/>\n </span>\n </button>\n <transition\n enter-active-class=\"dropdown-enter\"\n leave-active-class=\"dropdown-leave\"\n enter-from-class=\"dropdown-enter-from\"\n enter-to-class=\"dropdown-enter-to\"\n leave-from-class=\"dropdown-leave-from\"\n leave-to-class=\"dropdown-leave-to\"\n >\n <ul\n v-if=\"item.subItems && isSectionExpanded(item.title) && stateSidebar && !horizontal\"\n class=\"mn-l-small mn-t-thin\"\n >\n <li v-for=\"subItem in item.subItems\" :key=\"subItem.title\">\n\n <a\n @click=\"subItem.route ? (isPhone ? (stateSidebar = false) : null, route.path !== processRoute(subItem.route) ? router.push(processRoute(subItem.route)) : null) : null\"\n href=\"#\"\n class=\"group ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small\"\n :class=\"[\n subItem.route && route.path === processRoute(subItem.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <component\n v-if=\"subItem.iconComponent\"\n :is=\"subItem.iconComponent\"\n class=\"i-medium t-black-transp-25 group-hover:t-main\"\n />\n <span v-else class=\"\">{{ subItem.icon }}</span>\n <span class=\"w-100\">{{ subItem.title }}</span>\n </a>\n </li>\n </ul>\n </transition>\n </li>\n </ul>\n </div>\n </nav>\n</template>\n\n<style scoped>\n\n.rotate-180deg {\n transform: rotate(180deg);\n}\n\n.hidden {\n/* opacity: 0;*/\n width: 0;\n display: none;\n}\n\n.visible {\n/* opacity: 1;*/\n display: block;\n}\n\n/* Dropdown animations */\n.dropdown-enter, .dropdown-leave {\n transition: all 0.3s ease-in-out;\n}\n\n.dropdown-enter-from, .dropdown-leave-to {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n\n.dropdown-enter-to, .dropdown-leave-from {\n opacity: 1;\n transform: translateY(0);\n}\n\n/* Horizontal dropdown submenu */\n.dropdown-submenu {\n list-style: none;\n padding: 0.5rem;\n margin: 0;\n min-width: 12rem;\n}\n\n.dropdown-submenu li {\n width: 100%;\n}\n\n.dropdown-submenu a {\n display: flex;\n text-decoration: none;\n white-space: nowrap;\n}\n\n/* Transition for horizontal dropdown */\n:deep(.TransitionTranslateY-enter-active),\n:deep(.TransitionTranslateY-leave-active) {\n transition: translateY 0.2s ease;\n transition: opacity 0.2s ease;\n}\n\n:deep(.TransitionTranslateY-enter-from),\n:deep(.TransitionTranslateY-leave-to) {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n\n:deep(.TransitionTranslateY-enter-to),\n:deep(.TransitionTranslateY-leave-from) {\n opacity: 1;\n transform: translateY(0);\n}\n</style>"],"names":["auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASc,aAAQ;AACtB,UAAM,SAAS,UAAS;AACxB,UAAM,QAAQ,SAAQ;AAKtB,UAAM,QAAQ;AAgBd,UAAM,QAAQ;AAId,UAAM,mBAAmB,IAAI,CAAA,CAAE;AAE/B,UAAM,gBAAgB,CAAC,UAAU;AAC/B,UAAI,CAAC,MAAM,cAAc;AACvB,YAAI,UAAU,MAAM,QAAQ,aAAW,QAAQ,KAAK,EAAE,KAAK,UAAQ,KAAK,UAAU,SAAS,KAAK,QAAQ,GAAG;AACzG,gBAAM,cAAc;AACpB,qBAAW,MAAM;AACf,6BAAiB,MAAM,KAAK,KAAK;AAAA,UACnC,GAAG,EAAE;AAAA,QACP;AACA;AAAA,MACF;AAEA,YAAM,QAAQ,iBAAiB,MAAM,QAAQ,KAAK;AAElD,UAAI,UAAU,IAAI;AAChB,yBAAiB,MAAM,KAAK,KAAK;AAAA,MACnC,OAAO;AACL,yBAAiB,MAAM,OAAO,OAAO,CAAC;AAAA,MACxC;AAAA,IACF;AAEA,UAAM,oBAAoB,CAAC,UAAU;AACnC,aAAO,iBAAiB,MAAM,SAAS,KAAK;AAAA,IAC9C;AAGA,UAAM,eAAe,CAAC,YAAY;AAChC,UAAI,OAAO,YAAY,YAAY;AACjC,eAAO,QAAQA,OAAY,KAAK;AAAA,MAClC;AACA,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Navigation.vue.js","sources":["../../../../../../../../src/modules/core/views/components/partials/Navigation.vue"],"sourcesContent":["<script setup>\nimport { ref, watch, computed } from 'vue'\nimport { useRouter, useRoute } from 'vue-router'\n\nimport IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\n\nconst store = useStore()\nconst router = useRouter()\nconst route = useRoute()\n\nimport Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue'\nimport Spoiler from '@martyrs/src/components/Spoiler/Spoiler.vue'\n\nconst props = defineProps({\n navigationItems: Array,\n theme: {\n type: String,\n default: \"light\"\n },\n stateSidebar: {\n type: Boolean,\n default: false\n },\n horizontal: {\n type: Boolean,\n default: false\n }\n})\n\nconst emits = defineEmits([\n 'closeSidebar'\n])\n\nconst expandedSections = ref([])\n\nconst toggleSection = (title) => {\n if (!props.stateSidebar) {\n if (menuItems.value.flatMap(section => section.items).find(item => item.title === title && item.subItems)) {\n emits('closeSidebar')\n setTimeout(() => {\n expandedSections.value.push(title)\n }, 50)\n }\n return\n }\n \n const index = expandedSections.value.indexOf(title)\n\n if (index === -1) {\n expandedSections.value.push(title)\n } else {\n expandedSections.value.splice(index, 1)\n }\n}\n\nconst isSectionExpanded = (title) => {\n return expandedSections.value.includes(title)\n}\n\n// Process route functions with auth data and route\nconst processRoute = (routeFn) => {\n if (typeof routeFn === 'function') {\n return routeFn(auth.state, route)\n }\n return routeFn\n}\n\n</script>\n\n<template>\n <nav\n class=\"ease-quint-out\"\n :class=\"[\n stateSidebar ? 'pd-small' : 'pd-micro',\n horizontal ? 'w-100 desktop-only gap-thin flex flex-center flex-nowrap o-y-visible o-x-visible' : 'gap-medium flex flex-column',\n ]\"\n >\n <div \n v-for=\"section in props.navigationItems\" \n v-show=\"!section.visible || (typeof section.visible === 'function' ? section.visible(auth.state, route) : true)\"\n :key=\"section.category\" \n class=\"ease-quint-out\"\n :class=\"[\n horizontal ? 'w-max flex-child-default flex flex-nowrap' : '',\n stateSidebar && !horizontal ? '' : '',\n ]\"\n >\n <div\n v-if=\"section.category && stateSidebar && !horizontal\"\n class=\"uppercase fw-medium t-transp p-small\"\n :class=\"{\n 't-black': theme === 'light',\n 't-white': theme === 'dark'\n }\"\n >\n {{ section.category }}\n </div>\n\n <ul \n :class=\"[\n horizontal ? 'w-100 gap-micro flex flex-nowrap' : 'flex flex-column gap-micro',\n ]\"\n >\n <li\n v-for=\"item in section.items\"\n v-show=\"!item.visible || (typeof item.visible === 'function' ? item.visible(auth.state, route) : true)\"\n class=\"w-100 pos-relative\"\n :key=\"item.title\"\n\n >\n <Dropdown\n v-if=\"item.subItems && horizontal\"\n class=\"w-100\"\n align=\"left\"\n trigger=\"hover\"\n >\n <template #label>\n <button\n class=\"ease-quint-out w-100 flex radius-small flex-nowrap cursor-pointer flex-v-center pd-thin\"\n @click=\"item.route ? router.push(processRoute(item.route)) : null\"\n :class=\"[\n item.route && route.path === processRoute(item.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <span class=\"fw-medium\">{{ item.title }}</span>\n <!-- <IconChevronBottom :fill=\"theme === 'dark' ? 'rgb(var(--white))': 'rgb(var(--black))'\" class=\"i-small mn-l-thin\"/> -->\n </button>\n </template>\n <ul class=\"dropdown-submenu\">\n <li v-for=\"subItem in item.subItems\" :key=\"subItem.title\">\n <a\n @click=\"subItem.route ? router.push(processRoute(subItem.route)) : null\"\n href=\"#\"\n class=\"group ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small\"\n :class=\"[\n subItem.route && route.path === processRoute(subItem.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <component\n v-if=\"subItem.iconComponent\"\n :is=\"subItem.iconComponent\"\n class=\"i-medium t-black-transp-25 group-hover:t-main\"\n />\n <span v-else class=\"\">{{ subItem.icon }}</span>\n <span class=\"w-100\">{{ subItem.title }}</span>\n </a>\n </li>\n </ul>\n </Dropdown>\n <button\n v-else\n class=\"group ease-quint-out w-100 flex radius-small flex-nowrap cursor-pointer flex-v-center\"\n @click=\"item.route ? (isPhone ? (stateSidebar = false) : null, route.path !== processRoute(item.route) ? router.push(processRoute(item.route)) : null) : null\"\n :class=\"[\n horizontal ? 'pd-thin' : '',\n item.route && route.path === processRoute(item.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <div v-if=\"!horizontal && (item.iconComponent || item.icon)\" class=\"w-100 flex-child-default w-max-big flex flex-center aspect-1x1\">\n <component\n v-if=\"item.iconComponent\"\n :is=\"item.iconComponent\"\n class=\"i-medium flex-child-default ease-quint-out t-black-transp-25 group-hover:t-main\"\n />\n <span\n v-if=\"!item.iconComponent \"\n class=\"p-regular\"\n >\n {{ item.icon }}\n </span>\n </div>\n\n <span\n class=\"ease-quint-out w-100 t-left fw-medium\"\n :class=\"{ 'pd-small': !horizontal, 'hidden': !stateSidebar && !horizontal, 'visible': stateSidebar || horizontal }\"\n >\n {{ item.title }}\n </span>\n\n <span\n v-if=\"item.subItems && stateSidebar && !horizontal\"\n class=\"mn-l-auto mn-r-small sidebar-dropdown-icon\"\n :class=\"{ 'rotate-180deg': isSectionExpanded(item.title) }\"\n @click.stop=\"toggleSection(item.title)\"\n >\n <IconChevronBottom :class=\"{ 'rotate-180deg mn-t-micro-negative': isOpen }\" :fill=\" theme === 'dark' ? 'rgb(var(--white))': 'rgb(var(--black))'\" class=\"i-small\"/>\n </span>\n </button>\n <transition\n enter-active-class=\"dropdown-enter\"\n leave-active-class=\"dropdown-leave\"\n enter-from-class=\"dropdown-enter-from\"\n enter-to-class=\"dropdown-enter-to\"\n leave-from-class=\"dropdown-leave-from\"\n leave-to-class=\"dropdown-leave-to\"\n >\n <ul\n v-if=\"item.subItems && isSectionExpanded(item.title) && stateSidebar && !horizontal\"\n class=\"mn-l-small mn-t-thin\"\n >\n <li v-for=\"subItem in item.subItems\" :key=\"subItem.title\">\n\n <a\n @click=\"subItem.route ? (isPhone ? (stateSidebar = false) : null, route.path !== processRoute(subItem.route) ? router.push(processRoute(subItem.route)) : null) : null\"\n href=\"#\"\n class=\"group ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small\"\n :class=\"[\n subItem.route && route.path === processRoute(subItem.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <component\n v-if=\"subItem.iconComponent\"\n :is=\"subItem.iconComponent\"\n class=\"i-medium t-black-transp-25 group-hover:t-main\"\n />\n <span v-else class=\"\">{{ subItem.icon }}</span>\n <span class=\"w-100\">{{ subItem.title }}</span>\n </a>\n </li>\n </ul>\n </transition>\n </li>\n </ul>\n </div>\n </nav>\n</template>\n\n<style scoped>\n\n.rotate-180deg {\n transform: rotate(180deg);\n}\n\n.hidden {\n/* opacity: 0;*/\n width: 0;\n display: none;\n}\n\n.visible {\n/* opacity: 1;*/\n display: block;\n}\n\n/* Dropdown animations */\n.dropdown-enter, .dropdown-leave {\n transition: all 0.3s ease-in-out;\n}\n\n.dropdown-enter-from, .dropdown-leave-to {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n\n.dropdown-enter-to, .dropdown-leave-from {\n opacity: 1;\n transform: translateY(0);\n}\n\n/* Horizontal dropdown submenu */\n.dropdown-submenu {\n list-style: none;\n padding: 0.5rem;\n margin: 0;\n min-width: 12rem;\n}\n\n.dropdown-submenu li {\n width: 100%;\n}\n\n.dropdown-submenu a {\n display: flex;\n text-decoration: none;\n white-space: nowrap;\n}\n\n/* Transition for horizontal dropdown */\n:deep(.TransitionTranslateY-enter-active),\n:deep(.TransitionTranslateY-leave-active) {\n transition: translateY 0.2s ease;\n transition: opacity 0.2s ease;\n}\n\n:deep(.TransitionTranslateY-enter-from),\n:deep(.TransitionTranslateY-leave-to) {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n\n:deep(.TransitionTranslateY-enter-to),\n:deep(.TransitionTranslateY-leave-from) {\n opacity: 1;\n transform: translateY(0);\n}\n</style>"],"names":["auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASc,aAAQ;AACtB,UAAM,SAAS,UAAS;AACxB,UAAM,QAAQ,SAAQ;AAKtB,UAAM,QAAQ;AAgBd,UAAM,QAAQ;AAId,UAAM,mBAAmB,IAAI,CAAA,CAAE;AAE/B,UAAM,gBAAgB,CAAC,UAAU;AAC/B,UAAI,CAAC,MAAM,cAAc;AACvB,YAAI,UAAU,MAAM,QAAQ,aAAW,QAAQ,KAAK,EAAE,KAAK,UAAQ,KAAK,UAAU,SAAS,KAAK,QAAQ,GAAG;AACzG,gBAAM,cAAc;AACpB,qBAAW,MAAM;AACf,6BAAiB,MAAM,KAAK,KAAK;AAAA,UACnC,GAAG,EAAE;AAAA,QACP;AACA;AAAA,MACF;AAEA,YAAM,QAAQ,iBAAiB,MAAM,QAAQ,KAAK;AAElD,UAAI,UAAU,IAAI;AAChB,yBAAiB,MAAM,KAAK,KAAK;AAAA,MACnC,OAAO;AACL,yBAAiB,MAAM,OAAO,OAAO,CAAC;AAAA,MACxC;AAAA,IACF;AAEA,UAAM,oBAAoB,CAAC,UAAU;AACnC,aAAO,iBAAiB,MAAM,SAAS,KAAK;AAAA,IAC9C;AAGA,UAAM,eAAe,CAAC,YAAY;AAChC,UAAI,OAAO,YAAY,YAAY;AACjC,eAAO,QAAQA,OAAY,KAAK;AAAA,MAClC;AACA,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,6 @@
1
1
  import { ref, watch, createElementBlock, openBlock, normalizeClass, createElementVNode, createCommentVNode, renderSlot, unref, toDisplayString } from "vue";
2
2
  import { useRouter, useRoute } from "vue-router";
3
+ import { useI18n } from "vue-i18n";
3
4
  import { useGlobalMixins } from "../../mixins/mixins.js";
4
5
  import { useStore } from "../../store/core.store.js";
5
6
  /* empty css */
@@ -32,6 +33,7 @@ const _sfc_main = {
32
33
  "closeSidebar"
33
34
  ],
34
35
  setup(__props, { emit: __emit }) {
36
+ const { t } = useI18n();
35
37
  const store = useStore();
36
38
  const props = __props;
37
39
  const emits = __emit;
@@ -119,7 +121,7 @@ const _sfc_main = {
119
121
  }, [
120
122
  createElementVNode("span", {
121
123
  class: normalizeClass(["w-100 ws-nowrap ease-quint-out t-left fw-medium mn-r-thin", { "hidden": !__props.stateSidebar, "visible": __props.stateSidebar }])
122
- }, " Dark Mode ", 2),
124
+ }, toDisplayString(_ctx.$t("core.ui.darkMode")), 3),
123
125
  createElementVNode("span", _hoisted_4, toDisplayString(unref(store).core.state.theme.mode === "dark" ? "🌙" : "☀️"), 1)
124
126
  ], 2)
125
127
  ], 2)
@@ -127,7 +129,7 @@ const _sfc_main = {
127
129
  };
128
130
  }
129
131
  };
130
- const Sidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-99b57d1a"]]);
132
+ const Sidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-846509b5"]]);
131
133
  export {
132
134
  Sidebar as default
133
135
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.vue.js","sources":["../../../../../../../../src/modules/core/views/components/partials/Sidebar.vue"],"sourcesContent":["<script setup>\nimport { ref, watch } from 'vue'\nimport { useRouter, useRoute } from 'vue-router'\nimport { useGlobalMixins } from \"@martyrs/src/modules/core/views/mixins/mixins.js\"\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n\nconst store = useStore()\n\nconst props = defineProps({\n theme: {\n type: String,\n default: \"light\"\n },\n stateSidebar: {\n type: Boolean,\n default: false\n },\n width: {\n type: String,\n default: 'w-15r'\n },\n widthHidden:{\n type: String,\n default: 'w-3r '\n },\n})\n\nconst emits = defineEmits([\n 'closeSidebar'\n])\n\nconst { isPhone, isTablet } = useGlobalMixins()\nconst router = useRouter()\nconst route = useRoute()\n\n// Отдельный флаг для клика меню на mobile\nconst isManuallyOpened = ref(false)\n\n// Синхронизируем с stateSidebar ТОЛЬКО на mobile\nwatch(() => props.stateSidebar, (newVal) => {\n if (isPhone() || isTablet()) {\n isManuallyOpened.value = newVal\n }\n})\n\nconst toggleSidebar = () => {\n isManuallyOpened.value = !isManuallyOpened.value\n if (!isManuallyOpened.value) {\n emits('closeSidebar')\n }\n}\n\nconst handleMouseEnter = () => {\n if (route.meta?.sidebar_hover && !isPhone() && !isTablet()) {\n store.core.state.isOpenSidebar = true\n }\n}\n\nconst handleMouseLeave = () => {\n if (route.meta?.sidebar_hover && !isPhone() && !isTablet()) {\n store.core.state.isOpenSidebar = false\n }\n}\n\nrouter.beforeEach((to, from) => {\n // На mobile не трогаем state через навигацию\n if (isPhone() || isTablet()) {\n emits('closeSidebar')\n return\n }\n\n\n // Desktop логика\n // Если уходим с профиля И НЕ идем на профиль - закрыть\n if (from.meta?.sidebarCloseOnLeave === true && to.meta?.sidebarOpenOnEnter !== true) {\n store.core.state.isOpenSidebar = false\n }\n\n // Если приходим на профиль - открыть\n if (to.meta?.sidebarOpenOnEnter === true) {\n store.core.state.isOpenSidebar = true\n }\n})\n</script>\n\n<template>\n <aside\n data-sidebar\n class=\"ease-quint-out w-min-0 o-hidden flex-child-default z-index-2 br-r-1px flex flex-column h-100\"\n :class=\"[\n { 'mobile-opened': isManuallyOpened },\n stateSidebar\n ? `${width} w-min-10 tablet:w-min-100 tablet:w-100 mobile:w-min-100 mobile:w-100`\n : `${widthHidden} mobile:w-0`,\n //\n theme === 'light'\n ? 't-black bg-white br-light'\n : 't-white bg-black br-dark'\n ]\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <!-- Header slot - shrink-0 -->\n <div class=\"flex-shrink-0\">\n <slot name=\"header\"></slot>\n </div>\n\n <!-- Main scrollable content - flex-1 overflow-y-auto -->\n <div class=\"flex-child-1 o-y-auto\">\n <slot></slot>\n </div>\n\n <!-- Footer slot - shrink-0 -->\n <div class=\"flex-shrink-0\">\n <slot name=\"footer\"></slot>\n </div>\n <div v-if=\"MOBILE_APP\" @click=\"() => toggleSidebar()\" class=\"flex-shrink-0 pos-relative\">\n <div class=\"bg-light radius-medium pd-medium\">\n <p class=\"fw-medium t-black-transp-60\">\n Close Menu\n </p>\n </div>\n </div>\n <div\n class=\"flex-shrink-0 w-100 br-t-1px\"\n :class=\"{ \n 'pd-micro': !stateSidebar, \n 'pd-small': stateSidebar,\n 'br-light': theme === 'light',\n 'br-dark': theme === 'dark'\n }\"\n >\n <button\n @click=\"() => store.core.actions.toggleTheme()\"\n class=\"ease-quint-out flex w-100 flex-center radius-small cursor-pointer flex-nowrap\"\n :class=\"[\n stateSidebar ? 'pd-thin justify-between' : 'w-100 justify-center',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <span\n class=\"w-100 ws-nowrap ease-quint-out t-left fw-medium mn-r-thin\"\n :class=\"{ 'hidden': !stateSidebar, 'visible': stateSidebar }\"\n >\n Dark Mode\n </span>\n <span class=\"aspect-1x1 flex-child-default w-max-big w-100 flex flex-center \">\n {{ store.core.state.theme.mode === 'dark' ? '🌙' : '☀️' }}\n </span>\n </button>\n </div>\n </aside>\n</template>\n\n<style scoped>\n.hidden {\n opacity: 0;\n width: 0;\n display: none;\n}\n.visible {\n opacity: 1;\n display: block;\n}\n\n/* Mobile: ВСЕГДА скрываем, показываем ТОЛЬКО по клику меню */\n@media (max-width: 1024px) {\n aside[data-sidebar] {\n position: absolute !important;\n left: 0 !important;\n transform: translateX(-100%) !important;\n visibility: hidden !important;\n z-index: 1000 !important;\n }\n\n /* Показываем ТОЛЬКО когда manual клик (НЕ от SSR state) */\n aside[data-sidebar].mobile-opened {\n transform: translateX(0) !important;\n visibility: visible !important;\n }\n}\n\n/* Scrollbar styles */\n::-webkit-scrollbar {\n width: 6px;\n}\n::-webkit-scrollbar-track {\n background: transparent;\n}\n::-webkit-scrollbar-thumb {\n background-color: var(--grey-micro);\n border-radius: 3px;\n}\n::-webkit-scrollbar-thumb:hover {\n background-color: var(--grey-small);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,UAAM,QAAQ,SAAQ;AAEtB,UAAM,QAAQ;AAmBd,UAAM,QAAQ;AAId,UAAM,EAAE,SAAS,SAAQ,IAAK,gBAAe;AAC7C,UAAM,SAAS,UAAS;AACxB,UAAM,QAAQ,SAAQ;AAGtB,UAAM,mBAAmB,IAAI,KAAK;AAGlC,UAAM,MAAM,MAAM,cAAc,CAAC,WAAW;AAC1C,UAAI,QAAO,KAAM,YAAY;AAC3B,yBAAiB,QAAQ;AAAA,MAC3B;AAAA,IACF,CAAC;AAED,UAAM,gBAAgB,MAAM;AAC1B,uBAAiB,QAAQ,CAAC,iBAAiB;AAC3C,UAAI,CAAC,iBAAiB,OAAO;AAC3B,cAAM,cAAc;AAAA,MACtB;AAAA,IACF;AAEA,UAAM,mBAAmB,MAAM;AAC7B,UAAI,MAAM,MAAM,iBAAiB,CAAC,QAAO,KAAM,CAAC,YAAY;AAC1D,cAAM,KAAK,MAAM,gBAAgB;AAAA,MACnC;AAAA,IACF;AAEA,UAAM,mBAAmB,MAAM;AAC7B,UAAI,MAAM,MAAM,iBAAiB,CAAC,QAAO,KAAM,CAAC,YAAY;AAC1D,cAAM,KAAK,MAAM,gBAAgB;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,WAAW,CAAC,IAAI,SAAS;AAE9B,UAAI,QAAO,KAAM,YAAY;AAC3B,cAAM,cAAc;AACpB;AAAA,MACF;AAKA,UAAI,KAAK,MAAM,wBAAwB,QAAQ,GAAG,MAAM,uBAAuB,MAAM;AACnF,cAAM,KAAK,MAAM,gBAAgB;AAAA,MACnC;AAGA,UAAI,GAAG,MAAM,uBAAuB,MAAM;AACxC,cAAM,KAAK,MAAM,gBAAgB;AAAA,MACnC;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Sidebar.vue.js","sources":["../../../../../../../../src/modules/core/views/components/partials/Sidebar.vue"],"sourcesContent":["<script setup>\nimport { ref, watch } from 'vue'\nimport { useRouter, useRoute } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport { useGlobalMixins } from \"@martyrs/src/modules/core/views/mixins/mixins.js\"\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n\nconst { t } = useI18n()\nconst store = useStore()\n\nconst props = defineProps({\n theme: {\n type: String,\n default: \"light\"\n },\n stateSidebar: {\n type: Boolean,\n default: false\n },\n width: {\n type: String,\n default: 'w-15r'\n },\n widthHidden:{\n type: String,\n default: 'w-3r '\n },\n})\n\nconst emits = defineEmits([\n 'closeSidebar'\n])\n\nconst { isPhone, isTablet } = useGlobalMixins()\nconst router = useRouter()\nconst route = useRoute()\n\n// Отдельный флаг для клика меню на mobile\nconst isManuallyOpened = ref(false)\n\n// Синхронизируем с stateSidebar ТОЛЬКО на mobile\nwatch(() => props.stateSidebar, (newVal) => {\n if (isPhone() || isTablet()) {\n isManuallyOpened.value = newVal\n }\n})\n\nconst toggleSidebar = () => {\n isManuallyOpened.value = !isManuallyOpened.value\n if (!isManuallyOpened.value) {\n emits('closeSidebar')\n }\n}\n\nconst handleMouseEnter = () => {\n if (route.meta?.sidebar_hover && !isPhone() && !isTablet()) {\n store.core.state.isOpenSidebar = true\n }\n}\n\nconst handleMouseLeave = () => {\n if (route.meta?.sidebar_hover && !isPhone() && !isTablet()) {\n store.core.state.isOpenSidebar = false\n }\n}\n\nrouter.beforeEach((to, from) => {\n // На mobile не трогаем state через навигацию\n if (isPhone() || isTablet()) {\n emits('closeSidebar')\n return\n }\n\n\n // Desktop логика\n // Если уходим с профиля И НЕ идем на профиль - закрыть\n if (from.meta?.sidebarCloseOnLeave === true && to.meta?.sidebarOpenOnEnter !== true) {\n store.core.state.isOpenSidebar = false\n }\n\n // Если приходим на профиль - открыть\n if (to.meta?.sidebarOpenOnEnter === true) {\n store.core.state.isOpenSidebar = true\n }\n})\n</script>\n\n<template>\n <aside\n data-sidebar\n class=\"ease-quint-out w-min-0 o-hidden flex-child-default z-index-2 br-r-1px flex flex-column h-100\"\n :class=\"[\n { 'mobile-opened': isManuallyOpened },\n stateSidebar\n ? `${width} w-min-10 tablet:w-min-100 tablet:w-100 mobile:w-min-100 mobile:w-100`\n : `${widthHidden} mobile:w-0`,\n //\n theme === 'light'\n ? 't-black bg-white br-light'\n : 't-white bg-black br-dark'\n ]\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <!-- Header slot - shrink-0 -->\n <div class=\"flex-shrink-0\">\n <slot name=\"header\"></slot>\n </div>\n\n <!-- Main scrollable content - flex-1 overflow-y-auto -->\n <div class=\"flex-child-1 o-y-auto\">\n <slot></slot>\n </div>\n\n <!-- Footer slot - shrink-0 -->\n <div class=\"flex-shrink-0\">\n <slot name=\"footer\"></slot>\n </div>\n <div v-if=\"MOBILE_APP\" @click=\"() => toggleSidebar()\" class=\"flex-shrink-0 pos-relative\">\n <div class=\"bg-light radius-medium pd-medium\">\n <p class=\"fw-medium t-black-transp-60\">\n Close Menu\n </p>\n </div>\n </div>\n <div\n class=\"flex-shrink-0 w-100 br-t-1px\"\n :class=\"{ \n 'pd-micro': !stateSidebar, \n 'pd-small': stateSidebar,\n 'br-light': theme === 'light',\n 'br-dark': theme === 'dark'\n }\"\n >\n <button\n @click=\"() => store.core.actions.toggleTheme()\"\n class=\"ease-quint-out flex w-100 flex-center radius-small cursor-pointer flex-nowrap\"\n :class=\"[\n stateSidebar ? 'pd-thin justify-between' : 'w-100 justify-center',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <span\n class=\"w-100 ws-nowrap ease-quint-out t-left fw-medium mn-r-thin\"\n :class=\"{ 'hidden': !stateSidebar, 'visible': stateSidebar }\"\n >\n {{ $t('core.ui.darkMode') }}\n </span>\n <span class=\"aspect-1x1 flex-child-default w-max-big w-100 flex flex-center \">\n {{ store.core.state.theme.mode === 'dark' ? '🌙' : '☀️' }}\n </span>\n </button>\n </div>\n </aside>\n</template>\n\n<style scoped>\n.hidden {\n opacity: 0;\n width: 0;\n display: none;\n}\n.visible {\n opacity: 1;\n display: block;\n}\n\n/* Mobile: ВСЕГДА скрываем, показываем ТОЛЬКО по клику меню */\n@media (max-width: 1024px) {\n aside[data-sidebar] {\n position: absolute !important;\n left: 0 !important;\n transform: translateX(-100%) !important;\n visibility: hidden !important;\n z-index: 1000 !important;\n }\n\n /* Показываем ТОЛЬКО когда manual клик (НЕ от SSR state) */\n aside[data-sidebar].mobile-opened {\n transform: translateX(0) !important;\n visibility: visible !important;\n }\n}\n\n/* Scrollbar styles */\n::-webkit-scrollbar {\n width: 6px;\n}\n::-webkit-scrollbar-track {\n background: transparent;\n}\n::-webkit-scrollbar-thumb {\n background-color: var(--grey-micro);\n border-radius: 3px;\n}\n::-webkit-scrollbar-thumb:hover {\n background-color: var(--grey-small);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,UAAM,EAAE,EAAC,IAAK,QAAO;AACrB,UAAM,QAAQ,SAAQ;AAEtB,UAAM,QAAQ;AAmBd,UAAM,QAAQ;AAId,UAAM,EAAE,SAAS,SAAQ,IAAK,gBAAe;AAC7C,UAAM,SAAS,UAAS;AACxB,UAAM,QAAQ,SAAQ;AAGtB,UAAM,mBAAmB,IAAI,KAAK;AAGlC,UAAM,MAAM,MAAM,cAAc,CAAC,WAAW;AAC1C,UAAI,QAAO,KAAM,YAAY;AAC3B,yBAAiB,QAAQ;AAAA,MAC3B;AAAA,IACF,CAAC;AAED,UAAM,gBAAgB,MAAM;AAC1B,uBAAiB,QAAQ,CAAC,iBAAiB;AAC3C,UAAI,CAAC,iBAAiB,OAAO;AAC3B,cAAM,cAAc;AAAA,MACtB;AAAA,IACF;AAEA,UAAM,mBAAmB,MAAM;AAC7B,UAAI,MAAM,MAAM,iBAAiB,CAAC,QAAO,KAAM,CAAC,YAAY;AAC1D,cAAM,KAAK,MAAM,gBAAgB;AAAA,MACnC;AAAA,IACF;AAEA,UAAM,mBAAmB,MAAM;AAC7B,UAAI,MAAM,MAAM,iBAAiB,CAAC,QAAO,KAAM,CAAC,YAAY;AAC1D,cAAM,KAAK,MAAM,gBAAgB;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,WAAW,CAAC,IAAI,SAAS;AAE9B,UAAI,QAAO,KAAM,YAAY;AAC3B,cAAM,cAAc;AACpB;AAAA,MACF;AAKA,UAAI,KAAK,MAAM,wBAAwB,QAAQ,GAAG,MAAM,uBAAuB,MAAM;AACnF,cAAM,KAAK,MAAM,gBAAgB;AAAA,MACnC;AAGA,UAAI,GAAG,MAAM,uBAAuB,MAAM;AACxC,cAAM,KAAK,MAAM,gBAAgB;AAAA,MACnC;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -12,7 +12,7 @@ import _sfc_main$9 from "../../../../components/Checkbox/Checkbox.vue.js";
12
12
  import "axios";
13
13
  /* empty css */
14
14
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
15
- /* empty css */
15
+ /* empty css */
16
16
  /* empty css */
17
17
  import _sfc_main$8 from "../../../../components/Feed/Feed.vue.js";
18
18
  import _sfc_main$a from "../../../../components/Button/Button.vue.js";
@@ -4,7 +4,7 @@ import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
4
4
  import _sfc_main$3 from "../../../../components/Popup/Popup.vue.js";
5
5
  import Field from "../../../../components/Field/Field.vue.js";
6
6
  import _sfc_main$6 from "../../../../components/Button/Button.vue.js";
7
- import _sfc_main$8 from "../../../../components/Dropdown/Dropdown.vue2.js";
7
+ import _sfc_main$8 from "../../../../components/Dropdown/Dropdown.vue.js";
8
8
  import _sfc_main$1 from "../elements/ButtonCheck.vue.js";
9
9
  import _sfc_main$5 from "../../../icons/navigation/IconDelete.vue.js";
10
10
  import _sfc_main$4 from "../../../icons/navigation/IconAdd.vue.js";
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createCommentVNode, createBlock, Fragment, renderList, unref, createElementVNode, toDisplayString, createTextVNode } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import _sfc_main$2 from "../../../constructor/components/sections/Viewer.vue.js";
4
4
  import _sfc_main$4 from "../../../../components/Countdown/Countdown.vue.js";
5
5
  import HeroEvent from "../sections/HeroEvent.vue.js";
@@ -11,7 +11,7 @@ import { useRoute } from "vue-router";
11
11
  import { useGlobalMixins } from "../../../core/views/mixins/mixins.js";
12
12
  import SkeletonEvent from "../../../icons/skeletons/SkeletonEvent.vue.js";
13
13
  /* empty css */
14
- /* empty css */
14
+ /* empty css */
15
15
  /* empty css */
16
16
  /* empty css */
17
17
  /* empty css */
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createBlock, createCommentVNode, Transition, Fragment, renderList } from "vue";
2
- import Loader from "../../../../components/Loader/Loader.vue2.js";
2
+ import Loader from "../../../../components/Loader/Loader.vue.js";
3
3
  import _sfc_main$1 from "../../../../components/EmptyState/EmptyState.vue.js";
4
4
  import _sfc_main$2 from "../blocks/CardEvent.vue.js";
5
5
  import { read } from "../../store/events.js";
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createBlock, Fragment, renderList, normalizeClass } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import _sfc_main$1 from "../../../../components/EmptyState/EmptyState.vue.js";
4
4
  import _sfc_main$2 from "../blocks/CardEventShort.vue.js";
5
5
  import SkeletonEventShort from "../../../icons/skeletons/SkeletonEventShort.vue.js";
@@ -4,7 +4,7 @@ import { useGlobalMixins } from "../../../core/views/mixins/mixins.js";
4
4
  import Table from "../../../../components/Table/Table.vue.js";
5
5
  import _sfc_main$1 from "../../../../components/Feed/Feed.vue.js";
6
6
  import PlaceholderImage from "../../../icons/placeholders/PlaceholderImage.vue.js";
7
- import _sfc_main$3 from "../../../../components/Dropdown/Dropdown.vue2.js";
7
+ import _sfc_main$3 from "../../../../components/Dropdown/Dropdown.vue.js";
8
8
  import _sfc_main$5 from "../../../../components/Popup/Popup.vue.js";
9
9
  import _sfc_main$2 from "../../../icons/entities/IconSettings.vue.js";
10
10
  import _sfc_main$4 from "../../../icons/navigation/IconEllipsis.vue.js";
@@ -4,7 +4,7 @@ import _sfc_main$7 from "../../../../components/Button/Button.vue.js";
4
4
  import Field from "../../../../components/Field/Field.vue.js";
5
5
  import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
6
6
  /* empty css */
7
- /* empty css */
7
+ /* empty css */
8
8
  import _sfc_main$1 from "../../../../components/Popup/Popup.vue.js";
9
9
  import _sfc_main$3 from "../../../orders/components/blocks/CardOrderItem.vue.js";
10
10
  import CardSpot from "../../../spots/components/blocks/CardSpot.vue.js";
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, resolveComponent, createElementBlock, openBlock, createElementVNode, createVNode, createTextVNode, Transition, withCtx, Fragment, renderList, createBlock, createCommentVNode, normalizeClass, toDisplayString } from "vue";
2
- import Loader from "../../../../../components/Loader/Loader.vue2.js";
2
+ import Loader from "../../../../../components/Loader/Loader.vue.js";
3
3
  import { useRouter } from "vue-router";
4
4
  import { useI18n } from "vue-i18n";
5
5
  import { actions as actions$1 } from "../../../../products/store/categories.js";
@@ -1,6 +1,6 @@
1
1
  import { ref, createElementBlock, openBlock, Fragment, renderList, createBlock, normalizeClass, withCtx, createCommentVNode, createTextVNode, resolveDynamicComponent, toDisplayString, createElementVNode, createVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../components/Button/Button.vue.js";
3
- import _sfc_main$2 from "../../../../components/Dropdown/Dropdown.vue2.js";
3
+ import _sfc_main$2 from "../../../../components/Dropdown/Dropdown.vue.js";
4
4
  import _sfc_main$3 from "../../../icons/navigation/IconEllipsis.vue.js";
5
5
  const _hoisted_1 = { class: "flex gap-small mn-b-medium" };
6
6
  const _hoisted_2 = { class: "dropdown-menu bg-white pd-small radius-medium shadow-big mn-t-thin" };
@@ -6,7 +6,7 @@ import _sfc_main$4 from "../../../../components/Button/Button.vue.js";
6
6
  import _sfc_main$3 from "../../../../components/Checkbox/Checkbox.vue.js";
7
7
  import Select from "../../../../components/Select/Select.vue2.js";
8
8
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
9
- /* empty css */
9
+ /* empty css */
10
10
  import BlockMultiselect from "../../../core/views/components/blocks/BlockMultiselect.vue.js";
11
11
  import _sfc_main$2 from "../../../icons/navigation/IconCross.vue.js";
12
12
  import { actions as actions$1 } from "../../store/artists.js";
@@ -1,9 +1,9 @@
1
1
  import { ref, computed, onMounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createVNode, createElementVNode, toDisplayString, Fragment, renderList, createBlock, withCtx, createTextVNode } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  /* empty css */
4
- import Loader from "../../../../components/Loader/Loader.vue2.js";
4
+ import Loader from "../../../../components/Loader/Loader.vue.js";
5
5
  import Media from "../../../../components/Media/Media.vue.js";
6
- /* empty css */
6
+ /* empty css */
7
7
  import _sfc_main$8 from "../../../../components/Feed/Feed.vue.js";
8
8
  import _sfc_main$1 from "../../../icons/navigation/IconPlay.vue.js";
9
9
  import _sfc_main$3 from "../../../icons/navigation/IconLike.vue.js";
@@ -1,7 +1,7 @@
1
1
  import { ref, computed, onMounted, createElementBlock, openBlock, createCommentVNode, createElementVNode, createVNode, unref, withCtx, createTextVNode, normalizeStyle, normalizeClass, toDisplayString, Fragment, renderList, createBlock } from "vue";
2
2
  import { useRouter, useRoute } from "vue-router";
3
3
  import _sfc_main$1 from "../../../../components/Button/Button.vue.js";
4
- /* empty css */
4
+ /* empty css */
5
5
  import _sfc_main$2 from "../cards/TrackListCard.vue.js";
6
6
  import { state, actions } from "../../store/artists.js";
7
7
  import { state as state$1 } from "../../../auth/views/store/auth.js";
@@ -1,9 +1,9 @@
1
1
  import { ref, computed, onMounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createVNode, createElementVNode, toDisplayString, Fragment, renderList, createBlock, withCtx, createTextVNode } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import _sfc_main$9 from "../../../../components/Button/Button.vue.js";
4
- /* empty css */
4
+ /* empty css */
5
5
  import Media from "../../../../components/Media/Media.vue.js";
6
- /* empty css */
6
+ /* empty css */
7
7
  import _sfc_main$7 from "../../../../components/Feed/Feed.vue.js";
8
8
  import _sfc_main$a from "../../../../components/Popup/Popup.vue.js";
9
9
  import _sfc_main$1 from "../../../icons/navigation/IconPlay.vue.js";
@@ -6,7 +6,7 @@ import AlbumCard from "../cards/AlbumCard.vue.js";
6
6
  import PlaylistCard from "../cards/PlaylistCard.vue.js";
7
7
  import ArtistCard from "../cards/ArtistCard.vue.js";
8
8
  import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
9
- import Loader from "../../../../components/Loader/Loader.vue2.js";
9
+ import Loader from "../../../../components/Loader/Loader.vue.js";
10
10
  import { state, actions } from "../../store/search.js";
11
11
  /* empty css */
12
12
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
@@ -1,9 +1,9 @@
1
1
  import { computed, ref, onMounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createBlock, createVNode, createElementVNode, withCtx, toDisplayString, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import _sfc_main$5 from "../../../../components/Button/Button.vue.js";
4
- import Loader from "../../../../components/Loader/Loader.vue2.js";
4
+ import Loader from "../../../../components/Loader/Loader.vue.js";
5
5
  import Media from "../../../../components/Media/Media.vue.js";
6
- /* empty css */
6
+ /* empty css */
7
7
  import _sfc_main$c from "../../../../components/Popup/Popup.vue.js";
8
8
  import _sfc_main$a from "../../../../components/Feed/Feed.vue.js";
9
9
  import _sfc_main$2 from "../../../icons/navigation/IconPlay.vue.js";
@@ -1,7 +1,7 @@
1
1
  import { inject, reactive, ref, computed, onMounted, createElementBlock, openBlock, createElementVNode, unref, createVNode, Fragment, renderList, toDisplayString, createBlock, createCommentVNode, withCtx, createTextVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../components/Checkbox/Checkbox.vue.js";
3
3
  import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
4
- import Loader from "../../../../components/Loader/Loader.vue2.js";
4
+ import Loader from "../../../../components/Loader/Loader.vue.js";
5
5
  const _hoisted_1 = {
6
6
  key: 0,
7
7
  class: "pd-large t-center t-transp"
@@ -1,8 +1,8 @@
1
1
  import { watch, onMounted, computed, createBlock, openBlock, withCtx, createElementVNode, createElementBlock, createCommentVNode, createVNode, Fragment, renderList } from "vue";
2
2
  import { useRoute } from "vue-router";
3
- /* empty css */
4
- /* empty css */
3
+ /* empty css */
5
4
  /* empty css */
5
+ /* empty css */
6
6
  /* empty css */
7
7
  import Field from "../../../../components/Field/Field.vue.js";
8
8
  import _sfc_main$2 from "../../../../components/Radio/Radio.vue.js";
@@ -3,9 +3,9 @@ import { useRouter, useRoute } from "vue-router";
3
3
  import "vue-i18n";
4
4
  /* empty css */
5
5
  /* empty css */
6
- import _sfc_main$1 from "../../../../components/Dropdown/Dropdown.vue2.js";
6
+ import _sfc_main$1 from "../../../../components/Dropdown/Dropdown.vue.js";
7
7
  import _sfc_main$7 from "../../../../components/Chips/Chips.vue.js";
8
- /* empty css */
8
+ /* empty css */
9
9
  import "../../../../components/Menu/MenuItem.vue.js";
10
10
  import _sfc_main$6 from "../../../icons/entities/IconFollowing.vue.js";
11
11
  import _sfc_main$5 from "../../../icons/navigation/IconEdit.vue.js";
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, withCtx, createBlock, createCommentVNode, unref, createElementVNode } from "vue";
2
- import _sfc_main$1 from "../../../../components/Menu/Menu.vue2.js";
2
+ import _sfc_main$1 from "../../../../components/Menu/Menu.vue.js";
3
3
  import _sfc_main$2 from "../../../../components/Menu/MenuItem.vue.js";
4
4
  /* empty css */
5
5
  import _sfc_main$4 from "../../../icons/entities/IconProducts.vue.js";
@@ -5,9 +5,9 @@ import _sfc_main$1 from "../../../icons/entities/IconGroups.vue.js";
5
5
  import _sfc_main$2 from "../../../icons/entities/IconLock.vue.js";
6
6
  import _sfc_main$3 from "../../../icons/actions/IconShow.vue.js";
7
7
  /* empty css */
8
- /* empty css */
9
- /* empty css */
8
+ /* empty css */
10
9
  /* empty css */
10
+ /* empty css */
11
11
  /* empty css */
12
12
  import Field from "../../../../components/Field/Field.vue.js";
13
13
  /* empty css */
@@ -1,5 +1,5 @@
1
1
  import { ref, computed, watch, onMounted, onUnmounted, createElementBlock, openBlock, createStaticVNode, createVNode, Transition, withCtx, createCommentVNode, withModifiers, createBlock } from "vue";
2
- import Loader from "../../../../components/Loader/Loader.vue2.js";
2
+ import Loader from "../../../../components/Loader/Loader.vue.js";
3
3
  /* empty css */
4
4
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
5
5
  const _hoisted_1 = { class: "product-360-viewer" };
@@ -6,9 +6,9 @@ import Select from "../../../../components/Select/Select.vue2.js";
6
6
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
7
7
  import Field from "../../../../components/Field/Field.vue.js";
8
8
  import FieldTags from "../../../../components/FieldTags/FieldTags.vue.js";
9
- /* empty css */
10
- /* empty css */
9
+ /* empty css */
11
10
  /* empty css */
11
+ /* empty css */
12
12
  /* empty css */
13
13
  /* empty css */
14
14
  import _sfc_main$1 from "../../../icons/navigation/IconCheckmark.vue.js";
@@ -2,7 +2,7 @@ import { computed, ref, watch, createElementBlock, openBlock, createElementVNode
2
2
  import dayjs from "../../../../../../../../_virtual/dayjs.min.js";
3
3
  import _sfc_main$2 from "../../../../../../components/Tab/Tab.vue2.js";
4
4
  import _sfc_main$3 from "../../../../../../components/Button/Button.vue.js";
5
- import _sfc_main$4 from "../../../../../../components/Dropdown/Dropdown.vue2.js";
5
+ import _sfc_main$4 from "../../../../../../components/Dropdown/Dropdown.vue.js";
6
6
  import Calendar from "../../../../../../components/Calendar/Calendar.vue2.js";
7
7
  import _sfc_main$1 from "./DateLabel.vue.js";
8
8
  import IconNext from "../../../../../icons/navigation/IconChevronRight.vue.js";
@@ -4,7 +4,7 @@ import { useI18n } from "vue-i18n";
4
4
  /* empty css */
5
5
  /* empty css */
6
6
  /* empty css */
7
- /* empty css */
7
+ /* empty css */
8
8
  import { useStore } from "../../../core/views/store/core.store.js";
9
9
  import { actions, state as state$1 } from "../../../products/store/categories.js";
10
10
  import { state } from "../../../marketplace/views/store/marketplace.js";
package/dist/style.css CHANGED
@@ -1604,75 +1604,75 @@ to {
1604
1604
  overflow: hidden;
1605
1605
  transition: height 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1606
1606
  }
1607
- .rotate-180deg[data-v-9f149045] {
1607
+ .rotate-180deg[data-v-0f5220e0] {
1608
1608
  transform: rotate(180deg);
1609
1609
  }
1610
- .hidden[data-v-9f149045] {
1610
+ .hidden[data-v-0f5220e0] {
1611
1611
  /* opacity: 0;*/
1612
1612
  width: 0;
1613
1613
  display: none;
1614
1614
  }
1615
- .visible[data-v-9f149045] {
1615
+ .visible[data-v-0f5220e0] {
1616
1616
  /* opacity: 1;*/
1617
1617
  display: block;
1618
1618
  }
1619
1619
 
1620
1620
  /* Dropdown animations */
1621
- .dropdown-enter[data-v-9f149045], .dropdown-leave[data-v-9f149045] {
1621
+ .dropdown-enter[data-v-0f5220e0], .dropdown-leave[data-v-0f5220e0] {
1622
1622
  transition: all 0.3s ease-in-out;
1623
1623
  }
1624
- .dropdown-enter-from[data-v-9f149045], .dropdown-leave-to[data-v-9f149045] {
1624
+ .dropdown-enter-from[data-v-0f5220e0], .dropdown-leave-to[data-v-0f5220e0] {
1625
1625
  opacity: 0;
1626
1626
  transform: translateY(-0.5rem);
1627
1627
  }
1628
- .dropdown-enter-to[data-v-9f149045], .dropdown-leave-from[data-v-9f149045] {
1628
+ .dropdown-enter-to[data-v-0f5220e0], .dropdown-leave-from[data-v-0f5220e0] {
1629
1629
  opacity: 1;
1630
1630
  transform: translateY(0);
1631
1631
  }
1632
1632
 
1633
1633
  /* Horizontal dropdown submenu */
1634
- .dropdown-submenu[data-v-9f149045] {
1634
+ .dropdown-submenu[data-v-0f5220e0] {
1635
1635
  list-style: none;
1636
1636
  padding: 0.5rem;
1637
1637
  margin: 0;
1638
1638
  min-width: 12rem;
1639
1639
  }
1640
- .dropdown-submenu li[data-v-9f149045] {
1640
+ .dropdown-submenu li[data-v-0f5220e0] {
1641
1641
  width: 100%;
1642
1642
  }
1643
- .dropdown-submenu a[data-v-9f149045] {
1643
+ .dropdown-submenu a[data-v-0f5220e0] {
1644
1644
  display: flex;
1645
1645
  text-decoration: none;
1646
1646
  white-space: nowrap;
1647
1647
  }
1648
1648
 
1649
1649
  /* Transition for horizontal dropdown */
1650
- [data-v-9f149045] .TransitionTranslateY-enter-active,[data-v-9f149045] .TransitionTranslateY-leave-active {
1650
+ [data-v-0f5220e0] .TransitionTranslateY-enter-active,[data-v-0f5220e0] .TransitionTranslateY-leave-active {
1651
1651
  transition: translateY 0.2s ease;
1652
1652
  transition: opacity 0.2s ease;
1653
1653
  }
1654
- [data-v-9f149045] .TransitionTranslateY-enter-from,[data-v-9f149045] .TransitionTranslateY-leave-to {
1654
+ [data-v-0f5220e0] .TransitionTranslateY-enter-from,[data-v-0f5220e0] .TransitionTranslateY-leave-to {
1655
1655
  opacity: 0;
1656
1656
  transform: translateY(-0.5rem);
1657
1657
  }
1658
- [data-v-9f149045] .TransitionTranslateY-enter-to,[data-v-9f149045] .TransitionTranslateY-leave-from {
1658
+ [data-v-0f5220e0] .TransitionTranslateY-enter-to,[data-v-0f5220e0] .TransitionTranslateY-leave-from {
1659
1659
  opacity: 1;
1660
1660
  transform: translateY(0);
1661
1661
  }
1662
1662
 
1663
- .hidden[data-v-99b57d1a] {
1663
+ .hidden[data-v-846509b5] {
1664
1664
  opacity: 0;
1665
1665
  width: 0;
1666
1666
  display: none;
1667
1667
  }
1668
- .visible[data-v-99b57d1a] {
1668
+ .visible[data-v-846509b5] {
1669
1669
  opacity: 1;
1670
1670
  display: block;
1671
1671
  }
1672
1672
 
1673
1673
  /* Mobile: ВСЕГДА скрываем, показываем ТОЛЬКО по клику меню */
1674
1674
  @media (max-width: 1024px) {
1675
- aside[data-sidebar][data-v-99b57d1a] {
1675
+ aside[data-sidebar][data-v-846509b5] {
1676
1676
  position: absolute !important;
1677
1677
  left: 0 !important;
1678
1678
  transform: translateX(-100%) !important;
@@ -1681,24 +1681,24 @@ aside[data-sidebar][data-v-99b57d1a] {
1681
1681
  }
1682
1682
 
1683
1683
  /* Показываем ТОЛЬКО когда manual клик (НЕ от SSR state) */
1684
- aside[data-sidebar].mobile-opened[data-v-99b57d1a] {
1684
+ aside[data-sidebar].mobile-opened[data-v-846509b5] {
1685
1685
  transform: translateX(0) !important;
1686
1686
  visibility: visible !important;
1687
1687
  }
1688
1688
  }
1689
1689
 
1690
1690
  /* Scrollbar styles */
1691
- [data-v-99b57d1a]::-webkit-scrollbar {
1691
+ [data-v-846509b5]::-webkit-scrollbar {
1692
1692
  width: 6px;
1693
1693
  }
1694
- [data-v-99b57d1a]::-webkit-scrollbar-track {
1694
+ [data-v-846509b5]::-webkit-scrollbar-track {
1695
1695
  background: transparent;
1696
1696
  }
1697
- [data-v-99b57d1a]::-webkit-scrollbar-thumb {
1697
+ [data-v-846509b5]::-webkit-scrollbar-thumb {
1698
1698
  background-color: var(--grey-micro);
1699
1699
  border-radius: 3px;
1700
1700
  }
1701
- [data-v-99b57d1a]::-webkit-scrollbar-thumb:hover {
1701
+ [data-v-846509b5]::-webkit-scrollbar-thumb:hover {
1702
1702
  background-color: var(--grey-small);
1703
1703
  }
1704
1704
  .eye[data-v-4241147a] {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ozdao/martyrs",
3
- "version": "0.2.593",
3
+ "version": "0.2.595",
4
4
  "description": "Fullstack framework focused on user experience and ease of development.",
5
5
  "author": "OZ DAO <hello@ozdao.dev>",
6
6
  "license": "GPL-3.0-or-later",
@@ -1,6 +1,9 @@
1
1
  // @martyrs/src/modules/core/locales/en.js
2
2
  export default {
3
3
  core: {
4
+ ui: {
5
+ darkMode: 'Dark Mode'
6
+ },
4
7
  errors: {
5
8
  USER_NOT_FOUND: 'Such user is not registered',
6
9
  USER_ALREADY_REGISTERED: 'Such user is already registered!',
@@ -1,6 +1,9 @@
1
1
  // @martyrs/src/modules/core/locales/ru.js
2
2
  export default {
3
3
  core: {
4
+ ui: {
5
+ darkMode: 'Тёмная тема'
6
+ },
4
7
  errors: {
5
8
  USER_NOT_FOUND: 'Такой пользователь не зарегистрирован!',
6
9
  USER_ALREADY_REGISTERED: 'Такой пользователь уже зарегистрирован!',
@@ -43,6 +43,9 @@
43
43
  :logotype="route.meta.logotype"
44
44
  :location="route.meta.location"
45
45
  :headerClass="computedHeaderClass"
46
+ :showCart="route.meta.header_show_cart ?? true"
47
+ :showProfile="route.meta.header_show_profile ?? true"
48
+ :showNotifications="route.meta.header_show_notifications ?? true"
46
49
  >
47
50
  <component
48
51
  v-if="route.meta?.header_navigation"
@@ -52,6 +55,9 @@
52
55
  :stateSidebar="store.core.state.isOpenSidebar"
53
56
  :theme="headerTheme"
54
57
  />
58
+ <template #right>
59
+ <component v-if="route.meta?.header_right_component" :is="route.meta.header_right_component" :theme="headerTheme" />
60
+ </template>
55
61
  </component>
56
62
 
57
63
 
@@ -111,7 +117,7 @@
111
117
 
112
118
  <!-- Footer slot -->
113
119
  <template #footer>
114
- <component v-if="route.meta?.sidebar_footer_component" :is="route.meta.sidebar_footer_component" :theme="headerTheme" />
120
+ <component v-if="route.meta?.sidebar_footer_component" :is="route.meta.sidebar_footer_component" :theme="headerTheme" :stateSidebar="store.core.state.isOpenSidebar" />
115
121
  </template>
116
122
  </component>
117
123