@xen-orchestra/web-core 0.1.1 → 0.2.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.
- package/lib/assets/css/_colors.pcss +148 -116
- package/lib/assets/css/_context.pcss +44 -44
- package/lib/assets/css/base.pcss +9 -8
- package/lib/assets/no-data.svg +67 -0
- package/lib/components/CardNumbers.vue +4 -4
- package/lib/components/LegendTitle.vue +3 -3
- package/lib/components/PowerStateIcon.vue +6 -6
- package/lib/components/UiCard.vue +2 -2
- package/lib/components/UiTag.vue +39 -31
- package/lib/components/backup-item/BackupItem.vue +5 -2
- package/lib/components/backup-state/BackupState.vue +4 -5
- package/lib/components/button/ButtonIcon.vue +40 -40
- package/lib/components/button/UiButton.vue +356 -93
- package/lib/components/card/CardSubtitle.vue +2 -2
- package/lib/components/card/CardTitle.vue +9 -4
- package/lib/components/cell-object/CellObject.vue +4 -4
- package/lib/components/cell-text/CellText.vue +3 -3
- package/lib/components/chip/ChipIcon.vue +6 -5
- package/lib/components/chip/UiChip.vue +20 -20
- package/lib/components/counter/VtsCounter.vue +147 -0
- package/lib/components/divider/Divider.vue +2 -2
- package/lib/components/donut-chart/DonutChart.vue +9 -9
- package/lib/components/dropdown/DropdownItem.vue +53 -73
- package/lib/components/dropdown/DropdownList.vue +1 -1
- package/lib/components/dropdown/DropdownTitle.vue +6 -6
- package/lib/components/head-bar/HeadBar.vue +6 -6
- package/lib/components/icon/ComplexIcon.vue +1 -1
- package/lib/components/icon/ObjectIcon.vue +19 -19
- package/lib/components/icon/VtsIcon.vue +96 -0
- package/lib/components/info/VtsInfo.vue +55 -0
- package/lib/components/input/UiInput.vue +22 -16
- package/lib/components/layout/LayoutSidebar.vue +3 -3
- package/lib/components/legend/LegendItem.vue +11 -11
- package/lib/components/menu/MenuItem.vue +4 -4
- package/lib/components/menu/MenuList.vue +6 -6
- package/lib/components/menu/MenuSeparator.vue +2 -2
- package/lib/components/menu/MenuTrigger.vue +6 -6
- package/lib/components/object-link/ObjectLink.vue +12 -12
- package/lib/components/query-search-bar/QuerySearchBar.vue +10 -3
- package/lib/components/stacked-bar/StackedBar.vue +1 -1
- package/lib/components/stacked-bar/StackedBarSegment.vue +6 -5
- package/lib/components/state-hero/NoDataHero.vue +11 -0
- package/lib/components/state-hero/StateHero.vue +6 -3
- package/lib/components/tab/TabItem.vue +11 -11
- package/lib/components/tab/TabList.vue +2 -2
- package/lib/components/table/ColumnTitle.vue +19 -16
- package/lib/components/table/UiTable.vue +5 -5
- package/lib/components/task/QuickTaskItem.vue +6 -6
- package/lib/components/task/QuickTaskList.vue +1 -1
- package/lib/components/task/QuickTaskPanel.vue +1 -1
- package/lib/components/task/QuickTaskTabBar.vue +22 -4
- package/lib/components/tooltip/TooltipItem.vue +15 -9
- package/lib/components/tree/TreeItemError.vue +1 -1
- package/lib/components/tree/TreeItemLabel.vue +12 -12
- package/lib/components/tree/TreeLine.vue +2 -2
- package/lib/components/tree/TreeLoadingItem.vue +4 -8
- package/lib/components/user/UserLink.vue +8 -8
- package/lib/components/user/UserLogo.vue +2 -2
- package/lib/composables/hide-route-query.composable.ts +10 -0
- package/lib/composables/route-query/actions/handle-delete.ts +9 -6
- package/lib/composables/route-query/actions/handle-set.ts +6 -4
- package/lib/composables/route-query/types.ts +10 -1
- package/lib/composables/sort-route-query.composable.ts +18 -0
- package/lib/composables/table/create-base-definition.ts +20 -0
- package/lib/composables/table/create-define-column.ts +26 -0
- package/lib/composables/table/create-sorting-definition.ts +48 -0
- package/lib/composables/table/create-visibility-definition.ts +44 -0
- package/lib/composables/table/type.ts +112 -0
- package/lib/composables/table.composable.ts +76 -0
- package/lib/layouts/CoreLayout.vue +3 -3
- package/lib/locales/en.json +1 -0
- package/lib/locales/fr.json +1 -0
- package/lib/types/backup.type.ts +1 -1
- package/lib/types/button.type.ts +1 -1
- package/lib/types/color.type.ts +2 -4
- package/lib/types/size.type.ts +0 -2
- package/lib/types/utility.type.ts +2 -0
- package/lib/utils/to-variants.util.ts +9 -0
- package/package.json +3 -3
- package/lib/components/UiCounter.vue +0 -89
- package/lib/components/icon/UiIcon.vue +0 -47
- package/lib/components/icon/VmIcon.vue +0 -30
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<!-- v1.0 -->
|
|
2
2
|
<template>
|
|
3
|
-
<
|
|
3
|
+
<VtsIcon :class="className" accent="current" :icon class="power-state-icon" />
|
|
4
4
|
</template>
|
|
5
5
|
|
|
6
6
|
<script lang="ts" setup>
|
|
7
|
-
import
|
|
7
|
+
import VtsIcon from '@core/components/icon/VtsIcon.vue'
|
|
8
8
|
import type { POWER_STATE } from '@core/types/power-state.type'
|
|
9
9
|
import { faMoon, faPause, faPlay, faStop } from '@fortawesome/free-solid-svg-icons'
|
|
10
10
|
import { computed } from 'vue'
|
|
@@ -28,19 +28,19 @@ const className = computed(() => `state-${props.state}`)
|
|
|
28
28
|
<style lang="postcss" scoped>
|
|
29
29
|
.power-state-icon {
|
|
30
30
|
&.state-suspended {
|
|
31
|
-
color: var(--color-
|
|
31
|
+
color: var(--color-normal-txt-item);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
&.state-running {
|
|
35
|
-
color: var(--color-
|
|
35
|
+
color: var(--color-success-item-base);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
&.state-paused {
|
|
39
|
-
color: var(--color-
|
|
39
|
+
color: var(--color-normal-item-active);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
&.state-halted {
|
|
43
|
-
color: var(--color-
|
|
43
|
+
color: var(--color-danger-item-base);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
</style>
|
|
@@ -18,8 +18,8 @@ defineProps<Props>()
|
|
|
18
18
|
gap: 2.4rem;
|
|
19
19
|
padding: 2.4rem;
|
|
20
20
|
flex-direction: column;
|
|
21
|
-
background-color: var(--background-
|
|
22
|
-
border: 0.1rem solid var(--color-
|
|
21
|
+
background-color: var(--color-neutral-background-primary);
|
|
22
|
+
border: 0.1rem solid var(--color-neutral-border);
|
|
23
23
|
border-radius: 0.8rem;
|
|
24
24
|
}
|
|
25
25
|
|
package/lib/components/UiTag.vue
CHANGED
|
@@ -2,76 +2,84 @@
|
|
|
2
2
|
<template>
|
|
3
3
|
<span :class="[color, { light }]" class="ui-tag typo p3-regular">
|
|
4
4
|
<slot name="icon">
|
|
5
|
-
<
|
|
5
|
+
<VtsIcon :icon accent="current" fixed-width />
|
|
6
6
|
</slot>
|
|
7
7
|
<span class="text-ellipsis"><slot /></span>
|
|
8
8
|
</span>
|
|
9
9
|
</template>
|
|
10
10
|
|
|
11
11
|
<script lang="ts" setup>
|
|
12
|
-
import
|
|
12
|
+
import VtsIcon from '@core/components/icon/VtsIcon.vue'
|
|
13
13
|
import type { TagColor } from '@core/types/color.type'
|
|
14
14
|
import type { IconDefinition } from '@fortawesome/fontawesome-common-types'
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}>(),
|
|
22
|
-
{ color: 'grey' }
|
|
23
|
-
)
|
|
16
|
+
defineProps<{
|
|
17
|
+
color: TagColor
|
|
18
|
+
light?: boolean
|
|
19
|
+
icon?: IconDefinition
|
|
20
|
+
}>()
|
|
24
21
|
</script>
|
|
25
22
|
|
|
26
23
|
<style lang="postcss" scoped>
|
|
27
24
|
/* COLOR VARIANTS */
|
|
28
25
|
.ui-tag {
|
|
29
|
-
|
|
26
|
+
&.primary {
|
|
27
|
+
--background-color: var(--color-normal-item-base);
|
|
28
|
+
--color: var(--color-normal-txt-item);
|
|
30
29
|
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
&.light {
|
|
31
|
+
--background-color: var(--color-normal-background-selected);
|
|
32
|
+
--color: var(--color-normal-txt-base);
|
|
33
|
+
}
|
|
33
34
|
}
|
|
34
|
-
}
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
--background-color: var(--color-grey-300);
|
|
36
|
+
&.secondary {
|
|
37
|
+
--background-color: var(--color-neutral-txt-primary);
|
|
38
|
+
--color: var(--color-neutral-background-primary);
|
|
40
39
|
|
|
41
40
|
&.light {
|
|
42
|
-
--background-color: var(--background-
|
|
41
|
+
--background-color: var(--color-neutral-background-secondary);
|
|
42
|
+
--color: var(--color-neutral-txt-primary);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
&.
|
|
47
|
-
--background-color: var(--color-
|
|
46
|
+
&.success {
|
|
47
|
+
--background-color: var(--color-success-item-base);
|
|
48
|
+
--color: var(--color-success-txt-item);
|
|
48
49
|
|
|
49
50
|
&.light {
|
|
50
|
-
--background-color: var(--
|
|
51
|
+
--background-color: var(--color-success-background-selected);
|
|
52
|
+
--color: var(--color-success-txt-base);
|
|
51
53
|
}
|
|
52
54
|
}
|
|
53
55
|
|
|
54
|
-
&.
|
|
55
|
-
--background-color: var(--color-
|
|
56
|
+
&.warning {
|
|
57
|
+
--background-color: var(--color-warning-item-base);
|
|
58
|
+
--color: var(--color-warning-txt-item);
|
|
56
59
|
|
|
57
60
|
&.light {
|
|
58
|
-
--background-color: var(--
|
|
61
|
+
--background-color: var(--color-warning-background-selected);
|
|
62
|
+
--color: var(--color-warning-txt-base);
|
|
59
63
|
}
|
|
60
64
|
}
|
|
61
65
|
|
|
62
|
-
&.
|
|
63
|
-
--background-color: var(--color-
|
|
66
|
+
&.danger {
|
|
67
|
+
--background-color: var(--color-danger-item-base);
|
|
68
|
+
--color: var(--color-danger-txt-item);
|
|
64
69
|
|
|
65
70
|
&.light {
|
|
66
|
-
--background-color: var(--
|
|
71
|
+
--background-color: var(--color-danger-background-selected);
|
|
72
|
+
--color: var(--color-danger-txt-base);
|
|
67
73
|
}
|
|
68
74
|
}
|
|
69
75
|
|
|
70
|
-
|
|
71
|
-
--background-color: var(--color-
|
|
76
|
+
&.disabled {
|
|
77
|
+
--background-color: var(--color-neutral-background-disabled);
|
|
78
|
+
--color: var(--color-neutral-txt-secondary);
|
|
72
79
|
|
|
73
80
|
&.light {
|
|
74
|
-
--background-color: var(--
|
|
81
|
+
--background-color: var(--color-neutral-background-secondary);
|
|
82
|
+
--color: var(--color-neutral-txt-secondary);
|
|
75
83
|
}
|
|
76
84
|
}
|
|
77
85
|
}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
<!-- v1.0 -->
|
|
2
2
|
<template>
|
|
3
3
|
<div class="backup-item">
|
|
4
|
-
<RouterLink :to="backup.route">
|
|
4
|
+
<RouterLink v-if="backup.route !== undefined" :to="backup.route">
|
|
5
5
|
{{ backup.label }}
|
|
6
6
|
</RouterLink>
|
|
7
|
+
<p v-else class="typo p3-medium">
|
|
8
|
+
{{ backup.label }}
|
|
9
|
+
</p>
|
|
7
10
|
<div class="states">
|
|
8
11
|
<BackupState v-for="(state, index) in backup.states" :key="index" :state />
|
|
9
12
|
</div>
|
|
@@ -22,7 +25,7 @@ defineProps<{
|
|
|
22
25
|
<style lang="postcss" scoped>
|
|
23
26
|
.backup-item {
|
|
24
27
|
padding: 0.8rem 0.4rem;
|
|
25
|
-
border-top: 0.1rem solid var(--color-
|
|
28
|
+
border-top: 0.1rem solid var(--color-neutral-border);
|
|
26
29
|
display: flex;
|
|
27
30
|
align-items: center;
|
|
28
31
|
gap: 0.2rem;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
<!-- v1.0 -->
|
|
2
2
|
<template>
|
|
3
|
-
<
|
|
3
|
+
<VtsIcon :accent="color" :icon class="backup-state" />
|
|
4
4
|
</template>
|
|
5
5
|
|
|
6
6
|
<script lang="ts" setup>
|
|
7
|
-
import
|
|
7
|
+
import VtsIcon from '@core/components/icon/VtsIcon.vue'
|
|
8
8
|
import type { BackupState } from '@core/types/backup.type'
|
|
9
|
-
import type { Color } from '@core/types/color.type'
|
|
10
9
|
import type { IconDefinition } from '@fortawesome/fontawesome-common-types'
|
|
11
10
|
import { faCheckCircle, faCircleMinus, faCircleXmark } from '@fortawesome/free-solid-svg-icons'
|
|
12
11
|
import { computed } from 'vue'
|
|
@@ -17,10 +16,10 @@ type Props = {
|
|
|
17
16
|
|
|
18
17
|
const props = defineProps<Props>()
|
|
19
18
|
|
|
20
|
-
const states: Record<Props['state'], { icon: IconDefinition; color:
|
|
19
|
+
const states: Record<Props['state'], { icon: IconDefinition; color: 'success' | 'warning' | 'danger' }> = {
|
|
21
20
|
success: { icon: faCheckCircle, color: 'success' },
|
|
22
21
|
partial: { icon: faCircleMinus, color: 'warning' },
|
|
23
|
-
failure: { icon: faCircleXmark, color: '
|
|
22
|
+
failure: { icon: faCircleXmark, color: 'danger' },
|
|
24
23
|
}
|
|
25
24
|
|
|
26
25
|
const icon = computed(() => states[props.state].icon)
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<!-- v1.0 -->
|
|
2
2
|
<template>
|
|
3
3
|
<button :class="[color, size, { disabled, active }]" :disabled class="button-icon" type="button">
|
|
4
|
-
<
|
|
4
|
+
<VtsIcon :icon accent="current" />
|
|
5
5
|
<span v-if="dot" class="dot" />
|
|
6
6
|
</button>
|
|
7
7
|
</template>
|
|
8
8
|
|
|
9
9
|
<script lang="ts" setup>
|
|
10
|
-
import
|
|
10
|
+
import VtsIcon from '@core/components/icon/VtsIcon.vue'
|
|
11
11
|
import type { Color } from '@core/types/color.type'
|
|
12
12
|
import type { IconDefinition } from '@fortawesome/fontawesome-common-types'
|
|
13
13
|
import { computed } from 'vue'
|
|
@@ -22,7 +22,7 @@ const props = withDefaults(
|
|
|
22
22
|
dot?: boolean
|
|
23
23
|
targetScale?: number | { x: number; y: number }
|
|
24
24
|
}>(),
|
|
25
|
-
{ color: '
|
|
25
|
+
{ color: 'normal', size: 'medium', targetScale: 1 }
|
|
26
26
|
)
|
|
27
27
|
|
|
28
28
|
const cssTargetScale = computed(() => {
|
|
@@ -37,114 +37,114 @@ const cssTargetScale = computed(() => {
|
|
|
37
37
|
<style lang="postcss" scoped>
|
|
38
38
|
/* COLOR VARIANTS */
|
|
39
39
|
.button-icon {
|
|
40
|
-
&.
|
|
40
|
+
&.normal {
|
|
41
41
|
& {
|
|
42
|
-
--color: var(--color-
|
|
42
|
+
--color: var(--color-normal-txt-base);
|
|
43
43
|
--background-color: transparent;
|
|
44
|
-
--dot-color: var(--color-
|
|
44
|
+
--dot-color: var(--color-danger-txt-base);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
&:is(.active, .selected) {
|
|
48
|
-
--color: var(--color-
|
|
49
|
-
--background-color: var(--
|
|
48
|
+
--color: var(--color-normal-txt-base);
|
|
49
|
+
--background-color: var(--color-normal-background-selected);
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
&:is(:hover, .hover, :focus-visible) {
|
|
53
|
-
--color: var(--color-
|
|
54
|
-
--background-color: var(--
|
|
53
|
+
--color: var(--color-normal-txt-hover);
|
|
54
|
+
--background-color: var(--color-normal-background-hover);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
&:is(:active, .pressed) {
|
|
58
|
-
--color: var(--color-
|
|
59
|
-
--background-color: var(--
|
|
58
|
+
--color: var(--color-normal-txt-active);
|
|
59
|
+
--background-color: var(--color-normal-background-active);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
&:is(:disabled, .disabled) {
|
|
63
|
-
--color: var(--color-
|
|
63
|
+
--color: var(--color-neutral-txt-secondary);
|
|
64
64
|
--background-color: transparent;
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
&.success {
|
|
69
69
|
& {
|
|
70
|
-
--color: var(--color-
|
|
70
|
+
--color: var(--color-success-txt-base);
|
|
71
71
|
--background-color: transparent;
|
|
72
|
-
--dot-color: var(--color-
|
|
72
|
+
--dot-color: var(--color-danger-txt-base);
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
&:is(.active, .selected) {
|
|
76
|
-
--color: var(--color-
|
|
77
|
-
--background-color: var(--
|
|
76
|
+
--color: var(--color-success-txt-base);
|
|
77
|
+
--background-color: var(--color-success-background-selected);
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
&:is(:hover, .hover, :focus-visible) {
|
|
81
|
-
--color: var(--color-
|
|
82
|
-
--background-color: var(--
|
|
81
|
+
--color: var(--color-success-txt-hover);
|
|
82
|
+
--background-color: var(--color-success-background-hover);
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
&:is(:active, .pressed) {
|
|
86
|
-
--color: var(--color-
|
|
87
|
-
--background-color: var(--
|
|
86
|
+
--color: var(--color-success-txt-active);
|
|
87
|
+
--background-color: var(--color-success-background-active);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
&:is(:disabled, .disabled) {
|
|
91
|
-
--color: var(--color-
|
|
91
|
+
--color: var(--color-neutral-txt-secondary);
|
|
92
92
|
--background-color: transparent;
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
&.warning {
|
|
97
97
|
& {
|
|
98
|
-
--color: var(--color-
|
|
98
|
+
--color: var(--color-warning-txt-base);
|
|
99
99
|
--background-color: transparent;
|
|
100
|
-
--dot-color: var(--color-
|
|
100
|
+
--dot-color: var(--color-danger-txt-base);
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
&:is(.active, .selected) {
|
|
104
|
-
--color: var(--color-
|
|
105
|
-
--background-color: var(--
|
|
104
|
+
--color: var(--color-warning-txt-base);
|
|
105
|
+
--background-color: var(--color-warning-background-selected);
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
&:is(:hover, .hover, :focus-visible) {
|
|
109
|
-
--color: var(--color-
|
|
110
|
-
--background-color: var(--
|
|
109
|
+
--color: var(--color-warning-txt-hover);
|
|
110
|
+
--background-color: var(--color-warning-background-hover);
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
&:is(:active, .pressed) {
|
|
114
|
-
--color: var(--color-
|
|
115
|
-
--background-color: var(--
|
|
114
|
+
--color: var(--color-warning-txt-active);
|
|
115
|
+
--background-color: var(--color-warning-background-active);
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
&:is(:disabled, .disabled) {
|
|
119
|
-
--color: var(--color-
|
|
119
|
+
--color: var(--color-neutral-txt-secondary);
|
|
120
120
|
--background-color: transparent;
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
&:is(.danger, .error) {
|
|
125
125
|
& {
|
|
126
|
-
--color: var(--color-
|
|
126
|
+
--color: var(--color-danger-txt-base);
|
|
127
127
|
--background-color: transparent;
|
|
128
|
-
--dot-color: var(--color-
|
|
128
|
+
--dot-color: var(--color-warning-txt-base);
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
&:is(.active, .selected) {
|
|
132
|
-
--color: var(--color-
|
|
133
|
-
--background-color: var(--
|
|
132
|
+
--color: var(--color-danger-txt-base);
|
|
133
|
+
--background-color: var(--color-danger-background-selected);
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
&:is(:hover, .hover, :focus-visible) {
|
|
137
|
-
--color: var(--color-
|
|
138
|
-
--background-color: var(--
|
|
137
|
+
--color: var(--color-danger-txt-hover);
|
|
138
|
+
--background-color: var(--color-danger-background-hover);
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
&:is(:active, .pressed) {
|
|
142
|
-
--color: var(--color-
|
|
143
|
-
--background-color: var(--
|
|
142
|
+
--color: var(--color-danger-txt-active);
|
|
143
|
+
--background-color: var(--color-danger-background-active);
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
&:is(:disabled, .disabled) {
|
|
147
|
-
--color: var(--color-
|
|
147
|
+
--color: var(--color-neutral-txt-secondary);
|
|
148
148
|
--background-color: transparent;
|
|
149
149
|
}
|
|
150
150
|
}
|