bfg-common 1.4.579 → 1.4.581

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 (63) hide show
  1. package/assets/img/icons/icons-sprite-dark-1.svg +407 -437
  2. package/assets/img/icons/icons-sprite-dark-2.svg +343 -347
  3. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  4. package/assets/img/icons/icons-sprite-dark-4.svg +255 -259
  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 +407 -437
  8. package/assets/img/icons/icons-sprite-light-2.svg +343 -347
  9. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  10. package/assets/img/icons/icons-sprite-light-4.svg +255 -259
  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 +2 -0
  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 +95 -82
  18. package/components/common/diagramMain/DiagramMain.vue +22 -1
  19. package/components/common/diagramMain/Header.vue +211 -211
  20. package/components/common/diagramMain/adapter/AdapterItem.vue +2 -0
  21. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  22. package/components/common/diagramMain/adapter/Contents.vue +21 -3
  23. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  24. package/components/common/diagramMain/lib/config/positions.ts +1 -1
  25. package/components/common/diagramMain/lib/models/enums.ts +1 -1
  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 +3 -2
  53. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/ViewSettingsModalNew.vue +6 -1
  54. package/components/common/diagramMain/network/Contents.vue +4 -1
  55. package/components/common/diagramMain/network/noNetwork/NoNetworkNew.vue +1 -1
  56. package/components/common/diagramMain/port/Port.vue +2 -0
  57. package/components/common/diagramMain/port/Ports.vue +47 -47
  58. package/components/common/pages/home/headline/HeadlineNew.vue +48 -71
  59. package/components/common/pages/home/resource/ResourceNew.vue +58 -63
  60. package/components/common/pages/home/widgets/WidgetsNew.vue +74 -79
  61. package/components/common/split/horizontal/HorizontalNew.vue +354 -354
  62. package/components/common/wizards/network/add/lib/config/steps.ts +464 -464
  63. package/package.json +2 -2
@@ -1,52 +1,52 @@
1
- import type { UI_I_SelectVmkernelAdapter } from '~/components/common/wizards/network/add/lib/models/interfaces'
2
- import type { UI_I_Localization } from '~/lib/models/interfaces'
3
- import type { UI_I_WizardStep, UI_I_ValidationReturn } from '~/components/atoms/wizard/lib/models/interfaces'
4
- import { UI_E_MigrationValidationFields } from '~/components/common/diagramMain/lib/models/enums'
5
- import type Wizard from '~/components/atoms/wizard/lib/utils/utils'
6
-
7
- export const validateSelectedVmLocal = (
8
- localization: UI_I_Localization,
9
- data: UI_I_SelectVmkernelAdapter,
10
- wizard: Wizard
11
- ): void => {
12
- wizard.validateFieldLocal(
13
- 0,
14
- 'vm',
15
- data.vm === '',
16
- '',
17
- localization.common.noVmKernelNetworkAdapterSelectedForMigration
18
- )
19
- }
20
-
21
- export const checkSelectedVmSync = (
22
- localization: UI_I_Localization,
23
- data: UI_I_SelectVmkernelAdapter,
24
- wizard: Wizard,
25
- value: UI_I_WizardStep[]
26
- ): UI_I_ValidationReturn => {
27
- let stepHasError = false
28
-
29
- if (data.vm === '') {
30
- stepHasError = wizard.setValidation(
31
- 0,
32
- UI_E_MigrationValidationFields.SELECT_ADAPTER_VM,
33
- {
34
- fieldMessage: '',
35
- alertMessage: localization.common.noVmKernelNetworkAdapterSelectedForMigration,
36
- }
37
- )
38
- } else if (
39
- wizard.hasMessage(0, UI_E_MigrationValidationFields.SELECT_ADAPTER_VM)
40
- ) {
41
- value = wizard.removeValidation(
42
- 0,
43
- UI_E_MigrationValidationFields.SELECT_ADAPTER_VM,
44
- value
45
- )
46
- }
47
-
48
- return {
49
- newValue: value,
50
- stepHasError,
51
- }
52
- }
1
+ import type { UI_I_SelectVmkernelAdapter } from '~/components/common/wizards/network/add/lib/models/interfaces'
2
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
3
+ import type { UI_I_WizardStep, UI_I_ValidationReturn } from '~/components/atoms/wizard/lib/models/interfaces'
4
+ import { UI_E_MigrationValidationFields } from '~/components/common/diagramMain/lib/models/enums'
5
+ import type Wizard from '~/components/atoms/wizard/lib/utils/utils'
6
+
7
+ export const validateSelectedVmLocal = (
8
+ localization: UI_I_Localization,
9
+ data: UI_I_SelectVmkernelAdapter,
10
+ wizard: Wizard
11
+ ): void => {
12
+ wizard.validateFieldLocal(
13
+ 0,
14
+ 'vm',
15
+ data.vm === '',
16
+ '',
17
+ localization.common.noVmKernelNetworkAdapterSelectedForMigration
18
+ )
19
+ }
20
+
21
+ export const checkSelectedVmSync = (
22
+ localization: UI_I_Localization,
23
+ data: UI_I_SelectVmkernelAdapter,
24
+ wizard: Wizard,
25
+ value: UI_I_WizardStep[]
26
+ ): UI_I_ValidationReturn => {
27
+ let stepHasError = false
28
+
29
+ if (data.vm === '') {
30
+ stepHasError = wizard.setValidation(
31
+ 0,
32
+ UI_E_MigrationValidationFields.SELECT_ADAPTER_VM,
33
+ {
34
+ fieldMessage: '',
35
+ alertMessage: localization.common.noVmKernelNetworkAdapterSelectedForMigration,
36
+ }
37
+ )
38
+ } else if (
39
+ wizard.hasMessage(0, UI_E_MigrationValidationFields.SELECT_ADAPTER_VM)
40
+ ) {
41
+ value = wizard.removeValidation(
42
+ 0,
43
+ UI_E_MigrationValidationFields.SELECT_ADAPTER_VM,
44
+ value
45
+ )
46
+ }
47
+
48
+ return {
49
+ newValue: value,
50
+ stepHasError,
51
+ }
52
+ }
@@ -1,19 +1,19 @@
1
- import {
2
- validateVlanIdConnectionSettingsLocal,
3
- validateNetworkConnectionSettingsLocal,
4
- checkConnectionSettingsSync,
5
- checkNetworkAsync,
6
- } from '~/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings'
7
- import {
8
- checkSelectedVmSync,
9
- validateSelectedVmLocal,
10
- } from '~/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter'
11
-
12
- export {
13
- validateVlanIdConnectionSettingsLocal,
14
- validateNetworkConnectionSettingsLocal,
15
- checkConnectionSettingsSync,
16
- checkNetworkAsync,
17
- checkSelectedVmSync,
18
- validateSelectedVmLocal,
19
- }
1
+ import {
2
+ validateVlanIdConnectionSettingsLocal,
3
+ validateNetworkConnectionSettingsLocal,
4
+ checkConnectionSettingsSync,
5
+ checkNetworkAsync,
6
+ } from '~/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings'
7
+ import {
8
+ checkSelectedVmSync,
9
+ validateSelectedVmLocal,
10
+ } from '~/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter'
11
+
12
+ export {
13
+ validateVlanIdConnectionSettingsLocal,
14
+ validateNetworkConnectionSettingsLocal,
15
+ checkConnectionSettingsSync,
16
+ checkNetworkAsync,
17
+ checkSelectedVmSync,
18
+ validateSelectedVmLocal,
19
+ }
@@ -107,9 +107,10 @@ const viewSettingsTabContent = (tab: number): UI_I_ViewSettingsFields[] =>
107
107
  }
