1
1
import { PAUSE_MODAL_TITLE , PauseModalDescription } from '@/components/pause-workflow-dialog' ;
2
- import { Badge } from '@/components/primitives/badge' ;
3
2
import {
4
3
DropdownMenu ,
5
4
DropdownMenuContent ,
@@ -30,6 +29,7 @@ import { buildRoute, ROUTES } from '@/utils/routes';
30
29
import { cn } from '@/utils/ui' ;
31
30
import { IEnvironment , WorkflowListResponseDto } from '@novu/shared' ;
32
31
import { ComponentProps , useState } from 'react' ;
32
+ import { CgBolt } from 'react-icons/cg' ;
33
33
import { FaCode } from 'react-icons/fa6' ;
34
34
import {
35
35
RiDeleteBin2Line ,
@@ -39,6 +39,7 @@ import {
39
39
RiPauseCircleLine ,
40
40
RiPlayCircleLine ,
41
41
RiPulseFill ,
42
+ RiRouteFill ,
42
43
} from 'react-icons/ri' ;
43
44
44
45
import { FilesIcon } from 'lucide-react' ;
@@ -198,25 +199,29 @@ export const WorkflowRow = ({ workflow }: WorkflowRowProps) => {
198
199
return (
199
200
< >
200
201
< TableRow key = { workflow . _id } className = "group relative isolate cursor-pointer" onClick = { handleRowClick } >
201
- < WorkflowLinkTableCell className = "font-medium" >
202
- < div className = "flex items-center gap-1" >
203
- { workflow . origin === WorkflowOriginEnum . EXTERNAL && (
204
- < Badge color = "yellow" size = "sm" variant = "lighter" >
205
- < FaCode className = "size-3" />
206
- </ Badge >
207
- ) }
208
- < TruncatedText className = "max-w-[32ch]" > { workflow . name } </ TruncatedText >
209
- </ div >
210
- < div className = "flex items-center gap-1 transition-opacity duration-200" >
211
- < TruncatedText className = "text-foreground-400 font-code block max-w-[40ch] text-xs" >
212
- { workflow . workflowId }
213
- </ TruncatedText >
202
+ < WorkflowLinkTableCell className = "flex items-center gap-2 font-medium" >
203
+ { workflow . origin === WorkflowOriginEnum . EXTERNAL ? (
204
+ < FaCode className = "text-warning size-4" />
205
+ ) : workflow . origin === WorkflowOriginEnum . NOVU_CLOUD_V1 ? (
206
+ < CgBolt className = "text-feature size-4" />
207
+ ) : (
208
+ < RiRouteFill className = "text-feature size-4" />
209
+ ) }
210
+ < div >
211
+ < div className = "flex items-center gap-1" >
212
+ < TruncatedText className = "max-w-[32ch]" > { workflow . name } </ TruncatedText >
213
+ </ div >
214
+ < div className = "flex items-center gap-1 transition-opacity duration-200" >
215
+ < TruncatedText className = "text-foreground-400 font-code block max-w-[40ch] text-xs" >
216
+ { workflow . workflowId }
217
+ </ TruncatedText >
214
218
215
- < CopyButton
216
- className = "z-10 flex size-2 p-0 px-1 opacity-0 group-hover:opacity-100"
217
- valueToCopy = { workflow . workflowId }
218
- size = "2xs"
219
- />
219
+ < CopyButton
220
+ className = "z-10 flex size-2 p-0 px-1 opacity-0 group-hover:opacity-100"
221
+ valueToCopy = { workflow . workflowId }
222
+ size = "2xs"
223
+ />
224
+ </ div >
220
225
</ div >
221
226
</ WorkflowLinkTableCell >
222
227
< WorkflowLinkTableCell className = "min-w-[200px]" >
@@ -234,13 +239,6 @@ export const WorkflowRow = ({ workflow }: WorkflowRowProps) => {
234
239
{ formatDateSimple ( workflow . updatedAt ) }
235
240
</ TimeDisplayHoverCard >
236
241
</ WorkflowLinkTableCell >
237
- { /* <WorkflowLinkTableCell className="text-foreground-600 text-sm font-medium">
238
- {workflow.lastTriggeredAt ? (
239
- <TimeDisplayHoverCard date={workflow.lastTriggeredAt}>
240
- {formatDateSimple(workflow.lastTriggeredAt)}
241
- </TimeDisplayHoverCard>
242
- ) : null}
243
- </WorkflowLinkTableCell> */ }
244
242
245
243
< WorkflowLinkTableCell className = "w-1" >
246
244
< DropdownMenu >
@@ -250,7 +248,7 @@ export const WorkflowRow = ({ workflow }: WorkflowRowProps) => {
250
248
variant = "ghost"
251
249
className = "z-10 h-8 w-8 p-0"
252
250
data-testid = "workflow-actions-menu"
253
- > </ CompactButton >
251
+ / >
254
252
</ DropdownMenuTrigger >
255
253
< DropdownMenuContent className = "w-56" onClick = { stopPropagation } >
256
254
< DropdownMenuGroup >
0 commit comments