import { cva } from 'class-variance-authority'; import React from 'react'; import { cn, ComponentAnatomy, defineStyleAnatomy } from '../core/styling'; /* ------------------------------------------------------------------------------------------------- * Anatomy * -----------------------------------------------------------------------------------------------*/ export const LoadingSpinnerAnatomy = defineStyleAnatomy({ container: cva([ 'UI-LoadingSpinner__container', 'flex flex-col w-full items-center h-24 justify-center', ]), icon: cva([ 'UI-LoadingSpinner__icon', 'inline w-10 h-10 mr-2 animate-spin', 'text-gray-200 dark:text-gray-600 fill-brand-500', ]), title: cva([ 'UI-LoadingSpinner__title', 'text-base font-medium text-[--foreground] py-2', ]), }); /* ------------------------------------------------------------------------------------------------- * LoadingSpinner * -----------------------------------------------------------------------------------------------*/ export type LoadingSpinnerProps = React.ComponentPropsWithRef<'div'> & ComponentAnatomy & { spinner?: React.ReactNode; }; export const LoadingSpinner = React.forwardRef< HTMLDivElement, LoadingSpinnerProps >((props, ref) => { const { children, className, containerClass, iconClass, spinner, title, ...rest } = props; return (
{spinner ? spinner : } {title &&

{title}

}
); }); LoadingSpinner.displayName = 'LoadingSpinner'; /* ------------------------------------------------------------------------------------------------- * Spinner * -----------------------------------------------------------------------------------------------*/ interface SpinnerProps extends React.ComponentPropsWithRef<'svg'> { children?: React.ReactNode; } export const Spinner = React.forwardRef( (props, ref) => { const { children, className, ...rest } = props; return ( ); } );