@@ -46,7 +46,7 @@ import UiCardTitle from '@/components/ui/UiCardTitle.vue'
import UiTable from '@/components/ui/UiTable.vue'
import { useAlarmStore } from '@/stores/xen-api/alarm.store'
import UiButton from '@core/components/button/UiButton.vue'
-import UiCounter from '@core/components/UiCounter.vue'
+import Counter from '@core/components/counter/Counter.vue'
const { records: alarms, start, isStarted, isReady, hasError } = useAlarmStore().subscribe({ defer: true })
diff --git a/@xen-orchestra/lite/src/components/ui/UiCardTitle.vue b/@xen-orchestra/lite/src/components/ui/UiCardTitle.vue
index 26ae1cc9c06..41cf9032f32 100644
--- a/@xen-orchestra/lite/src/components/ui/UiCardTitle.vue
+++ b/@xen-orchestra/lite/src/components/ui/UiCardTitle.vue
@@ -2,7 +2,7 @@
{{ left }}
-
+
{{ right }}
@@ -12,7 +12,7 @@
diff --git a/@xen-orchestra/lite/src/stories/web-core/ui-counter.story.vue b/@xen-orchestra/lite/src/stories/web-core/counter/counter.story.vue
similarity index 64%
rename from @xen-orchestra/lite/src/stories/web-core/ui-counter.story.vue
rename to @xen-orchestra/lite/src/stories/web-core/counter/counter.story.vue
index be11650c59e..71a0ccb4f7e 100644
--- a/@xen-orchestra/lite/src/stories/web-core/ui-counter.story.vue
+++ b/@xen-orchestra/lite/src/stories/web-core/counter/counter.story.vue
@@ -9,15 +9,16 @@
.enum('primary', 'secondary', 'success', 'warning', 'danger', 'disabled')
.preset('primary')
.widget(),
- prop('size').type('CounterSize').enum('small', 'medium').widget(),
+ prop('size').type('CounterSize').enum('small', 'medium').required().preset('small').widget(),
+ prop('appearance').type(`'accent' | 'neutral'`).enum('accent', 'neutral').required().preset('accent').widget(),
]"
>
-
+
diff --git a/@xen-orchestra/lite/src/stories/web-core/tab/tab-item.story.vue b/@xen-orchestra/lite/src/stories/web-core/tab/tab-item.story.vue
index 67077932140..dcdde52e8bd 100644
--- a/@xen-orchestra/lite/src/stories/web-core/tab/tab-item.story.vue
+++ b/@xen-orchestra/lite/src/stories/web-core/tab/tab-item.story.vue
@@ -13,7 +13,7 @@
{{ settings.label }}
-
+
@@ -23,7 +23,7 @@
import ComponentStory from '@/components/component-story/ComponentStory.vue'
import { prop, setting, slot } from '@/libs/story/story-param'
import { text } from '@/libs/story/story-widget'
+import Counter from '@core/components/counter/Counter.vue'
import TabItem from '@core/components/tab/TabItem.vue'
import TabList from '@core/components/tab/TabList.vue'
-import UiCounter from '@core/components/UiCounter.vue'
diff --git a/@xen-orchestra/lite/src/stories/web-core/tree/tree-list.story.vue b/@xen-orchestra/lite/src/stories/web-core/tree/tree-list.story.vue
index dc37424eae1..15f81e01a05 100644
--- a/@xen-orchestra/lite/src/stories/web-core/tree/tree-list.story.vue
+++ b/@xen-orchestra/lite/src/stories/web-core/tree/tree-list.story.vue
@@ -10,7 +10,7 @@
Host - {{ i }}
-
+
@@ -42,10 +42,10 @@ import ComponentStory from '@/components/component-story/ComponentStory.vue'
import UiIcon from '@/components/ui/icon/UiIcon.vue'
import { slot } from '@/libs/story/story-param'
import ButtonIcon from '@core/components/button/ButtonIcon.vue'
+import Counter from '@core/components/counter/Counter.vue'
import ObjectIcon from '@core/components/icon/ObjectIcon.vue'
import TreeItem from '@core/components/tree/TreeItem.vue'
import TreeItemLabel from '@core/components/tree/TreeItemLabel.vue'
import TreeList from '@core/components/tree/TreeList.vue'
-import UiCounter from '@core/components/UiCounter.vue'
import { faCity, faEllipsis, faServer, faStar } from '@fortawesome/free-solid-svg-icons'
diff --git a/@xen-orchestra/lite/src/views/pool/PoolTasksView.vue b/@xen-orchestra/lite/src/views/pool/PoolTasksView.vue
index fab0e833cbd..27d263f01b8 100644
--- a/@xen-orchestra/lite/src/views/pool/PoolTasksView.vue
+++ b/@xen-orchestra/lite/src/views/pool/PoolTasksView.vue
@@ -2,7 +2,7 @@
{{ $t('tasks') }}
-
+
@@ -16,7 +16,7 @@ import UiCardSpinner from '@/components/ui/UiCardSpinner.vue'
import UiTitle from '@/components/ui/UiTitle.vue'
import { usePageTitleStore } from '@/stores/page-title.store'
import { useTaskStore } from '@/stores/xen-api/task.store'
-import UiCounter from '@core/components/UiCounter.vue'
+import Counter from '@core/components/counter/Counter.vue'
import { useI18n } from 'vue-i18n'
const { pendingTasks, finishedTasks, isReady, hasError } = useTaskStore().subscribe()
diff --git a/@xen-orchestra/web-core/lib/components/UiCounter.vue b/@xen-orchestra/web-core/lib/components/UiCounter.vue
deleted file mode 100644
index 9e426b6f780..00000000000
--- a/@xen-orchestra/web-core/lib/components/UiCounter.vue
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-
- {{ value }}
-
-
-
-
-
-
diff --git a/@xen-orchestra/web-core/lib/components/counter/Counter.vue b/@xen-orchestra/web-core/lib/components/counter/Counter.vue
new file mode 100644
index 00000000000..f864515d74b
--- /dev/null
+++ b/@xen-orchestra/web-core/lib/components/counter/Counter.vue
@@ -0,0 +1,129 @@
+
+
+
+ {{ value }}
+
+
+
+
+
+
diff --git a/@xen-orchestra/web-core/lib/components/task/QuickTaskTabBar.vue b/@xen-orchestra/web-core/lib/components/task/QuickTaskTabBar.vue
index 64471bdad6a..c34f9a00583 100644
--- a/@xen-orchestra/web-core/lib/components/task/QuickTaskTabBar.vue
+++ b/@xen-orchestra/web-core/lib/components/task/QuickTaskTabBar.vue
@@ -2,15 +2,33 @@
{{ $t('tasks.quick-view.in-progress') }}
-
+
{{ $t('tasks.quick-view.done') }}
-
+
{{ $t('tasks.quick-view.failed') }}
-
+
@@ -26,10 +44,10 @@