Skip to content

Commit af1c7dc

Browse files
authored
improvement(ui/ux): logs (#762)
* improvement: filters ui/ux and logic complete * improvement(ui/ux): logs control bar * improvement(ui): log table * improvement: logs sidebar * ran lint
1 parent 17e493b commit af1c7dc

File tree

17 files changed

+839
-577
lines changed

17 files changed

+839
-577
lines changed

apps/sim/app/workspace/[workspaceId]/logs/components/control-bar/control-bar.tsx

Lines changed: 0 additions & 170 deletions
This file was deleted.
Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,20 @@
1-
import { useState } from 'react'
2-
import { ChevronDown } from 'lucide-react'
3-
import { Button } from '@/components/ui/button'
4-
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible'
5-
61
export default function FilterSection({
72
title,
8-
defaultOpen = false,
93
content,
104
}: {
115
title: string
12-
defaultOpen?: boolean
136
content?: React.ReactNode
147
}) {
15-
const [isOpen, setIsOpen] = useState(defaultOpen)
16-
178
return (
18-
<Collapsible open={isOpen} onOpenChange={setIsOpen} className='mb-3'>
19-
<CollapsibleTrigger asChild>
20-
<Button
21-
variant='ghost'
22-
className='flex w-full justify-between rounded-md px-2 font-medium text-sm hover:bg-accent'
23-
>
24-
<span>{title}</span>
25-
<ChevronDown
26-
className={`mr-[5px] h-4 w-4 text-muted-foreground transition-transform ${
27-
isOpen ? 'rotate-180' : ''
28-
}`}
29-
/>
30-
</Button>
31-
</CollapsibleTrigger>
32-
<CollapsibleContent className='pt-2'>
9+
<div className='space-y-1'>
10+
<div className='font-medium text-muted-foreground text-xs'>{title}</div>
11+
<div>
3312
{content || (
3413
<div className='text-muted-foreground text-sm'>
3514
Filter options for {title} will go here
3615
</div>
3716
)}
38-
</CollapsibleContent>
39-
</Collapsible>
17+
</div>
18+
</div>
4019
)
4120
}

apps/sim/app/workspace/[workspaceId]/logs/components/filters/components/folder.tsx

Lines changed: 18 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useEffect, useState } from 'react'
2-
import { Check, ChevronDown, Folder } from 'lucide-react'
2+
import { Check, ChevronDown } from 'lucide-react'
33
import { useParams } from 'next/navigation'
44
import { Button } from '@/components/ui/button'
55
import {
@@ -9,8 +9,8 @@ import {
99
DropdownMenuSeparator,
1010
DropdownMenuTrigger,
1111
} from '@/components/ui/dropdown-menu'
12-
import { useFilterStore } from '@/app/workspace/[workspaceId]/logs/stores/store'
1312
import { useFolderStore } from '@/stores/folders/store'
13+
import { useFilterStore } from '@/stores/logs/filters/store'
1414

1515
interface FolderOption {
1616
id: string
@@ -91,49 +91,35 @@ export default function FolderFilter() {
9191
setFolderIds([])
9292
}
9393

94-
// Add special option for workflows without folders
95-
const includeRootOption = true
96-
9794
return (
9895
<DropdownMenu>
9996
<DropdownMenuTrigger asChild>
100-
<Button variant='outline' size='sm' className='w-full justify-between font-normal text-sm'>
97+
<Button
98+
variant='outline'
99+
size='sm'
100+
className='w-full justify-between rounded-[10px] border-[#E5E5E5] bg-[#FFFFFF] font-normal text-sm dark:border-[#414141] dark:bg-[#202020]'
101+
>
101102
{loading ? 'Loading folders...' : getSelectedFoldersText()}
102103
<ChevronDown className='ml-2 h-4 w-4 text-muted-foreground' />
103104
</Button>
104105
</DropdownMenuTrigger>
105-
<DropdownMenuContent align='start' className='max-h-[300px] w-[200px] overflow-y-auto'>
106+
<DropdownMenuContent
107+
align='start'
108+
className='max-h-[300px] w-[200px] overflow-y-auto rounded-lg border-[#E5E5E5] bg-[#FFFFFF] shadow-xs dark:border-[#414141] dark:bg-[#202020]'
109+
>
106110
<DropdownMenuItem
107111
key='all'
108112
onSelect={(e) => {
109113
e.preventDefault()
110114
clearSelections()
111115
}}
112-
className='flex cursor-pointer items-center justify-between p-2 text-sm'
116+
className='flex cursor-pointer items-center justify-between rounded-md px-3 py-2 font-[380] text-card-foreground text-sm hover:bg-secondary/50 focus:bg-secondary/50'
113117
>
114118
<span>All folders</span>
115119
{folderIds.length === 0 && <Check className='h-4 w-4 text-primary' />}
116120
</DropdownMenuItem>
117121

118-
{/* Option for workflows without folders */}
119-
{includeRootOption && (
120-
<DropdownMenuItem
121-
key='root'
122-
onSelect={(e) => {
123-
e.preventDefault()
124-
toggleFolderId('root')
125-
}}
126-
className='flex cursor-pointer items-center justify-between p-2 text-sm'
127-
>
128-
<div className='flex items-center'>
129-
<Folder className='mr-2 h-3 w-3 text-muted-foreground' />
130-
No folder
131-
</div>
132-
{isFolderSelected('root') && <Check className='h-4 w-4 text-primary' />}
133-
</DropdownMenuItem>
134-
)}
135-
136-
{(!loading && folders.length > 0) || includeRootOption ? <DropdownMenuSeparator /> : null}
122+
{!loading && folders.length > 0 && <DropdownMenuSeparator />}
137123

138124
{!loading &&
139125
folders.map((folder) => (
@@ -143,13 +129,9 @@ export default function FolderFilter() {
143129
e.preventDefault()
144130
toggleFolderId(folder.id)
145131
}}
146-
className='flex cursor-pointer items-center justify-between p-2 text-sm'
132+
className='flex cursor-pointer items-center justify-between rounded-md px-3 py-2 font-[380] text-card-foreground text-sm hover:bg-secondary/50 focus:bg-secondary/50'
147133
>
148134
<div className='flex items-center'>
149-
<div
150-
className='mr-2 h-2 w-2 rounded-full'
151-
style={{ backgroundColor: folder.color }}
152-
/>
153135
<span className='truncate' title={folder.path}>
154136
{folder.path}
155137
</span>
@@ -159,7 +141,10 @@ export default function FolderFilter() {
159141
))}
160142

161143
{loading && (
162-
<DropdownMenuItem disabled className='p-2 text-muted-foreground text-sm'>
144+
<DropdownMenuItem
145+
disabled
146+
className='rounded-md px-3 py-2 font-[380] text-muted-foreground text-sm'
147+
>
163148
Loading folders...
164149
</DropdownMenuItem>
165150
)}

0 commit comments

Comments
 (0)