@vc-shell/framework 1.0.289 → 1.0.291

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 (178) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/core/composables/index.ts +1 -0
  3. package/core/composables/useTheme/index.ts +60 -0
  4. package/core/directives/loading/styles.css +6 -1
  5. package/dist/core/composables/index.d.ts +1 -0
  6. package/dist/core/composables/index.d.ts.map +1 -1
  7. package/dist/core/composables/useTheme/index.d.ts +11 -0
  8. package/dist/core/composables/useTheme/index.d.ts.map +1 -0
  9. package/dist/framework.js +27889 -27362
  10. package/dist/index.css +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/locales/en.json +6 -0
  13. package/dist/shared/components/app-bar-button/app-bar-button.vue.d.ts +56 -0
  14. package/dist/shared/components/app-bar-button/app-bar-button.vue.d.ts.map +1 -0
  15. package/dist/shared/components/app-bar-button/index.d.ts +2 -0
  16. package/dist/shared/components/app-bar-button/index.d.ts.map +1 -0
  17. package/dist/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue.d.ts.map +1 -1
  18. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
  19. package/dist/shared/components/index.d.ts +3 -0
  20. package/dist/shared/components/index.d.ts.map +1 -1
  21. package/dist/shared/components/language-selector/language-selector.vue.d.ts.map +1 -1
  22. package/dist/shared/components/notification-dropdown/notification-dropdown.vue.d.ts.map +1 -1
  23. package/dist/shared/components/notification-template/notification-template.vue.d.ts.map +1 -1
  24. package/dist/shared/components/sidebar/index.d.ts +2 -0
  25. package/dist/shared/components/sidebar/index.d.ts.map +1 -0
  26. package/dist/shared/components/sidebar/sidebar.vue.d.ts +49 -0
  27. package/dist/shared/components/sidebar/sidebar.vue.d.ts.map +1 -0
  28. package/dist/shared/components/theme-selector/index.d.ts +2 -0
  29. package/dist/shared/components/theme-selector/index.d.ts.map +1 -0
  30. package/dist/shared/components/theme-selector/theme-selector.vue.d.ts +3 -0
  31. package/dist/shared/components/theme-selector/theme-selector.vue.d.ts.map +1 -0
  32. package/dist/shared/components/user-dropdown-button/index.d.ts +6 -0
  33. package/dist/shared/components/user-dropdown-button/index.d.ts.map +1 -1
  34. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts +1 -0
  35. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts.map +1 -1
  36. package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts.map +1 -1
  37. package/dist/shared/modules/dynamic/types/index.d.ts +3 -0
  38. package/dist/shared/modules/dynamic/types/index.d.ts.map +1 -1
  39. package/dist/shared/pages/ChangePasswordPage/components/change-password/ChangePassword.vue.d.ts +16 -3
  40. package/dist/shared/pages/ChangePasswordPage/components/change-password/ChangePassword.vue.d.ts.map +1 -1
  41. package/dist/shared/pages/ChangePasswordPage/components/change-password/index.d.ts +7 -7
  42. package/dist/shared/pages/ChangePasswordPage/components/change-password/index.d.ts.map +1 -1
  43. package/dist/shared/pages/InvitePage/components/invite/Invite.vue.d.ts +24 -3
  44. package/dist/shared/pages/InvitePage/components/invite/Invite.vue.d.ts.map +1 -1
  45. package/dist/shared/pages/InvitePage/components/invite/index.d.ts +24 -1
  46. package/dist/shared/pages/InvitePage/components/invite/index.d.ts.map +1 -1
  47. package/dist/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue.d.ts +24 -3
  48. package/dist/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue.d.ts.map +1 -1
  49. package/dist/shared/pages/ResetPasswordPage/components/reset-password/index.d.ts +24 -1
  50. package/dist/shared/pages/ResetPasswordPage/components/reset-password/index.d.ts.map +1 -1
  51. package/dist/tailwind.config.d.ts +42 -15
  52. package/dist/tailwind.config.d.ts.map +1 -1
  53. package/dist/tsconfig.tsbuildinfo +1 -1
  54. package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts.map +1 -1
  55. package/dist/ui/components/atoms/vc-link/vc-link.vue.d.ts.map +1 -1
  56. package/dist/ui/components/atoms/vc-progress/vc-progress.vue.d.ts.map +1 -1
  57. package/dist/ui/components/atoms/vc-status/vc-status.vue.d.ts.map +1 -1
  58. package/dist/ui/components/atoms/vc-tooltip/vc-tooltip.vue.d.ts.map +1 -1
  59. package/dist/ui/components/atoms/vc-video/vc-video.vue.d.ts.map +1 -1
  60. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.d.ts.map +1 -1
  61. package/dist/ui/components/molecules/vc-checkbox/vc-checkbox.vue.d.ts.map +1 -1
  62. package/dist/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue.d.ts.map +1 -1
  63. package/dist/ui/components/molecules/vc-field/vc-field.vue.d.ts.map +1 -1
  64. package/dist/ui/components/molecules/vc-file-upload/vc-file-upload.vue.d.ts.map +1 -1
  65. package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts.map +1 -1
  66. package/dist/ui/components/molecules/vc-slider/vc-slider.vue.d.ts.map +1 -1
  67. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue.d.ts.map +1 -1
  68. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts.map +1 -1
  69. package/dist/ui/components/organisms/vc-app/vc-app.stories.d.ts +26 -0
  70. package/dist/ui/components/organisms/vc-app/vc-app.stories.d.ts.map +1 -1
  71. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts +26 -0
  72. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
  73. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue.d.ts.map +1 -1
  74. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue.d.ts.map +1 -1
  75. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts.map +1 -1
  76. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue.d.ts.map +1 -1
  77. package/dist/ui/components/organisms/vc-table/_internal/vc-table-add-new/vc-table-add-new.vue.d.ts.map +1 -1
  78. package/dist/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue.d.ts +1 -0
  79. package/dist/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue.d.ts.map +1 -1
  80. package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts.map +1 -1
  81. package/dist/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue.d.ts.map +1 -1
  82. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts +1 -0
  83. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts.map +1 -1
  84. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts.map +1 -1
  85. package/dist/ui/components/organisms/vc-table/vc-table.stories.d.ts +15 -0
  86. package/dist/ui/components/organisms/vc-table/vc-table.stories.d.ts.map +1 -1
  87. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +3 -0
  88. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
  89. package/package.json +4 -4
  90. package/shared/components/app-bar-button/app-bar-button.vue +169 -0
  91. package/shared/components/app-bar-button/index.ts +1 -0
  92. package/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue +138 -38
  93. package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +10 -1
  94. package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +55 -30
  95. package/shared/components/change-password/change-password.vue +7 -1
  96. package/shared/components/common/popup/vc-popup-error.vue +1 -1
  97. package/shared/components/common/popup/vc-popup-warning.vue +1 -1
  98. package/shared/components/index.ts +3 -0
  99. package/shared/components/language-selector/language-selector.vue +55 -39
  100. package/shared/components/notification-dropdown/_internal/notification/notification.vue +7 -1
  101. package/shared/components/notification-dropdown/notification-dropdown.vue +96 -83
  102. package/shared/components/notification-template/notification-template.vue +66 -22
  103. package/shared/components/notifications/styles/index.scss +1 -0
  104. package/shared/components/sidebar/index.ts +1 -0
  105. package/shared/components/sidebar/sidebar.vue +96 -0
  106. package/shared/components/theme-selector/index.ts +1 -0
  107. package/shared/components/theme-selector/theme-selector.vue +95 -0
  108. package/shared/components/user-dropdown-button/user-dropdown-button.vue +155 -86
  109. package/shared/modules/assets/components/assets-details/assets-details.vue +9 -2
  110. package/shared/modules/assets-manager/components/assets-manager/assets-manager.vue +16 -6
  111. package/shared/modules/dynamic/composables/useFilterBuilder/index.ts +1 -1
  112. package/shared/modules/dynamic/helpers/nodeBuilder.ts +1 -1
  113. package/shared/modules/dynamic/pages/dynamic-blade-form.vue +6 -2
  114. package/shared/modules/dynamic/pages/dynamic-blade-list.vue +16 -2
  115. package/shared/modules/dynamic/types/index.ts +3 -0
  116. package/shared/pages/ChangePasswordPage/components/change-password/ChangePassword.vue +14 -9
  117. package/shared/pages/InvitePage/components/invite/Invite.vue +59 -15
  118. package/shared/pages/LoginPage/components/login/Login.vue +78 -22
  119. package/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue +67 -15
  120. package/tailwind.config.ts +281 -15
  121. package/ui/components/atoms/vc-badge/vc-badge.vue +38 -23
  122. package/ui/components/atoms/vc-button/vc-button.vue +37 -34
  123. package/ui/components/atoms/vc-card/vc-card.vue +17 -11
  124. package/ui/components/atoms/vc-col/vc-col.vue +4 -6
  125. package/ui/components/atoms/vc-container/vc-container.vue +26 -8
  126. package/ui/components/atoms/vc-hint/vc-hint.vue +8 -2
  127. package/ui/components/atoms/vc-icon/vc-icon.vue +3 -3
  128. package/ui/components/atoms/vc-image/vc-image.vue +33 -9
  129. package/ui/components/atoms/vc-label/vc-label.vue +38 -9
  130. package/ui/components/atoms/vc-link/vc-link.vue +15 -8
  131. package/ui/components/atoms/vc-loading/vc-loading.vue +37 -8
  132. package/ui/components/atoms/vc-progress/vc-progress.vue +29 -21
  133. package/ui/components/atoms/vc-row/vc-row.vue +4 -2
  134. package/ui/components/atoms/vc-status/vc-status.vue +29 -20
  135. package/ui/components/atoms/vc-status-icon/vc-status-icon.vue +20 -3
  136. package/ui/components/atoms/vc-switch/vc-switch.vue +41 -17
  137. package/ui/components/atoms/vc-tooltip/vc-tooltip.vue +35 -9
  138. package/ui/components/atoms/vc-video/vc-video.vue +28 -6
  139. package/ui/components/atoms/vc-widget/vc-widget.vue +59 -28
  140. package/ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue +29 -27
  141. package/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue +34 -11
  142. package/ui/components/molecules/vc-checkbox/vc-checkbox.vue +43 -21
  143. package/ui/components/molecules/vc-editor/vc-editor.vue +70 -32
  144. package/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue +32 -16
  145. package/ui/components/molecules/vc-field/vc-field.vue +36 -13
  146. package/ui/components/molecules/vc-file-upload/vc-file-upload.vue +75 -25
  147. package/ui/components/molecules/vc-input/vc-input.vue +279 -218
  148. package/ui/components/molecules/vc-input-currency/vc-input-currency.vue +24 -2
  149. package/ui/components/molecules/vc-multivalue/vc-multivalue.vue +102 -64
  150. package/ui/components/molecules/vc-notification/vc-notification.vue +40 -15
  151. package/ui/components/molecules/vc-pagination/vc-pagination.vue +19 -15
  152. package/ui/components/molecules/vc-radio-button/vc-radio-button.vue +18 -23
  153. package/ui/components/molecules/vc-rating/vc-rating.vue +9 -5
  154. package/ui/components/molecules/vc-select/vc-select.vue +211 -65
  155. package/ui/components/molecules/vc-slider/vc-slider.vue +32 -13
  156. package/ui/components/molecules/vc-textarea/vc-textarea.vue +17 -12
  157. package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +68 -14
  158. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue +112 -122
  159. package/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue +213 -96
  160. package/ui/components/organisms/vc-app/vc-app.vue +41 -15
  161. package/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue +78 -30
  162. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue +81 -59
  163. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue +27 -13
  164. package/ui/components/organisms/vc-blade/vc-blade.vue +177 -46
  165. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.vue +40 -11
  166. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue +52 -18
  167. package/ui/components/organisms/vc-gallery/vc-gallery.vue +38 -6
  168. package/ui/components/organisms/vc-login-form/vc-login-form.vue +40 -14
  169. package/ui/components/organisms/vc-popup/vc-popup.vue +186 -44
  170. package/ui/components/organisms/vc-table/_internal/vc-table-add-new/vc-table-add-new.vue +25 -6
  171. package/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue +48 -12
  172. package/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue +130 -60
  173. package/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue +55 -7
  174. package/ui/components/organisms/vc-table/_internal/vc-table-counter/vc-table-counter.vue +17 -5
  175. package/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue +38 -6
  176. package/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue +111 -62
  177. package/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue +139 -46
  178. package/ui/components/organisms/vc-table/vc-table.vue +370 -128
