react-native-app-onboard 0.1.8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +89 -7
  2. package/lib/commonjs/components/CustomPages.js +31 -54
  3. package/lib/commonjs/components/CustomPages.js.map +1 -1
  4. package/lib/commonjs/components/OnboardingPages.js +59 -74
  5. package/lib/commonjs/components/OnboardingPages.js.map +1 -1
  6. package/lib/commonjs/components/Page.js +8 -3
  7. package/lib/commonjs/components/Page.js.map +1 -1
  8. package/lib/commonjs/components/Pagination.js +75 -13
  9. package/lib/commonjs/components/Pagination.js.map +1 -1
  10. package/lib/commonjs/components/Swiper.js +58 -85
  11. package/lib/commonjs/components/Swiper.js.map +1 -1
  12. package/lib/commonjs/components/button.js +3 -1
  13. package/lib/commonjs/components/button.js.map +1 -1
  14. package/lib/commonjs/context/OnboardingContext.js +101 -21
  15. package/lib/commonjs/context/OnboardingContext.js.map +1 -1
  16. package/lib/commonjs/hooks/useOnboarding.js +1 -1
  17. package/lib/commonjs/hooks/useOnboarding.js.map +1 -1
  18. package/lib/commonjs/index.js +33 -2
  19. package/lib/commonjs/index.js.map +1 -1
  20. package/lib/commonjs/utils/persistence.js +51 -0
  21. package/lib/commonjs/utils/persistence.js.map +1 -0
  22. package/lib/module/components/CustomPages.js +31 -54
  23. package/lib/module/components/CustomPages.js.map +1 -1
  24. package/lib/module/components/OnboardingPages.js +60 -75
  25. package/lib/module/components/OnboardingPages.js.map +1 -1
  26. package/lib/module/components/Page.js +8 -3
  27. package/lib/module/components/Page.js.map +1 -1
  28. package/lib/module/components/Pagination.js +76 -14
  29. package/lib/module/components/Pagination.js.map +1 -1
  30. package/lib/module/components/Swiper.js +59 -86
  31. package/lib/module/components/Swiper.js.map +1 -1
  32. package/lib/module/components/button.js +3 -1
  33. package/lib/module/components/button.js.map +1 -1
  34. package/lib/module/context/OnboardingContext.js +102 -22
  35. package/lib/module/context/OnboardingContext.js.map +1 -1
  36. package/lib/module/hooks/useOnboarding.js +1 -1
  37. package/lib/module/hooks/useOnboarding.js.map +1 -1
  38. package/lib/module/index.js +8 -1
  39. package/lib/module/index.js.map +1 -1
  40. package/lib/module/utils/persistence.js +42 -0
  41. package/lib/module/utils/persistence.js.map +1 -0
  42. package/lib/typescript/src/components/CustomPages.d.ts +6 -2
  43. package/lib/typescript/src/components/CustomPages.d.ts.map +1 -1
  44. package/lib/typescript/src/components/OnboardingPages.d.ts +6 -2
  45. package/lib/typescript/src/components/OnboardingPages.d.ts.map +1 -1
  46. package/lib/typescript/src/components/Page.d.ts +2 -0
  47. package/lib/typescript/src/components/Page.d.ts.map +1 -1
  48. package/lib/typescript/src/components/Pagination.d.ts +9 -0
  49. package/lib/typescript/src/components/Pagination.d.ts.map +1 -1
  50. package/lib/typescript/src/components/Swiper.d.ts.map +1 -1
  51. package/lib/typescript/src/components/button.d.ts.map +1 -1
  52. package/lib/typescript/src/context/OnboardingContext.d.ts +9 -0
  53. package/lib/typescript/src/context/OnboardingContext.d.ts.map +1 -1
  54. package/lib/typescript/src/hooks/useOnboarding.d.ts +3 -0
  55. package/lib/typescript/src/hooks/useOnboarding.d.ts.map +1 -1
  56. package/lib/typescript/src/index.d.ts +4 -0
  57. package/lib/typescript/src/index.d.ts.map +1 -1
  58. package/lib/typescript/src/types/index.d.ts +13 -0
  59. package/lib/typescript/src/types/index.d.ts.map +1 -1
  60. package/lib/typescript/src/utils/persistence.d.ts +31 -0
  61. package/lib/typescript/src/utils/persistence.d.ts.map +1 -0
  62. package/package.json +25 -4
  63. package/src/components/CustomPages.tsx +63 -69
  64. package/src/components/OnboardingPages.tsx +79 -82
  65. package/src/components/Page.tsx +8 -2
  66. package/src/components/Pagination.tsx +121 -29
  67. package/src/components/Swiper.tsx +65 -87
  68. package/src/components/button.tsx +6 -1
  69. package/src/context/OnboardingContext.tsx +145 -26
  70. package/src/hooks/useOnboarding.tsx +1 -3
  71. package/src/index.tsx +16 -1
  72. package/src/types/index.ts +13 -0
  73. package/src/utils/persistence.ts +58 -0
