@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,19 +1,15 @@
1
1
  <template>
2
- <div>
3
- <!-- Money cell -->
2
+ <div class="vc-table-cell">
3
+ <!-- Money Cell -->
4
4
  <template v-if="cell.type === 'money'">
5
5
  <template v-if="!isEditable && (typeof value === 'undefined' || Number(value) === 0)">
6
- <div
7
- class="tw-truncate"
8
- :class="cell.class"
9
- >
6
+ <div class="vc-table-cell__not-set">
10
7
  {{ $t("COMPONENTS.ORGANISMS.VC_TABLE.NOT_SET") }}
11
8
  </div>
12
9
  </template>
13
10
  <div
14
11
  v-else-if="typeof Number(value) === 'number'"
15
- class="tw-truncate"
16
- :class="cell.class"
12
+ :class="['vc-table-cell__money', cell.class]"
17
13
  >
18
14
  <template v-if="isEditable">
19
15
  <Field
@@ -30,7 +26,7 @@
30
26
  :options="[]"
31
27
  :option="(item[cell.currencyField || 'currency'] as string) || 'USD'"
32
28
  currency-display="symbol"
33
- class="tw-w-full"
29
+ class="vc-table-cell__input-currency"
34
30
  :error="errors.length > 0"
35
31
  :error-message="$isMobile.value ? errorMessage : undefined"
36
32
  @update:model-value="$emit('update', { field: cell.id, value: $event })"
@@ -40,75 +36,75 @@
40
36
  v-if="$isDesktop.value && errors.length > 0"
41
37
  #append-inner
42
38
  >
43
- <VcIcon icon="fas fa-exclamation-circle tw-text-[color:var(--error-color)]"></VcIcon>
39
+ <VcIcon
40
+ icon="fas fa-exclamation-circle"
41
+ class="vc-table-cell__error-icon"
42
+ ></VcIcon>
44
43
  </template>
45
44
  </VcInputCurrency>
46
45
  </template>
47
- <template
48
- v-if="errors.length > 0"
49
- #tooltip
50
- >
51
- <div class="tw-text-[color:var(--error-color)]">{{ errorMessage }}</div>
46
+ <template #tooltip>
47
+ <div class="vc-table-cell__error-tooltip">
48
+ {{ errorMessage }}
49
+ </div>
52
50
  </template>
53
51
  </VcTooltip>
54
52
  </Field>
55
53
  </template>
56
54
  <template v-else>
57
- <span class="tw-truncate">{{ intlMoney(Number(value)) }}</span>
55
+ <span class="vc-table-cell__money-display">{{ intlMoney(Number(value)) }}</span>
58
56
  </template>
59
57
  </div>
60
58
  </template>
61
59
 
62
- <!-- Date ago cell -->
60
+ <!-- Date Ago Cell -->
63
61
  <span
64
62
  v-else-if="cell.type === 'date-ago'"
65
- class="tw-text-[#a5a5a5]"
66
- :class="cell.class"
63
+ :class="['vc-table-cell__date-ago', cell.class]"
67
64
  :title="(value instanceof Date && value.toLocaleString(locale)) || ''"
68
65
  >
69
66
  <div
70
67
  v-if="value"
71
- class="tw-truncate"
68
+ class="vc-table-cell__date-ago-content"
72
69
  >
73
70
  {{ moment(value).fromNow() }}
74
71
  </div>
75
72
  <div
76
73
  v-else
77
- class="tw-truncate"
74
+ class="vc-table-cell__not-set"
78
75
  >
79
76
  {{ $t("COMPONENTS.ORGANISMS.VC_TABLE.NOT_SET") }}
80
77
  </div>
81
78
  </span>
82
79
 
83
- <!-- Date exact cell -->
80
+ <!-- Exact Date/Time Cell -->
84
81
  <div
85
82
  v-else-if="cell.type === 'date' || cell.type === 'time' || cell.type === 'date-time'"
86
- class="tw-text-[#a5a5a5] tw-truncate"
87
- :class="cell.class"
83
+ :class="['vc-table-cell__date', cell.class]"
88
84
  >
89
85
  <template v-if="value">
90
86
  <div
91
87
  v-if="cell.format"
92
- class="tw-truncate"
88
+ class="vc-table-cell__date-content"
93
89
  >
94
90
  {{ moment(value).locale(locale).format(cell.format) }}
95
91
  </div>
96
92
  <template v-else>
97
93
  <div
98
94
  v-if="cell.type === 'date'"
99
- class="tw-truncate"
95
+ class="vc-table-cell__date-content"
100
96
  >
