Skip to content

Commit 37fc9db

Browse files
committed
Update Dashboard and StatusFilters with Chakra UI v3 dark mode improvements
- Added dark mode styling to StatusFilters Combobox and Menu components - Refined Dashboard layout and loading state handling - Minor UI tweaks for EndpointDetail back button
1 parent 60cffd4 commit 37fc9db

File tree

3 files changed

+16
-49
lines changed

3 files changed

+16
-49
lines changed

thingconnect.pulse.client/src/components/status/StatusFilters.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -142,23 +142,23 @@ export function StatusFilters({
142142
openOnClick
143143
>
144144
<Combobox.Control>
145-
<Combobox.Input placeholder='Select Group...' />
145+
<Combobox.Input placeholder='Select Group...' _dark={{borderColor:'gray.200'}}/>
146146
<Combobox.IndicatorGroup>
147-
<Combobox.ClearTrigger onClick={clearFilter} />
147+
<Combobox.ClearTrigger onClick={clearFilter} cursor={'pointer'}/>
148148
<Combobox.Trigger />
149149
</Combobox.IndicatorGroup>
150150
</Combobox.Control>
151151
<Combobox.Positioner>
152-
<Combobox.Content>
152+
<Combobox.Content _dark={{borderWidth:1, borderColor:'gray.200'}}>
153153
<Combobox.Empty>No groups found</Combobox.Empty>
154-
<Combobox.Item key='allgroups' item={{ label: 'All Groups', value: '' }}>
154+
<Combobox.Item key='allgroups' item={{ label: 'All Groups', value: '' }} _dark={{_hover:{bg:'gray.400'}}}>
155155
<HStack justify='space-between' textStyle='sm'>
156156
All Groups
157157
</HStack>
158158
</Combobox.Item>
159159
{collection.items.map(item => {
160160
return (
161-
<Combobox.Item key={item.value} item={item}>
161+
<Combobox.Item key={item.value} item={item} _dark={{_hover:{bg:'gray.400'}}}>
162162
<HStack justify='space-between' textStyle='sm'>
163163
{item.label}
164164
</HStack>
@@ -220,7 +220,7 @@ export function StatusFilters({
220220
</Button>
221221
</Menu.Trigger>
222222
<Menu.Positioner px={4}>
223-
<Menu.Content minWidth='200px' borderColor='gray.300'>
223+
<Menu.Content minWidth='200px' borderColor='gray.300' _dark={{borderWidth:1, borderColor:'gray.200'}}>
224224
<Flex
225225
justify='flex-end'
226226
px={2}
@@ -264,6 +264,7 @@ export function StatusFilters({
264264
onToggleGroupBy &&
265265
onToggleGroupBy('status', !groupByOptions.includes('status'));
266266
}}
267+
_dark={{_hover:{bg:'gray.400'}}}
267268
>
268269
<Flex w='full' justify='flex-start' align='center' gap={3}>
269270
<Text as='span'>Group by Status</Text>
@@ -277,6 +278,7 @@ export function StatusFilters({
277278
onCheckedChange={() => {
278279
onToggleGroupBy && onToggleGroupBy('group', !groupByOptions.includes('group'));
279280
}}
281+
_dark={{_hover:{bg:'gray.400'}}}
280282
>
281283
<Flex w='full' justify='flex-start' align='center' gap={3}>
282284
<Text as='span'>Group by Group</Text>

thingconnect.pulse.client/src/pages/Dashboard.tsx

Lines changed: 7 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@ import { Page } from '@/components/layout/Page';
77
import { PageSection } from '@/components/layout/PageSection';
88
import type { LiveStatusParams } from '@/api/types';
99
import { Activity, AlertTriangle, CheckCircle, XCircle } from 'lucide-react';
10-
1110
import type { LiveStatusItem } from '@/api/types';
12-
import { text } from 'stream/consumers';
1311

1412
type GroupedEndpoints =
1513
| LiveStatusItem[]
@@ -38,7 +36,7 @@ export default function Dashboard() {
3836

3937
const [searchTerm, setSearchTerm] = useState('');
4038

41-
const { data, isLoading } = useStatusQuery({
39+
const { data, isLoading, isFetching } = useStatusQuery({
4240
...filters,
4341
search: searchTerm,
4442
});
@@ -185,36 +183,6 @@ export default function Dashboard() {
185183
);
186184
};
187185

188-
const StatCard = ({
189-
icon: Icon,
190-
title,
191-
value,
192-
color,
193-
}: {
194-
icon: React.ComponentType<{ size: number; color: string }>;
195-
title: string;
196-
value: number;
197-
color: string;
198-
}) => (
199-
<Card.Root>
200-
<Card.Body>
201-
<Flex align='center' justify='space-between'>
202-
<VStack align='start' gap='1'>
203-
<Text fontSize='sm' color='fg.muted' fontWeight='medium'>
204-
{title}
205-
</Text>
206-
<Text fontSize='3xl' fontWeight='bold' color={`${color}.500`}>
207-
{value}
208-
</Text>
209-
</VStack>
210-
<Box p='3' rounded='xl' bg={`${color}.100`}>
211-
<Icon size={24} color={color} />
212-
</Box>
213-
</Flex>
214-
</Card.Body>
215-
</Card.Root>
216-
);
217-
218186
return (
219187
<Page
220188
title='Dashboard'
@@ -274,12 +242,9 @@ export default function Dashboard() {
274242
key={stat.title}
275243
p='6'
276244
borderRadius='xl'
277-
boxShadow='sm'
278-
_hover={{
279-
boxShadow: 'md',
280-
transform: 'translateY(-2px)',
281-
transition: 'all 0.2s',
282-
}}
245+
borderWidth={1}
246+
borderColor={'gray.200'}
247+
_dark={{borderColor:'gray.200'}}
283248
>
284249
<VStack align='flex-start' gap='4'>
285250
<HStack justifyContent={'space-between'} w={'full'}>
@@ -402,7 +367,7 @@ export default function Dashboard() {
402367
<Accordion.Root multiple variant='plain' pl={4}>
403368
{Object.entries(typedGroupItems).map(([group, items]) => (
404369
<Accordion.Item key={group} value={group}>
405-
<Accordion.ItemTrigger>
370+
<Accordion.ItemTrigger >
406371
<HStack w='full' justify='space-between'>
407372
<HStack px={'10px'}>
408373
<Accordion.ItemIndicator
@@ -458,7 +423,7 @@ export default function Dashboard() {
458423

459424
return (
460425
<Accordion.Item key={group} value={group} my={2}>
461-
<Accordion.ItemTrigger borderWidth={1}>
426+
<Accordion.ItemTrigger borderWidth={1} _dark={{borderColor: 'gray.200'}}>
462427
<HStack w='full' justify='space-between'>
463428
<HStack px={'10px'}>
464429
<Accordion.ItemIndicator fontSize={'md'} fontWeight={'bolder'} />
@@ -570,7 +535,7 @@ export default function Dashboard() {
570535
})}
571536
</Accordion.Root>
572537
) : (
573-
<StatusTable items={Object.values(groupedEndpoints).flat()} isLoading={isLoading} />
538+
<StatusTable items={Object.values(groupedEndpoints).flat()} isLoading={isLoading || isFetching} />
574539
)
575540
) : (
576541
<StatusTable items={data.items} isLoading={isLoading} />

thingconnect.pulse.client/src/pages/EndpointDetail.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ export default function EndpointDetail() {
236236

237237
const backButton = (
238238
<RouterLink to='/'>
239-
<Button variant='ghost' size='sm' h='32px'>
239+
<Button variant='ghost' size='sm' h='32px' mx={3}>
240240
<ArrowLeft size={16} />
241241
Back to Dashboard
242242
</Button>

0 commit comments

Comments
 (0)