diff --git a/apps/dashboard/src/components/stats/AreaStats.vue b/apps/dashboard/src/components/stats/AreaStats.vue
new file mode 100644
index 0000000..029516d
--- /dev/null
+++ b/apps/dashboard/src/components/stats/AreaStats.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
diff --git a/apps/dashboard/src/components/stats/NumberOf.vue b/apps/dashboard/src/components/stats/NumberOf.vue
new file mode 100644
index 0000000..69ed2e0
--- /dev/null
+++ b/apps/dashboard/src/components/stats/NumberOf.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
{{ number }} {{ title }}
+
{{ subTitle }}
+
+
+
+
+
+
+
+
diff --git a/apps/dashboard/src/components/stats/TopTen.vue b/apps/dashboard/src/components/stats/TopTen.vue
new file mode 100644
index 0000000..200d14e
--- /dev/null
+++ b/apps/dashboard/src/components/stats/TopTen.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
diff --git a/apps/dashboard/src/components/stats/__tests__/NumberOf.spec.ts b/apps/dashboard/src/components/stats/__tests__/NumberOf.spec.ts
new file mode 100644
index 0000000..f8ce935
--- /dev/null
+++ b/apps/dashboard/src/components/stats/__tests__/NumberOf.spec.ts
@@ -0,0 +1,16 @@
+import { describe, it, expect } from 'vitest';
+
+import { mount } from '@vue/test-utils';
+import NumberOf from '../NumberOf.vue';
+
+describe('Number Of', () => {
+ const wrapper = mount(NumberOf, { props: { title: 'Stats', subTitle: 'Sub Title', number: '13' } });
+
+ it('it render title with stats', () => {
+ expect(wrapper.text()).toContain('13 Stats');
+ });
+
+ it('it rendered sub title.', () => {
+ expect(wrapper.find('.text-secondary').text()).toContain('Sub Title');
+ });
+});