bfg-common 1.4.581 → 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 (64) 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 +0 -2
  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 +82 -95
  18. package/components/common/diagramMain/DiagramMain.vue +1 -22
  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 +3 -21
  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 +2 -3
  53. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/ViewSettingsModalNew.vue +1 -6
  54. package/components/common/diagramMain/network/Contents.vue +1 -4
  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/pages/home/headline/HeadlineNew.vue +71 -48
  59. package/components/common/pages/home/resource/ResourceNew.vue +63 -58
  60. package/components/common/pages/home/widgets/WidgetsNew.vue +79 -74
  61. package/components/common/pages/shortcuts/block/BlockNew.vue +80 -71
  62. package/components/common/split/horizontal/HorizontalNew.vue +354 -354
  63. package/components/common/wizards/network/add/lib/config/steps.ts +464 -464
  64. 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,10 +107,9 @@ const viewSettingsTabContent = (tab: number): UI_I_ViewSettingsFields[] =>
107
107
  }
108
108
 
109
109
  .table-fixed-height {
110
- min-height: min(calc(100vh - 270px), 400px);
111
- max-height: min(calc(100vh - 270px), 400px);
110
+ min-height: 400px;
111
+ max-height: 400px;
112
112
  overflow-y: auto;
113
- overflow-x: hidden;
114
113
  padding-right: 32px;
115
114
  padding-top: 16px;
116
115
 
@@ -60,9 +60,4 @@ const emits = defineEmits<{
60
60
  }>()
61
61
  </script>
62
62
 
63
- <style scoped lang="scss">
64
- :deep(.modal-body) {
65
- max-height: unset;
66
- overflow-y: unset;
67
- }
68
- </style>
63
+ <style scoped lang="scss"></style>
@@ -16,7 +16,6 @@
16
16
  style="text-decoration: none"
17
17
  cursor="pointer"
18
18
  data-title="network-name-link"
19
- class="network-title-link"
20
19
  @click="onSelectNetwork(props.network.id)"
21
20
  >
22
21
  <foreignObject
@@ -431,8 +430,6 @@ const onTogglePorts = (
431
430
 
432
431
  :root.is-new-view {
433
432
  .network-title {
434
- user-select: none;
435
- -webkit-user-select: none;
436
433
  line-height: 26px;
437
434
  color: var(--diagram-content-text);
438
435
 
@@ -443,7 +440,7 @@ const onTogglePorts = (
443
440
  &.is-selected {
444
441
  color: var(--diagram-content-text-selected);
445
442
  &:hover {
446
- color: var(--diagram-content-text-selected-hover);
443
+ color: var(--diagram-content-text-selected);
447
444
  text-decoration: unset;
448
445
  }
449
446
  }
@@ -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>
@@ -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>