one 1.2.6 → 1.2.8

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 (142) hide show
  1. package/dist/cjs/ui/Slot.cjs +42 -0
  2. package/dist/cjs/ui/Slot.js +27 -0
  3. package/dist/cjs/ui/Slot.js.map +6 -0
  4. package/dist/cjs/ui/Slot.native.js +48 -0
  5. package/dist/cjs/ui/Slot.native.js.map +1 -0
  6. package/dist/cjs/ui/TabContext.cjs +44 -0
  7. package/dist/cjs/ui/TabContext.js +35 -0
  8. package/dist/cjs/ui/TabContext.js.map +6 -0
  9. package/dist/cjs/ui/TabContext.native.js +47 -0
  10. package/dist/cjs/ui/TabContext.native.js.map +1 -0
  11. package/dist/cjs/ui/TabList.cjs +52 -0
  12. package/dist/cjs/ui/TabList.js +38 -0
  13. package/dist/cjs/ui/TabList.js.map +6 -0
  14. package/dist/cjs/ui/TabList.native.js +57 -0
  15. package/dist/cjs/ui/TabList.native.js.map +1 -0
  16. package/dist/cjs/ui/TabRouter.cjs +47 -0
  17. package/dist/cjs/ui/TabRouter.js +41 -0
  18. package/dist/cjs/ui/TabRouter.js.map +6 -0
  19. package/dist/cjs/ui/TabRouter.native.js +57 -0
  20. package/dist/cjs/ui/TabRouter.native.js.map +1 -0
  21. package/dist/cjs/ui/TabSlot.cjs +115 -0
  22. package/dist/cjs/ui/TabSlot.js +91 -0
  23. package/dist/cjs/ui/TabSlot.js.map +6 -0
  24. package/dist/cjs/ui/TabSlot.native.js +120 -0
  25. package/dist/cjs/ui/TabSlot.native.js.map +1 -0
  26. package/dist/cjs/ui/TabTrigger.cjs +151 -0
  27. package/dist/cjs/ui/TabTrigger.js +120 -0
  28. package/dist/cjs/ui/TabTrigger.js.map +6 -0
  29. package/dist/cjs/ui/TabTrigger.native.js +153 -0
  30. package/dist/cjs/ui/TabTrigger.native.js.map +1 -0
  31. package/dist/cjs/ui/Tabs.cjs +175 -0
  32. package/dist/cjs/ui/Tabs.js +121 -0
  33. package/dist/cjs/ui/Tabs.js.map +6 -0
  34. package/dist/cjs/ui/Tabs.native.js +191 -0
  35. package/dist/cjs/ui/Tabs.native.js.map +1 -0
  36. package/dist/cjs/ui/common.cjs +160 -0
  37. package/dist/cjs/ui/common.js +146 -0
  38. package/dist/cjs/ui/common.js.map +6 -0
  39. package/dist/cjs/ui/common.native.js +223 -0
  40. package/dist/cjs/ui/common.native.js.map +1 -0
  41. package/dist/cjs/ui/index.cjs +18 -0
  42. package/dist/cjs/ui/index.js +15 -0
  43. package/dist/cjs/ui/index.js.map +6 -0
  44. package/dist/cjs/ui/index.native.js +21 -0
  45. package/dist/cjs/ui/index.native.js.map +1 -0
  46. package/dist/cjs/ui/useComponent.cjs +46 -0
  47. package/dist/cjs/ui/useComponent.js +37 -0
  48. package/dist/cjs/ui/useComponent.js.map +6 -0
  49. package/dist/cjs/ui/useComponent.native.js +53 -0
  50. package/dist/cjs/ui/useComponent.native.js.map +1 -0
  51. package/dist/esm/ui/Slot.js +17 -0
  52. package/dist/esm/ui/Slot.js.map +6 -0
  53. package/dist/esm/ui/Slot.mjs +19 -0
  54. package/dist/esm/ui/Slot.mjs.map +1 -0
  55. package/dist/esm/ui/Slot.native.js +22 -0
  56. package/dist/esm/ui/Slot.native.js.map +1 -0
  57. package/dist/esm/ui/TabContext.js +19 -0
  58. package/dist/esm/ui/TabContext.js.map +6 -0
  59. package/dist/esm/ui/TabContext.mjs +17 -0
  60. package/dist/esm/ui/TabContext.mjs.map +1 -0
  61. package/dist/esm/ui/TabContext.native.js +17 -0
  62. package/dist/esm/ui/TabContext.native.js.map +1 -0
  63. package/dist/esm/ui/TabList.js +24 -0
  64. package/dist/esm/ui/TabList.js.map +6 -0
  65. package/dist/esm/ui/TabList.mjs +28 -0
  66. package/dist/esm/ui/TabList.mjs.map +1 -0
  67. package/dist/esm/ui/TabList.native.js +30 -0
  68. package/dist/esm/ui/TabList.native.js.map +1 -0
  69. package/dist/esm/ui/TabRouter.js +27 -0
  70. package/dist/esm/ui/TabRouter.js.map +6 -0
  71. package/dist/esm/ui/TabRouter.mjs +24 -0
  72. package/dist/esm/ui/TabRouter.mjs.map +1 -0
  73. package/dist/esm/ui/TabRouter.native.js +31 -0
  74. package/dist/esm/ui/TabRouter.native.js.map +1 -0
  75. package/dist/esm/ui/TabSlot.js +80 -0
  76. package/dist/esm/ui/TabSlot.js.map +6 -0
  77. package/dist/esm/ui/TabSlot.mjs +89 -0
  78. package/dist/esm/ui/TabSlot.mjs.map +1 -0
  79. package/dist/esm/ui/TabSlot.native.js +91 -0
  80. package/dist/esm/ui/TabSlot.native.js.map +1 -0
  81. package/dist/esm/ui/TabTrigger.js +115 -0
  82. package/dist/esm/ui/TabTrigger.js.map +6 -0
  83. package/dist/esm/ui/TabTrigger.mjs +126 -0
  84. package/dist/esm/ui/TabTrigger.mjs.map +1 -0
  85. package/dist/esm/ui/TabTrigger.native.js +125 -0
  86. package/dist/esm/ui/TabTrigger.native.js.map +1 -0
  87. package/dist/esm/ui/Tabs.js +130 -0
  88. package/dist/esm/ui/Tabs.js.map +6 -0
  89. package/dist/esm/ui/Tabs.mjs +149 -0
  90. package/dist/esm/ui/Tabs.mjs.map +1 -0
  91. package/dist/esm/ui/Tabs.native.js +162 -0
  92. package/dist/esm/ui/Tabs.native.js.map +1 -0
  93. package/dist/esm/ui/common.js +133 -0
  94. package/dist/esm/ui/common.js.map +6 -0
  95. package/dist/esm/ui/common.mjs +135 -0
  96. package/dist/esm/ui/common.mjs.map +1 -0
  97. package/dist/esm/ui/common.native.js +195 -0
  98. package/dist/esm/ui/common.native.js.map +1 -0
  99. package/dist/esm/ui/index.js +2 -0
  100. package/dist/esm/ui/index.js.map +6 -0
  101. package/dist/esm/ui/index.mjs +2 -0
  102. package/dist/esm/ui/index.mjs.map +1 -0
  103. package/dist/esm/ui/index.native.js +2 -0
  104. package/dist/esm/ui/index.native.js.map +1 -0
  105. package/dist/esm/ui/useComponent.js +22 -0
  106. package/dist/esm/ui/useComponent.js.map +6 -0
  107. package/dist/esm/ui/useComponent.mjs +23 -0
  108. package/dist/esm/ui/useComponent.mjs.map +1 -0
  109. package/dist/esm/ui/useComponent.native.js +27 -0
  110. package/dist/esm/ui/useComponent.native.js.map +1 -0
  111. package/package.json +18 -9
  112. package/src/ui/README.md +121 -0
  113. package/src/ui/Slot.tsx +34 -0
  114. package/src/ui/TabContext.tsx +115 -0
  115. package/src/ui/TabList.tsx +47 -0
  116. package/src/ui/TabRouter.tsx +79 -0
  117. package/src/ui/TabSlot.tsx +170 -0
  118. package/src/ui/TabTrigger.tsx +282 -0
  119. package/src/ui/Tabs.tsx +313 -0
  120. package/src/ui/common.tsx +277 -0
  121. package/src/ui/index.ts +1 -0
  122. package/src/ui/useComponent.tsx +42 -0
  123. package/types/ui/Slot.d.ts +6 -0
  124. package/types/ui/Slot.d.ts.map +1 -0
  125. package/types/ui/TabContext.d.ts +190 -0
  126. package/types/ui/TabContext.d.ts.map +1 -0
  127. package/types/ui/TabList.d.ts +25 -0
  128. package/types/ui/TabList.d.ts.map +1 -0
  129. package/types/ui/TabRouter.d.ts +103 -0
  130. package/types/ui/TabRouter.d.ts.map +1 -0
  131. package/types/ui/TabSlot.d.ts +73 -0
  132. package/types/ui/TabSlot.d.ts.map +1 -0
  133. package/types/ui/TabTrigger.d.ts +88 -0
  134. package/types/ui/TabTrigger.d.ts.map +1 -0
  135. package/types/ui/Tabs.d.ts +255 -0
  136. package/types/ui/Tabs.d.ts.map +1 -0
  137. package/types/ui/common.d.ts +40 -0
  138. package/types/ui/common.d.ts.map +1 -0
  139. package/types/ui/index.d.ts +2 -0
  140. package/types/ui/index.d.ts.map +1 -0
  141. package/types/ui/useComponent.d.ts +10 -0
  142. package/types/ui/useComponent.d.ts.map +1 -0
