quality / commitlint (push) Skipped
quality / changes (push) Successful in 8s
quality / go (push) Skipped
quality / bird2 (push) Skipped
quality / docker-check (push) Skipped
quality / openapi (push) Successful in 22s
quality / web (push) Successful in 1m0s
CD / quality (push) Successful in 1m35s
CD / publish (push) Successful in 2m59s
Секции страниц переведены на segmented Tabs (c-tabs-9), статус грида — ToggleGroup в toolbar. Убраны календарь задач, пустые вкладки мониторинга и demo-деревья ReUI. KPI overflow как в CFDM, DetailPanel на карточке модуля, один FrameSection. Co-authored-by: Cursor <[email protected]>
19 lines
582 B
TypeScript
19 lines
582 B
TypeScript
import { Button } from '@evobgp/ui/components/button'
|
|
import { Spinner } from '@evobgp/ui/components/spinner'
|
|
import type { ComponentProps, ReactNode } from 'react'
|
|
|
|
type LoadingButtonProps = ComponentProps<typeof Button> & {
|
|
loading?: boolean
|
|
children: ReactNode
|
|
}
|
|
|
|
/** SoT for async actions — Button + Spinner. */
|
|
export function LoadingButton({ loading, disabled, children, ...props }: LoadingButtonProps) {
|
|
return (
|
|
<Button disabled={disabled || loading} {...props}>
|
|
{loading ? <Spinner data-icon="inline-start" /> : null}
|
|
{children}
|
|
</Button>
|
|
)
|
|
}
|