@@ -1,14 +1,14 @@
1
1
  <template>
2
2
  <div
3
- class="tw-relative tw-flex tw-items-center tw-content-between tw-h-[var(--app-bar-height)] tw-bg-[color:var(--app-bar-background-color)] tw-px-4 tw-shadow-[0px_2px_5px_0px_#3654751A] tw-z-[1002]"
4
- :class="{ '!tw-pr-0 !tw-pl-[10px]': $isMobile.value }"
3
+ class="vc-app-bar"
4
+ :class="{ 'vc-app-bar--mobile': $isMobile.value }"
5
5
  >
6
6
  <slot name="app-switcher"></slot>
7
7
 
8
8
  <template v-if="!$isMobile.value || quantity === 0">
9
9
  <!-- Logo -->
10
10
  <img
11
- class="tw-h-1/2 tw-cursor-pointer tw-mx-4"
11
+ class="vc-app-bar__logo"
12
12
  alt="logo"
13
13
  :src="logo"
14
14
  @click="$emit('logo:click')"
@@ -17,7 +17,7 @@
17
17
  <!-- Title -->
18
18
  <div
19
19
  v-if="title"
20
- class="tw-text-[color:var(--app-bar-product-name-color)] tw-text-[length:var(--app-bar-product-name-size)] tw-font-medium"
20
+ class="vc-app-bar__title"
21
21
  >
