Files
supabase/apps/studio/components/interfaces/DataTableDemo/lib/request/level.ts
T
2025-05-10 21:06:48 +08:00

72 lines
2.0 KiB
TypeScript

import { _LEVELS } from '@/constants/levels'
import { cn } from '../utils'
export function getLevelColor(
value: (typeof _LEVELS)[number]
): Record<'text' | 'bg' | 'border', string> {
switch (value) {
case 'success':
return {
text: 'text-muted',
bg: 'bg-muted',
border: 'border-muted',
}
case 'warning':
return {
text: 'text-warning',
bg: 'bg-warning',
border: 'border-warning',
}
case 'error':
return {
text: 'text-destructive',
bg: 'bg-destructive',
border: 'border-destructive',
}
case 'info':
default:
return {
text: 'text-info',
bg: 'bg-info',
border: 'border-info',
}
}
}
export function getLevelRowClassName(value: (typeof _LEVELS)[number]): string {
switch (value) {
case 'success':
return ''
case 'warning':
return cn(
'bg-warning/5 hover:bg-warning/10 data-[state=selected]:bg-warning/20 focus-visible:bg-warning/10',
'dark:bg-warning/10 dark:hover:bg-warning/20 dark:data-[state=selected]:bg-warning/30 dark:focus-visible:bg-warning/20'
)
case 'error':
return cn(
'bg-destructive/5 hover:bg-destructive/10 data-[state=selected]:bg-destructive/20 focus-visible:bg-destructive/10',
'dark:bg-error/10 dark:hover:bg-destructive/20 dark:data-[state=selected]:bg-destructive/30 dark:focus-visible:bg-destructive/20'
)
case 'info':
return cn(
'bg-info/5 hover:bg-info/10 data-[state=selected]:bg-info/20 focus-visible:bg-info/10',
'dark:bg-info/10 dark:hover:bg-info/20 dark:data-[state=selected]:bg-info/30 dark:focus-visible:bg-info/20'
)
default:
return ''
}
}
export function getLevelLabel(value: (typeof _LEVELS)[number]): string {
switch (value) {
case 'success':
return '2xx'
case 'warning':
return '4xx'
case 'error':
return '5xx'
default:
return 'Unknown'
}
}