101
97
  {{ value instanceof Date && value.toLocaleDateString(locale) }}
102
98
  </div>
103
99
  <div
104
100
  v-if="cell.type === 'time'"
105
- class="tw-truncate"
101
+ class="vc-table-cell__date-content"
106
102
  >
107
103
  {{ value instanceof Date && value.toLocaleTimeString(locale) }}
108
104
  </div>
109
105
  <p
110
106
  v-if="cell.type === 'date-time'"
111
- class="tw-truncate"
107
+ class="vc-table-cell__date-content"
112
108
  >
113
109
  {{ value instanceof Date && value.toLocaleString(locale) }}
114
110
  </p>
@@ -116,15 +112,16 @@
116
112
  </template>
117
113
  <div
118
114
  v-else
119
- class="tw-truncate"
115
+ class="vc-table-cell__not-set"
120
116
  >
121
117
  {{ $t("COMPONENTS.ORGANISMS.VC_TABLE.NOT_SET") }}
122
118
  </div>
123
119
  </div>
124
120
 
125
- <!-- Image cell -->
121
+ <!-- Image Cell -->
126
122
  <template v-else-if="cell.type === 'image'">
127
123
  <VcImage
124
+ class="vc-table-cell__image"
128
125
  :bordered="true"
129
126
  size="s"
130
127
  aspect="1x1"
@@ -134,15 +131,15 @@
134
131
  />
135
132
  </template>
136
133
 
137
- <!-- Status cell -->
134
+ <!-- Status Cell -->
138
135
  <template v-else-if="cell.type === 'status'">
139
- <VcStatus>{{ value }}</VcStatus>
136
+ <VcStatus class="vc-table-cell__status">{{ value }}</VcStatus>
140
137
  </template>
141
138
 
142
- <!-- Status icon cell -->
139
+ <!-- Status Icon Cell -->
143
140
  <div
144
141
  v-else-if="cell.type === 'status-icon'"
145
- class="tw-flex tw-justify-center"
142
+ class="vc-table-cell__status-icon"
146
143
  :class="cell.class"
147
144
  >
148
145
  <VcStatusIcon
@@ -151,11 +148,10 @@
151
148
  ></VcStatusIcon>
152
149
  </div>
153
150
 
154
- <!-- Number cell -->
151
+ <!-- Number Cell -->
155
152
  <div
156
153
  v-else-if="cell.type === 'number'"
157
- class="tw-truncate"
158
- :class="cell.class"
154
+ :class="['vc-table-cell__number', cell.class]"
159
155
  >
160
156
  <template v-if="isEditable">
161
157
  <Field
@@ -169,7 +165,7 @@
169
165
  <template #default>
170
166
  <VcInput
171
167
  :model-value="value"
172
- class="tw-w-full"
168
+ class="vc-table-cell__input-number"
173
169
  type="number"
174
170
  :error="errors.length > 0"
175
171
  :error-message="$isMobile.value ? errorMessage : undefined"
@@ -180,15 +176,17 @@
180
176
  v-if="$isDesktop.value && errors.length > 0"
181
177
  #append-inner
182
178
  >
183
- <VcIcon icon="fas fa-exclamation-circle tw-text-[color:var(--error-color)]"></VcIcon>
179
+ <VcIcon
180
+ icon="fas fa-exclamation-circle"
181
+ class="vc-table-cell__error-icon"
182
+ ></VcIcon>
184
183
  </template>
185
184
  </VcInput>
186
185
  </template>
187
- <template
188
- v-if="errors.length > 0"
189
- #tooltip
190
- >
191
- <div class="tw-text-[color:var(--error-color)]">{{ errorMessage }}</div>
186
+ <template #tooltip>
187
+ <div class="vc-table-cell__error-tooltip">
188
+ {{ errorMessage }}
189
+ </div>
192
190
  </template>
193
191
  </VcTooltip>
194
192
  </Field>
@@ -202,29 +200,28 @@
202
200
  </template>
203
201
  </div>
204
202
 
205
- <!-- Link cell -->
203
+ <!-- Link Cell -->
206
204
  <template v-else-if="cell.type === 'link'">
207
205
  <VcLink
208
- class="tw-truncate"
206
+ class="vc-table-cell__link"
209
207
  :class="cell.class"
210
208
  >{{ value }}</VcLink
211
209
  >
212
210
  </template>
213
211
 
214
- <!-- HTML cell -->
212
+ <!-- HTML Cell -->
215
213
  <template v-else-if="cell.type === 'html'">
216
214
  <div
217
- class="tw-p-1"
215
+ class="vc-table-cell__html"
218
216
  :class="cell.class"