@@ -3,7 +3,7 @@ import { OnboardingContext } from '../context/OnboardingContext';
3
3
  export const useOnboarding = () => {
4
4
  const context = React.useContext(OnboardingContext);
5
5
  if (!context) {
6
- throw new Error('useOnboardingContext must be used within an OnboardingProvider');
6
+ throw new Error('useOnboarding must be used within an OnboardingProvider');
7
7
  }
8
8
  return context;
9
9
  };
@@ -1 +1 @@
1
- {"version":3,"names":["React","OnboardingContext","useOnboarding","context","useContext","Error"],"sourceRoot":"../../../src","sources":["hooks/useOnboarding.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,iBAAiB,QAAQ,8BAA8B;AAEhE,OAAO,MAAMC,aAAa,GAAGA,CAAA,KAAM;EACjC,MAAMC,OAAO,GAAGH,KAAK,CAACI,UAAU,CAACH,iBAAiB,CAAC;EACnD,IAAI,CAACE,OAAO,EAAE;IACZ,MAAM,IAAIE,KAAK,CACb,gEACF,CAAC;EACH;EACA,OAAOF,OAAO;AAChB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","OnboardingContext","useOnboarding","context","useContext","Error"],"sourceRoot":"../../../src","sources":["hooks/useOnboarding.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,iBAAiB,QAAQ,8BAA8B;AAEhE,OAAO,MAAMC,aAAa,GAAGA,CAAA,KAAM;EACjC,MAAMC,OAAO,GAAGH,KAAK,CAACI,UAAU,CAACH,iBAAiB,CAAC;EACnD,IAAI,CAACE,OAAO,EAAE;IACZ,MAAM,IAAIE,KAAK,CAAC,yDAAyD,CAAC;EAC5E;EACA,OAAOF,OAAO;AAChB,CAAC","ignoreList":[]}
@@ -1,12 +1,19 @@
1
1
  import React from 'react';
2
- import { Swiper } from './components/Swiper';
2
+ import { Swiper } from './components';
3
3
  import { OnboardingProvider } from './context/OnboardingContext';
4
4
  export { useOnboarding } from './hooks/useOnboarding';
5
+ export { createOnboardingStorage, hasCompletedOnboarding, markOnboardingComplete, resetOnboarding } from './utils/persistence';
5
6
  export function Onboarding(props) {
6
7
  var _props$pages;
7
8
  const numberOfScreens = React.Children.count(props.children);
8
9
  return /*#__PURE__*/React.createElement(OnboardingProvider, {
10
+ width: props.width,
9
11
  scrollEnabled: props.scrollEnabled,
12
+ onPageChange: props.onPageChange,
13
+ scrollAnimationDuration: props.scrollAnimationDuration,
14
+ autoPlay: props.autoPlay,
15
+ autoPlayInterval: props.autoPlayInterval,
16
+ loop: props.loop,
10
17
  numberOfScreens: numberOfScreens || ((_props$pages = props.pages) === null || _props$pages === void 0 ? void 0 : _props$pages.length) || 0
11
18
  }, /*#__PURE__*/React.createElement(Swiper, props, props.children));
12
19
  }
@@ -1 +1 @@
1
- {"version":3,"names":["React","Swiper","OnboardingProvider","useOnboarding","Onboarding","props","_props$pages","numberOfScreens","Children","count","children","createElement","scrollEnabled","pages","length"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,kBAAkB,QAAQ,6BAA6B;AAGhE,SAASC,aAAa,QAAQ,uBAAuB;AAErD,OAAO,SAASC,UAAUA,CAACC,KAAsB,EAAE;EAAA,IAAAC,YAAA;EACjD,MAAMC,eAAe,GAAGP,KAAK,CAACQ,QAAQ,CAACC,KAAK,CAACJ,KAAK,CAACK,QAAQ,CAAC;EAC5D,oBACEV,KAAA,CAAAW,aAAA,CAACT,kBAAkB;IACjBU,aAAa,EAAEP,KAAK,CAACO,aAAc;IACnCL,eAAe,EAAEA,eAAe,MAAAD,YAAA,GAAID,KAAK,CAACQ,KAAK,cAAAP,YAAA,uBAAXA,YAAA,CAAaQ,MAAM,KAAI;EAAE,gBAE7Dd,KAAA,CAAAW,aAAA,CAACV,MAAM,EAAKI,KAAK,EAAGA,KAAK,CAACK,QAAiB,CACzB,CAAC;AAEzB","ignoreList":[]}
1
+ {"version":3,"names":["React","Swiper","OnboardingProvider","useOnboarding","createOnboardingStorage","hasCompletedOnboarding","markOnboardingComplete","resetOnboarding","Onboarding","props","_props$pages","numberOfScreens","Children","count","children","createElement","width","scrollEnabled","onPageChange","scrollAnimationDuration","autoPlay","autoPlayInterval","loop","pages","length"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,MAAM,QAAQ,cAAc;AACrC,SAASC,kBAAkB,QAAQ,6BAA6B;AAGhE,SAASC,aAAa,QAAQ,uBAAuB;AAGrD,SACEC,uBAAuB,EACvBC,sBAAsB,EACtBC,sBAAsB,EACtBC,eAAe,QACV,qBAAqB;AAG5B,OAAO,SAASC,UAAUA,CAACC,KAAsB,EAAE;EAAA,IAAAC,YAAA;EACjD,MAAMC,eAAe,GAAGX,KAAK,CAACY,QAAQ,CAACC,KAAK,CAACJ,KAAK,CAACK,QAAQ,CAAC;EAC5D,oBACEd,KAAA,CAAAe,aAAA,CAACb,kBAAkB;IACjBc,KAAK,EAAEP,KAAK,CAACO,KAAM;IACnBC,aAAa,EAAER,KAAK,CAACQ,aAAc;IACnCC,YAAY,EAAET,KAAK,CAACS,YAAa;IACjCC,uBAAuB,EAAEV,KAAK,CAACU,uBAAwB;IACvDC,QAAQ,EAAEX,KAAK,CAACW,QAAS;IACzBC,gBAAgB,EAAEZ,KAAK,CAACY,gBAAiB;IACzCC,IAAI,EAAEb,KAAK,CAACa,IAAK;IACjBX,eAAe,EAAEA,eAAe,MAAAD,YAAA,GAAID,KAAK,CAACc,KAAK,cAAAb,YAAA,uBAAXA,YAAA,CAAac,MAAM,KAAI;EAAE,gBAE7DxB,KAAA,CAAAe,aAAA,CAACd,MAAM,EAAKQ,KAAK,EAAGA,KAAK,CAACK,QAAiB,CACzB,CAAC;AAEzB","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Minimal AsyncStorage-compatible interface. Any storage that implements these
3
+ * three methods works (e.g. @react-native-async-storage/async-storage,
4
+ * expo-secure-store wrappers, or an in-memory mock in tests). Keeping the
5
+ * dependency injected means this library does not have to ship a storage peer
6
+ * dependency of its own.
7
+ */
8
+
9
+ const DEFAULT_KEY = '@react-native-app-onboard/completed';
10
+ const COMPLETED_VALUE = 'true';
11
+
12
+ /**
13
+ * Returns whether the user has previously completed onboarding stored under
14
+ * `key`. Defaults to a namespaced key so callers usually only pass the storage.
15
+ */
16
+ export async function hasCompletedOnboarding(storage, key = DEFAULT_KEY) {
17
+ const value = await storage.getItem(key);
18
+ return value === COMPLETED_VALUE;
19
+ }
20
+
21
+ /** Marks onboarding as completed so it can be skipped on subsequent launches. */
22
+ export async function markOnboardingComplete(storage, key = DEFAULT_KEY) {
23
+ await storage.setItem(key, COMPLETED_VALUE);
24
+ }
25
+
26
+ /** Clears the stored completion flag (useful for "replay onboarding" actions). */
27
+ export async function resetOnboarding(storage, key = DEFAULT_KEY) {
28
+ await storage.removeItem(key);
29
+ }
30
+
31
+ /**
32
+ * Convenience factory that binds a storage adapter (and optional key) once and
33
+ * returns ready-to-call helpers, so app code doesn't repeat the storage arg.
34
+ */
35
+ export function createOnboardingStorage(storage, key = DEFAULT_KEY) {
36
+ return {
37
+ hasCompleted: () => hasCompletedOnboarding(storage, key),
38
+ markComplete: () => markOnboardingComplete(storage, key),
39
+ reset: () => resetOnboarding(storage, key)
40
+ };
41
+ }
42
+ //# sourceMappingURL=persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_KEY","COMPLETED_VALUE","hasCompletedOnboarding","storage","key","value","getItem","markOnboardingComplete","setItem","resetOnboarding","removeItem","createOnboardingStorage","hasCompleted","markComplete","reset"],"sourceRoot":"../../../src","sources":["utils/persistence.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA,MAAMA,WAAW,GAAG,qCAAqC;AACzD,MAAMC,eAAe,GAAG,MAAM;;AAE9B;AACA;AACA;AACA;AACA,OAAO,eAAeC,sBAAsBA,CAC1CC,OAAiC,EACjCC,GAAW,GAAGJ,WAAW,EACP;EAClB,MAAMK,KAAK,GAAG,MAAMF,OAAO,CAACG,OAAO,CAACF,GAAG,CAAC;EACxC,OAAOC,KAAK,KAAKJ,eAAe;AAClC;;AAEA;AACA,OAAO,eAAeM,sBAAsBA,CAC1CJ,OAAiC,EACjCC,GAAW,GAAGJ,WAAW,EACV;EACf,MAAMG,OAAO,CAACK,OAAO,CAACJ,GAAG,EAAEH,eAAe,CAAC;AAC7C;;AAEA;AACA,OAAO,eAAeQ,eAAeA,CACnCN,OAAiC,EACjCC,GAAW,GAAGJ,WAAW,EACV;EACf,MAAMG,OAAO,CAACO,UAAU,CAACN,GAAG,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASO,uBAAuBA,CACrCR,OAAiC,EACjCC,GAAW,GAAGJ,WAAW,EACzB;EACA,OAAO;IACLY,YAAY,EAAEA,CAAA,KAAMV,sBAAsB,CAACC,OAAO,EAAEC,GAAG,CAAC;IACxDS,YAAY,EAAEA,CAAA,KAAMN,sBAAsB,CAACJ,OAAO,EAAEC,GAAG,CAAC;IACxDU,KAAK,EAAEA,CAAA,KAAML,eAAe,CAACN,OAAO,EAAEC,GAAG;EAC3C,CAAC;AACH","ignoreList":[]}
@@ -1,14 +1,18 @@
1
- import { Animated, FlatList } from 'react-native';
1
+ import { Animated, FlatList, type NativeSyntheticEvent, type NativeScrollEvent } from 'react-native';
2
2
  import React from 'react';
3
3
  import type { OnboardingProps } from '../types';
4
4
  type CustomPagesProps = OnboardingProps & {
5
5
  children?: React.ReactNode[];
6
6
  currentPage: number;
7
7
  setPage: (newPageIndex: number) => void;
8
- flatListRef: React.RefObject<FlatList>;
8
+ setFlatListRef: (node: FlatList | null) => void;
9
9
  scrollX: Animated.Value;
10
+ dotsAnimatedValue: Animated.Value;
11
+ onScroll: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
12
+ onScrollBeginDrag: () => void;
10
13
  nextPage: () => void;
11
14
  numberOfScreens: number;
15
+ mirror?: boolean;
12
16
  };
13
17
  export type SliderProps = {
14
18
  index?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"CustomPages.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomPages.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoB,QAAQ,EAAc,QAAQ,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAKhD,KAAK,gBAAgB,GAAG,eAAe,GAAG;IACxC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC;IACxB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,WAAW,2CAIrB,gBAAgB,sBAqHlB,CAAC"}
1
+ {"version":3,"file":"CustomPages.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomPages.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,QAAQ,EAER,QAAQ,EACR,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAKhD,KAAK,gBAAgB,GAAG,eAAe,GAAG;IACxC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,cAAc,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC;IACxB,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACnE,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IAGxB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,WAAW,2CAIrB,gBAAgB,sBAiGlB,CAAC"}
@@ -1,14 +1,18 @@
1
1
  import React from 'react';
2
- import { Animated, FlatList } from 'react-native';
2
+ import { Animated, FlatList, type NativeSyntheticEvent, type NativeScrollEvent } from 'react-native';
3
3
  import { type Page } from './Page';
4
4
  import type { OnboardingProps } from '../types';
5
5
  type Props = OnboardingProps & {
6
6
  pages: Page[];
7
7
  currentPage: number;
8
8
  setPage: (newPageIndex: number) => void;
9
- flatListRef: React.RefObject<FlatList>;
9
+ setFlatListRef: (node: FlatList | null) => void;
10
10
  scrollX: Animated.Value;
11
+ dotsAnimatedValue: Animated.Value;
12
+ onScroll: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
13
+ onScrollBeginDrag: () => void;
11
14
  nextPage: () => void;
15
+ mirror?: boolean;
12
16
  };
13
17
  export declare const OnboardingPages: ({ showPagination, showNext, ...props }: Props) => React.JSX.Element;
14
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"OnboardingPages.d.ts","sourceRoot":"","sources":["../../../../src/components/OnboardingPages.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAA0B,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE1E,OAAO,EAAkB,KAAK,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAKhD,KAAK,KAAK,GAAG,eAAe,GAAG;IAC7B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC;IACxB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,eAAe,2CAIzB,KAAK,sBAoJP,CAAC"}
1
+ {"version":3,"file":"OnboardingPages.d.ts","sourceRoot":"","sources":["../../../../src/components/OnboardingPages.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EACL,QAAQ,EAGR,QAAQ,EACR,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAkB,KAAK,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAKhD,KAAK,KAAK,GAAG,eAAe,GAAG;IAC7B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,cAAc,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC;IACxB,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACnE,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,eAAe,2CAIzB,KAAK,sBAmIP,CAAC"}
@@ -13,6 +13,8 @@ export type Page = {
13
13
  titleStyle?: StyleProp<TextStyle>;
14
14
  subtitleStyle?: StyleProp<TextStyle>;
15
15
  swap?: boolean;
16
+ /** Internal: counter-flips page content when the slider is mirrored for RTL. */
17
+ mirror?: boolean;
16
18
  };
17
19
  export declare function OnboardingPage(props: Page): React.JSX.Element;
18
20
  //# sourceMappingURL=Page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../../src/components/Page.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAKF,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,qBAuCzC"}
1
+ {"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../../src/components/Page.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gFAAgF;IAChF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAKF,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,qBAwCzC"}
@@ -9,9 +9,11 @@ type FooterProps = {
9
9
  showDone?: boolean;
10
10
  showSkip?: boolean;
11
11
  showNext?: boolean;
12
+ showPrevious?: boolean;
12
13
  nextLabel?: string | React.ReactNode;
13
14
  skipLabel?: string | React.ReactNode;
14
15
  doneLabel?: string | React.ReactNode;
16
+ previousLabel?: string | React.ReactNode;
15
17
  paginationContainerStyle?: StyleProp<ViewStyle>;
16
18
  buttonRightContainerStyle?: StyleProp<ViewStyle>;
17
19
  buttonLeftContainerStyle?: StyleProp<ViewStyle>;
@@ -19,11 +21,18 @@ type FooterProps = {
19
21
  doneLabelStyle?: StyleProp<TextStyle>;
20
22
  hasSkipPosition?: boolean;
21
23
  skipLabelStyle?: StyleProp<TextStyle>;
24
+ previousLabelStyle?: StyleProp<TextStyle>;
22
25
  skipButtonContainerStyle?: StyleProp<ViewStyle>;
23
26
  nextButtonContainerStyle?: StyleProp<ViewStyle>;
24
27
  doneButtonContainerStyle?: StyleProp<ViewStyle>;
28
+ previousButtonContainerStyle?: StyleProp<ViewStyle>;
25
29
  nextLabelStyle?: StyleProp<TextStyle>;
26
30
  paginationPosition?: 'top' | 'bottom';
31
+ paginationStyle?: 'dots' | 'progress';
32
+ progressBarStyle?: StyleProp<ViewStyle>;
33
+ progressBarFillStyle?: StyleProp<ViewStyle>;
34
+ dotsAreTappable?: boolean;
35
+ mirror?: boolean;
27
36
  onDone?: () => void;
28
37
  onSkip?: () => void;
29
38
  onNext?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../../src/components/Pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAER,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,KAAK,WAAW,GAAG;IACjB,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACrC,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,yBAAyB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjD,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,kBAAkB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,kBAAkB,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,qBA+E5C"}
1
+ {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../../src/components/Pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,QAAQ,EAER,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,KAAK,WAAW,GAAG;IACjB,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACzC,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,yBAAyB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjD,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,kBAAkB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,kBAAkB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,4BAA4B,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpD,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,kBAAkB,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IACtC,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACxC,oBAAoB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,qBAmJ5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Swiper.d.ts","sourceRoot":"","sources":["../../../../src/components/Swiper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAqG5C,CAAC"}
1
+ {"version":3,"file":"Swiper.d.ts","sourceRoot":"","sources":["../../../../src/components/Swiper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA0E5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../../src/components/button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,KAAK,WAAW,GAAG;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,eAAe,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,MAAM,UAAW,WAAW,wFAkBxC,CAAC;AAEF,eAAO,MAAM,UAAU,UACd,WAAW,GAAG;IACnB,QAAQ,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;CACrC,sBAiBF,CAAC"}
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../../src/components/button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,KAAK,WAAW,GAAG;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,eAAe,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,MAAM,UAAW,WAAW,wFAuBxC,CAAC;AAEF,eAAO,MAAM,UAAU,UACd,WAAW,GAAG;IACnB,QAAQ,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;CACrC,sBAiBF,CAAC"}
@@ -4,23 +4,32 @@ export type SliderProps = {
4
4
  currentPage: number;
5
5
  numberOfScreens: number;
6
6
  nextPage: (animated?: boolean) => void;
7
+ previousPage: (animated?: boolean) => void;
7
8
  scrollTo: (index: number, animated?: boolean) => void;
8
9
  };
9
10
  type OnboardingContextType = SliderProps & {
10
11
  setCurrentPage: (index: number) => void;
11
12
  flatListRef: React.RefObject<FlatList>;
13
+ setFlatListRef: (node: FlatList | null) => void;
12
14
  width?: number;
13
15
  numberOfScreens: number;
14
16
  progress: number;
15
17
  scrollEnabled?: boolean;
16
18
  enableScroll: React.Dispatch<React.SetStateAction<boolean | undefined>>;
17
19
  isDone: boolean;
20
+ pauseAutoPlay: () => void;
21
+ resumeAutoPlay: () => void;
18
22
  };
19
23
  type OnboardingProviderProps = {
20
24
  children: React.ReactNode;
21
25
  width?: number;
22
26
  numberOfScreens: number;
23
27
  scrollEnabled?: boolean;
28
+ onPageChange?: (index: number) => void;
29
+ scrollAnimationDuration?: number;
30
+ autoPlay?: boolean;
31
+ autoPlayInterval?: number;
32
+ loop?: boolean;
24
33
  };
25
34
  export declare const OnboardingContext: React.Context<OnboardingContextType | undefined>;
26
35
  export declare const OnboardingProvider: React.FC<OnboardingProviderProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"OnboardingContext.d.ts","sourceRoot":"","sources":["../../../../src/context/OnboardingContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACvD,CAAC;AAEF,KAAK,qBAAqB,GAAG,WAAW,GAAG;IACzC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;IACxE,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,kDAElB,CAAC;AAEb,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA8DhE,CAAC"}
1
+ {"version":3,"file":"OnboardingContext.d.ts","sourceRoot":"","sources":["../../../../src/context/OnboardingContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACvD,CAAC;AAEF,KAAK,qBAAqB,GAAG,WAAW,GAAG;IACzC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAKvC,cAAc,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;IACxE,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,iBAAiB,kDAElB,CAAC;AAEb,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmKhE,CAAC"}
@@ -2,11 +2,14 @@ import React from 'react';
2
2
  export declare const useOnboarding: () => import("../context/OnboardingContext").SliderProps & {
3
3
  setCurrentPage: (index: number) => void;
4
4
  flatListRef: React.RefObject<import("react-native").FlatList<any>>;
5
+ setFlatListRef: (node: import("react-native").FlatList<any> | null) => void;
5
6
  width?: number | undefined;
6
7
  numberOfScreens: number;
7
8
  progress: number;
8
9
  scrollEnabled?: boolean | undefined;
9
10
  enableScroll: React.Dispatch<React.SetStateAction<boolean | undefined>>;
10
11
  isDone: boolean;
12
+ pauseAutoPlay: () => void;
13
+ resumeAutoPlay: () => void;
11
14
  };
12
15
  //# sourceMappingURL=useOnboarding.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOnboarding.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useOnboarding.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,eAAO,MAAM,aAAa;;;;;;;;;CAQzB,CAAC"}
1
+ {"version":3,"file":"useOnboarding.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useOnboarding.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,eAAO,MAAM,aAAa;;;;;;;;;;;;CAMzB,CAAC"}
@@ -1,5 +1,9 @@
1
1
  import React from 'react';
2
2
  import type { OnboardingProps } from './types';
3
3
  export { useOnboarding } from './hooks/useOnboarding';
4
+ export type { Page } from './components/Page';
5
+ export type { OnboardingProps } from './types';
6
+ export { createOnboardingStorage, hasCompletedOnboarding, markOnboardingComplete, resetOnboarding, } from './utils/persistence';
7
+ export type { OnboardingStorageAdapter } from './utils/persistence';
4
8
  export declare function Onboarding(props: OnboardingProps): React.JSX.Element;
5
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,qBAUhD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,qBAgBhD"}
@@ -6,13 +6,19 @@ export type OnboardingProps = {
6
6
  nextLabel?: string | React.ReactNode;
7
7
  skipLabel?: string | React.ReactNode;
8
8
  doneLabel?: string | React.ReactNode;
9
+ previousLabel?: string | React.ReactNode;
9
10
  showSkip?: boolean;
10
11
  showNext?: boolean;
11
12
  showDone?: boolean;
13
+ showPrevious?: boolean;
12
14
  onDone?: () => void;
13
15
  onSkip?: () => void;
16
+ onPageChange?: (index: number) => void;
14
17
  showPagination?: boolean;
15
18
  scrollEnabled?: boolean;
19
+ autoPlay?: boolean;
20
+ autoPlayInterval?: number;
21
+ loop?: boolean;
16
22
  customFooter?: (props: {
17
23
  nextPage: () => void;
18
24
  }) => React.ReactNode;
@@ -22,9 +28,11 @@ export type OnboardingProps = {
22
28
  dotsContainerStyle?: StyleProp<ViewStyle>;
23
29
  doneLabelStyle?: StyleProp<TextStyle>;
24
30
  skipLabelStyle?: StyleProp<TextStyle>;
31
+ previousLabelStyle?: StyleProp<TextStyle>;
25
32
  skipButtonContainerStyle?: StyleProp<ViewStyle>;
26
33
  nextButtonContainerStyle?: StyleProp<ViewStyle>;
27
34
  doneButtonContainerStyle?: StyleProp<ViewStyle>;
35
+ previousButtonContainerStyle?: StyleProp<ViewStyle>;
28
36
  skipButtonPosition?: 'top-left' | 'top-right';
29
37
  nextLabelStyle?: StyleProp<TextStyle>;
30
38
  containerStyle?: StyleProp<ViewStyle>;
@@ -33,8 +41,13 @@ export type OnboardingProps = {
33
41
  titleStyle?: StyleProp<TextStyle>;
34
42
  subtitleStyle?: StyleProp<TextStyle>;
35
43
  paginationPosition?: 'top' | 'bottom';
44
+ paginationStyle?: 'dots' | 'progress';
45
+ progressBarStyle?: StyleProp<ViewStyle>;
46
+ progressBarFillStyle?: StyleProp<ViewStyle>;
47
+ dotsAreTappable?: boolean;
36
48
  scrollAnimationDuration?: number;
37
49
  useNativeDriver?: boolean;
50
+ rtl?: boolean;
38
51
  width?: number;
39
52
  color?: string;
40
53
  pages?: Page[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC;IACpE,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,yBAAyB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjD,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,kBAAkB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAChD,kBAAkB,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;IAC9C,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,kBAAkB,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IACtC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,CACA;IACE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;CAC9B,GACD;IAAE,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CACpB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Minimal AsyncStorage-compatible interface. Any storage that implements these
3
+ * three methods works (e.g. @react-native-async-storage/async-storage,
4
+ * expo-secure-store wrappers, or an in-memory mock in tests). Keeping the
5
+ * dependency injected means this library does not have to ship a storage peer
6
+ * dependency of its own.
7
+ */
8
+ export type OnboardingStorageAdapter = {
9
+ getItem: (key: string) => Promise<string | null>;
10
+ setItem: (key: string, value: string) => Promise<void>;
11
+ removeItem: (key: string) => Promise<void>;
12
+ };
13
+ /**
14
+ * Returns whether the user has previously completed onboarding stored under
15
+ * `key`. Defaults to a namespaced key so callers usually only pass the storage.
16
+ */
17
+ export declare function hasCompletedOnboarding(storage: OnboardingStorageAdapter, key?: string): Promise<boolean>;
18
+ /** Marks onboarding as completed so it can be skipped on subsequent launches. */
19
+ export declare function markOnboardingComplete(storage: OnboardingStorageAdapter, key?: string): Promise<void>;
20
+ /** Clears the stored completion flag (useful for "replay onboarding" actions). */
21
+ export declare function resetOnboarding(storage: OnboardingStorageAdapter, key?: string): Promise<void>;
22
+ /**
23
+ * Convenience factory that binds a storage adapter (and optional key) once and
24
+ * returns ready-to-call helpers, so app code doesn't repeat the storage arg.
25
+ */
26
+ export declare function createOnboardingStorage(storage: OnboardingStorageAdapter, key?: string): {
27
+ hasCompleted: () => Promise<boolean>;
28
+ markComplete: () => Promise<void>;
29
+ reset: () => Promise<void>;
30
+ };
31
+ //# sourceMappingURL=persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../../src/utils/persistence.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C,CAAC;AAKF;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,wBAAwB,EACjC,GAAG,GAAE,MAAoB,GACxB,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED,iFAAiF;AACjF,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,wBAAwB,EACjC,GAAG,GAAE,MAAoB,GACxB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,kFAAkF;AAClF,wBAAsB,eAAe,CACnC,OAAO,EAAE,wBAAwB,EACjC,GAAG,GAAE,MAAoB,GACxB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,wBAAwB,EACjC,GAAG,GAAE,MAAoB;;;;EAO1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-app-onboard",
3
- "version": "0.1.8",
3
+ "version": "0.2.0",
4
4
  "description": "React Native App Onboard is a customizable, easy-to-use, and efficient library for creating compelling onboarding experiences for your React Native applications. It provides smooth, fluid transitions and animations, with a focus on simplicity and usability.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -26,7 +26,7 @@
26
26
  "!**/.*"
27
27
  ],
28
28
  "scripts": {
29
- "example": "yarn workspace react-native-app-onboard-example",
29
+ "example": "yarn workspace react-native-app-onboard-example start",
30
30
  "test": "jest",
31
31
  "typecheck": "tsc --noEmit",
32
32
  "lint": "eslint \"**/*.{js,ts,tsx}\"",
@@ -37,7 +37,18 @@
37
37
  "keywords": [
38
38
  "react-native",
39
39
  "ios",
40
- "android"
40
+ "android",
41
+ "React",
42
+ "Native",
43
+ "React-Native",
44
+ "Component",
45
+ "Onboarding",
46
+ "Tutorial",
47
+ "Intro",
48
+ "Swiper",
49
+ "Welcome",
50
+ "Introduction",
51
+ "Instructions"
41
52
  ],
42
53
  "repository": {
43
54
  "type": "git",
@@ -55,11 +66,14 @@
55
66
  "devDependencies": {
56
67
  "@commitlint/config-conventional": "^17.0.2",
57
68
  "@evilmartians/lefthook": "^1.5.0",
69
+ "@react-native/babel-preset": "0.74.84",
58
70
  "@react-native/eslint-config": "^0.73.1",
59
71
  "@release-it/conventional-changelog": "^5.0.0",
60
72
  "@types/jest": "^29.5.5",
61
73
  "@types/react": "^18.2.44",
74
+ "@types/react-test-renderer": "^18.0.0",
62
75
  "@types/tinycolor2": "^1.4.6",
76
+ "@typescript/native-preview": "^7.0.0-dev.20260606.1",
63
77
  "commitlint": "^17.0.2",
64
78
  "del-cli": "^5.1.0",
65
79
  "eslint": "^8.51.0",
@@ -70,6 +84,7 @@
70
84
  "react": "18.2.0",
71
85
  "react-native": "0.74.2",
72
86
  "react-native-builder-bob": "^0.20.0",
87
+ "react-test-renderer": "18.2.0",
73
88
  "release-it": "^15.0.0",
74
89
  "typescript": "^5.2.2"
75
90
  },
@@ -83,6 +98,9 @@
83
98
  "packageManager": "yarn@3.6.1",
84
99
  "jest": {
85
100
  "preset": "react-native",
101
+ "moduleNameMapper": {
102
+ "^react-native-app-onboard$": "<rootDir>/src/index"
103
+ },
86
104
  "modulePathIgnorePatterns": [
87
105
  "<rootDir>/example/node_modules",
88
106
  "<rootDir>/lib/"
@@ -156,5 +174,8 @@
156
174
  },
157
175
  "dependencies": {
158
176
  "tinycolor2": "^1.6.0"
159
- }
177
+ },
178
+ "workspaces": [
179
+ "example"
180
+ ]
160
181
  }