@@ -0,0 +1,73 @@
1
+ import { type ComponentProps, type ReactElement } from 'react';
2
+ import { ScreenContainer } from 'react-native-screens';
3
+ import { type TabsDescriptor } from './TabContext';
4
+ import type { TabListProps } from './TabList';
5
+ export type TabSlotProps = ComponentProps<typeof ScreenContainer> & {
6
+ /**
7
+ * Remove inactive screens.
8
+ */
9
+ detachInactiveScreens?: boolean;
10
+ /**
11
+ * Override how the `Screen` component is rendered.
12
+ */
13
+ renderFn?: typeof defaultTabsSlotRender;
14
+ };
15
+ /**
16
+ * Options provided to the `UseTabSlotOptions`.
17
+ */
18
+ export type TabsSlotRenderOptions = {
19
+ /**
20
+ * Index of screen.
21
+ */
22
+ index: number;
23
+ /**
24
+ * Whether the screen is focused.
25
+ */
26
+ isFocused: boolean;
27
+ /**
28
+ * Whether the screen has been loaded.
29
+ */
30
+ loaded: boolean;
31
+ /**
32
+ * Should the screen be unloaded when inactive.
33
+ */
34
+ detachInactiveScreens: boolean;
35
+ };
36
+ /**
37
+ * Returns a `ReactElement` of the current tab.
38
+ *
39
+ * @example
40
+ * ```tsx
41
+ * function MyTabSlot() {
42
+ * const slot = useTabSlot();
43
+ *
44
+ * return slot;
45
+ * }
46
+ * ```
47
+ */
48
+ export declare function useTabSlot({ detachInactiveScreens, style, renderFn, }?: TabSlotProps): import("react/jsx-runtime").JSX.Element;
49
+ /**
50
+ * Renders the current tab.
51
+ *
52
+ * @see [`useTabSlot`](#usetabslot) for a hook version of this component.
53
+ *
54
+ * @example
55
+ * ```tsx
56
+ * <Tabs>
57
+ * <TabSlot />
58
+ * <TabList>
59
+ * <TabTrigger name="home" href="/" />
60
+ * </TabList>
61
+ * </Tabs>
62
+ * ```
63
+ */
64
+ export declare function TabSlot(props: TabSlotProps): import("react/jsx-runtime").JSX.Element;
65
+ /**
66
+ * @hidden
67
+ */
68
+ export declare function defaultTabsSlotRender(descriptor: TabsDescriptor, { isFocused, loaded, detachInactiveScreens }: TabsSlotRenderOptions): import("react/jsx-runtime").JSX.Element | null;
69
+ /**
70
+ * @hidden
71
+ */
72
+ export declare function isTabSlot(child: ReactElement<any>): child is ReactElement<TabListProps>;
73
+ //# sourceMappingURL=TabSlot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabSlot.d.ts","sourceRoot":"","sources":["../../src/ui/TabSlot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAY,MAAM,OAAO,CAAA;AAExE,OAAO,EAAE,eAAe,EAAU,MAAM,sBAAsB,CAAA;AAE9D,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAG7C,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,eAAe,CAAC,GAAG;IAClE;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,qBAAqB,CAAA;CACxC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,qBAAqB,EAAE,OAAO,CAAA;CAC/B,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,EACzB,qBAAuE,EACvE,KAAK,EACL,QAAgC,GACjC,GAAE,YAAiB,2CA+BnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,2CAE1C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,EAC1B,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE,EAAE,qBAAqB,kDAwBpE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,YAAY,CAAC,YAAY,CAAC,CAEvF"}
@@ -0,0 +1,88 @@
1
+ import type { TabNavigationState } from '@react-navigation/native';
2
+ import { type ReactNode, type ReactElement, type ComponentProps } from 'react';
3
+ import { type View, type PressableProps } from 'react-native';
4
+ import type { TriggerMap } from './common';
5
+ import type { OneRouter } from '../interfaces/router';
6
+ type PressablePropsWithoutFunctionChildren = Omit<PressableProps, 'children'> & {
7
+ children?: ReactNode | undefined;
8
+ };
9
+ export type TabTriggerProps = PressablePropsWithoutFunctionChildren & {
10
+ /**
11
+ * Name of tab. When used within a `TabList` this sets the name of the tab.
12
+ * Otherwise, this references the name.
13
+ */
14
+ name: string;
15
+ /**
16
+ * Name of tab. Required when used within a `TabList`.
17
+ */
18
+ href?: OneRouter.Href;
19
+ /**
20
+ * Forward props to child component. Useful for custom wrappers.
21
+ */
22
+ asChild?: boolean;
23
+ /**
24
+ * Resets the route when switching to a tab.
25
+ */
26
+ resetOnFocus?: boolean;
27
+ };
28
+ export type TabTriggerOptions = {
29
+ name: string;
30
+ href: OneRouter.Href;
31
+ };
32
+ export type TabTriggerSlotProps = PressablePropsWithoutFunctionChildren & React.RefAttributes<View> & {
33
+ isFocused?: boolean;
34
+ href?: string;
35
+ };
36
+ /**
37
+ * Creates a trigger to navigate to a tab. When used as child of `TabList`, its
38
+ * functionality slightly changes since the `href` prop is required,
39
+ * and the trigger also defines what routes are present in the `Tabs`.
40
+ *
41
+ * When used outside of `TabList`, this component no longer requires an `href`.
42
+ *
43
+ * @example
44
+ * ```tsx
45
+ * <Tabs>
46
+ * <TabSlot />
47
+ * <TabList>
48
+ * <TabTrigger name="home" href="/" />
49
+ * </TabList>
50
+ * </Tabs>
51
+ * ```
52
+ */
53
+ export declare function TabTrigger({ asChild, name, href, resetOnFocus, ...props }: TabTriggerProps): import("react/jsx-runtime").JSX.Element;
54
+ /**
55
+ * @hidden
56
+ */
57
+ export declare function isTabTrigger(child: ReactElement<any>): child is ReactElement<ComponentProps<typeof TabTrigger>>;
58
+ /**
59
+ * Options for `switchTab` function.
60
+ */
61
+ export type SwitchToOptions = {
62
+ /**
63
+ * Navigate and reset the history on route focus.
64
+ */
65
+ resetOnFocus?: boolean;
66
+ };
67
+ export type Trigger = TriggerMap[string] & {
68
+ isFocused: boolean;
69
+ resolvedHref: string;
70
+ route: TabNavigationState<any>['routes'][number];
71
+ };
72
+ export type UseTabTriggerResult = {
73
+ switchTab: (name: string, options: SwitchToOptions) => void;
74
+ getTrigger: (name: string) => Trigger | undefined;
75
+ trigger?: Trigger;
76
+ triggerProps: TriggerProps;
77
+ };
78
+ export type TriggerProps = {
79
+ isFocused: boolean;
80
+ onPress: PressableProps['onPress'];
81
+ onLongPress: PressableProps['onLongPress'];
82
+ };
83
+ /**
84
+ * Utility hook creating custom `TabTrigger`.
85
+ */
86
+ export declare function useTabTrigger(options: TabTriggerProps): UseTabTriggerResult;
87
+ export {};
88
+ //# sourceMappingURL=TabTrigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabTrigger.d.ts","sourceRoot":"","sources":["../../src/ui/TabTrigger.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EAAE,KAAK,SAAS,EAAO,KAAK,YAAY,EAAE,KAAK,cAAc,EAAe,MAAM,OAAO,CAAA;AAChG,OAAO,EACL,KAAK,IAAI,EAGT,KAAK,cAAc,EAEpB,MAAM,cAAc,CAAA;AAGrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAI1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAGrD,KAAK,qCAAqC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,GAAG;IAC9E,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,qCAAqC,GAAG;IACpE;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAA;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,SAAS,CAAC,IAAI,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,qCAAqC,GACrE,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AA4BH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,2CA6B1F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,GACvB,KAAK,IAAI,YAAY,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,CAAC,CAE1D;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG;IACzC,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAA;CACjD,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,KAAK,IAAI,CAAA;IAC3D,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAA;IACjD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,YAAY,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IAClC,WAAW,EAAE,cAAc,CAAC,aAAa,CAAC,CAAA;CAC3C,CAAA;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,mBAAmB,CAyG3E"}
@@ -0,0 +1,255 @@
1
+ import { type DefaultNavigatorOptions, type ParamListBase, type TabActionHelpers, type TabNavigationState, type TabRouterOptions } from '@react-navigation/native';
2
+ import { type PropsWithChildren } from 'react';
3
+ import { type ViewProps } from 'react-native';
4
+ import { type ExpoTabsScreenOptions, type TabNavigationEventMap, type TabsContextValue } from './TabContext';
5
+ import { type ScreenTrigger } from './common';
6
+ export * from './TabContext';
7
+ export * from './TabList';
8
+ export * from './TabSlot';
9
+ export * from './TabTrigger';
10
+ /**
11
+ * Options to provide to the Tab Router.
12
+ */
13
+ export type UseTabsOptions = Omit<DefaultNavigatorOptions<ParamListBase, any, TabNavigationState<any>, ExpoTabsScreenOptions, TabNavigationEventMap, any>, 'children'> & {
14
+ backBehavior?: TabRouterOptions['backBehavior'];
15
+ };
16
+ export type TabsProps = ViewProps & {
17
+ /** Forward props to child component and removes the extra `<View>`. Useful for custom wrappers. */
18
+ asChild?: boolean;
19
+ options?: UseTabsOptions;
20
+ };
21
+ /**
22
+ * Root component for the headless tabs.
23
+ *
24
+ * @see [`useTabsWithChildren`](#usetabswithchildrenoptions) for a hook version of this component.
25
+ * @example
26
+ * ```tsx
27
+ * <Tabs>
28
+ * <TabSlot />
29
+ * <TabList>
30
+ * <TabTrigger name="home" href="/" />
31
+ * </TabList>
32
+ * </Tabs>
33
+ * ```
34
+ */
35
+ export declare function Tabs(props: TabsProps): import("react/jsx-runtime").JSX.Element;
36
+ export type UseTabsWithChildrenOptions = PropsWithChildren<UseTabsOptions>;
37
+ export type UseTabsWithTriggersOptions = UseTabsOptions & {
38
+ triggers: ScreenTrigger[];
39
+ };
40
+ /**
41
+ * Hook version of `Tabs`. The returned NavigationContent component
42
+ * should be rendered. Using the hook requires using the `<TabList />`
43
+ * and `<TabTrigger />` components exported from One.
44
+ *
45
+ * The `useTabsWithTriggers()` hook can be used for custom components.
46
+ *
47
+ * @see [`Tabs`](#tabs) for the component version of this hook.
48
+ * @example
49
+ * ```tsx
50
+ * export function MyTabs({ children }) {
51
+ * const { NavigationContent } = useTabsWithChildren({ children })
52
+ *
53
+ * return <NavigationContent />
54
+ * }
55
+ * ```
56
+ */
57
+ export declare function useTabsWithChildren(options: UseTabsWithChildrenOptions): {
58
+ state: TabNavigationState<any>;
59
+ navigation: {
60
+ dispatch(action: Readonly<{
61
+ type: string;
62
+ payload?: object;
63
+ source?: string;
64
+ target?: string;
65
+ }> | ((state: Readonly<Readonly<{
66
+ key: string;
67
+ index: number;
68
+ routeNames: string[];
69
+ history?: unknown[];
70
+ routes: import("@react-navigation/routers").NavigationRoute<ParamListBase, string>[];
71
+ type: string;
72
+ stale: false;
73
+ }>>) => Readonly<{
74
+ type: string;
75
+ payload?: object;
76
+ source?: string;
77
+ target?: string;
78
+ }>)): void;
79
+ navigate<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName, params?: object | undefined, options?: {
80
+ merge?: boolean;
81
+ pop?: boolean;
82
+ } | undefined] : never): void;
83
+ navigate<RouteName extends string>(options: RouteName extends unknown ? {
84
+ name: RouteName;
85
+ params: object | undefined;
86
+ path?: string;
87
+ merge?: boolean;
88
+ pop?: boolean;
89
+ } : never): void;
90
+ navigateDeprecated<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName, params?: object | undefined] : never): void;
91
+ navigateDeprecated<RouteName extends string>(options: RouteName extends unknown ? {
92
+ name: RouteName;
93
+ params: object | undefined;
94
+ merge?: boolean;
95
+ } : never): void;
96
+ preload<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName, params?: object | undefined] : never): void;
97
+ reset(state: Readonly<{
98
+ key: string;
99
+ index: number;
100
+ routeNames: string[];
101
+ history?: unknown[];
102
+ routes: import("@react-navigation/routers").NavigationRoute<ParamListBase, string>[];
103
+ type: string;
104
+ stale: false;
105
+ }> | import("@react-navigation/routers").PartialState<Readonly<{
106
+ key: string;
107
+ index: number;
108
+ routeNames: string[];
109
+ history?: unknown[];
110
+ routes: import("@react-navigation/routers").NavigationRoute<ParamListBase, string>[];
111
+ type: string;
112
+ stale: false;
113
+ }>>): void;
114
+ goBack(): void;
115
+ isFocused(): boolean;
116
+ canGoBack(): boolean;
117
+ getId(): string | undefined;
118
+ getParent<T = import("@react-navigation/core").NavigationHelpers<ParamListBase, {}> | undefined>(id?: string): T;
119
+ getState(): Readonly<{
120
+ key: string;
121
+ index: number;
122
+ routeNames: string[];
123
+ history?: unknown[];
124
+ routes: import("@react-navigation/routers").NavigationRoute<ParamListBase, string>[];
125
+ type: string;
126
+ stale: false;
127
+ }>;
128
+ } & import("@react-navigation/core").PrivateValueStore<[ParamListBase, unknown, unknown]> & import("@react-navigation/core").EventEmitter<TabNavigationEventMap> & {
129
+ setParams(params: Partial<object | undefined>): void;
130
+ replaceParams(params: object | undefined): void;
131
+ } & TabActionHelpers<ParamListBase>;
132
+ describe: (route: import("@react-navigation/core").RouteProp<ParamListBase>, placeholder: boolean) => import("@react-navigation/core").Descriptor<import("./TabContext").ExpoTabsNavigatorScreenOptions, Omit<{
133
+ dispatch(action: Readonly<{
134
+ type: string;
135
+ payload?: object;
136
+ source?: string;
137
+ target?: string;
138
+ }> | ((state: Readonly<TabNavigationState<any>>) => Readonly<{
139
+ type: string;
140
+ payload?: object;
141
+ source?: string;
142
+ target?: string;
143
+ }>)): void;
144
+ navigate<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName, params?: object | undefined, options?: {
145
+ merge?: boolean;
146
+ pop?: boolean;
147
+ } | undefined] : never): void;
148
+ navigate<RouteName extends string>(options: RouteName extends unknown ? {
149
+ name: RouteName;
150
+ params: object | undefined;
151
+ path?: string;
152
+ merge?: boolean;
153
+ pop?: boolean;
154
+ } : never): void;
155
+ navigateDeprecated<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName, params?: object | undefined] : never): void;
156
+ navigateDeprecated<RouteName extends string>(options: RouteName extends unknown ? {
157
+ name: RouteName;
158
+ params: object | undefined;
159
+ merge?: boolean;
160
+ } : never): void;
161
+ preload<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName, params?: object | undefined] : never): void;
162
+ reset(state: TabNavigationState<any> | import("@react-navigation/routers").PartialState<TabNavigationState<any>>): void;
163
+ goBack(): void;
164
+ isFocused(): boolean;
165
+ canGoBack(): boolean;
166
+ getId(): string | undefined;
167
+ getParent<T = import("@react-navigation/core").NavigationHelpers<ParamListBase, {}> | undefined>(id?: string): T;
168
+ getState(): TabNavigationState<any>;
169
+ } & import("@react-navigation/core").PrivateValueStore<[ParamListBase, unknown, unknown]>, "getParent"> & {
170
+ getParent<T = import("@react-navigation/core").NavigationProp<ParamListBase, string, undefined, Readonly<{
171
+ key: string;
172
+ index: number;
173
+ routeNames: string[];
174
+ history?: unknown[];
175
+ routes: import("@react-navigation/routers").NavigationRoute<ParamListBase, string>[];
176
+ type: string;
177
+ stale: false;
178
+ }>, {}, {}> | undefined>(id?: string | undefined): T;
179
+ setOptions(options: Partial<import("./TabContext").ExpoTabsNavigatorScreenOptions>): void;
180
+ } & {
181
+ setParams(params: Partial<object | undefined>): void;
182
+ replaceParams(params: object | undefined): void;
183
+ } & import("@react-navigation/core").EventConsumer<TabNavigationEventMap & import("@react-navigation/core").EventMapCore<TabNavigationState<any>>> & import("@react-navigation/core").PrivateValueStore<[ParamListBase, string, TabNavigationEventMap]> & TabActionHelpers<ParamListBase>, import("@react-navigation/core").RouteProp<ParamListBase, string>>;
184
+ descriptors: Record<string, import("@react-navigation/core").Descriptor<import("./TabContext").ExpoTabsNavigatorScreenOptions, Omit<{
185
+ dispatch(action: Readonly<{
186
+ type: string;
187
+ payload?: object;
188
+ source?: string;
189
+ target?: string;
190
+ }> | ((state: Readonly<TabNavigationState<any>>) => Readonly<{
191
+ type: string;
192
+ payload?: object;
193
+ source?: string;
194
+ target?: string;
195
+ }>)): void;
196
+ navigate<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName, params?: object | undefined, options?: {
197
+ merge?: boolean;
198
+ pop?: boolean;
199
+ } | undefined] : never): void;
200
+ navigate<RouteName extends string>(options: RouteName extends unknown ? {
201
+ name: RouteName;
202
+ params: object | undefined;
203
+ path?: string;
204
+ merge?: boolean;
205
+ pop?: boolean;
206
+ } : never): void;
207
+ navigateDeprecated<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName, params?: object | undefined] : never): void;
208
+ navigateDeprecated<RouteName extends string>(options: RouteName extends unknown ? {
209
+ name: RouteName;
210
+ params: object | undefined;
211
+ merge?: boolean;
212
+ } : never): void;
213
+ preload<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName, params?: object | undefined] : never): void;
214
+ reset(state: TabNavigationState<any> | import("@react-navigation/routers").PartialState<TabNavigationState<any>>): void;
215
+ goBack(): void;
216
+ isFocused(): boolean;
217
+ canGoBack(): boolean;
218
+ getId(): string | undefined;
219
+ getParent<T = import("@react-navigation/core").NavigationHelpers<ParamListBase, {}> | undefined>(id?: string): T;
220
+ getState(): TabNavigationState<any>;
221
+ } & import("@react-navigation/core").PrivateValueStore<[ParamListBase, unknown, unknown]>, "getParent"> & {
222
+ getParent<T = import("@react-navigation/core").NavigationProp<ParamListBase, string, undefined, Readonly<{
223
+ key: string;
224
+ index: number;
225
+ routeNames: string[];
226
+ history?: unknown[];
227
+ routes: import("@react-navigation/routers").NavigationRoute<ParamListBase, string>[];
228
+ type: string;
229
+ stale: false;
230
+ }>, {}, {}> | undefined>(id?: string | undefined): T;
231
+ setOptions(options: Partial<import("./TabContext").ExpoTabsNavigatorScreenOptions>): void;
232
+ } & {
233
+ setParams(params: Partial<object | undefined>): void;
234
+ replaceParams(params: object | undefined): void;
235
+ } & import("@react-navigation/core").EventConsumer<TabNavigationEventMap & import("@react-navigation/core").EventMapCore<TabNavigationState<any>>> & import("@react-navigation/core").PrivateValueStore<[ParamListBase, string, TabNavigationEventMap]> & TabActionHelpers<ParamListBase>, import("@react-navigation/core").RouteProp<ParamListBase, string>>>;
236
+ NavigationContent: ({ children }: {
237
+ children: React.ReactNode;
238
+ }) => import("react/jsx-runtime").JSX.Element;
239
+ };
240
+ /**
241
+ * Alternative hook version of `Tabs` that uses explicit triggers
242
+ * instead of `children`.
243
+ *
244
+ * @see [`Tabs`](#tabs) for the component version of this hook.
245
+ * @example
246
+ * ```tsx
247
+ * export function MyTabs({ children }) {
248
+ * const { NavigationContent } = useTabsWithChildren({ triggers: [] })
249
+ *
250
+ * return <NavigationContent />
251
+ * }
252
+ * ```
253
+ */
254
+ export declare function useTabsWithTriggers(options: UseTabsWithTriggersOptions): TabsContextValue;
255
+ //# sourceMappingURL=Tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../src/ui/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAE5B,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EASL,KAAK,iBAAiB,EACvB,MAAM,OAAO,CAAA;AACd,OAAO,EAAc,KAAK,SAAS,EAAQ,MAAM,cAAc,CAAA;AAE/D,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAE1B,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAA;AAKrB,OAAO,EAAY,KAAK,aAAa,EAAqB,MAAM,UAAU,CAAA;AAiB1E,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAE5B;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,uBAAuB,CACrB,aAAa,EACb,GAAG,EACH,kBAAkB,CAAC,GAAG,CAAC,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,GAAG,CACJ,EACD,UAAU,CACX,GAAG;IACF,YAAY,CAAC,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAA;CAChD,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG;IAClC,mGAAmG;IACnG,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,2CAsBpC;AAGD,MAAM,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAA;AAG1E,MAAM,MAAM,0BAA0B,GAAG,cAAc,GAAG;IACxD,QAAQ,EAAE,aAAa,EAAE,CAAA;CAC1B,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B;;;;;mBAtG/B,CAAC;kBAC1B,CAAC;kBAA4B,CAAC;;;;;mBAKhB,CAAC;;;;;;mBAQ1B,CAAC;kBAGJ,CAAD;kBAA6B,CAAA;;0GAOzB,CAAF,6BACE,CAAC;iBACD,CAAJ;eAGA,CAAC;;;;;gBAOC,CAAF;iBACA,CAAC;eAGmB,CAAC;;oHAMpB,CAAD;;;;iBASW,CAAC;;yGAG8C,CAAC;;;;;mBAMrC,CAAC;;;;;;;;mBAcgC,CAAC;;;;;;;;;;;;;;mBAkBtC,CAAC;;;;;;;;;;;;;;;;;mBA2BG,CAAA;kBAA4B,CAAC;kBAC9C,CAAC;;0GAGY,CAAA,6BAChB,CAAA;iBAAqB,CAAC;eAEV,CAAC;;;;;gBAQX,CAAJ;iBAEI,CAAJ;eACI,CAAC;;oHAOkB,CAAC;;;;iBAapB,CAAD;;yGAOgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAgDd,CAAJ;kBACkB,CAAC;kBAA4B,CAAC;;0GAMjC,CAAA,6BAA6B,CAAC;iBAAqB,CAAC;eAA0B,CAAC;;;;;gBAUjF,CAAC;iBAA4B,CAAA;eAA0B,CAAC;;oHAQ7D,CAAC;;;;iBASkC,CAAC;;yGAEoE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;EAnJlH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,gBAAgB,CAiEzF"}
@@ -0,0 +1,40 @@
1
+ import type { LinkingOptions, ParamListBase, PartialRoute, Route } from '@react-navigation/native';
2
+ import type { ExpoTabActionType } from './TabRouter';
3
+ import type { UrlObject } from '../router/getNormalizedStatePath';
4
+ import type { RouteNode } from '../router/Route';
5
+ import type { OneRouter } from '../interfaces/router';
6
+ import { Slot } from './Slot';
7
+ export declare const ViewSlot: Slot<import("react-native").ViewProps, import("react").Component<import("react-native").ViewProps, {}, any>>;
8
+ export type ScreenTrigger = {
9
+ type: 'internal';
10
+ href: OneRouter.Href;
11
+ name: string;
12
+ } | {
13
+ type: 'external';
14
+ name: string;
15
+ href: string;
16
+ };
17
+ type JumpToNavigationAction = Extract<ExpoTabActionType, {
18
+ type: 'JUMP_TO';
19
+ }>;
20
+ type TriggerConfig = {
21
+ type: 'internal';
22
+ name: string;
23
+ href: string;
24
+ routeNode: RouteNode;
25
+ action: JumpToNavigationAction;
26
+ } | {
27
+ type: 'external';
28
+ name: string;
29
+ href: string;
30
+ };
31
+ export type TriggerMap = Record<string, TriggerConfig & {
32
+ index: number;
33
+ }>;
34
+ export declare function triggersToScreens(triggers: ScreenTrigger[], layoutRouteNode: RouteNode, linking: LinkingOptions<ParamListBase>, initialRouteName: undefined | string, parentTriggerMap: TriggerMap, routeInfo: UrlObject, contextKey: string): {
35
+ children: import("react").JSX.Element[];
36
+ triggerMap: TriggerMap;
37
+ };
38
+ export declare function stateToAction(state: PartialRoute<Route<string, object | undefined>> | undefined, startAtRoute?: string): JumpToNavigationAction;
39
+ export {};
40
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/ui/common.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAElG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,eAAO,MAAM,QAAQ,8GAAO,CAAA;AAE5B,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;CACb,GACD;IACE,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAEL,KAAK,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAAA;AAC7E,KAAK,aAAa,GACd;IACE,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,sBAAsB,CAAA;CAC/B,GACD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AA+B1E,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,EAAE,EACzB,eAAe,EAAE,SAAS,EAC1B,OAAO,EAAE,cAAc,CAAC,aAAa,CAAC,EACtC,gBAAgB,EAAE,SAAS,GAAG,MAAM,EACpC,gBAAgB,EAAE,UAAU,EAC5B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM;;;EAgKnB;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,EAClE,YAAY,CAAC,EAAE,MAAM,GACpB,sBAAsB,CAsCxB"}
@@ -0,0 +1,2 @@
1
+ export * from './Tabs';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { type JSX } from 'react';
2
+ /**
3
+ * Copied from @react-navigation/core
4
+ */
5
+ type Render = (children: React.ReactNode) => JSX.Element;
6
+ export declare function useComponent(render: Render): import("react").ForwardRefExoticComponent<{
7
+ children: React.ReactNode;
8
+ } & import("react").RefAttributes<unknown>>;
9
+ export {};
10
+ //# sourceMappingURL=useComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useComponent.d.ts","sourceRoot":"","sources":["../../src/ui/useComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,GAAG,EAAE,MAAM,OAAO,CAAA;AAE/D;;GAEG;AACH,KAAK,MAAM,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,GAAG,CAAC,OAAO,CAAA;AAWxD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM;cAaD,KAAK,CAAC,SAAS;4CAYxD"}