22
22
  {{ title }}
23
23
  </div>
@@ -27,7 +27,7 @@
27
27
  <!-- Show blades name when at least one blade is opened -->
28
28
  <div
29
29
  v-if="quantity === 1"
30
- class="tw-overflow-ellipsis tw-overflow-hidden tw-whitespace-nowrap tw-text-2xl tw-leading-header tw-ml-2"
30
+ class="vc-app-bar__blade-title"
31
31
  >
32
32
  {{ viewTitle }}
33
33
  </div>
@@ -35,29 +35,29 @@
35
35
  <!-- Show back link when more than one blade is opened -->
36
36
  <VcLink
37
37
  v-else-if="quantity > 1"
38
- class="tw-ml-3"
38
+ class="vc-app-bar__backlink"
39
39
  @click="$emit('backlink:click')"
40
40
  >
41
41
  <VcIcon
42
42
  icon="fas fa-chevron-left"
43
43
  size="s"
44
44
  ></VcIcon>
45
- <span class="tw-ml-2 tw-text-lg">{{ t("COMPONENTS.ORGANISMS.VC_APP.INTERNAL.VC_APP_BAR.BACK") }}</span>
45
+ <span class="vc-app-bar__backlink-text">{{ t("COMPONENTS.ORGANISMS.VC_APP.INTERNAL.VC_APP_BAR.BACK") }}</span>
46
46
  </VcLink>