219
217
  v-html="truncatedHtml"
220
218
  />
221
219
  </template>
222
220
 
223
- <!-- Default cell -->
221
+ <!-- Default Cell -->
224
222
  <div
225
223
  v-else
226
- class="tw-truncate"
227
- :class="cell.class"
224
+ :class="['vc-table-cell__default', cell.class]"
228
225
  >
229
226
  <template v-if="isEditable">
230
227
  <Field
@@ -238,7 +235,7 @@
238
235
  <template #default>
239
236
  <VcInput
240
237
  :model-value="value"
241
- class="tw-w-full"
238
+ class="vc-table-cell__input-default"
242
239
  :error="errors.length > 0"
243
240
  :error-message="$isMobile.value ? errorMessage : undefined"
244
241
  @update:model-value="$emit('update', { field: cell.id, value: $event })"
@@ -248,14 +245,17 @@
248
245
  v-if="$isDesktop.value && errors.length > 0"
249
246
  #append-inner
250
247
  >
251
- <VcIcon icon="fas fa-exclamation-circle tw-text-[color:var(--error-color)]"></VcIcon> </template
252
- ></VcInput>
248
+ <VcIcon
249
+ icon="fas fa-exclamation-circle"
250
+ class="vc-table-cell__error-icon"
251
+ ></VcIcon>
252
+ </template>
253
+ </VcInput>
253
254
  </template>
254
- <template
255
- v-if="errors.length > 0"
256
- #tooltip
257
- >
258
- <div class="tw-text-[color:var(--error-color)]">{{ errorMessage }}</div>
255
+ <template #tooltip>
256
+ <div class="vc-table-cell__error-tooltip">
257
+ {{ errorMessage }}
258
+ </div>
259
259
  </template>
260
260
  </VcTooltip>
261
261
  </Field>
