bfg-common 1.4.580 → 1.4.582

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 (67) hide show
  1. package/assets/img/icons/icons-sprite-dark-1.svg +437 -407
  2. package/assets/img/icons/icons-sprite-dark-2.svg +347 -343
  3. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  4. package/assets/img/icons/icons-sprite-dark-4.svg +259 -255
  5. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  6. package/assets/img/icons/icons-sprite-dark-6.svg +94 -94
  7. package/assets/img/icons/icons-sprite-light-1.svg +437 -407
  8. package/assets/img/icons/icons-sprite-light-2.svg +347 -343
  9. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  10. package/assets/img/icons/icons-sprite-light-4.svg +259 -255
  11. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  12. package/assets/img/icons/icons-sprite-light-6.svg +94 -94
  13. package/assets/scss/common/icons/icons-6.scss +156 -156
  14. package/assets/scss/common/theme.scss +321 -321
  15. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  16. package/components/common/browse/lib/models/interfaces.ts +5 -5
  17. package/components/common/diagramMain/Diagram.vue +364 -377
  18. package/components/common/diagramMain/DiagramMain.vue +872 -894
  19. package/components/common/diagramMain/Header.vue +211 -211
  20. package/components/common/diagramMain/adapter/AdapterItem.vue +0 -2
  21. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  22. package/components/common/diagramMain/adapter/Contents.vue +189 -207
  23. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  24. package/components/common/diagramMain/lib/config/positions.ts +194 -194
  25. package/components/common/diagramMain/lib/models/enums.ts +44 -44
  26. package/components/common/diagramMain/lib/models/types.ts +21 -21
  27. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  28. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +330 -330
  29. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  30. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +497 -497
  31. package/components/common/diagramMain/modals/editSettings/EditSettingsModal.vue +812 -812
  32. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  33. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  34. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  35. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  36. package/components/common/diagramMain/modals/editSettings/tabs/TrafficShaping.vue +398 -398
  37. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  38. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +205 -205
  39. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +23 -23
  40. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  41. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  42. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  43. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  44. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +537 -537
  45. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  46. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  47. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  48. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  49. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  50. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  51. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  52. package/components/common/diagramMain/modals/viewSettings/info/InfoNew.vue +155 -156
  53. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/ViewSettingsModalNew.vue +63 -68
  54. package/components/common/diagramMain/network/Contents.vue +488 -491
  55. package/components/common/diagramMain/network/noNetwork/NoNetworkNew.vue +1 -1
  56. package/components/common/diagramMain/port/Port.vue +0 -2
  57. package/components/common/diagramMain/port/Ports.vue +47 -47
  58. package/components/common/layout/theHeader/TheHeaderNew.vue +10 -4
  59. package/components/common/layout/theHeader/userMenu/userMenuNew/UserMenuNew.vue +4 -4
  60. package/components/common/layout/theHeader/userMenu/userMenuNew/lib/config/dropMenu.ts +1 -1
  61. package/components/common/pages/home/headline/HeadlineNew.vue +71 -48
  62. package/components/common/pages/home/resource/ResourceNew.vue +63 -58
  63. package/components/common/pages/home/widgets/WidgetsNew.vue +79 -74
  64. package/components/common/pages/shortcuts/block/BlockNew.vue +80 -71
  65. package/components/common/split/horizontal/HorizontalNew.vue +354 -331
  66. package/components/common/wizards/network/add/lib/config/steps.ts +464 -464
  67. package/package.json +2 -2
@@ -81,7 +81,7 @@ const localization = computed<UI_I_Localization>(() => useLocal())
81
81
 
82
82
  .no-associated-port-groups {
83
83
  font-size: 14px;
84
- font-weight: 300;
84
+ font-weight: 400;
85
85
  line-height: 16.94px;
86
86
  text-align: center;
87
87
  }