108
108
 
109
109
  .table-fixed-height {
110
- min-height: 400px;
111
- max-height: 400px;
110
+ min-height: min(calc(100vh - 270px), 400px);
111
+ max-height: min(calc(100vh - 270px), 400px);
112
112
  overflow-y: auto;
113
+ overflow-x: hidden;
113
114
  padding-right: 32px;
114
115
  padding-top: 16px;
115
116
 
@@ -60,4 +60,9 @@ const emits = defineEmits<{
60
60
  }>()
61
61
  </script>
62
62
 
63
- <style scoped lang="scss"></style>
63
+ <style scoped lang="scss">
64
+ :deep(.modal-body) {
65
+ max-height: unset;
66
+ overflow-y: unset;
67
+ }
68
+ </style>
@@ -16,6 +16,7 @@
16
16
  style="text-decoration: none"
17
17
  cursor="pointer"
18
18
  data-title="network-name-link"
19
+ class="network-title-link"
19
20
  @click="onSelectNetwork(props.network.id)"
20
21
  >
21
22
  <foreignObject
@@ -430,6 +431,8 @@ const onTogglePorts = (
430
431
 
431
432
  :root.is-new-view {
432
433
  .network-title {
434
+ user-select: none;
435
+ -webkit-user-select: none;
433
436
  line-height: 26px;
434
437
  color: var(--diagram-content-text);
435
438
 
@@ -440,7 +443,7 @@ const onTogglePorts = (
440
443
  &.is-selected {
441
444
  color: var(--diagram-content-text-selected);
442
445
  &:hover {
443
- color: var(--diagram-content-text-selected);
446
+ color: var(--diagram-content-text-selected-hover);
444
447
  text-decoration: unset;
445
448
  }
446
449
  }
@@ -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: 400;
84
+ font-weight: 300;
85
85
  line-height: 16.94px;
86
86
  text-align: center;
87
87
  }
@@ -532,6 +532,8 @@ 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;
535
537
  line-height: 25px;
536
538
  padding-left: 18px;
537
539
  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>
@@ -1,71 +1,48 @@
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
+ <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,63 +1,58 @@
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
+ <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>