@xen-orchestra/web-core 0.27.0 → 0.28.0

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 (75) hide show
  1. package/lib/components/card/VtsCardRowKeyValue.vue +1 -0
  2. package/lib/components/cell-object/VtsCellObject.vue +1 -2
  3. package/lib/components/console/VtsActionsConsole.vue +3 -9
  4. package/lib/components/copy-button/VtsCopyButton.vue +1 -3
  5. package/lib/components/dropdown/DropdownTitle.vue +3 -3
  6. package/lib/components/icon/VtsIcon.vue +32 -76
  7. package/lib/components/input-wrapper/VtsInputWrapper.vue +2 -2
  8. package/lib/components/layout/VtsLayoutSidebar.vue +1 -2
  9. package/lib/components/menu/MenuItem.vue +4 -5
  10. package/lib/components/menu/MenuTrigger.vue +3 -3
  11. package/lib/components/object-icon/VtsObjectIcon.vue +2 -2
  12. package/lib/components/resources/VtsResource.vue +3 -3
  13. package/lib/components/select/VtsSelect.vue +4 -5
  14. package/lib/components/table/ColumnTitle.vue +11 -12
  15. package/lib/components/task/VtsQuickTaskButton.vue +1 -2
  16. package/lib/components/tree/VtsTreeLoadingItem.vue +3 -3
  17. package/lib/components/ui/alarm-item/UiAlarmItem.vue +1 -2
  18. package/lib/components/ui/alert/UiAlert.vue +14 -13
  19. package/lib/components/ui/button/UiButton.vue +4 -5
  20. package/lib/components/ui/button-icon/UiButtonIcon.vue +3 -3
  21. package/lib/components/ui/checkbox/UiCheckbox.vue +2 -9
  22. package/lib/components/ui/chip/ChipIcon.vue +3 -3
  23. package/lib/components/ui/chip/ChipRemoveIcon.vue +1 -2
  24. package/lib/components/ui/chip/UiChip.vue +2 -2
  25. package/lib/components/ui/circle-progress-bar/UiCircleProgressBar.vue +7 -4
  26. package/lib/components/ui/donut-chart/UiDonutChart.vue +30 -17
  27. package/lib/components/ui/dropdown/UiDropdown.vue +5 -7
  28. package/lib/components/ui/dropdown-button/UiDropdownButton.vue +4 -5
  29. package/lib/components/ui/head-bar/UiHeadBar.vue +6 -11
  30. package/lib/components/ui/info/UiInfo.vue +14 -20
  31. package/lib/components/ui/input/UiInput.vue +6 -7
  32. package/lib/components/ui/label/UiLabel.vue +3 -3
  33. package/lib/components/ui/legend/UiLegend.vue +3 -3
  34. package/lib/components/ui/legend-title/UiLegendTitle.vue +7 -3
  35. package/lib/components/ui/link/UiLink.vue +4 -5
  36. package/lib/components/ui/log-entry-viewer/UiLogEntryViewer.vue +6 -2
  37. package/lib/components/ui/object-link/UiObjectLink.vue +4 -4
  38. package/lib/components/ui/query-search-bar/UiQuerySearchBar.vue +3 -4
  39. package/lib/components/ui/quick-task-item/UiQuickTaskItem.vue +3 -4
  40. package/lib/components/ui/radio-button/UiRadioButton.vue +1 -2
  41. package/lib/components/ui/table-pagination/PaginationButton.vue +2 -25
  42. package/lib/components/ui/table-pagination/UiTablePagination.vue +41 -20
  43. package/lib/components/ui/tag/UiTag.vue +3 -3
  44. package/lib/components/ui/text-area/UiTextarea.vue +2 -2
  45. package/lib/components/ui/toaster/UiToaster.vue +15 -13
  46. package/lib/components/ui/tree-item-label/UiTreeItemLabel.vue +4 -5
  47. package/lib/composables/pagination.composable.ts +5 -0
  48. package/lib/i18n.ts +4 -0
  49. package/lib/icons/fa-icons.ts +48 -2
  50. package/lib/icons/index.ts +4 -0
  51. package/lib/icons/legacy-icons.ts +10 -0
  52. package/lib/icons/object-icons.ts +1 -1
  53. package/lib/layouts/CoreLayout.vue +1 -2
  54. package/lib/locales/cs.json +29 -10
  55. package/lib/locales/de.json +70 -7
  56. package/lib/locales/en.json +22 -0
  57. package/lib/locales/es.json +3 -3
  58. package/lib/locales/fr.json +22 -0
  59. package/lib/locales/it.json +17 -5
  60. package/lib/locales/nl.json +28 -10
  61. package/lib/locales/pt_BR.json +67 -0
  62. package/lib/locales/sv.json +17 -0
  63. package/lib/packages/icon/DisplayIcon.vue +1 -0
  64. package/lib/packages/progress/README.md +62 -0
  65. package/lib/packages/progress/types.ts +19 -0
  66. package/lib/packages/progress/use-progress-group.ts +68 -0
  67. package/lib/packages/progress/use-progress.ts +22 -0
  68. package/lib/packages/threshold/README.md +30 -0
  69. package/lib/packages/threshold/type.ts +3 -0
  70. package/lib/packages/threshold/use-threshold.ts +19 -0
  71. package/lib/types/object-icon.type.ts +0 -40
  72. package/package.json +1 -1
  73. package/lib/components/icon/NewVtsIcon.vue +0 -49
  74. package/lib/components/ui/complex-icon/UiComplexIcon.vue +0 -45
  75. package/lib/components/ui/object-icon/UiObjectIcon.vue +0 -251
