Loading.tsx31 lines · main
1import { Loader2 } from 'lucide-react'
2import React from 'react'
3
4import styleHandler from '../../lib/theme/styleHandler'
5import { cn } from '../../lib/utils/cn'
6
7interface Props {
8 children: React.ReactNode
9 active: boolean
10 isFullHeight?: boolean
11}
12export default function Loading({ children, active, isFullHeight = false }: Props) {
13 const __styles = styleHandler('loading')
14
15 let classNames = [__styles.base]
16
17 let contentClasses = [__styles.content.base]
18
19 if (active) {
20 contentClasses.push(__styles.content.active)
21 }
22
23 let spinnerClasses = [__styles.spinner]
24
25 return (
26 <div className={cn(classNames.join(' '), isFullHeight && 'h-full')}>
27 <div className={cn(contentClasses.join(' '), isFullHeight && 'h-full')}>{children}</div>
28 {active && <Loader2 size={24} className={spinnerClasses.join(' ')} />}
29 </div>
30 )
31}