From c001a4b4b5ba23c8dbd7ba09ac29b91bcb745f59 Mon Sep 17 00:00:00 2001 From: myusername Date: Mon, 18 May 2026 10:53:07 +0530 Subject: [PATCH] feat: MetricCard composite component created --- src/layouts/AdminLayout.tsx | 10 +-- .../composites/AvatarMenu/AvatarMenu.tsx | 42 ++++----- .../MetricCard/MetricCard.stories.tsx | 87 +++++++++++++++++++ .../composites/MetricCard/MetricCard.tsx | 74 ++++++++++++++++ src/shared/composites/MetricCard/index.ts | 3 + src/shared/composites/Topbar/Topbar.tsx | 26 ++++-- src/views/LoginPage.tsx | 52 ++++++++++- 7 files changed, 253 insertions(+), 41 deletions(-) create mode 100644 src/shared/composites/MetricCard/MetricCard.stories.tsx create mode 100644 src/shared/composites/MetricCard/MetricCard.tsx create mode 100644 src/shared/composites/MetricCard/index.ts diff --git a/src/layouts/AdminLayout.tsx b/src/layouts/AdminLayout.tsx index 98494a5..d1b5f15 100644 --- a/src/layouts/AdminLayout.tsx +++ b/src/layouts/AdminLayout.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react' +import { useState } from 'react' import { Outlet } from 'react-router-dom' @@ -125,13 +125,9 @@ const AdminLayout = () => {
} - searchSlot={ - - } />
diff --git a/src/shared/composites/AvatarMenu/AvatarMenu.tsx b/src/shared/composites/AvatarMenu/AvatarMenu.tsx index 150db77..c232bdf 100644 --- a/src/shared/composites/AvatarMenu/AvatarMenu.tsx +++ b/src/shared/composites/AvatarMenu/AvatarMenu.tsx @@ -79,7 +79,6 @@ export function AvatarMenu({
Moderator account
- {/* Items */} -
- -
+ { + const newTheme = checked ? 'dark' : 'light' + + setTheme(newTheme) + + toast.info(`Theme changed to ${newTheme}`) + }} + /> +
{' '} +
{/* Desktop Search */} - {searchSlot && ( -
-
{searchSlot}
+ {(showSearch || searchSlot) && ( +
+
+ {searchSlot || ( +
+ + + +
+ )} +
)} diff --git a/src/views/LoginPage.tsx b/src/views/LoginPage.tsx index 51940c8..22b4c3b 100644 --- a/src/views/LoginPage.tsx +++ b/src/views/LoginPage.tsx @@ -1,4 +1,5 @@ -import LoginCard from '@/LoginCard' +// import LoginCard from '@/LoginCard' +import MetricCard from '@/shared/composites/MetricCard' // import { SidebarNav } from '@/shared/composites/SidebarNav' @@ -13,9 +14,54 @@ import LoginCard from '@/LoginCard' // import { useState } from 'react' const LoginPage = () => { + const metricCardData = [ + { + idx: 1, + label: 'Pending', + value: 3, + subLabel: 'awaiting action', + valueColor: 'warning', + }, + { + idx: 2, + label: 'Escalated', + value: 1, + subLabel: 'needs review', + valueColor: 'danger', + }, + { + idx: 3, + label: 'AI Auto-resolved', + value: 8, + subLabel: 'this week', + valueColor: 'success', + }, + { + idx: 4, + label: 'Escalation Rate', + value: '34%', + subLabel: 'of all reports', + valueColor: 'default', + }, + ] as const + return ( -
- +
+ {' '} +
+ {metricCardData.map((item) => { + return ( + + ) + })} +
+ {/* */}
) }