47
47
  </template>
48
48
 
49
49
  <!-- Additional spacer -->
50
- <div class="tw-grow tw-basis-0"></div>
50
+ <div class="vc-app__spacer"></div>
51
51
 
52
52
  <!-- Toolbar container -->
53
- <div class="tw-flex tw-h-full tw-box-border">
53
+ <div class="vc-app__toolbar">
54
54
  <slot name="toolbar"></slot>
55
55
  </div>
56
56
 
57
57
  <!-- Show menu toggler on mobile devices -->
58
58
  <div
59
59
  v-if="!disableMenu && $isMobile.value"
60
- class="tw-text-[#319ed4] tw-w-[var(--app-bar-button-width)] tw-flex tw-items-center tw-justify-center tw-h-full tw-box-border tw-cursor-pointer"
60
+ class="vc-app__menu-toggler"
61
61
  @click="$emit('menubutton:click')"
62
62
  >
63
63
  <VcIcon icon="fas fa-bars"></VcIcon>
@@ -111,14 +111,68 @@ watchDebounced(
111
111
  <style lang="scss">
112
112
  :root {
113
113
  --app-bar-height: 60px;
114
- --app-bar-background-color: #ffffff;
114
+ --app-bar-background-color: var(--additional-50);
115
115
  --app-bar-button-width: 50px;
116
116
  --app-bar-button-border-color: var(--app-bar-background-color);
117
- --app-bar-button-color: #7e8e9d;
117
+ --app-bar-button-color: var(--secondary-600);
118
118
  --app-bar-button-background-color: var(--app-bar-background-color);
119
- --app-bar-button-color-hover: #34414f;
119
+ --app-bar-button-color-hover: var(--secondary-700);
120
120
  --app-bar-button-background-color-hover: var(--app-bar-background-color);
121
- --app-bar-product-name-color: #34414f;
121
+ --app-bar-product-name-color: var(--neutrals-600);
122
122
  --app-bar-product-name-size: 20px;
123
+ --app-bar-toolbar-icon-background-hover: var(--neutrals-600);
124
+ --app-bar-divider-color: var(--additional-50);
125
+ --app-bar-account-info-role-color: var(--neutrals-400);
126
+
127
+ --app-bar-burger-color: var(--primary-500);
128
+
129
+ --app-bar-shadow-color: var(--additional-950);
130
+ --app-bar-shadow: 0px 2px 4px 0px rgba(var(--app-bar-shadow-color), 0.07);
131
+ }
132
+
133
+ .vc-app-bar {
134
+ @apply tw-relative tw-flex tw-items-center tw-justify-between tw-px-4 tw-z-[1002];
135
+ height: var(--app-bar-height);
136
+ background-color: var(--app-bar-background-color);
137
+ box-shadow: var(--app-bar-shadow);
138
+ @apply tw-box-border;
139
+ }
140
+
141
+ .vc-app-bar--mobile {
142
+ @apply tw-pr-0 tw-pl-3 #{!important};
143
+ }
144
+
145
+ .vc-app-bar__logo {
146
+ @apply tw-h-1/2 tw-cursor-pointer tw-mx-4;
147
+ }
148
+
149
+ .vc-app-bar__title {
150
+ @apply tw-text-[color:var(--app-bar-product-name-color)] tw-font-medium;
151
+ font-size: var(--app-bar-product-name-size);
152
+ }
153
+
154
+ .vc-app-bar__blade-title {
155
+ @apply tw-overflow-ellipsis tw-overflow-hidden tw-whitespace-nowrap tw-text-2xl tw-ml-2;
156
+ @apply tw-leading-snug;
157
+ }
158
+
159
+ .vc-app-bar__backlink {
160
+ @apply tw-ml-3;
161
+ }
162
+
163
+ .vc-app-bar__backlink-text {
164
+ @apply tw-ml-2 tw-text-lg;
165
+ }
166
+
167
+ .vc-app__spacer {
168
+ @apply tw-grow tw-basis-0;
169
+ }
170
+
171
+ .vc-app__toolbar {
172
+ @apply tw-flex tw-h-full tw-box-border;
173
+ }
174
+
175
+ .vc-app__menu-toggler {
176
+ @apply tw-text-[color:var(--app-bar-burger-color)] tw-w-12 tw-flex tw-items-center tw-justify-center tw-h-full tw-box-border tw-cursor-pointer;
123
177
  }
124
178
  </style>
@@ -1,51 +1,51 @@
1
1
  <template>
2
2
  <div
3
- class="vc-app-menu-link tw-cursor-pointer tw-group tw-px-[19px]"
3
+ class="vc-app-menu-link"
4
4
  @click="onMenuItemClick"
5
5
  >
6
6
  <div
7
- class="vc-app-menu-item tw-flex"
7
+ class="vc-app-menu-link__item"
8
8
  :class="[
9
9
  {
10
- 'vc-app-menu-item_active': isMenuItemActive,
11
- 'vc-app-menu-item_no-hover': !children?.length,
12
- 'vc-app-menu-item_child-opened': expand && isOpened,
13
- 'vc-app-menu-item_collapsed': !expand,
10
+ 'vc-app-menu-link__item_active': isMenuItemActive,
11
+ 'vc-app-menu-link__item_no-hover': !children?.length,
12
+ 'vc-app-menu-link__item_child-opened': expand && isOpened,
13
+ 'vc-app-menu-link__item_collapsed': !expand,
14
14
  },
15
15
  ]"
