Files
EvoBGP/apps/web/src/components/loading-button.tsx
T
DenozordecandCursor 094f75913b
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
fix(web): unify ReUI chrome and stop tab underline overlap
Секции страниц переведены на segmented Tabs (c-tabs-9), статус грида — ToggleGroup в toolbar. Убраны календарь задач, пустые вкладки мониторинга и demo-деревья ReUI. KPI overflow как в CFDM, DetailPanel на карточке модуля, один FrameSection.

Co-authored-by: Cursor <[email protected]>
2026-08-23 12:46:20 +07:00

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>
)
}