@vc-shell/create-vc-app 1.0.127 → 1.0.129

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 (27) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/index.js +134 -169
  3. package/dist/templates/base/_env +1 -3
  4. package/dist/templates/base/package.json +28 -27
  5. package/dist/templates/base/src/pages/App.vue +116 -0
  6. package/dist/templates/base/src/router/index.ts +5 -113
  7. package/dist/templates/base/src/router/routes.ts +67 -0
  8. package/dist/templates/base/tailwind.config.ts +7 -0
  9. package/dist/templates/base/{vite.config.ts → vite.config.mts} +7 -7
  10. package/dist/templates/variants/both/src/main.ts +7 -6
  11. package/dist/templates/variants/both/src/modules/classic-module/pages/details.vue +1 -0
  12. package/dist/templates/variants/both/src/modules/classic-module/pages/list.vue +7 -0
  13. package/dist/templates/variants/both/src/modules/dynamic-module/composables/useList/index.ts +2 -2
  14. package/dist/templates/variants/both/src/modules/dynamic-module/pages/list.ts +5 -0
  15. package/dist/templates/variants/classic/src/main.ts +7 -6
  16. package/dist/templates/variants/classic/src/modules/classic-module/pages/list.vue +7 -0
  17. package/dist/templates/variants/dynamic/src/main.ts +7 -6
  18. package/dist/templates/variants/dynamic/src/modules/dynamic-module/composables/useList/index.ts +2 -2
  19. package/dist/templates/variants/dynamic/src/modules/dynamic-module/pages/list.ts +5 -0
  20. package/package.json +7 -5
  21. package/dist/index.js.map +0 -1
  22. package/dist/templates/base/tailwind.config.js +0 -7
  23. package/dist/templates/variants/both/src/pages/App.vue +0 -369
  24. package/dist/templates/variants/classic/src/pages/App.vue +0 -362
  25. package/dist/templates/variants/dynamic/src/pages/App.vue +0 -362
  26. package/dist/tsconfig.tsbuildinfo +0 -1
  27. /package/dist/templates/base/{postcss.config.js → postcss.config.cjs} +0 -0