16
16
  >
17
17
  <div
18
18
  v-if="icon"
19
- class="vc-app-menu-item__icon tw-w-[var(--app-menu-item-icon-width)]"
19
+ class="vc-app-menu-link__icon"
20
20
  >
21
21
  <VcIcon
22
- class="tw-text-center"
22
+ class="vc-app-menu-link__icon-content"
23
23
  :icon="icon"
24
24
  size="m"
25
25
  />
26
26
  </div>
27
27
  <div
28
28
  v-if="expand"
29
- class="vc-app-menu-item__title tw-capitalize"
29
+ class="vc-app-menu-link__title"
30
30
  >
31
- <div class="tw-truncate">
31
+ <div class="vc-app-menu-link__title-truncate">
32
32
  {{ title }}
33
33
  </div>
34
34
  <VcIcon
35
35
  v-if="!!children?.length || false"
36
- class="vc-app-menu-item__title-icon"
36
+ class="vc-app-menu-link__title-icon"
37
37
  :icon="`fas fa-chevron-${isOpened ? 'up' : 'down'}`"
38
38
  size="xs"
39
- ></VcIcon>
39
+ />
40
40
  </div>
41
41
  </div>
42
42
  </div>
43
- <!-- Nested menu items -->
43
+
44
44
  <div
45
45
  v-show="isOpened"
46
- class="vc-app-menu-item__child"
46
+ class="vc-app-menu-link__child"
47
47
  :class="{
48
- '!tw-ml-0': !expand,
48
+ 'vc-app-menu-link__child-collapsed': !expand,
49
49
  }"
50
50
  >
51
51
  <template
@@ -58,7 +58,7 @@
58
58
  custom
59
59
  >
60
60
  <div
61
- class="vc-app-menu-item__child-item-link tw-cursor-pointer tw-z-[2] tw-px-[19px]"
61
+ class="vc-app-menu-link__child-item-link"
62
62
  :data-test-id="nested.routeId"
63
63
  @click="$emit('onClick', nested)"
64
64
  >
@@ -66,29 +66,29 @@
66
66
  :key="i"
67
67
  :class="[
68
68
  {
69
- 'vc-app-menu-item__child-item_active': isActive(nested.url ?? ''),
70
- 'vc-app-menu-item__child-item_collapsed': !expand,
71
- 'tw-pl-[21px] tw-w-full ': expand,
69
+ 'vc-app-menu-link__child-item_active': isActive(nested.url ?? ''),
70
+ 'vc-app-menu-link__child-item_collapsed': !expand,
71
+ 'vc-app-menu-link__child-item_expanded': expand,
72
72
  },