@@ -2,7 +2,7 @@
2
2
  <template>
3
3
  <li class="ui-quick-task-item">
4
4
  <div v-if="hasSubTasks" class="toggle" @click="toggleExpand()">
5
- <UiButtonIcon accent="brand" :icon="isExpanded ? faAngleDown : faAngleRight" size="small" />
5
+ <UiButtonIcon accent="brand" :icon="isExpanded ? 'fa:angle-down' : 'fa:angle-right'" size="small" />
6
6
  </div>
7
7
  <div class="content">
8
8
  <div class="typo-body-bold">
@@ -12,14 +12,14 @@
12
12
  <div class="line-1">
13
13
  <UiTag v-if="task.tag" accent="neutral" variant="primary">{{ task.tag }}</UiTag>
14
14
  <div v-if="hasSubTasks" class="subtasks">
15
- <VtsIcon :icon="faCircleNotch" accent="current" />
15
+ <VtsIcon name="fa:circle-notch" size="medium" />
16
16
  <span class="typo-body-regular-small">{{ t('tasks.n-subtasks', { n: subTasksCount }) }}</span>
17
17
  </div>
18
18
  </div>
19
19
  <div v-if="task.start" class="line-2 typo-body-regular-small">
20
20
  {{ d(task.start, 'datetime_short') }}
21
21
  <template v-if="task.end">
22
- <VtsIcon :icon="faArrowRight" accent="current" />
22
+ <VtsIcon name="fa:arrow-right" size="medium" />
23
23
  {{ d(new Date(task.end), 'datetime_short') }}
24
24
  </template>
25
25
  </div>
@@ -34,7 +34,6 @@ import VtsIcon from '@core/components/icon/VtsIcon.vue'
34
34
  import VtsQuickTaskList from '@core/components/task/VtsQuickTaskList.vue'
35
35
  import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
36
36
  import UiTag from '@core/components/ui/tag/UiTag.vue'
37
- import { faAngleDown, faAngleRight, faArrowRight, faCircleNotch } from '@fortawesome/free-solid-svg-icons'
38
37
  import { useToggle } from '@vueuse/core'
39
38
  import { computed } from 'vue'
40
39
  import { useI18n } from 'vue-i18n'
@@ -3,7 +3,7 @@
3
3
  <label :class="variant" class="ui-radio-button typo-body-regular">
