@bprogress/remix
Version:
NProgress bar like for Remix
54 lines (49 loc) • 2.45 kB
TypeScript
import React from 'react';
import { AnchorProgressProviderProps, AnchorProgressProps } from '@bprogress/react';
export { Bar, BarProps, Indeterminate, IndeterminateProps, Peg, PegProps, Progress, ProgressComponentProps, ProgressContextValue, ProgressProps, Spinner, SpinnerIcon, SpinnerIconProps, SpinnerPosition, SpinnerProps, useProgress } from '@bprogress/react';
import { NavigateFunction, Path } from '@remix-run/react';
export { BProgressOptions } from '@bprogress/core';
interface RemixProgressProps extends AnchorProgressProps {
}
interface RemixProgressProviderProps extends AnchorProgressProviderProps {
}
/**
* @param showProgress Show the progress bar. @default true
* @param startPosition The position of the progress bar at the start of the page load - @default 0
* @param disableSameURL Disable triggering progress bar on the same URL - @default true
*/
interface NavigateActionsProgressOptions {
showProgress?: boolean;
startPosition?: number;
disableSameURL?: boolean;
delay?: number;
stopDelay?: number;
}
/**
* @param customNavigate Custom navigate - @default undefined
*/
interface NavigateProgressOptions extends NavigateActionsProgressOptions {
customNavigate?: () => NavigateFunction;
}
type NavigateOptions = {
replace?: boolean;
state?: any;
preventScrollReset?: boolean;
relative?: 'route' | 'path';
flushSync?: boolean;
viewTransition?: boolean;
};
type To = string | Partial<Path>;
interface ProgressNavigateFunction {
(to: To, options?: NavigateOptions, progressOptions?: NavigateActionsProgressOptions): void;
(delta: number, progressOptions?: NavigateActionsProgressOptions): void;
}
declare const RemixProgressProvider: ({ children, color, height, options, spinnerPosition, style, disableStyle, nonce, ...props }: RemixProgressProviderProps) => React.JSX.Element;
/**
* Custom hook that extends Remix's useNavigate with progress bar functionality.
*
* @param options - Default progress options (e.g., showProgress, startPosition, disableSameURL)
* @returns An enhanced navigate function with an extra parameter for progress options.
*/
declare function useNavigate(options?: NavigateProgressOptions): ProgressNavigateFunction;
export { type NavigateActionsProgressOptions, type NavigateProgressOptions, type ProgressNavigateFunction, RemixProgressProvider as ProgressProvider, type RemixProgressProps, type RemixProgressProviderProps, useNavigate };