73
- 'vc-app-menu-item__child-item tw-min-w-0 tw-flex tw-h-[var(--app-menu-item-height)] tw-items-center [transition:padding_150ms_cubic-bezier(0.2,0,0,1)_0s] ',
73
+ 'vc-app-menu-link__child-item',
74
74
  ]"
75
75
  >
76
76
  <div
77
77
  v-if="nested.icon"
78
- class="vc-app-menu-item__icon tw-w-[var(--app-menu-item-icon-width)]"
78
+ class="vc-app-menu-link__icon"
79
79
  :class="{
80
- 'tw-p-0': !expand,
80
+ 'vc-app-menu-link__icon-collapsed': !expand,
81
81
  }"
82
82
  >
83
83
  <VcIcon
84
- class="tw-text-center"
84
+ class="vc-app-menu-link__icon-content"
85
85
  :icon="nested.icon"
86
86
  size="m"
87
87
  />
88
88
  </div>
89
89
  <p
90
90
  v-if="expand"
91
- class="tw-truncate tw-pl-[7px]"
91
+ class="vc-app-menu-link__child-item-title"
92
92
  >
93
93
  {{ nested.title }}
94
94
  </p>
@@ -98,12 +98,12 @@
98
98
  </template>
99
99
  </div>
100
100
  </template>
101
+
101
102
  <script lang="ts" setup>
102
103
  import { ref, watch, computed, onMounted } from "vue";
103
104
  import { MenuItem } from "../../../../../../../../../core/types";
104
105
  import { VcIcon } from "./../../../../../../../";
105
106
  import { useRoute } from "vue-router";
106
- import * as _ from "lodash-es";
107
107
 
