UNPKG

@saas-ui/nprogress

Version:

Nprogress Component

1 lines 4.92 kB
{"version":3,"sources":["../src/nprogress.tsx","../src/next-router.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport {\n chakra,\n forwardRef,\n HTMLChakraProps,\n ThemingProps,\n omitThemingProps,\n useColorModeValue,\n useMultiStyleConfig,\n SystemStyleObject,\n} from '@chakra-ui/react'\n\nimport { cx } from '@chakra-ui/utils'\n\nimport { useNProgress } from '@tanem/react-nprogress'\n\ninterface NProgressOptions {\n /**\n * Set to true to start the progress animation.\n */\n isAnimating: boolean\n}\n\nexport interface NProgressProps\n extends NProgressOptions,\n HTMLChakraProps<'div'>,\n ThemingProps<'SuiNProgress'> {}\n/**\n * Show feedback when switching pages and content is loading in the background.\n *\n * @see Docs https://saas-ui.dev/docs/components/feedback/nprogress\n */\nexport const NProgress = forwardRef<NProgressProps, 'div'>((props, ref) => {\n const styles = useMultiStyleConfig('SuiNProgress', props)\n\n const { colorScheme: c } = props\n\n const { children, isAnimating, ...containerProps } = omitThemingProps(props)\n\n const { animationDuration, isFinished, progress } = useNProgress({\n isAnimating,\n })\n\n const barStyles: SystemStyleObject = {\n width: '100%',\n height: '2px',\n bg: useColorModeValue(`${c}.500`, `${c}.300`),\n ...styles.bar,\n }\n\n return (\n <chakra.div\n ref={ref}\n __css={styles.container}\n position=\"fixed\"\n top=\"0\"\n left=\"0\"\n width=\"100%\"\n opacity={isFinished ? 0 : 1}\n zIndex=\"overlay\"\n transition={`opacity ${animationDuration}ms linear`}\n {...containerProps}\n className={cx('sui-nprogress', props.className)}\n >\n <chakra.div\n __css={barStyles}\n ml={`${(-1 + progress) * 100}%;`}\n transition={`margin-left ${animationDuration}ms linear`}\n ></chakra.div>\n </chakra.div>\n )\n})\n\nNProgress.displayName = 'NProgress'\n","import * as React from 'react'\nimport { useEffect, useState } from 'react'\n\nimport { NProgress } from './nprogress'\n\nexport const NProgressNextRouter = ({ router }: any) => {\n const [state, setState] = useState({\n isRouteChanging: false,\n loadingKey: 0,\n })\n\n useEffect(() => {\n const handleRouteChangeStart = () => {\n setState((prevState) => ({\n ...prevState,\n isRouteChanging: true,\n loadingKey: prevState.loadingKey ^ 1,\n }))\n }\n\n const handleRouteChangeEnd = () => {\n setState((prevState) => ({\n ...prevState,\n isRouteChanging: false,\n }))\n }\n\n router.events.on('routeChangeStart', handleRouteChangeStart)\n router.events.on('routeChangeComplete', handleRouteChangeEnd)\n router.events.on('routeChangeError', handleRouteChangeEnd)\n\n return () => {\n router.events.off('routeChangeStart', handleRouteChangeStart)\n router.events.off('routeChangeComplete', handleRouteChangeEnd)\n router.events.off('routeChangeError', handleRouteChangeEnd)\n }\n }, [router.events])\n\n const isAnimating = state.isRouteChanging\n\n return (\n <>\n <NProgress isAnimating={isAnimating} key={state.loadingKey} />\n </>\n )\n}\n"],"mappings":";;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAEP,SAAS,UAAU;AAEnB,SAAS,oBAAoB;AAkDvB;AAhCC,IAAM,YAAY,WAAkC,CAAC,OAAO,QAAQ;AACzE,QAAM,SAAS,oBAAoB,gBAAgB,KAAK;AAExD,QAAM,EAAE,aAAa,EAAE,IAAI;AAE3B,QAAM,EAAE,UAAU,aAAa,GAAG,eAAe,IAAI,iBAAiB,KAAK;AAE3E,QAAM,EAAE,mBAAmB,YAAY,SAAS,IAAI,aAAa;AAAA,IAC/D;AAAA,EACF,CAAC;AAED,QAAM,YAA+B;AAAA,IACnC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,IAAI,kBAAkB,GAAG,CAAC,QAAQ,GAAG,CAAC,MAAM;AAAA,IAC5C,GAAG,OAAO;AAAA,EACZ;AAEA,SACE;AAAA,IAAC,OAAO;AAAA,IAAP;AAAA,MACC;AAAA,MACA,OAAO,OAAO;AAAA,MACd,UAAS;AAAA,MACT,KAAI;AAAA,MACJ,MAAK;AAAA,MACL,OAAM;AAAA,MACN,SAAS,aAAa,IAAI;AAAA,MAC1B,QAAO;AAAA,MACP,YAAY,WAAW,iBAAiB;AAAA,MACvC,GAAG;AAAA,MACJ,WAAW,GAAG,iBAAiB,MAAM,SAAS;AAAA,MAE9C;AAAA,QAAC,OAAO;AAAA,QAAP;AAAA,UACC,OAAO;AAAA,UACP,IAAI,IAAI,KAAK,YAAY,GAAG;AAAA,UAC5B,YAAY,eAAe,iBAAiB;AAAA;AAAA,MAC7C;AAAA;AAAA,EACH;AAEJ,CAAC;AAED,UAAU,cAAc;;;ACzExB,SAAS,WAAW,gBAAgB;AAwChC,mBACE,OAAAA,YADF;AApCG,IAAM,sBAAsB,CAAC,EAAE,OAAO,MAAW;AACtD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS;AAAA,IACjC,iBAAiB;AAAA,IACjB,YAAY;AAAA,EACd,CAAC;AAED,YAAU,MAAM;AACd,UAAM,yBAAyB,MAAM;AACnC,eAAS,CAAC,eAAe;AAAA,QACvB,GAAG;AAAA,QACH,iBAAiB;AAAA,QACjB,YAAY,UAAU,aAAa;AAAA,MACrC,EAAE;AAAA,IACJ;AAEA,UAAM,uBAAuB,MAAM;AACjC,eAAS,CAAC,eAAe;AAAA,QACvB,GAAG;AAAA,QACH,iBAAiB;AAAA,MACnB,EAAE;AAAA,IACJ;AAEA,WAAO,OAAO,GAAG,oBAAoB,sBAAsB;AAC3D,WAAO,OAAO,GAAG,uBAAuB,oBAAoB;AAC5D,WAAO,OAAO,GAAG,oBAAoB,oBAAoB;AAEzD,WAAO,MAAM;AACX,aAAO,OAAO,IAAI,oBAAoB,sBAAsB;AAC5D,aAAO,OAAO,IAAI,uBAAuB,oBAAoB;AAC7D,aAAO,OAAO,IAAI,oBAAoB,oBAAoB;AAAA,IAC5D;AAAA,EACF,GAAG,CAAC,OAAO,MAAM,CAAC;AAElB,QAAM,cAAc,MAAM;AAE1B,SACE,gBAAAA,KAAA,YACE,0BAAAA,KAAC,aAAU,eAA+B,MAAM,UAAY,GAC9D;AAEJ;","names":["jsx"]}