@@ -1,369 +0,0 @@
1
- <template>
2
- <VcLoading
3
- v-if="!isReady"
4
- active
5
- class="app__loader"
6
- />
7
- <VcApp
8
- v-else
9
- :menu-items="menuItems"
10
- :mobile-menu-items="mobileMenuItems"
11
- :toolbar-items="toolbarItems"
12
- :is-ready="isReady"
13
- :is-authorized="isAuthorized"
14
- :logo="uiSettings.logo"
15
- :title="uiSettings.title"
16
- :version="version"
17
- :pages="pages"
18
- :blades-refs="bladesRefs"
19
- @backlink:click="closeBlade($event)"
20
- @close="closeBlade($event)"
21
- @logo:click="openDashboard"
22
- >
23
- <!-- App Switcher -->
24
- <template
25
- v-if="appsList && appsList.length"
26
- #appSwitcher
27
- >
28
- <VcAppSwitcher
29
- :apps-list="appsList"
30
- @on-click="switchApp($event)"
31
- />
32
- </template>
33
-
34
- <template
35
- v-if="isAuthorized"
36
- #bladeNavigation
37
- >
38
- <VcBladeNavigation
39
- ref="bladeNavigationRefs"
40
- :blades="blades"
41
- :workspace-options="workspaceOptions"
42
- :workspace-param="workspaceParam"
43
- @on-close="closeBlade($event)"
44
- @on-parent-call="(e) => onParentCall(e.id, e.args)"
45
- @vue:mounted="resolveLastBlade(pages)"
46
- ></VcBladeNavigation>
47
- </template>
48
-
49
- <template #modals>
50
- <VcPopupContainer />
51
- </template>
52
- </VcApp>
53
- </template>
54
-
55
- <script lang="ts" setup>
56
- import {
57
- useAppSwitcher,
58
- useNotifications,
59
- useSettings,
60
- useUser,
61
- useBladeNavigation,
62
- VcNotificationDropdown,
63
- usePopup,
64
- useMenuComposer,
65
- ChangePassword,
66
- LanguageSelector,
67
- UserDropdownButton,
68
- BladeInstanceConstructor,
69
- } from "@vc-shell/framework";
70
- import { computed, inject, onMounted, reactive, ref, Ref, markRaw, watch, defineComponent, provide } from "vue";
71
- import { useRoute, useRouter } from "vue-router";
72
- // eslint-disable-next-line import/no-unresolved
73
- import avatarImage from "/assets/avatar.jpg";
74
- // eslint-disable-next-line import/no-unresolved
75
- import logoImage from "/assets/logo.svg";
76
- import { useI18n } from "vue-i18n";
77
- import { List } from "./../modules/classic-module";
78
-
79
- const { open } = usePopup({
80
- component: ChangePassword,
81
- });
82
-
83
- const { t, locale: currentLocale, availableLocales, getLocaleMessage } = useI18n({ useScope: "global" });
84
- const { user, signOut } = useUser();
85
- const { getUiCustomizationSettings, uiSettings, applySettings } = useSettings();
86
- const {
87
- blades,
88
- bladesRefs,
89
- workspaceOptions,
90
- workspaceParam,
91
- closeBlade,
92
- onParentCall,
93
- resolveLastBlade,
94
- resolveBladeByName,
95
- } = useBladeNavigation();
96
- const { navigationMenuComposer, toolbarComposer } = useMenuComposer();
97
- const { appsList, switchApp, getApps } = useAppSwitcher();
98
-
99
- const { notifications, loadFromHistory, markAllAsRead } = useNotifications();
100
- const route = useRoute();
101
- const router = useRouter();
102
- const isAuthorized = ref(true);
103
- const isReady = ref(false);
104
- const pages = inject<BladeInstanceConstructor[]>("pages");
105
- const isDesktop = inject<Ref<boolean>>("isDesktop");
106
- const isMobile = inject<Ref<boolean>>("isMobile");
107
- const version = import.meta.env.PACKAGE_VERSION;
108
- const bladeNavigationRefs = ref();
109
- const internalRoutes = inject("bladeRoutes");
110
- provide("internalRoutes", internalRoutes);
111
-
112
- onMounted(async () => {
113
- try {
114
- await getApps();
115
- langInit();
116
- await customizationHandler();
117
- await loadFromHistory();
118
-
119
- isReady.value = true;
120
- } catch (e) {
121
- console.log(e);
122
- throw e;
123
- }
124
- });
125
-
126
- watch(
127
- () => bladeNavigationRefs.value?.bladesRefs,
128
- (newVal) => {
129
- bladesRefs.value = newVal;
130
- },
131
- { deep: true }
132
- );
133
-
134
- console.debug(`Initializing App`);
135
-
136
- const toolbarItems = computed(() =>
137
- toolbarComposer([
138
- {
139
- component: markRaw(LanguageSelector),
140
- options: {
141
- value: currentLocale.value as string,
142
- title: t("SHELL.TOOLBAR.LANGUAGE"),
143
- languageItems: availableLocales.map((locale: string) => ({
144
- lang: locale,
145
- title: (getLocaleMessage(locale) as { language_name: string }).language_name,
146
- clickHandler(lang: string) {
147
- currentLocale.value = lang;
148
- localStorage.setItem("VC_LANGUAGE_SETTINGS", lang);
149
- },
150
- })),
151
- },
152
- isVisible: isDesktop.value ? isDesktop.value : isMobile.value ? route.path === "/" : false,
153
- },
154
- {
155
- isAccent: notifications.value.some((item) => item.isNew),
156
- component: markRaw(VcNotificationDropdown),
157
- options: {
158
- title: t("SHELL.TOOLBAR.NOTIFICATIONS"),
159
- notifications: notifications.value,
160
- onOpen() {
161
- if (notifications.value.some((x) => x.isNew)) {
162
- markAllAsRead();
163
- }
164
- },
165
- },
166
- },
167
- {
168
- component: markRaw(UserDropdownButton),
169
- options: {
170
- avatar: avatarImage,
171
- name: user.value?.userName,
172
- role: user.value?.isAdministrator ? "Administrator" : "Seller account",
173
- menuItems: [
174
- {
175
- title: t("SHELL.ACCOUNT.CHANGE_PASSWORD"),
176
- clickHandler() {
177
- open();
178
- },
179
- },
180
- {
181
- title: t("SHELL.ACCOUNT.LOGOUT"),
182
- async clickHandler() {
183
- const isPrevented = await closeBlade(0);
184
- if (!isPrevented) {
185
- signOut();
186
- router.push({ name: "Login" });
187
- }
188
- },
189
- },
190
- ],
191
- },
192
- isVisible: isDesktop.value,
193
- },
194
- ])
195
- );
196
-
197
- const mobileMenuItems = computed(() =>
198
- toolbarComposer([
199
- {
200
- component: markRaw(UserDropdownButton),
201
- options: {
202
- avatar: avatarImage,
203
- name: user.value?.userName,
204
- role: user.value?.isAdministrator ? "Administrator" : "Seller account",
205
- },
206
- isVisible: isMobile.value,
207
- },
208
- ])
209
- );
210
-
211
- const menuItems = reactive(
212
- navigationMenuComposer([
213
- {
214
- title: computed(() => t("SHELL.MENU.DASHBOARD")),
215
- icon: "fas fa-home",
216
- isVisible: true,
217
- component: defineComponent({
218
- url: "/",
219
- }),
220
- clickHandler() {
221
- openDashboard();
222
- },
223
- },
224
- {
225
- title: computed(() => t("SHELL.ACCOUNT.CHANGE_PASSWORD")),
226
- icon: "fas fa-key",
227
- isVisible: isMobile.value,
228
- clickHandler() {
229
- open();
230
- },
231
- },
232
- {
233
- title: computed(() => t("MODULE.MENU.TITLE")),
234
- icon: "fas fa-file-alt",
235
- isVisible: true,
236
- component: markRaw(List),
237
- },
238
- {
239
- title: computed(() => t("DYNAMICMODULE.MENU.TITLE")),
240
- icon: "fas fa-file-alt",
241
- isVisible: true,
242
- component: resolveBladeByName("DynamicItems"),
243
- },
244
- {
245
- title: computed(() => t("SHELL.ACCOUNT.LOGOUT")),
246
- icon: "fas fa-sign-out-alt",
247
- isVisible: isMobile,
248
- async clickHandler() {
249
- const isPrevented = await closeBlade(0);
250
- if (!isPrevented) {
251
- signOut();
252
- router.push({ name: "Login" });
253
- }
254
- },
255
- },
256
- ])
257
- );
258
-
259
- function langInit() {
260
- const lang = localStorage.getItem("VC_LANGUAGE_SETTINGS");
261
-
262
- if (lang) {
263
- currentLocale.value = lang;
264
- } else {
265
- currentLocale.value = "en";
266
- }
267
- }
268
- const openDashboard = async () => {
269
- console.debug(`openDashboard() called.`);
270
-
271
- // Close all opened pages with onBeforeClose callback
272
- const isPrevented = await closeBlade(0);
273
-
274
- !isPrevented && router.push("/");
275
- };
276
-
277
- async function customizationHandler() {
278
- await getUiCustomizationSettings();
279
-
280
- if (!uiSettings.value?.logo) {
281
- applySettings({ logo: logoImage });
282
- }
283
- if (!uiSettings.value?.title) {
284
- applySettings({ title: undefined });
285
- }
286
- }
287
- </script>
288
-
289
- <style lang="scss">
290
- .vc-theme_light {
291
- --background-color: #f5f6f9;
292
- --top-bar-color: #161d25;
293
- --basic-black-color: #333333;
294
- --tooltips-color: #a5a5a5;
295
-
296
- --primary-color: #43b0e6;
297
- --primary-color-hover: #319ed4;
298
- --primary-color-disabled: #a9ddf6;
299
-
300
- --special-color: #f89406;
301
- --special-color-hover: #eb8b03;
302
- --special-color-disabled: #fed498;
303
-
304
- /* Layout variables */
305
- --app-bar-height: 60px;
306
- --app-bar-background-color: var(--top-bar-color);
307
- --app-bar-toolbar-icon-background-hover: #2e3d4e;
308
- --app-bar-toolbar-item-width: 50px;
309
- --app-bar-divider-color: #2e3d4e;
310
- --app-bar-toolbar-icon-color: #7e8e9d;
311
- --app-bar-account-info-role-color: #838d9a;
312
- }
313
-
314
- html,
315
- body,
316
- #app {
317
- @apply tw-font-roboto tw-h-full tw-w-full tw-m-0 tw-fixed tw-overflow-hidden tw-overscroll-y-none;
318
- }
319
-
320
- body {
321
- @apply tw-text-base;
322
- }
323
-
324
- h1,
325
- h2,
326
- h3,
327
- h4,
328
- h5,
329
- h6,
330
- button,
331
- input,
332
- select,
333
- textarea {
334
- @apply tw-font-roboto;
335
- }
336
- ::-webkit-input-placeholder {
337
- @apply tw-font-roboto;
338
- }
339
- :-moz-placeholder {
340
- @apply tw-font-roboto;
341
- }
342
- ::-moz-placeholder {
343
- @apply tw-font-roboto;
344
- }
345
- :-ms-input-placeholder {
346
- @apply tw-font-roboto;
347
- }
348
-
349
- .vc-app.vc-theme_light {
350
- --background-color: #f2f2f2;
351
- --top-bar-color: #ffffff;
352
- --app-background: linear-gradient(180deg, #e4f5fb 5.06%, #e8f3f2 100%), linear-gradient(0deg, #e8f2f3, #e8f2f3),
353
- #eef2f8;
354
- --app-bar-background-color: #ffffff;
355
- --app-bar-divider-color: #ffffff;
356
- --app-bar-toolbar-item-width: 50px;
357
- --app-bar-toolbar-icon-color: #7e8e9d;
358
- --app-bar-toolbar-icon-color-hover: #465769;
359
- --app-bar-toolbar-icon-background-hover: #ffffff;
360
- --app-bar-account-info-name-color: #161d25;
361
- --app-bar-account-info-role-color: #7e8e9d;
362
- }
363
-
364
- .app {
365
- &__loader {
366
- background: var(--app-background);
367
- }
368
- }
369
- </style>
@@ -1,362 +0,0 @@
1
- <template>
2
- <VcLoading
3
- v-if="!isReady"
4
- active
5
- class="app__loader"
6
- />
7
- <VcApp
8
- v-else
9
- :menu-items="menuItems"
10
- :mobile-menu-items="mobileMenuItems"
11
- :toolbar-items="toolbarItems"
12
- :is-ready="isReady"
13
- :is-authorized="isAuthorized"
14
- :logo="uiSettings.logo"
15
- :title="uiSettings.title"
16
- :version="version"
17
- :pages="pages"
18
- :blades-refs="bladesRefs"
19
- @backlink:click="closeBlade($event)"
20
- @close="closeBlade($event)"
21
- @logo:click="openDashboard"
22
- >
23
- <!-- App Switcher -->
24
- <template
25
- v-if="appsList && appsList.length"
26
- #appSwitcher
27
- >
28
- <VcAppSwitcher
29
- :apps-list="appsList"
30
- @on-click="switchApp($event)"
31
- />
32
- </template>
33
-
34
- <template
35
- v-if="isAuthorized"
36
- #bladeNavigation
37
- >
38
- <VcBladeNavigation
39
- ref="bladeNavigationRefs"
40
- :blades="blades"
41
- :workspace-options="workspaceOptions"
42
- :workspace-param="workspaceParam"
43
- @on-close="closeBlade($event)"
44
- @on-parent-call="(e) => onParentCall(e.id, e.args)"
45
- @vue:mounted="resolveLastBlade(pages)"
46
- ></VcBladeNavigation>
47
- </template>
48
-
49
- <template #modals>
50
- <VcPopupContainer />
51
- </template>
52
- </VcApp>
53
- </template>
54
-
55
- <script lang="ts" setup>
56
- import {
57
- useAppSwitcher,
58
- useNotifications,
59
- useSettings,
60
- useUser,
61
- useBladeNavigation,
62
- VcNotificationDropdown,
63
- usePopup,
64
- useMenuComposer,
65
- ChangePassword,
66
- LanguageSelector,
67
- UserDropdownButton,
68
- BladeInstanceConstructor,
69
- } from "@vc-shell/framework";
70
- import { computed, inject, onMounted, reactive, ref, Ref, markRaw, watch, defineComponent, provide } from "vue";
71
- import { useRoute, useRouter } from "vue-router";
72
- // eslint-disable-next-line import/no-unresolved
73
- import avatarImage from "/assets/avatar.jpg";
74
- // eslint-disable-next-line import/no-unresolved
75
- import logoImage from "/assets/logo.svg";
76
- import { useI18n } from "vue-i18n";
77
- import { List } from "./../modules/classic-module";
78
-
79
- const { open } = usePopup({
80
- component: ChangePassword,
81
- });
82
-
83
- const { t, locale: currentLocale, availableLocales, getLocaleMessage } = useI18n({ useScope: "global" });
84
- const { user, signOut } = useUser();
85
- const { getUiCustomizationSettings, uiSettings, applySettings } = useSettings();
86
- const {
87
- blades,
88
- bladesRefs,
89
- workspaceOptions,
90
- workspaceParam,
91
- closeBlade,
92
- onParentCall,
93
- resolveLastBlade,
94
- } = useBladeNavigation();
95
- const { navigationMenuComposer, toolbarComposer } = useMenuComposer();
96
- const { appsList, switchApp, getApps } = useAppSwitcher();
97
-
98
- const { notifications, loadFromHistory, markAllAsRead } = useNotifications();
99
- const route = useRoute();
100
- const router = useRouter();
101
- const isAuthorized = ref(true);
102
- const isReady = ref(false);
103
- const pages = inject<BladeInstanceConstructor[]>("pages");
104
- const isDesktop = inject<Ref<boolean>>("isDesktop");
105
- const isMobile = inject<Ref<boolean>>("isMobile");
106
- const version = import.meta.env.PACKAGE_VERSION;
107
- const bladeNavigationRefs = ref();
108
- const internalRoutes = inject("bladeRoutes");
109
- provide("internalRoutes", internalRoutes);
110
-
111
- onMounted(async () => {
112
- try {
113
- await getApps();
114
- langInit();
115
- await customizationHandler();
116
- await loadFromHistory();
117
-
118
- isReady.value = true;
119
- } catch (e) {
120
- console.log(e);
121
- throw e;
122
- }
123
- });
124
-
125
- watch(
126
- () => bladeNavigationRefs.value?.bladesRefs,
127
- (newVal) => {
128
- bladesRefs.value = newVal;
129
- },
130
- { deep: true }
131
- );
132
-
133
- console.debug(`Initializing App`);
134
-
135
- const toolbarItems = computed(() =>
136
- toolbarComposer([
137
- {
138
- component: markRaw(LanguageSelector),
139
- options: {
140
- value: currentLocale.value as string,
141
- title: t("SHELL.TOOLBAR.LANGUAGE"),
142
- languageItems: availableLocales.map((locale: string) => ({
143
- lang: locale,
144
- title: (getLocaleMessage(locale) as { language_name: string }).language_name,
145
- clickHandler(lang: string) {
146
- currentLocale.value = lang;
147
- localStorage.setItem("VC_LANGUAGE_SETTINGS", lang);
148
- },
149
- })),
150
- },
151
- isVisible: isDesktop.value ? isDesktop.value : isMobile.value ? route.path === "/" : false,
152
- },
153
- {
154
- isAccent: notifications.value.some((item) => item.isNew),
155
- component: markRaw(VcNotificationDropdown),
156
- options: {
157
- title: t("SHELL.TOOLBAR.NOTIFICATIONS"),
158
- notifications: notifications.value,
159
- onOpen() {
160
- if (notifications.value.some((x) => x.isNew)) {
161
- markAllAsRead();
162
- }
163
- },
164
- },
165
- },
166
- {
167
- component: markRaw(UserDropdownButton),
168
- options: {
169
- avatar: avatarImage,
170
- name: user.value?.userName,
171
- role: user.value?.isAdministrator ? "Administrator" : "Seller account",
172
- menuItems: [
173
- {
174
- title: t("SHELL.ACCOUNT.CHANGE_PASSWORD"),
175
- clickHandler() {
176
- open();
177
- },
178
- },
179
- {
180
- title: t("SHELL.ACCOUNT.LOGOUT"),
181
- async clickHandler() {
182
- const isPrevented = await closeBlade(0);
183
- if (!isPrevented) {
184
- signOut();
185
- router.push({ name: "Login" });
186
- }
187
- },
188
- },
189
- ],
190
- },
191
- isVisible: isDesktop.value,
192
- },
193
- ])
194
- );
195
-
196
- const mobileMenuItems = computed(() =>
197
- toolbarComposer([
198
- {
199
- component: markRaw(UserDropdownButton),
200
- options: {
201
- avatar: avatarImage,
202
- name: user.value?.userName,
203
- role: user.value?.isAdministrator ? "Administrator" : "Seller account",
204
- },
205
- isVisible: isMobile.value,
206
- },
207
- ])
208
- );
209
-
210
- const menuItems = reactive(
211
- navigationMenuComposer([
212
- {
213
- title: computed(() => t("SHELL.MENU.DASHBOARD")),
214
- icon: "fas fa-home",
215
- isVisible: true,
216
- component: defineComponent({
217
- url: "/",
218
- }),
219
- clickHandler() {
220
- openDashboard();
221
- },
222
- },
223
- {
224
- title: computed(() => t("SHELL.ACCOUNT.CHANGE_PASSWORD")),
225
- icon: "fas fa-key",
226
- isVisible: isMobile.value,
227
- clickHandler() {
228
- open();
229
- },
230
- },
231
- {
232
- title: computed(() => t("MODULE.MENU.TITLE")),
233
- icon: "fas fa-file-alt",
234
- isVisible: true,
235
- component: markRaw(List),
236
- },
237
- {
238
- title: computed(() => t("SHELL.ACCOUNT.LOGOUT")),
239
- icon: "fas fa-sign-out-alt",
240
- isVisible: isMobile,
241
- async clickHandler() {
242
- const isPrevented = await closeBlade(0);
243
- if (!isPrevented) {
244
- signOut();
245
- router.push({ name: "Login" });
246
- }
247
- },
248
- },
249
- ])
250
- );
251
-
252
- function langInit() {
253
- const lang = localStorage.getItem("VC_LANGUAGE_SETTINGS");
254
-
255
- if (lang) {
256
- currentLocale.value = lang;
257
- } else {
258
- currentLocale.value = "en";
259
- }
260
- }
261
- const openDashboard = async () => {
262
- console.debug(`openDashboard() called.`);
263
-
264
- // Close all opened pages with onBeforeClose callback
265
- const isPrevented = await closeBlade(0);
266
-
267
- !isPrevented && router.push("/");
268
- };
269
-
270
- async function customizationHandler() {
271
- await getUiCustomizationSettings();
272
-
273
- if (!uiSettings.value?.logo) {
274
- applySettings({ logo: logoImage });
275
- }
276
- if (!uiSettings.value?.title) {
277
- applySettings({ title: undefined });
278
- }
279
- }
280
- </script>
281
-
282
- <style lang="scss">
283
- .vc-theme_light {
284
- --background-color: #f5f6f9;
285
- --top-bar-color: #161d25;
286
- --basic-black-color: #333333;
287
- --tooltips-color: #a5a5a5;
288
-
289
- --primary-color: #43b0e6;
290
- --primary-color-hover: #319ed4;
291
- --primary-color-disabled: #a9ddf6;
292
-
293
- --special-color: #f89406;
294
- --special-color-hover: #eb8b03;
295
- --special-color-disabled: #fed498;
296
-
297
- /* Layout variables */
298
- --app-bar-height: 60px;
299
- --app-bar-background-color: var(--top-bar-color);
300
- --app-bar-toolbar-icon-background-hover: #2e3d4e;
301
- --app-bar-toolbar-item-width: 50px;
302
- --app-bar-divider-color: #2e3d4e;
303
- --app-bar-toolbar-icon-color: #7e8e9d;
304
- --app-bar-account-info-role-color: #838d9a;
305
- }
306
-
307
- html,
308
- body,
309
- #app {
310
- @apply tw-font-roboto tw-h-full tw-w-full tw-m-0 tw-fixed tw-overflow-hidden tw-overscroll-y-none;
311
- }
312
-
313
- body {
314
- @apply tw-text-base;
315
- }
316
-
317
- h1,
318
- h2,
319
- h3,
320
- h4,
321
- h5,
322
- h6,
323
- button,
324
- input,
325
- select,
326
- textarea {
327
- @apply tw-font-roboto;
328
- }
329
- ::-webkit-input-placeholder {
330
- @apply tw-font-roboto;
331
- }
332
- :-moz-placeholder {
333
- @apply tw-font-roboto;
334
- }
335
- ::-moz-placeholder {
336
- @apply tw-font-roboto;
337
- }
338
- :-ms-input-placeholder {
339
- @apply tw-font-roboto;
340
- }
341
-
342
- .vc-app.vc-theme_light {
343
- --background-color: #f2f2f2;
344
- --top-bar-color: #ffffff;
345
- --app-background: linear-gradient(180deg, #e4f5fb 5.06%, #e8f3f2 100%), linear-gradient(0deg, #e8f2f3, #e8f2f3),
346
- #eef2f8;
347
- --app-bar-background-color: #ffffff;
348
- --app-bar-divider-color: #ffffff;
349
- --app-bar-toolbar-item-width: 50px;
350
- --app-bar-toolbar-icon-color: #7e8e9d;
351
- --app-bar-toolbar-icon-color-hover: #465769;
352
- --app-bar-toolbar-icon-background-hover: #ffffff;
353
- --app-bar-account-info-name-color: #161d25;
354
- --app-bar-account-info-role-color: #7e8e9d;
355
- }
356
-
357
- .app {
358
- &__loader {
359
- background: var(--app-background);
360
- }
361
- }
362
- </style>