import { Close, Refresh, Upload } from '@element-plus/icons-vue';
+ import { Button } from '@/components/ui/button';
+ import { ButtonGroup } from '@/components/ui/button-group';
import { storeToRefs } from 'pinia';
import { toast } from 'vue-sonner';
import { useI18n } from 'vue-i18n';
diff --git a/src/components/dialogs/WorldDialog/ChangeWorldImageDialog.vue b/src/components/dialogs/WorldDialog/ChangeWorldImageDialog.vue
index c4e93ce1..58fe7ba3 100644
--- a/src/components/dialogs/WorldDialog/ChangeWorldImageDialog.vue
+++ b/src/components/dialogs/WorldDialog/ChangeWorldImageDialog.vue
@@ -22,17 +22,15 @@
style="margin-bottom: 12px" />
![]()
diff --git a/src/components/ui/button-group/ButtonGroup.vue b/src/components/ui/button-group/ButtonGroup.vue
new file mode 100644
index 00000000..f56a9e14
--- /dev/null
+++ b/src/components/ui/button-group/ButtonGroup.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
diff --git a/src/components/ui/button-group/ButtonGroupSeparator.vue b/src/components/ui/button-group/ButtonGroupSeparator.vue
new file mode 100644
index 00000000..908bf2ad
--- /dev/null
+++ b/src/components/ui/button-group/ButtonGroupSeparator.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
diff --git a/src/components/ui/button-group/ButtonGroupText.vue b/src/components/ui/button-group/ButtonGroupText.vue
new file mode 100644
index 00000000..542d89f9
--- /dev/null
+++ b/src/components/ui/button-group/ButtonGroupText.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
diff --git a/src/components/ui/button-group/index.js b/src/components/ui/button-group/index.js
new file mode 100644
index 00000000..83952ec3
--- /dev/null
+++ b/src/components/ui/button-group/index.js
@@ -0,0 +1,22 @@
+import { cva } from 'class-variance-authority';
+
+export { default as ButtonGroup } from './ButtonGroup.vue';
+export { default as ButtonGroupSeparator } from './ButtonGroupSeparator.vue';
+export { default as ButtonGroupText } from './ButtonGroupText.vue';
+
+export const buttonGroupVariants = cva(
+ "flex w-fit items-stretch [&>*]:focus-visible:z-10 [&>*]:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md has-[>[data-slot=button-group]]:gap-2",
+ {
+ variants: {
+ orientation: {
+ horizontal:
+ '[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none',
+ vertical:
+ 'flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none'
+ }
+ },
+ defaultVariants: {
+ orientation: 'horizontal'
+ }
+ }
+);
diff --git a/src/components/ui/separator/Separator.vue b/src/components/ui/separator/Separator.vue
new file mode 100644
index 00000000..732921f4
--- /dev/null
+++ b/src/components/ui/separator/Separator.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
diff --git a/src/components/ui/separator/index.js b/src/components/ui/separator/index.js
new file mode 100644
index 00000000..3cb07b01
--- /dev/null
+++ b/src/components/ui/separator/index.js
@@ -0,0 +1 @@
+export { default as Separator } from './Separator.vue';
diff --git a/src/views/Charts/components/InstanceActivity.vue b/src/views/Charts/components/InstanceActivity.vue
index 5a43db31..a1869ecd 100644
--- a/src/views/Charts/components/InstanceActivity.vue
+++ b/src/views/Charts/components/InstanceActivity.vue
@@ -72,19 +72,26 @@