@@ -532,8 +532,6 @@ const onSelectPort = (networkId: string, portId: string): void => {
532
532
 
533
533
  :root.is-new-view {
534
534
  .port-text.text-ellipsis {
535
- user-select: none;
536
- -webkit-user-select: none;
537
535
  line-height: 25px;
538
536
  padding-left: 18px;
539
537
  color: var(--diagram-content-text);
@@ -1,47 +1,47 @@
1
- <template>
2
- <g>
3
- <template v-if="props.network.toggle">
4
- <template v-for="port in props.network.ports" :key="port.id">
5
- <common-diagram-main-port
6
- :network="props.network"
7
- :port="port"
8
- :is-dark-mode="props.isDarkMode"
9
- :selected-port="props.selectedPort"
10
- :selected-adapter="props.selectedAdapter"
11
- @select-port="onSelectPort"
12
- @show-modal="onShowModal"
13
- />
14
- </template>
15
- </template>
16
- </g>
17
- </template>
18
-
19
- <script setup lang="ts">
20
- import type {
21
- UI_I_ModalsInitialData,
22
- UI_I_NetworkFullWithPositions,
23
- UI_I_SelectedAdapter,
24
- UI_I_SelectedPort,
25
- } from '~/components/common/diagramMain/lib/models/interfaces'
26
-
27
- const props = defineProps<{
28
- network: UI_I_NetworkFullWithPositions
29
- selectedPort: UI_I_SelectedPort
30
- selectedAdapter: UI_I_SelectedAdapter
31
- isDarkMode: boolean
32
- }>()
33
-
34
- const emits = defineEmits<{
35
- (event: 'select-port', networkId: string, portId: string): void
36
- (
37
- event: 'show-modal',
38
- value: string,
39
- properties?: UI_I_ModalsInitialData
40
- ): void
41
- }>()
42
-
43
- const onSelectPort = (networkId: string, portId: string) =>
44
- emits('select-port', networkId, portId)
45
- const onShowModal = (value: string, properties?: UI_I_ModalsInitialData) =>
46
- emits('show-modal', value, properties)
47
- </script>
1
+ <template>
2
+ <g>
3
+ <template v-if="props.network.toggle">
4
+ <template v-for="port in props.network.ports" :key="port.id">
5
+ <common-diagram-main-port
6
+ :network="props.network"
7
+ :port="port"
8
+ :is-dark-mode="props.isDarkMode"
9
+ :selected-port="props.selectedPort"
10
+ :selected-adapter="props.selectedAdapter"
11
+ @select-port="onSelectPort"
12
+ @show-modal="onShowModal"
13
+ />
14
+ </template>
15
+ </template>
16
+ </g>
17
+ </template>
18
+
19
+ <script setup lang="ts">
20
+ import type {
21
+ UI_I_ModalsInitialData,
22
+ UI_I_NetworkFullWithPositions,
23
+ UI_I_SelectedAdapter,
24
+ UI_I_SelectedPort,
25
+ } from '~/components/common/diagramMain/lib/models/interfaces'
26
+
27
+ const props = defineProps<{
28
+ network: UI_I_NetworkFullWithPositions
29
+ selectedPort: UI_I_SelectedPort
30
+ selectedAdapter: UI_I_SelectedAdapter
31
+ isDarkMode: boolean
32
+ }>()
33
+
34
+ const emits = defineEmits<{
35
+ (event: 'select-port', networkId: string, portId: string): void
36
+ (
37
+ event: 'show-modal',
38
+ value: string,
39
+ properties?: UI_I_ModalsInitialData
40
+ ): void
41
+ }>()
42
+
43
+ const onSelectPort = (networkId: string, portId: string) =>
44
+ emits('select-port', networkId, portId)
45
+ const onShowModal = (value: string, properties?: UI_I_ModalsInitialData) =>
46
+ emits('show-modal', value, properties)
47
+ </script>
@@ -89,7 +89,7 @@
89
89
  </span>
90
90
  </template>
91
91
  </ui-tooltip>
92
- <div class="divider" />
92
+ <div class="divider right-divider-global-refresh" />
93
93
  <div class="container-content">
94
94
  <common-layout-the-header-theme-switch
95
95
  :is-dark-theme="props.isDarkTheme"
@@ -178,11 +178,13 @@ const emits = defineEmits<{
178
178
 
179
179
  const localization = computed<UI_I_Localization>(() => useLocal())
180
180
 
181
- const {$store}: any = useNuxtApp()
181
+ const { $store }: any = useNuxtApp()
182
182
 
183
183
  const isMenuPined = computed(() => $store.getters['main/getIsMenuPined'])
184
184
 
185
- const mainMenuTriggerStatus = computed<boolean>(() => !props.isShowMainMenu || isMenuPined.value)
185
+ const mainMenuTriggerStatus = computed<boolean>(
186
+ () => !props.isShowMainMenu || isMenuPined.value
187
+ )
186
188
  </script>
187
189
 
188
190
  <style>
@@ -240,6 +242,7 @@ const mainMenuTriggerStatus = computed<boolean>(() => !props.isShowMainMenu || i
240
242
  }
241
243
  :deep(#tooltip-inventory-menu-trigger-div) {
242
244
  z-index: 9999;
245
+ transform: translate(13px, 0px);
243
246
  }
244
247
 
245
248
  .header-shortcuts-link {
@@ -272,6 +275,10 @@ const mainMenuTriggerStatus = computed<boolean>(() => !props.isShowMainMenu || i
272
275
  width: 1px;
273
276
  height: 32px;
274
277
  background-color: #394a58;
278
+
279
+ &.right-divider-global-refresh {
280
+ margin-left: 16px;
281
+ }
275
282
  }
276
283
 
277
284
  .global-refresh-button {
@@ -281,7 +288,6 @@ const mainMenuTriggerStatus = computed<boolean>(() => !props.isShowMainMenu || i
281
288
  background: transparent;
282
289
  cursor: pointer;
283
290
  display: flex;
284
- margin-right: 16px;
285
291
 
286
292
  .reset-icon {
287
293
  width: 24px;
@@ -51,13 +51,13 @@
51
51
  :class="['w-full flex items-center dropdown-item', item.iconName]"
52
52
  >
53
53
  <span v-if="item.iconName === 'lock'" class="flex ui-item-text">
54
- <ui-icon-icon3 :name="item.iconName" width="18" height="18" />
54
+ <ui-icon-icon3 :name="item.iconName" width="16" height="16" />
55
55
  </span>
56
- <span v-if="item.iconName === 'info'" class="flex ui-item-text">
57
- <ui-icon :name="item.iconName" width="18" height="18" />
56
+ <span v-if="item.iconName === 'settings'" class="flex ui-item-text">
57
+ <ui-icon :name="item.iconName" width="16" height="16" />
58
58
  </span>
59
59
  <span v-if="item.iconName === 'logout'" class="flex ui-item-text">
60
- <ui-icon :name="item.iconName" width="18" height="18" />
60
+ <ui-icon :name="item.iconName" width="16" height="16" />
61
61
  </span>
62
62
  <p class="ui-item-text truncate text-sm font-medium mt-0 mb-0 ml-2">
63
63
  {{ item.text }}
@@ -16,7 +16,7 @@ export const userMenuFunc = (
16
16
  value: 'preferences',
17
17
  testId: 'user-menu-preferences',
18
18
  divider: true,
19
- iconName: 'info',
19
+ iconName: 'settings',
20
20
  },
21
21
  {
22
22
  text: localization.common.logout,
@@ -1,48 +1,71 @@
1
- <template>
2
- <div class="container-flex">
3
- <h1>{{ localization.mainNavigation.home }}</h1>
4
-
5
- <ui-select
6
- v-if="isProjectSphere"
7
- v-model="selectedZoneModel"
8
- :items="selectItems"
9
- width="165px"
10
- select-width="100%"
11
- size="sm"
12
- test-id="home-zone-select"
13
- />
14
- </div>
15
- </template>
16
-
17
- <script lang="ts" setup>
18
- import type { UI_I_Dropdown } from '~/node_modules/bfg-uikit/components/ui/dropdown/models/interfaces'
19
- import type { UI_I_Localization } from '~/lib/models/interfaces'
20
- import type { UI_T_Project } from '~/lib/models/types'
21
-
22
- const props = defineProps<{
23
- project: UI_T_Project
24
- }>()
25
- const selectedZoneModel = defineModel<number>({ required: true })
26
-
27
- const localization = computed<UI_I_Localization>(() => useLocal())
28
-
29
- const isProjectSphere = computed<boolean>(() => props.project === 'sphere')
30
-
31
- const selectItems = computed<UI_I_Dropdown[]>(() => {
32
- return []
33
- })
34
- </script>
35
-
36
- <style lang="scss" scoped>
37
- @import '/assets/scss/common/mixins';
38
- .container-flex {
39
- @include flex($align: center, $just: space-between);
40
- & > h1 {
41
- color: var(--home-title-color);
42
- font-size: 22px;
43
- font-weight: 400;
44
- line-height: 26.63px;
45
- margin-bottom: 19px;
46
- }
47
- }
48
- </style>
1
+ <template>
2
+ <div class="container-flex">
3
+ <h1>{{ localization.mainNavigation.home }}</h1>
4
+
5
+ <ui-select
6
+ v-if="isProjectSphere"
7
+ v-model="selectedZoneModel"
8
+ :items="selectItems"
9
+ :disabled="!selectItems.length"
10
+ width="165px"
11
+ select-width="100%"
12
+ size="sm"
13
+ test-id="home-zone-select"
14
+ >
15
+ <template v-if="!selectItems.length" #toggleContent>
16
+ <div class="default-toggle-content">
17
+ <span class="default-icon vsphere-icon-vcenter"></span>
18
+ <span class="text">{{ localization.common.default }}</span>
19
+ </div>
20
+ </template>
21
+ </ui-select>
22
+ </div>
23
+ </template>
24
+
25
+ <script lang="ts" setup>
26
+ import type { UI_I_Dropdown } from '~/node_modules/bfg-uikit/components/ui/dropdown/models/interfaces'
27
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
28
+ import type { UI_T_Project } from '~/lib/models/types'
29
+
30
+ const props = defineProps<{
31
+ project: UI_T_Project
32
+ }>()
33
+ const selectedZoneModel = defineModel<number>({ required: true })
34
+
35
+ const localization = computed<UI_I_Localization>(() => useLocal())
36
+
37
+ const isProjectSphere = computed<boolean>(() => props.project === 'sphere')
38
+
39
+ const selectItems = computed<UI_I_Dropdown[]>(() => {
40
+ return []
41
+ })
42
+ </script>
43
+
44
+ <style lang="scss" scoped>
45
+ @import '/assets/scss/common/mixins';
46
+ .container-flex {
47
+ @include flex($align: center, $just: space-between);
48
+ & > h1 {
49
+ color: var(--home-title-color);
50
+ font-size: 22px;
51
+ font-weight: 400;
52
+ line-height: 26.63px;
53
+ margin-bottom: 19px;
54
+ }
55
+
56
+ .default-toggle-content {
57
+ display: flex;
58
+ align-items: center;
59
+ grid-gap: 8px;
60
+
61
+ .default-icon {
62
+ width: 20px;
63
+ height: 20px;
64
+ }
65
+ .text {
66
+ font-size: 13px;
67
+ font-weight: 400;
68
+ }
69
+ }
70
+ }
71
+ </style>
@@ -1,58 +1,63 @@
1
- <template>
2
- <div class="total-usages">
3
- <h1>{{ localization.home.totalUsages }}</h1>
4
- <div class="total-usages__container">
5
- <ui-widget v-for="(item, key) in resourceMeter" :key="key">
6
- <template v-if="props.loading">
7
- <ui-widget-items-skeleton-line-bar />
8
- </template>
9
- <ui-widget-items-progress-bar-linear
10
- v-else
11
- id="host-summary-memory"
12
- container-id="host"
13
- :icon="item.icon"
14
- :title="item.title"
15
- :data="item.data"
16
- :used-title="item.usedTitle"
17
- :capacity-title="item.capacityTitle"
18
- :status="item.status"
19
- />
20
- </ui-widget>
21
- </div>
22
- </div>
23
- </template>
24
-
25
- <script lang="ts" setup>
26
- import type { UI_I_Localization } from '~/lib/models/interfaces'
27
- import type { UI_I_Resources } from '~/components/common/resource/lib/models/interfaces'
28
- import type { UI_I_ResourceBlock } from '~/components/common/pages/home/resource/lib/models/interfaces'
29
- import { constructResourceMeter } from '~/components/common/pages/home/resource/lib/utils/resourceMeter'
30
-
31
- const props = defineProps<{
32
- items: UI_I_Resources[]
33
- loading: boolean
34
- }>()
35
-
36
- const localization = computed<UI_I_Localization>(() => useLocal())
37
-
38
- const resourceMeter = computed<UI_I_ResourceBlock[]>(() =>
39
- constructResourceMeter(props.items, localization.value)
40
- )
41
- </script>
42
-
43
- <style lang="scss" scoped>
44
- .total-usages {
45
- & > h1 {
46
- font-size: 14px;
47
- font-weight: 400;
48
- line-height: 16.94px;
49
- color: #9da6ad;
50
- margin-bottom: 12px;
51
- }
52
- &__container {
53
- display: grid;
54
- grid-template-columns: repeat(3, 1fr);
55
- grid-column-gap: 12px;
56
- }
57
- }
58
- </style>
1
+ <template>
2
+ <div class="total-usages">
3
+ <h1>{{ localization.home.totalUsages }}</h1>
4
+ <div class="total-usages__container">
5
+ <ui-widget v-for="(item, key) in resourceMeter" :key="key">
6
+ <template v-if="props.loading">
7
+ <ui-widget-items-skeleton-line-bar />
8
+ </template>
9
+ <ui-widget-items-progress-bar-linear
10
+ v-else
11
+ id="host-summary-memory"
12
+ container-id="host"
13
+ :icon="item.icon"
14
+ :title="item.title"
15
+ :data="item.data"
16
+ :used-title="item.usedTitle"
17
+ :capacity-title="item.capacityTitle"
18
+ :status="item.status"
19
+ />
20
+ </ui-widget>
21
+ </div>
22
+ </div>
23
+ </template>
24
+
25
+ <script lang="ts" setup>
26
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
27
+ import type { UI_I_Resources } from '~/components/common/resource/lib/models/interfaces'
28
+ import type { UI_I_ResourceBlock } from '~/components/common/pages/home/resource/lib/models/interfaces'
29
+ import { constructResourceMeter } from '~/components/common/pages/home/resource/lib/utils/resourceMeter'
30
+
31
+ const props = defineProps<{
32
+ items: UI_I_Resources[]
33
+ loading: boolean
34
+ }>()
35
+
36
+ const localization = computed<UI_I_Localization>(() => useLocal())
37
+
38
+ const resourceMeter = computed<UI_I_ResourceBlock[]>(() =>
39
+ constructResourceMeter(props.items, localization.value)
40
+ )
41
+ </script>
42
+
43
+ <style lang="scss" scoped>
44
+ .total-usages {
45
+ & > h1 {
46
+ font-size: 14px;
47
+ font-weight: 400;
48
+ line-height: 16.94px;
49
+ color: #9da6ad;
50
+ margin-bottom: 12px;
51
+ }
52
+ &__container {
53
+ display: grid;
54
+ grid-template-columns: repeat(3, 1fr);
55
+ grid-column-gap: 12px;
56
+
57
+ @media (max-width: 1440px) {
58
+ grid-template-columns: 1fr;
59
+ grid-row-gap: 12px;
60
+ }
61
+ }
62
+ }
63
+ </style>
@@ -1,74 +1,79 @@
1
- <template>
2
- <div class="home-total-quantities">
3
- <h1>
4
- {{ localization.home.totalQuantities }}
5
- </h1>
6
-
7
- <div class="grid-container">
8
- <common-pages-home-widgets-vms :vms="vms" :loading="props.loading" />
9
-
10
- <common-pages-home-widgets-hosts
11
- :hosts="hosts"
12
- :loading="props.loading"
13
- />
14
- </div>
15
- </div>
16
-
17
- <div class="home-total-warnings">
18
- <h1>
19
- {{ localization.home.totalAlertsWarnings }}
20
- </h1>
21
-
22
- <div class="grid-container">
23
- <common-pages-home-widgets-warnings
24
- :alerts="alerts || []"
25
- :loading="props.loading"
26
- />
27
-
28
- <common-pages-home-widgets-services
29
- :services="services || []"
30
- :loading="props.loading"
31
- />
32
- </div>
33
- </div>
34
- </template>
35
-
36
- <script lang="ts" setup>
37
- import type { UI_I_Localization } from '~/lib/models/interfaces'
38
- import type {
39
- UI_I_Alert,
40
- UI_I_Hosts,
41
- UI_I_Vms,
42
- UI_I_Service,
43
- } from '~/components/common/pages/home/lib/models/interfaces'
44
-
45
- const props = defineProps<{
46
- vms: UI_I_Vms
47
- hosts: UI_I_Hosts
48
- alerts: UI_I_Alert[]
49
- services: UI_I_Service[]
50
- loading: boolean
51
- }>()
52
-
53
- const localization = computed<UI_I_Localization>(() => useLocal())
54
- </script>
55
-
56
- <style lang="scss" scoped>
57
- .home-total-warnings,
58
- .home-total-quantities {
59
- margin-top: 24px;
60
- & > h1 {
61
- font-size: 14px;
62
- font-weight: 400;
63
- line-height: 16.94px;
64
- color: #9da6ad;
65
- margin-bottom: 12px;
66
- }
67
- }
68
-
69
- .grid-container {
70
- display: grid;
71
- grid-template-columns: repeat(2, 1fr);
72
- grid-column-gap: 12px;
73
- }
74
- </style>
1
+ <template>
2
+ <div class="home-total-quantities">
3
+ <h1>
4
+ {{ localization.home.totalQuantities }}
5
+ </h1>
6
+
7
+ <div class="grid-container">
8
+ <common-pages-home-widgets-vms :vms="vms" :loading="props.loading" />
9
+
10
+ <common-pages-home-widgets-hosts
11
+ :hosts="hosts"
12
+ :loading="props.loading"
13
+ />
14
+ </div>
15
+ </div>
16
+
17
+ <div class="home-total-warnings">
18
+ <h1>
19
+ {{ localization.home.totalAlertsWarnings }}
20
+ </h1>
21
+
22
+ <div class="grid-container">
23
+ <common-pages-home-widgets-warnings
24
+ :alerts="alerts || []"
25
+ :loading="props.loading"
26
+ />
27
+
28
+ <common-pages-home-widgets-services
29
+ :services="services || []"
30
+ :loading="props.loading"
31
+ />
32
+ </div>
33
+ </div>
34
+ </template>
35
+
36
+ <script lang="ts" setup>
37
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
38
+ import type {
39
+ UI_I_Alert,
40
+ UI_I_Hosts,
41
+ UI_I_Vms,
42
+ UI_I_Service,
43
+ } from '~/components/common/pages/home/lib/models/interfaces'
44
+
45
+ const props = defineProps<{
46
+ vms: UI_I_Vms
47
+ hosts: UI_I_Hosts
48
+ alerts: UI_I_Alert[]
49
+ services: UI_I_Service[]
50
+ loading: boolean
51
+ }>()
52
+
53
+ const localization = computed<UI_I_Localization>(() => useLocal())
54
+ </script>
55
+
56
+ <style lang="scss" scoped>
57
+ .home-total-warnings,
58
+ .home-total-quantities {
59
+ margin-top: 24px;
60
+ & > h1 {
61
+ font-size: 14px;
62
+ font-weight: 400;
63
+ line-height: 16.94px;
64
+ color: #9da6ad;
65
+ margin-bottom: 12px;
66
+ }
67
+ }
68
+
69
+ .grid-container {
70
+ display: grid;
71
+ grid-template-columns: repeat(2, 1fr);
72
+ grid-column-gap: 12px;
73
+
74
+ @media (max-width: 1024px) {
75
+ grid-template-columns: 1fr;
76
+ grid-row-gap: 12px;
77
+ }
78
+ }
79
+ </style>