@@ -334,6 +334,76 @@ function onBlur(args: { row: number | undefined; field: string; errors?: string[
334
334
 
335
335
  <style lang="scss">
336
336
  :root {
337
- --error-color: #f14e4e;
337
+ --table-cell-error-color: var(--base-error-color, var(--danger-500));
338
+ --table-cell-text-color: var(--neutrals-400);
339
+ --table-cell-text-base-color: var(--base-text-color, var(--additional-950));
340
+ }
341
+
342
+ .vc-table-cell {
343
+ @apply tw-text-sm tw-text-[color:var(--table-cell-text-base-color)];
344
+
345
+ &__not-set {
346
+ @apply tw-truncate;
347
+ }
348
+
349
+ &__money {
350
+ @apply tw-truncate;
351
+ }
352
+
353
+ &__input-currency {
354
+ @apply tw-w-full;
355
+ }
356
+
357
+ &__error-icon {
358
+ @apply tw-text-[color:var(--table-cell-error-color)];
359
+ }
360
+
361
+ &__error-tooltip {
362
+ @apply tw-text-[color:var(--table-cell-error-color)];
363
+ }
364
+
365
+ &__date-ago {
366
+ @apply tw-text-[color:var(--table-cell-text-color)];
367
+ }
368
+
369
+ &__date-ago-content {
370
+ @apply tw-truncate;
371
+ }
372
+
373
+ &__date {
374
+ @apply tw-truncate tw-text-[color:var(--table-cell-text-color)];
375
+ }
376
+
377
+ &__date-content {
378
+ @apply tw-truncate;
379
+ }
380
+
381
+ &__status-icon {
382
+ @apply tw-flex tw-justify-center;
383
+ }
384
+
385
+ &__number {
386
+ @apply tw-truncate;
387
+ }
388
+
389
+ &__input-number {
390
+ @apply tw-w-full;
391
+ }
392
+
393
+ &__link {
394
+ @apply tw-truncate;
395
+ }
396
+
397
+ &__html {
398
+ @apply tw-p-1 tw-truncate;
399
+ }
400
+
401
+ &__default {
402
+ @apply tw-truncate;
403
+ }
404
+
405
+ &__input-default {
406
+ @apply tw-w-full;
407
+ }
338
408
  }
339
409
  </style>
@@ -1,9 +1,13 @@
1
1
  <template>
2
- <div class="tw-relative tw-w-min tw-float-right tw-mr-4">
3
- <div ref="referenceButton">
2
+ <div class="vc-table-column-switcher">
3
+ <div
4
+ ref="referenceButton"
5
+ class="vc-table-column-switcher__button-container"
6
+ >
4
7
  <VcButton
5
8
  small
6
9
  icon="fas fa-th"
10
+ class="vc-table-column-switcher__toggle-button"
7
11
  @click.stop="isActive = !isActive"
8
12
  ></VcButton>
9
13
  </div>
@@ -13,25 +17,26 @@
13
17
  ref="floatingDrop"
14
18
  v-on-click-outside="[close, { ignore: [referenceButton] }]"
15
19
  :style="floatingDropStyle"
16
- class="tw-flex tw-flex-col tw-box-border tw-max-h-[300px] tw-h-auto tw-z-10 tw-overflow-hidden tw-absolute tw-bg-white tw-border tw-border-solid tw-border-[#e5e7eb] tw-w-max tw-right-0"
20
+ class="vc-table-column-switcher__dropdown"
17
21
  >
18
22
  <VcContainer
19
23
  v-if="internalItems && internalItems.length"
20
24
  :no-padding="true"
25
+ class="vc-table-column-switcher__container"
21
26
  >
22
- <div class="tw-w-full tw-h-full tw-box-border tw-flex tw-flex-col">
27
+ <div class="vc-table-column-switcher__list">
23
28
  <div
24
29
  v-for="item in internalItems"
25
30
  :key="item.id"
26
- class="tw-flex tw-items-center tw-min-h-[30px] tw-box-border tw-rounded-[3px] tw-px-2 tw-cursor-pointer hover:tw-bg-[#eff7fc] tw-border-b"
31
+ class="vc-table-column-switcher__item"
27
32
  @click="selectItem(item)"
28
33
  >
29
34
  <VcIcon
30
35
  :icon="item.visible ? 'fas fa-check' : ''"
31
36
  size="s"
32
- class="tw-w-4"
37
+ class="vc-table-column-switcher__item-icon"
33
38
  />
34
- <p class="tw-ml-2">
39
+ <p class="vc-table-column-switcher__item-title">
35
40
  {{
36
41
  $te(`COMPONENTS.ORGANISMS.VC_TABLE.${stateKey}.${item.id}`)
37
42
  ? $t(`COMPONENTS.ORGANISMS.VC_TABLE.${stateKey}.${item.id}`)
@@ -117,3 +122,46 @@ function close() {
117
122
  }
118
123
  }
119
124
  </script>
125
+
126
+ <style lang="scss">
127
+ :root {
128
+ --table-column-switcher-dropdown-bg: var(--additional-50);
129
+ --table-column-switcher-dropdown-border: var(--base-border-color, var(--neutrals-200));
130
+ --table-column-switcher-dropdown-item-hover: var(--primary-50);
131
+ --table-column-switcher-text-color: var(--base-text-color, var(--neutrals-950));
132
+ }
133
+
134
+ .vc-table-column-switcher {
135
+ @apply tw-relative tw-w-min tw-float-right tw-mr-4;
136
+
137
+ &__dropdown {
138
+ @apply tw-flex tw-flex-col tw-box-border tw-z-10 tw-overflow-hidden tw-absolute tw-border tw-border-solid tw-w-max tw-right-0;
139
+ @apply tw-max-h-[300px] tw-h-auto;
140
+ background-color: var(--table-column-switcher-dropdown-bg);
141
+ border-color: var(--table-column-switcher-dropdown-border);
142
+ }
143
+
144
+ &__container {
145
+ @apply tw-w-full tw-h-full tw-box-border tw-flex tw-flex-col;
146
+ }
147
+
148
+ &__item {
149
+ @apply tw-flex tw-text-sm tw-items-center tw-box-border tw-cursor-pointer tw-border-b;
150
+ @apply tw-min-h-[30px] tw-px-2 tw-rounded-[3px];
151
+ @apply tw-bg-[--table-column-switcher-dropdown-bg];
152
+ &:hover {
153
+ @apply tw-bg-[--table-column-switcher-dropdown-item-hover];
154
+ }
155
+ border-color: var(--table-column-switcher-dropdown-border);
156
+ color: var(--table-column-switcher-text-color);
157
+ }
158
+
159
+ &__item-icon {
160
+ @apply tw-w-4;
161
+ }
162
+
163
+ &__item-title {
164
+ @apply tw-ml-2;
165
+ }
166
+ }
167
+ </style>
@@ -1,7 +1,7 @@
1
1
  <template>
2
- <div class="tw-font-medium tw-text-base">
3
- <span class="tw-text-[color:var(--table-counter-label-color)]">{{ label }}&nbsp;</span>
4
- <span class="tw-text-[color:var(--table-counter-value-color)]">{{ value }}</span>
2
+ <div class="vc-table-counter">
3
+ <span class="vc-table-counter__label">{{ label }}&nbsp;</span>
4
+ <span class="vc-table-counter__value">{{ value }}</span>
5
5
  </div>
6
6
  </template>
7
7
 
@@ -19,7 +19,19 @@ withDefaults(defineProps<Props>(), {
19
19
 
20
20
  <style lang="scss">
21
21
  :root {
22
- --table-counter-label-color: #465769;
23
- --table-counter-value-color: #43b0e6;
22
+ --table-counter-label-color: var(--base-text-color, var(--secondary-950));
23
+ --table-counter-value-color: var(--info-500);
24
+ }
25
+
26
+ .vc-table-counter {
27
+ @apply tw-font-medium tw-text-sm;
28
+
29
+ &__label {
30
+ @apply tw-text-[color:var(--table-counter-label-color)];
31
+ }
32
+
33
+ &__value {
34
+ @apply tw-text-[color:var(--table-counter-value-color)];
35
+ }
24
36
  }
25
37
  </style>
@@ -2,19 +2,22 @@
2
2
  <!-- Empty table view -->
3
3
  <template v-if="!(items && items.length && !columnsInit)">
4
4
  <slot
5
- v-if="searchValue || searchValue === '' || activeFilterCount"
5
+ v-if="searchValue !== undefined || activeFilterCount"
6
6
  name="notfound"
7
7
  >
8
- <div class="tw-w-full tw-h-full tw-box-border tw-flex tw-flex-col tw-items-center tw-justify-center">
8
+ <div class="vc-table-empty">
9
9
  <img
10
10
  v-if="notfound?.image"
11
11
  :src="notfound.image"
12
+ alt="Not Found"
13
+ class="vc-table-empty__image"
12
14
  />
13
- <div class="tw-m-4 vc-table__empty-text">
15
+ <div class="vc-table-empty__text">
14
16
  {{ notfound?.text || $t("COMPONENTS.ORGANISMS.VC_TABLE.NOT_FOUND") }}
15
17
  </div>
16
18
  <VcButton
17
19
  v-if="notfound?.action"
20
+ class="vc-table-empty__button"
18
21
  @click="notfound?.clickHandler"
19
22
  >
20
23
  {{ notfound.action }}
@@ -25,16 +28,19 @@
25
28
  v-else
26
29
  name="empty"
27
30
  >
28
- <div class="tw-w-full tw-h-full tw-box-border tw-flex tw-flex-col tw-items-center tw-justify-center">
31
+ <div class="vc-table-empty vc-table-empty--default">
29
32
  <img
30
33
  v-if="empty?.image"
31
34
  :src="empty.image"
35
+ alt="Empty Table"
36
+ class="vc-table-empty__image"
32
37
  />
33
- <div class="tw-m-4 tw-text-xl tw-font-medium">
38
+ <div class="vc-table-empty__text">
34
39
  {{ empty?.text || $t("COMPONENTS.ORGANISMS.VC_TABLE.EMPTY") }}
35
40
  </div>
36
41
  <VcButton
37
42
  v-if="empty?.action"
43
+ class="vc-table-empty__button"
38
44
  @click="empty?.clickHandler"
39
45
  >
40
46
  {{ empty.action }}
@@ -43,6 +49,7 @@
43
49
  </slot>
44
50
  </template>
45
51
  </template>
52
+
46
53
  <!-- eslint-disable @typescript-eslint/no-explicit-any -->
47
54
  <script lang="ts" setup>
48
55
  import { Ref } from "vue";
@@ -73,4 +80,29 @@ defineSlots<{
73
80
  }>();
74
81
  </script>
75
82
 
76
- <style lang="scss" scoped></style>
83
+ <style lang="scss">
84
+ .vc-table-empty {
85
+ @apply tw-w-full tw-h-full tw-box-border tw-flex tw-flex-col tw-items-center tw-justify-center;
86
+
87
+ &__image {
88
+ @apply tw-w-auto tw-h-auto;
89
+ }
90
+
91
+ /* Элемент: Text */
92
+ &__text {
93
+ @apply tw-m-4;
94
+ @apply tw-text-center;
95
+ @apply tw-text-xl tw-font-medium;
96
+ }
97
+
98
+ &__button {
99
+ @apply tw-px-4 tw-py-2 tw-rounded tw-font-medium tw-text-sm tw-cursor-pointer;
100
+ @apply tw-bg-blue-500 tw-text-white;
101
+ transition: background-color 0.3s ease;
102
+
103
+ &:hover {
104
+ @apply tw-bg-blue-600;
105
+ }
106
+ }
107
+ }
108
+ </style>