4
4
  <span class="radio-container">
5
5
  <input v-model="model" :disabled="isDisabled" :value class="input" type="radio" />
6
- <VtsIcon :icon="faCircle" accent="current" class="radio-icon" />
6
+ <VtsIcon name="fa:circle" size="medium" class="radio-icon" />
7
7
  </span>
8
8
  <slot />
9
9
  </label>
@@ -13,7 +13,6 @@
13
13
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
14
14
  import { useDisabled } from '@core/composables/disabled.composable'
15
15
  import { toVariants } from '@core/utils/to-variants.util'
16
- import { faCircle } from '@fortawesome/free-solid-svg-icons'
17
16
  import { computed } from 'vue'
18
17
 
19
18
  const { accent, value, disabled } = defineProps<{
@@ -4,33 +4,10 @@
4
4
 
5
5
  <script setup lang="ts">
6
6
  import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
7
- import type { IconDefinition } from '@fortawesome/fontawesome-common-types'
7
+ import type { IconName } from '@core/icons'
8
8
 
9
9
  defineProps<{
10
10
  disabled: boolean
11
- icon: IconDefinition
11
+ icon: IconName
12
12
  }>()
13
13
  </script>
14
-
15
- <style scoped lang="postcss">
16
- .pagination-button.accent--brand {
17
- border: 0.1rem solid var(--color-neutral-border);
18
- font-size: 1rem;
19
- /* Override UiButtonIcon size to match DS */
20
- width: 3rem;
21
- height: 3rem;
22
-
23
- &:hover {
24
- border-color: var(--color-brand-item-hover);
25
- }
26
-
27
- &:active {
28
- border-color: var(--color-brand-item-active);
29
- }
30
-
31
- &:disabled {
32
- background-color: var(--color-neutral-background-disabled);
33
- border-color: transparent;
34
- }
35
- }
36
- </style>
@@ -1,17 +1,21 @@
1
- <!-- v3 -->
1
+ <!-- v5 -->
2
2
  <template>
3
- <div class="ui-table-pagination">
4
- <div class="buttons-container">
5
- <PaginationButton :disabled="isFirstPage" :icon="faAngleDoubleLeft" @click="emit('first')" />
6
- <PaginationButton :disabled="isFirstPage" :icon="faAngleLeft" @click="emit('previous')" />
7
- <PaginationButton :disabled="isLastPage" :icon="faAngleRight" @click="emit('next')" />
8
- <PaginationButton :disabled="isLastPage" :icon="faAngleDoubleRight" @click="emit('last')" />
3
+ <div class="ui-table-pagination" :class="className">
4
+ <div class="container">
5
+ <span class="typo-body-regular-small label">
6
+ {{ t('core.select.n-object-of', { from, to, total }) }}
7
+ </span>
8
+ <div class="buttons-container">
9
+ <PaginationButton :disabled="isFirstPage" icon="fa:angle-double-left" @click="emit('first')" />
10
+ <PaginationButton :disabled="isFirstPage" icon="fa:angle-left" @click="emit('previous')" />
11
+ <PaginationButton :disabled="isLastPage" icon="fa:angle-right" @click="emit('next')" />
12
+ <PaginationButton :disabled="isLastPage" icon="fa:angle-double-right" @click="emit('last')" />
13
+ </div>
14
+ </div>
15
+ <div class="container">
16
+ <span class="typo-body-regular-small label show">{{ t('core.pagination.show-by') }}</span>
17
+ <VtsSelect :id="showBySelectId" accent="brand" class="typo-body-regular-small show-by-select" />
9
18
  </div>
10
- <span class="typo-body-regular-small label">
11
- {{ t('core.select.n-object-of', { from, to, total }) }}
12
- </span>
13
- <span class="typo-body-regular-small label show">{{ t('core.pagination.show-by') }}</span>
14
- <VtsSelect :id="showBySelectId" accent="brand" class="typo-body-regular-small show-by-select" />
15
19
  </div>
16
20
  </template>
17
21
 
@@ -19,15 +23,19 @@
19
23
  import VtsSelect from '@core/components/select/VtsSelect.vue'
20
24
  import PaginationButton from '@core/components/ui/table-pagination/PaginationButton.vue'
21
25
  import { useFormSelect } from '@core/packages/form-select'
22
- import { faAngleDoubleLeft, faAngleDoubleRight, faAngleLeft, faAngleRight } from '@fortawesome/free-solid-svg-icons'
26
+ import { toVariants } from '@core/utils/to-variants.util.ts'
27
+ import { computed } from 'vue'
23
28
  import { useI18n } from 'vue-i18n'
24
29
 
25
- defineProps<{
30
+ export type TablePaginationSize = 'small' | 'medium'
31
+
32
+ const { size } = defineProps<{
26
33
  from: number
27
34
  to: number
28
35
  total: number
29
36
  isFirstPage: boolean
30
37
  isLastPage: boolean
38
+ size: TablePaginationSize
31
39
  }>()
32
40
 
33
41
  const emit = defineEmits<{
@@ -39,6 +47,8 @@ const emit = defineEmits<{
39
47
 
40
48
  const showBy = defineModel<number>('showBy', { default: 24 })
41
49
 
50
+ const className = computed(() => toVariants({ size }))
51
+
42
52
  const { t } = useI18n()
43
53
 
44
54
  const { id: showBySelectId } = useFormSelect([12, 24, 48, -1], {
@@ -55,6 +65,21 @@ const { id: showBySelectId } = useFormSelect([12, 24, 48, -1], {
55
65
  align-items: center;
56
66
  gap: 0.8rem;
57
67
 
68
+ &.size--small {
69
+ flex-direction: column;
70
+ align-items: flex-end;
71
+ }
72
+
73
+ &.size--medium {
74
+ flex-direction: row;
75
+ }
76
+
77
+ .container {
78
+ display: flex;
79
+ gap: 0.8rem;
80
+ align-items: center;
81
+ }
82
+
58
83
  .buttons-container {
59
84
  display: flex;
60
85
  gap: 0.2rem;
@@ -64,19 +89,15 @@ const { id: showBySelectId } = useFormSelect([12, 24, 48, -1], {
64
89
  color: var(--color-neutral-txt-secondary);
65
90
  }
66
91
 
67
- .show::before {
68
- content: '-';
69
- margin-right: 0.8rem;
70
- }
71
-
72
92
  /* Workaround: we don't have "small" select yet */
73
93
  .show-by-select {
74
- width: 7rem;
94
+ width: 6rem;
75
95
 
76
96
  &:deep(.ui-input) {
77
97
  height: 3rem;
78
98
  padding-inline: 0.8rem;
79
99
  gap: 0.8rem;
100
+ min-width: 6rem;
80
101
  }
81
102
 
82
103
  &:deep(.input) {
@@ -3,7 +3,7 @@
3
3
  <template>
4
4
  <span :class="toVariants({ accent, variant })" class="ui-tag typo-body-regular-small">
5
5
  <slot name="icon">
6
- <VtsIcon :icon accent="current" fixed-width />
6
+ <VtsIcon :name="icon" size="medium" />
7
7
  </slot>
8
8
  <span class="text-ellipsis"><slot /></span>
9
9
  </span>
@@ -11,8 +11,8 @@
11
11
 
12
12
  <script lang="ts" setup>
13
13
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
14
+ import type { IconName } from '@core/icons'
14
15
  import { toVariants } from '@core/utils/to-variants.util'
15
- import type { IconDefinition } from '@fortawesome/fontawesome-common-types'
16
16
 
17
17
  type TagAccent = 'info' | 'neutral' | 'success' | 'warning' | 'danger' | 'muted'
18
18
  type TagVariant = 'primary' | 'secondary'
@@ -20,7 +20,7 @@ type TagVariant = 'primary' | 'secondary'
20
20
  defineProps<{
21
21
  accent: TagAccent
22
22
  variant: TagVariant
23
- icon?: IconDefinition
23
+ icon?: IconName
24
24
  }>()
25
25
 
26
26
  defineSlots<{
@@ -19,8 +19,8 @@
19
19
  import UiCharacterLimit from '@core/components/ui/character-limit/UiCharacterLimit.vue'
20
20
  import UiInfo from '@core/components/ui/info/UiInfo.vue'
21
21
  import UiLabel from '@core/components/ui/label/UiLabel.vue'
22
+ import type { IconName } from '@core/icons'
22
23
  import { toVariants } from '@core/utils/to-variants.util'
23
- import type { IconDefinition } from '@fortawesome/fontawesome-common-types'
24
24
  import { useFocus } from '@vueuse/core'
25
25
  import { computed, useAttrs, useId, useTemplateRef } from 'vue'
26
26
  import { useI18n } from 'vue-i18n'
@@ -39,7 +39,7 @@ const {
39
39
  maxCharacters?: number
40
40
  disabled?: boolean
41
41
  href?: string
42
- icon?: IconDefinition
42
+ icon?: IconName
43
43
  required?: boolean
44
44
  }>()
45
45
 
@@ -2,7 +2,7 @@
2
2
  <template>
3
3
  <div :class="toVariants({ accent })" class="ui-toaster">
4
4
  <div class="content">
5
- <VtsIcon class="information-icon" :accent :icon="faCircle" :overlay-icon="icon" />
5
+ <VtsIcon class="information-icon" :name="icon" size="medium" />
6
6
  <div>
7
7
  <div class="typo-h5">
8
8
  <slot />
@@ -11,7 +11,7 @@
11
11
  <slot name="description" />
12
12
  </div>
13
13
  </div>
14
- <UiButtonIcon class="close-icon" :icon="faXmark" accent="brand" size="medium" @click="emit('close')" />
14
+ <UiButtonIcon class="close-icon" icon="fa:xmark" accent="brand" size="medium" @click="emit('close')" />
15
15
  </div>
16
16
  <div v-if="slots.actions" class="actions">
17
17
  <slot name="actions" />
@@ -22,14 +22,13 @@
22
22
  <script setup lang="ts">
23
23
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
24
24
  import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
25
+ import type { IconName } from '@core/icons'
26
+ import { useMapper } from '@core/packages/mapper'
25
27
  import { toVariants } from '@core/utils/to-variants.util'
26
- import type { IconDefinition } from '@fortawesome/fontawesome-common-types'
27
- import { faCheck, faCircle, faExclamation, faInfo, faXmark } from '@fortawesome/free-solid-svg-icons'
28
- import { computed } from 'vue'
29
28
 
30
29
  type ToasterAccent = 'info' | 'success' | 'warning' | 'danger'
31
30
 
32
- const props = defineProps<{
31
+ const { accent } = defineProps<{
33
32
  accent: ToasterAccent
34
33
  }>()
35
34
 
@@ -43,13 +42,16 @@ const slots = defineSlots<{
43
42
  actions?(): any
44
43
  }>()
45
44
 
46
- const states: Record<ToasterAccent, IconDefinition> = {
47
- info: faInfo,
48
- success: faCheck,
49
- warning: faExclamation,
50
- danger: faXmark,
51
- }
52
- const icon = computed(() => states[props.accent])
45
+ const icon = useMapper<ToasterAccent, IconName>(
46
+ () => accent,
47
+ {
48
+ info: 'legacy:status:info',
49
+ success: 'legacy:status:success',
50
+ warning: 'legacy:status:warning',
51
+ danger: 'legacy:status:danger',
52
+ },
53
+ 'info'
54
+ )
53
55
  </script>
54
56
 
55
57
  <style scoped lang="postcss">
@@ -19,7 +19,7 @@
19
19
  v-tooltip="isExpanded ? t('core.close') : t('core.open')"
20
20
  class="toggle"
21
21
  accent="brand"
22
- :icon="isExpanded ? faAngleDown : faAngleRight"
22
+ :icon="isExpanded ? 'fa:angle-down' : 'fa:angle-right'"
23
23
  size="small"
24
24
  :target-scale="{ x: 1.5, y: 2 }"
25
25
  @click="emit('toggle')"
@@ -27,7 +27,7 @@
27
27
  <div v-else class="h-line" />
28
28
  <a v-tooltip="{ selector: '.text' }" :href class="link typo-body-bold-small" @click="navigate">
29
29
  <slot name="icon">
30
- <VtsIcon :icon accent="current" class="icon" />
30
+ <VtsIcon :name="icon" size="medium" class="icon" />
31
31
  </slot>
32
32
  <div class="text text-ellipsis">
33
33
  <slot />
@@ -43,9 +43,8 @@ import VtsIcon from '@core/components/icon/VtsIcon.vue'
43
43
  import VtsTreeLine from '@core/components/tree/VtsTreeLine.vue'
44
44
  import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
45
45
  import { vTooltip } from '@core/directives/tooltip.directive'
46
+ import type { IconName } from '@core/icons'
46
47
  import { IK_TREE_ITEM_EXPANDED, IK_TREE_ITEM_HAS_CHILDREN, IK_TREE_LIST_DEPTH } from '@core/utils/injection-keys.util'
47
- import type { IconDefinition } from '@fortawesome/fontawesome-common-types'
48
- import { faAngleDown, faAngleRight } from '@fortawesome/free-solid-svg-icons'
49
48
  import { inject, ref, useAttrs } from 'vue'
50
49
  import { useI18n } from 'vue-i18n'
51
50
  import type { RouteLocationRaw } from 'vue-router'
@@ -56,7 +55,7 @@ defineOptions({
56
55
 
57
56
  defineProps<{
58
57
  route: RouteLocationRaw
59
- icon?: IconDefinition
58
+ icon?: IconName
60
59
  active?: boolean
61
60
  }>()
62
61
 
@@ -1,4 +1,6 @@
1
+ import type { TablePaginationSize } from '@core/components/ui/table-pagination/UiTablePagination.vue'
1
2
  import { useRouteQuery } from '@core/composables/route-query.composable'
3
+ import { useUiStore } from '@core/stores/ui.store.ts'
2
4
  import { clamp, useLocalStorage } from '@vueuse/core'
3
5
  import { computed, type MaybeRefOrGetter, toValue } from 'vue'
4
6
 
@@ -60,7 +62,10 @@ export function usePagination<T>(id: string, _records: MaybeRefOrGetter<T[]>) {
60
62
  startIndex.value = records.value.length - 1
61
63
  }
62
64
 
65
+ const uiStore = useUiStore()
66
+
63
67
  const paginationBindings = computed(() => ({
68
+ size: (uiStore.isMobile ? 'small' : 'medium') as TablePaginationSize,
64
69
  showBy: showBy.value,
65
70
  'onUpdate:showBy': (value: number) => (showBy.value = value),
66
71
  from: Math.max(0, startIndex.value + 1),
package/lib/i18n.ts CHANGED
@@ -53,6 +53,10 @@ export const locales: Locales = {
53
53
  code: 'nl',
54
54
  name: 'Nederlands',
55
55
  },
56
+ pt_BR: {
57
+ code: 'pt_BR',
58
+ name: 'Português (Brasil)',
59
+ },
56
60
  }
57
61
 
58
62
  export default createI18n({
@@ -1,5 +1,12 @@
1
1
  import { defineIconPack } from '@core/packages/icon/define-icon-pack.ts'
2
- import { faBuilding, faFile, faFolderClosed, faFolderOpen, faSquareCheck } from '@fortawesome/free-regular-svg-icons'
2
+ import {
3
+ faBuilding,
4
+ faFile,
5
+ faFolderClosed,
6
+ faFolderOpen,
7
+ faSquareCheck,
8
+ faCopy,
9
+ } from '@fortawesome/free-regular-svg-icons'
3
10
  import {
4
11
  faAlignLeft,
5
12
  faAngleDoubleLeft,
@@ -21,6 +28,9 @@ import {
21
28
  faCaretDown,
22
29
  faCaretUp,
23
30
  faCheck,
31
+ faCheckCircle,
32
+ faChevronDown,
33
+ faChevronUp,
24
34
  faCircle,
25
35
  faCircleCheck,
26
36
  faCircleMinus,
@@ -31,7 +41,6 @@ import {
31
41
  faClose,
32
42
  faCode,
33
43
  faComments,
34
- faCopy,
35
44
  faDatabase,
36
45
  faDesktop,
37
46
  faDisplay,
@@ -41,17 +50,24 @@ import {
41
50
  faEdit,
42
51
  faEllipsis,
43
52
  faEllipsisVertical,
53
+ faEraser,
54
+ faExclamation,
55
+ faExclamationCircle,
44
56
  faExternalLink,
45
57
  faEyeSlash,
46
58
  faFileCsv,
47
59
  faFileExport,
48
60
  faFilter,
61
+ faFloppyDisk,
49
62
  faFont,
50
63
  faGear,
51
64
  faHashtag,
52
65
  faHeadset,
66
+ faInfo,
67
+ faInfoCircle,
53
68
  faKeyboard,
54
69
  faLayerGroup,
70
+ faLink,
55
71
  faList,
56
72
  faLock,
57
73
  faLockOpen,
@@ -74,8 +90,18 @@ import {
74
90
  faSatellite,
75
91
  faServer,
76
92
  faSliders,
93
+ faSquare,
94
+ faSquareCaretDown,
95
+ faStar,
96
+ faStop,
97
+ faTags,
98
+ faThumbTack,
99
+ faThumbTackSlash,
77
100
  faTrash,
101
+ faTriangleExclamation,
78
102
  faUpRightAndDownLeftFromCenter,
103
+ faUpRightFromSquare,
104
+ faWarning,
79
105
  faXmark,
80
106
  } from '@fortawesome/free-solid-svg-icons'
81
107
 
@@ -101,6 +127,9 @@ export const faIcons = defineIconPack({
101
127
  'caret-down': { icon: faCaretDown },
102
128
  'caret-up': { icon: faCaretUp },
103
129
  check: { icon: faCheck },
130
+ 'check-circle': { icon: faCheckCircle },
131
+ 'chevron-down': { icon: faChevronDown },
132
+ 'chevron-up': { icon: faChevronUp },
104
133
  circle: { icon: faCircle },
105
134
  'circle-check': { icon: faCircleCheck },
106
135
  'circle-minus': { icon: faCircleMinus },
@@ -121,20 +150,27 @@ export const faIcons = defineIconPack({
121
150
  edit: { icon: faEdit },
122
151
  ellipsis: { icon: faEllipsis },
123
152
  'ellipsis-vertical': { icon: faEllipsisVertical },
153
+ eraser: { icon: faEraser },
154
+ exclamation: { icon: faExclamation },
155
+ 'exclamation-circle': { icon: faExclamationCircle },
124
156
  'external-link': { icon: faExternalLink },
125
157
  'eye-slash': { icon: faEyeSlash },
126
158
  file: { icon: faFile },
127
159
  'file-csv': { icon: faFileCsv },
128
160
  'file-export': { icon: faFileExport },
129
161
  filter: { icon: faFilter },
162
+ 'floppy-disk': { icon: faFloppyDisk },
130
163
  'folder-closed': { icon: faFolderClosed },
131
164
  'folder-open': { icon: faFolderOpen },
132
165
  font: { icon: faFont },
133
166
  gear: { icon: faGear },
134
167
  hashtag: { icon: faHashtag },
135
168
  headset: { icon: faHeadset },
169
+ info: { icon: faInfo },
170
+ 'info-circle': { icon: faInfoCircle },
136
171
  keyboard: { icon: faKeyboard },
137
172
  'layer-group': { icon: faLayerGroup },
173
+ link: { icon: faLink },
138
174
  list: { icon: faList },
139
175
  lock: { icon: faLock },
140
176
  'lock-open': { icon: faLockOpen },
@@ -157,8 +193,18 @@ export const faIcons = defineIconPack({
157
193
  satellite: { icon: faSatellite },
158
194
  server: { icon: faServer },
159
195
  sliders: { icon: faSliders },
196
+ square: { icon: faSquare },
197
+ 'square-caret-down': { icon: faSquareCaretDown },
160
198
  'square-check': { icon: faSquareCheck },
199
+ star: { icon: faStar },
200
+ stop: { icon: faStop },
201
+ tags: { icon: faTags },
202
+ 'thumb-tack': { icon: faThumbTack },
203
+ 'thumb-tack-slash': { icon: faThumbTackSlash },
161
204
  trash: { icon: faTrash },
205
+ 'triangle-exclamation': { icon: faTriangleExclamation },
162
206
  'up-right-and-down-left-from-center': { icon: faUpRightAndDownLeftFromCenter },
207
+ 'up-right-from-square': { icon: faUpRightFromSquare },
208
+ warning: { icon: faWarning },
163
209
  xmark: { icon: faXmark },
164
210
  })
@@ -13,3 +13,7 @@ export const icons = defineIconPack({
13
13
  export type IconName = Exclude<keyof typeof icons, typeof ICON_SYMBOL>
14
14
 
15
15
  export type ObjectIconName = Extract<IconName, `object:${string}`>
16
+
17
+ export function icon<TName extends IconName>(name: TName): TName {
18
+ return name
19
+ }
@@ -8,6 +8,8 @@ import {
8
8
  faExclamation,
9
9
  faInfo,
10
10
  faMinus,
11
+ faMoon,
12
+ faPause,
11
13
  faPlay,
12
14
  faStar,
13
15
  faStop,
@@ -51,6 +53,10 @@ export const legacyIcons = defineIconPack({
51
53
  color: 'var(--color-info-item-base)',
52
54
  },
53
55
  'legend-circle': { icon: faCircle, size: 8 },
56
+ paused: {
57
+ icon: faPause,
58
+ color: 'var(--color-brand-item-base)',
59
+ },
54
60
  primary: [
55
61
  {
56
62
  icon: faCircle,
@@ -77,4 +83,8 @@ export const legacyIcons = defineIconPack({
77
83
  size: 8,
78
84
  },
79
85
  ]),
86
+ suspended: {
87
+ icon: faMoon,
88
+ color: 'var(--color-info-item-base)',
89
+ },
80
90
  })
@@ -156,7 +156,7 @@ export const objectIcons = defineIconPack({
156
156
  },
157
157
  { icon: getStatusIcon(state) },
158
158
  ]),
159
- host: defineIcon([['running', 'halted', 'disabled', 'muted', 'unknown']], state => [
159
+ host: defineIcon([['running', 'halted', 'disabled', 'muted', 'unknown', 'maintenance']], state => [
160
160
  {
161
161
  icon: faServer,
162
162
  color: getMainColor(state),
@@ -9,7 +9,7 @@
9
9
  }"
10
10
  accent="brand"
11
11
  size="medium"
12
- :icon="faBars"
12
+ icon="fa:bars"
13
13
  class="sidebar-toggle"
14
14
  :target-scale="1.8"
15
15
  @click="sidebarStore.toggleExpand()"
@@ -48,7 +48,6 @@ import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
48
48
  import { vTooltip } from '@core/directives/tooltip.directive'
49
49
  import { useSidebarStore } from '@core/stores/sidebar.store'
50
50
  import { useUiStore } from '@core/stores/ui.store'
51
- import { faBars } from '@fortawesome/free-solid-svg-icons'
52
51
  import { useI18n } from 'vue-i18n'
53
52
 
54
53
  const { t } = useI18n()