108
108
  export interface Props {
109
109
  children?: MenuItem[];
@@ -184,164 +184,154 @@ watch(isOpened, (newValue) => {
184
184
  :root {
185
185
  --app-menu-item-height: 36px;
186
186
  --app-menu-item-icon-width: 22px;
187
- --app-menu-item-icon-color: #82a6bd;
188
- --app-menu-item-icon-color-active: #ffffff;
189
- --app-menu-item-handler-width: 10px;
190
- --app-menu-item-background-color-hover: rgba(130, 166, 189, 0.5);
191
- --app-menu-item-background-color-active: #82a6bd;
187
+ --app-menu-item-icon-color: var(--secondary-600);
188
+ --app-menu-item-icon-color-active: var(--additional-50);
189
+ --app-menu-item-background-color-hover: var(--secondary-500);
190
+ --app-menu-item-background-color-active: var(--secondary-600);
192
191
  --app-menu-item-hover-radius: 4px;
193
- --app-menu-item-title-color: #465769;
194
- --app-menu-item-title-color-active: #ffffff;
195
- --app-menu-item-handler-color: #bdd1df;
192
+ --app-menu-item-title-color: var(--base-text-color, var(--neutrals-950));
193
+ --app-menu-item-title-color-active: var(--additional-50);
196
194
 
197
- --app-menu-item-active-text: #2e3d4e;
198
- --app-menu-item-active-icon: #2e3d4e;
195
+ --app-menu-item-active-text: var(--base-text-color, var(--neutrals-950));
196
+ --app-menu-item-active-icon: var(--base-text-color, var(--neutrals-950));
199
197
  }
200
198
 
201
- .vc-app-menu-link:hover .vc-app-menu-item:not(.vc-app-menu-item_active) {
202
- @apply tw-bg-[color:var(--app-menu-item-background-color-hover)] tw-bg-opacity-50
203
- tw-rounded-[var(--app-menu-item-hover-radius)];
199
+ .vc-app-menu-link {
200
+ @apply tw-cursor-pointer tw-px-5;
204
201
 
205
- .vc-app-menu-item__title {
206
- @apply tw-text-[color:var(--app-menu-item-title-color-active)];
207
- }
202
+ &:hover .vc-app-menu-link__item:not(.vc-app-menu-link__item_active) {
203
+ @apply tw-bg-[var(--app-menu-item-background-color-hover)] tw-bg-opacity-50
204
+ tw-rounded-[var(--app-menu-item-hover-radius)];
208
205
 
209
- .vc-app-menu-item__icon {
210
- @apply tw-text-[color:var(--app-menu-item-icon-color-active)];
211
- }
206
+ .vc-app-menu-link__title {
207
+ @apply tw-text-[color:var(--app-menu-item-title-color-active)];
208
+ }
212
209
 
213
- .vc-app-menu-item__title-icon {
214
- @apply tw-text-[color:var(--app-menu-item-icon-color-active)];
215
- }
210
+ .vc-app-menu-link__icon {
211
+ @apply tw-text-[color:var(--app-menu-item-icon-color-active)];
212
+ }
216
213
 
217
- .vc-app-menu-item__handler_enabled {
218
- @apply tw-visible #{!important};
214
+ .vc-app-menu-link__title-icon {
215
+ @apply tw-text-[color:var(--app-menu-item-icon-color-active)];
216
+ }
219
217
  }
220
- }
221
-
222
- .vc-app-menu-item__child-item-link:hover .vc-app-menu-item__child-item:not(.vc-app-menu-item__child-item_active) {
223
- @apply tw-bg-[color:var(--app-menu-item-background-color-hover)] tw-bg-opacity-50
224
- tw-rounded-[var(--app-menu-item-hover-radius)];
225
218
 
226
- .vc-app-menu-item__icon {
227
- @apply tw-text-[color:var(--app-menu-item-icon-color-active)];
228
- }
229
- }
219
+ &__item {
220
+ @apply tw-flex tw-items-center tw-w-full tw-h-[var(--app-menu-item-height)]
221
+ tw-border-none tw-flex-nowrap tw-box-border tw-cursor-pointer tw-relative
222
+ tw-uppercase tw-select-none tw-py-1 tw-px-2;
230
223
 
231
- .vc-app-menu-item {
232
- @apply tw-flex tw-items-center tw-w-full tw-h-[var(--app-menu-item-height)]
233
- tw-border-none
234
- tw-flex-nowrap tw-box-border tw-cursor-pointer tw-relative tw-uppercase tw-select-none tw-py-[4px] tw-px-[8px];
224
+ &_collapsed {
225
+ @apply tw-w-10;
226
+ }
235
227
 
236
- &_collapsed {
237
- @apply tw-w-[40px];
238
- }
228
+ &_active {
229
+ @apply tw-bg-[color:var(--app-menu-item-background-color-active)]
230
+ tw-rounded-[var(--app-menu-item-hover-radius)]
231
+ before:tw-opacity-100;
239
232
 
240
- &_active {
241
- @apply tw-bg-[color:var(--app-menu-item-background-color-active)]
242
- tw-rounded-[var(--app-menu-item-hover-radius)]
243
- before:tw-opacity-100;
244
- }
233
+ .vc-app-menu-link__icon {
234
+ @apply tw-text-[color:var(--app-menu-item-icon-color-active)];
235
+ }
245
236
 
246
- &_child-opened {
247
- .vc-app-menu-item__title {
248
- @apply tw-font-bold tw-text-[color:var(--app-menu-item-active-text)] #{!important};
249
- }
237
+ .vc-app-menu-link__title {
238
+ @apply tw-font-bold tw-text-[color:var(--app-menu-item-title-color-active)] #{!important};
239
+ }
250
240
 
251
- .vc-app-menu-item__icon {
252
- @apply tw-text-[color:var(--app-menu-item-active-icon)] #{!important};
241
+ .vc-app-menu-link__title-icon {
242
+ @apply tw-text-[color:var(--app-menu-item-icon-color-active)];
243
+ }
253
244
  }
254
- }
255
245
 
256
- &__handler {
257
- @apply tw-w-[var(--app-menu-item-handler-width)]
258
- tw-text-[color:var(--app-menu-item-handler-color)]
259
- tw-text-center tw-invisible tw-shrink-0;
246
+ &_child-opened {
247
+ .vc-app-menu-link__title {
248
+ @apply tw-font-bold tw-text-[color:var(--app-menu-item-active-text)] #{!important};
249
+ }
260
250
 
261
- &_enabled {
262
- @apply tw-cursor-move #{!important};
251
+ .vc-app-menu-link__icon {
252
+ @apply tw-text-[color:var(--app-menu-item-active-icon)] #{!important};
253
+ }
263
254
  }
264
255
  }
265
256
 
266
257
  &__icon {
267
258
  @apply tw-text-[color:var(--app-menu-item-icon-color)]
268
259
  tw-overflow-hidden tw-flex
269
- tw-justify-center tw-shrink-0 tw-transition-[color] tw-duration-200;
270
- }
271
-
272
- &_active &__icon {
273
- @apply tw-text-[color:var(--app-menu-item-icon-color-active)];
260
+ tw-justify-center tw-shrink-0 tw-transition-[color] tw-duration-200 tw-w-[var(--app-menu-item-icon-width)];
274
261
  }
275
262
 
276
263
  &__title {
277
- @apply tw-truncate
278
- tw-text-lg
264
+ @apply tw-capitalize tw-text-[color:var(--app-menu-item-title-color)] tw-truncate
265
+ tw-text-sm
279
266
  tw-font-medium
280
- tw-pl-[7px]
281
- tw-text-[color:var(--app-menu-item-title-color)]
267
+ tw-pl-2
282
268
  [transition:color_0.2s_ease]
283
269
  tw-opacity-100 tw-w-full tw-flex tw-justify-between tw-items-center;
284
270
  }
285
271
 
286
- &__title-icon {
287
- @apply tw-text-[color:var(--app-menu-item-icon-color)] tw-ml-3;
272
+ &__title-truncate {
273
+ @apply tw-truncate;
288
274
  }
289
275
 
290
- &_active &__title {
291
- @apply tw-text-[color:var(--app-menu-item-title-color-active)]
292
- tw-font-bold;
276
+ &__title-icon {
277
+ @apply tw-ml-3 tw-text-[color:var(--app-menu-item-icon-color)];
293
278
  }
294
279
 
295
- &_active &__title-icon {
296
- @apply tw-text-[color:var(--app-menu-item-icon-color-active)];
280
+ &__icon-content {
281
+ @apply tw-text-center;
297
282
  }
298
283
 
299
284
  &__child {
300
- @apply tw-gap-[4px] tw-mt-[4px] tw-flex tw-flex-col;
285
+ @apply tw-gap-1 tw-mt-1 tw-flex tw-flex-col;
301
286
  }
302
287
 
303
288
  &__child-item {
304
- @apply tw-cursor-pointer tw-w-fit tw-py-[4px] tw-px-[8px] tw-rounded-[4px]
305
- hover:tw-bg-[color:var(--app-menu-item-background-color-hover)]
289
+ @apply tw-cursor-pointer tw-min-w-0 tw-flex tw-h-[var(--app-menu-item-height)]
290
+ tw-items-center tw-transition-[padding] tw-duration-150 tw-w-fit tw-py-1 tw-px-2 tw-rounded-[4px]
291
+ tw-text-[color:var(--app-menu-item-title-color)] tw-text-xs
292
+ hover:tw-bg-[var(--app-menu-item-background-color-hover)]
306
293
  hover:tw-text-[color:var(--app-menu-item-title-color-active)];
307
294
 
295
+ &_expanded {
296
+ @apply tw-pl-5 tw-w-full #{!important};
297
+ }
298
+
299
+ &_collapsed {
300
+ @apply tw-w-10;
301
+ }
302
+
308
303
  &_active {
309
- @apply tw-bg-[color:var(--app-menu-item-background-color-active)]
304
+ @apply tw-rounded-[var(--app-menu-item-hover-radius)]
305
+ tw-bg-[color:var(--app-menu-item-background-color-active)]
310
306
  tw-text-[color:var(--app-menu-item-title-color-active)] tw-font-bold
311
307
  hover:tw-bg-[color:var(--app-menu-item-background-color-active)]
312
308
  hover:tw-text-[color:var(--app-menu-item-title-color-active)];
313
309
 
314
- .vc-app-menu-item__icon {
310
+ .vc-app-menu-link__icon {
315
311
  @apply tw-text-[color:var(--app-menu-item-icon-color-active)];
316
312
  }
317
313
  }
318
-
319
- &_collapsed {
320
- @apply tw-w-[40px];
321
- }
322
314
  }
323
315
 
324
- &:hover:not(.vc-app-menu-item_active) {
325
- @apply tw-bg-[color:var(--app-menu-item-background-color-hover)] tw-bg-opacity-50
326
- tw-rounded-[var(--app-menu-item-hover-radius)];
316
+ &__child-item-title {
317
+ @apply tw-truncate tw-pl-2;
327
318
  }
328
319
 
329
- &:hover &__title {
330
- @apply tw-text-[color:var(--app-menu-item-title-color-active)];
320
+ &__child-item-link {
321
+ @apply tw-cursor-pointer tw-z-[2] tw-px-5;
331
322
  }
332
323
 
333
- &:hover &__icon {
334
- @apply tw-text-[color:var(--app-menu-item-icon-color-active)];
335
- }
324
+ &__child-item-link:hover .vc-app-menu-link__child-item:not(.vc-app-menu-link__child-item_active) {
325
+ @apply tw-bg-[var(--app-menu-item-background-color-hover)] tw-bg-opacity-50
326
+ tw-rounded-[var(--app-menu-item-hover-radius)];
336
327
 
337
- &:hover &__title-icon {
338
- @apply tw-text-[color:var(--app-menu-item-icon-color-active)];
328
+ .vc-app-menu-link__icon {
329
+ @apply tw-text-[color:var(--app-menu-item-icon-color-active)];
330
+ }
339
331
  }
340
332
 
341
- &:hover &__handler {
342
- &_enabled {
343
- @apply tw-visible #{!important};
344
- }
333
+ &__icon-collapsed {
334
+ @apply tw-p-0;
345
335
  }
346
336
  }
347
337
  </style>