@nexub/react-native 0.0.0-stage → 2.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 (134) hide show
  1. package/README.md +113 -2
  2. package/lib/module/components/actions.js +222 -0
  3. package/lib/module/components/actions.js.map +1 -0
  4. package/lib/module/components/containers.js +300 -0
  5. package/lib/module/components/containers.js.map +1 -0
  6. package/lib/module/components/display.js +299 -0
  7. package/lib/module/components/display.js.map +1 -0
  8. package/lib/module/components/feedback.js +484 -0
  9. package/lib/module/components/feedback.js.map +1 -0
  10. package/lib/module/components/inputs.js +792 -0
  11. package/lib/module/components/inputs.js.map +1 -0
  12. package/lib/module/components/mobile.js +818 -0
  13. package/lib/module/components/mobile.js.map +1 -0
  14. package/lib/module/components/overlays.js +421 -0
  15. package/lib/module/components/overlays.js.map +1 -0
  16. package/lib/module/components/shared.js +57 -0
  17. package/lib/module/components/shared.js.map +1 -0
  18. package/lib/module/hooks/useControllableState.js +23 -0
  19. package/lib/module/hooks/useControllableState.js.map +1 -0
  20. package/lib/module/index.js +31 -0
  21. package/lib/module/index.js.map +1 -0
  22. package/lib/module/package.json +1 -0
  23. package/lib/module/patterns/app.js +709 -0
  24. package/lib/module/patterns/app.js.map +1 -0
  25. package/lib/module/patterns/auth.js +224 -0
  26. package/lib/module/patterns/auth.js.map +1 -0
  27. package/lib/module/patterns/home.js +201 -0
  28. package/lib/module/patterns/home.js.map +1 -0
  29. package/lib/module/patterns/index.js +8 -0
  30. package/lib/module/patterns/index.js.map +1 -0
  31. package/lib/module/patterns/money.js +419 -0
  32. package/lib/module/patterns/money.js.map +1 -0
  33. package/lib/module/primitives/Icon.js +17 -0
  34. package/lib/module/primitives/Icon.js.map +1 -0
  35. package/lib/module/primitives/Layout.js +79 -0
  36. package/lib/module/primitives/Layout.js.map +1 -0
  37. package/lib/module/primitives/Pressable.js +79 -0
  38. package/lib/module/primitives/Pressable.js.map +1 -0
  39. package/lib/module/primitives/ScreenContainer.js +58 -0
  40. package/lib/module/primitives/ScreenContainer.js.map +1 -0
  41. package/lib/module/primitives/Surface.js +57 -0
  42. package/lib/module/primitives/Surface.js.map +1 -0
  43. package/lib/module/primitives/Text.js +70 -0
  44. package/lib/module/primitives/Text.js.map +1 -0
  45. package/lib/module/theme/ThemeProvider.js +127 -0
  46. package/lib/module/theme/ThemeProvider.js.map +1 -0
  47. package/lib/module/theme/fonts.js +56 -0
  48. package/lib/module/theme/fonts.js.map +1 -0
  49. package/lib/module/theme/haptics.js +56 -0
  50. package/lib/module/theme/haptics.js.map +1 -0
  51. package/lib/module/theme/motion.js +89 -0
  52. package/lib/module/theme/motion.js.map +1 -0
  53. package/lib/module/theme/navigation.js +99 -0
  54. package/lib/module/theme/navigation.js.map +1 -0
  55. package/lib/typescript/components/actions.d.ts +53 -0
  56. package/lib/typescript/components/actions.d.ts.map +1 -0
  57. package/lib/typescript/components/containers.d.ts +59 -0
  58. package/lib/typescript/components/containers.d.ts.map +1 -0
  59. package/lib/typescript/components/display.d.ts +68 -0
  60. package/lib/typescript/components/display.d.ts.map +1 -0
  61. package/lib/typescript/components/feedback.d.ts +96 -0
  62. package/lib/typescript/components/feedback.d.ts.map +1 -0
  63. package/lib/typescript/components/inputs.d.ts +141 -0
  64. package/lib/typescript/components/inputs.d.ts.map +1 -0
  65. package/lib/typescript/components/mobile.d.ts +173 -0
  66. package/lib/typescript/components/mobile.d.ts.map +1 -0
  67. package/lib/typescript/components/overlays.d.ts +74 -0
  68. package/lib/typescript/components/overlays.d.ts.map +1 -0
  69. package/lib/typescript/components/shared.d.ts +20 -0
  70. package/lib/typescript/components/shared.d.ts.map +1 -0
  71. package/lib/typescript/hooks/useControllableState.d.ts +6 -0
  72. package/lib/typescript/hooks/useControllableState.d.ts.map +1 -0
  73. package/lib/typescript/index.d.ts +39 -0
  74. package/lib/typescript/index.d.ts.map +1 -0
  75. package/lib/typescript/package.json +1 -0
  76. package/lib/typescript/patterns/app.d.ts +139 -0
  77. package/lib/typescript/patterns/app.d.ts.map +1 -0
  78. package/lib/typescript/patterns/auth.d.ts +54 -0
  79. package/lib/typescript/patterns/auth.d.ts.map +1 -0
  80. package/lib/typescript/patterns/home.d.ts +50 -0
  81. package/lib/typescript/patterns/home.d.ts.map +1 -0
  82. package/lib/typescript/patterns/index.d.ts +9 -0
  83. package/lib/typescript/patterns/index.d.ts.map +1 -0
  84. package/lib/typescript/patterns/money.d.ts +106 -0
  85. package/lib/typescript/patterns/money.d.ts.map +1 -0
  86. package/lib/typescript/primitives/Icon.d.ts +12 -0
  87. package/lib/typescript/primitives/Icon.d.ts.map +1 -0
  88. package/lib/typescript/primitives/Layout.d.ts +26 -0
  89. package/lib/typescript/primitives/Layout.d.ts.map +1 -0
  90. package/lib/typescript/primitives/Pressable.d.ts +21 -0
  91. package/lib/typescript/primitives/Pressable.d.ts.map +1 -0
  92. package/lib/typescript/primitives/ScreenContainer.d.ts +25 -0
  93. package/lib/typescript/primitives/ScreenContainer.d.ts.map +1 -0
  94. package/lib/typescript/primitives/Surface.d.ts +23 -0
  95. package/lib/typescript/primitives/Surface.d.ts.map +1 -0
  96. package/lib/typescript/primitives/Text.d.ts +21 -0
  97. package/lib/typescript/primitives/Text.d.ts.map +1 -0
  98. package/lib/typescript/theme/ThemeProvider.d.ts +69 -0
  99. package/lib/typescript/theme/ThemeProvider.d.ts.map +1 -0
  100. package/lib/typescript/theme/fonts.d.ts +25 -0
  101. package/lib/typescript/theme/fonts.d.ts.map +1 -0
  102. package/lib/typescript/theme/haptics.d.ts +3 -0
  103. package/lib/typescript/theme/haptics.d.ts.map +1 -0
  104. package/lib/typescript/theme/motion.d.ts +79 -0
  105. package/lib/typescript/theme/motion.d.ts.map +1 -0
  106. package/lib/typescript/theme/navigation.d.ts +158 -0
  107. package/lib/typescript/theme/navigation.d.ts.map +1 -0
  108. package/package.json +138 -3
  109. package/src/components/actions.tsx +259 -0
  110. package/src/components/containers.tsx +352 -0
  111. package/src/components/display.tsx +345 -0
  112. package/src/components/feedback.tsx +541 -0
  113. package/src/components/inputs.tsx +899 -0
  114. package/src/components/mobile.tsx +883 -0
  115. package/src/components/overlays.tsx +488 -0
  116. package/src/components/shared.ts +54 -0
  117. package/src/hooks/useControllableState.ts +27 -0
  118. package/src/index.ts +177 -0
  119. package/src/patterns/app.tsx +715 -0
  120. package/src/patterns/auth.tsx +266 -0
  121. package/src/patterns/home.tsx +211 -0
  122. package/src/patterns/index.ts +59 -0
  123. package/src/patterns/money.tsx +458 -0
  124. package/src/primitives/Icon.tsx +15 -0
  125. package/src/primitives/Layout.tsx +71 -0
  126. package/src/primitives/Pressable.tsx +97 -0
  127. package/src/primitives/ScreenContainer.tsx +65 -0
  128. package/src/primitives/Surface.tsx +75 -0
  129. package/src/primitives/Text.tsx +79 -0
  130. package/src/theme/ThemeProvider.tsx +210 -0
  131. package/src/theme/fonts.ts +52 -0
  132. package/src/theme/haptics.ts +57 -0
  133. package/src/theme/motion.ts +105 -0
  134. package/src/theme/navigation.ts +68 -0
@@ -0,0 +1,173 @@
1
+ import * as React from 'react';
2
+ import { type ListRenderItem, type RefreshControlProps as RNRefreshControlProps, type StyleProp, type ViewStyle } from 'react-native';
3
+ import { type NativeIconProps } from '@nexub/icons/native';
4
+ import { Text } from '../primitives/Text.js';
5
+ export interface SwipeAction {
6
+ label: string;
7
+ icon?: React.ComponentType<NativeIconProps>;
8
+ onPress: () => void;
9
+ /** @default 'neutral' */
10
+ tone?: 'neutral' | 'danger' | 'primary';
11
+ }
12
+ export interface SwipeableRowProps {
13
+ /** Accessible name of the whole row, e.g. "Amazon, minus $42.50, today". */
14
+ label: string;
15
+ /** Tap / double-tap action of the row (open details). */
16
+ onPress?: () => void;
17
+ /** Revealed by swiping toward the start edge. Each one is also an accessibility action. */
18
+ actions: SwipeAction[];
19
+ children: React.ReactNode;
20
+ style?: StyleProp<ViewStyle>;
21
+ }
22
+ /**
23
+ * Swipe a row to reveal actions. Never the only way to an action: they are
24
+ * custom accessibility actions too (VoiceOver rotor / TalkBack actions).
25
+ */
26
+ export declare function SwipeableRow({ label, onPress, actions, children, style }: SwipeableRowProps): React.JSX.Element;
27
+ /** The platform pull-to-refresh in the primary role. Pass to a ScrollView/FlatList `refreshControl`. */
28
+ export declare function RefreshControl(props: RNRefreshControlProps): React.JSX.Element;
29
+ export interface PageIndicatorProps {
30
+ count: number;
31
+ index: number;
32
+ style?: StyleProp<ViewStyle>;
33
+ }
34
+ /** Dots for paged content: "Page 2 of 4" to screen readers. */
35
+ export declare function PageIndicator({ count, index, style }: PageIndicatorProps): React.JSX.Element;
36
+ export interface CarouselProps<T> {
37
+ data: readonly T[];
38
+ renderItem: ListRenderItem<T>;
39
+ /** Page width. @default the window width */
40
+ width?: number;
41
+ onIndexChange?: (index: number) => void;
42
+ style?: StyleProp<ViewStyle>;
43
+ }
44
+ /** Full-width paging (onboarding, card stacks) with a page indicator. */
45
+ export declare function Carousel<T>({ data, renderItem, width: w, onIndexChange, style, }: CarouselProps<T>): React.JSX.Element;
46
+ export interface StickyFooterProps {
47
+ /** Scrollable content above the footer. */
48
+ children: React.ReactNode;
49
+ /** The flow's primary action(s), kept above the keyboard and the home indicator. */
50
+ footer: React.ReactNode;
51
+ style?: StyleProp<ViewStyle>;
52
+ }
53
+ /** Screen body + a footer that stays above the keyboard: the primary button of every flow. */
54
+ export declare function StickyFooter({ children, footer, style }: StickyFooterProps): React.JSX.Element;
55
+ export interface OTPInputProps {
56
+ /** Accessible name, e.g. "Verification code". */
57
+ label: string;
58
+ /** @default 6 */
59
+ length?: number;
60
+ value?: string;
61
+ onValueChange?: (code: string) => void;
62
+ /** Called once all digits are entered. */
63
+ onComplete?: (code: string) => void;
64
+ /** Dots instead of digits (PIN). Turns off one-time-code autofill. */
65
+ secure?: boolean;
66
+ error?: string;
67
+ autoFocus?: boolean;
68
+ style?: StyleProp<ViewStyle>;
69
+ }
70
+ /**
71
+ * One-time code / PIN entry: one hidden field (so paste and SMS autofill work:
72
+ * iOS oneTimeCode, Android sms-otp) drawn as boxes.
73
+ */
74
+ export declare function OTPInput({ label, length, value, onValueChange, onComplete, secure, error, autoFocus, style, }: OTPInputProps): React.JSX.Element;
75
+ export interface NumericKeypadProps {
76
+ /** Called with '0'–'9', the decimal key or 'delete'. */
77
+ onKey: (key: string) => void;
78
+ /** Show the decimal key (money). @default false */
79
+ decimal?: boolean;
80
+ locale?: string;
81
+ style?: StyleProp<ViewStyle>;
82
+ }
83
+ /** On-screen digits for amounts and PINs (no system keyboard covering the screen). */
84
+ export declare function NumericKeypad({ onKey, decimal, locale, style }: NumericKeypadProps): React.JSX.Element;
85
+ export interface ExpressiveMoneyInputProps {
86
+ currency: string;
87
+ value?: number | null;
88
+ onValueChange?: (value: number | null) => void;
89
+ /** Accessible name, e.g. "Amount to send". */
90
+ label: string;
91
+ locale?: string;
92
+ /** Shown under the amount, e.g. "Balance $1,240.00" or an error. */
93
+ caption?: string;
94
+ error?: boolean;
95
+ style?: StyleProp<ViewStyle>;
96
+ }
97
+ /** Big amount in the brand face + keypad (Wise-style money entry). */
98
+ export declare function ExpressiveMoneyInput({ currency, value, onValueChange, label, locale, caption, error, style, }: ExpressiveMoneyInputProps): React.JSX.Element;
99
+ export interface SensitiveValueProps {
100
+ /** What it is, e.g. "Balance" (used for the toggle and the masked reading). */
101
+ label: string;
102
+ /** The formatted value, e.g. "$12,480.50". */
103
+ children: string;
104
+ /** @default 'title-lg' */
105
+ variant?: React.ComponentProps<typeof Text>['variant'];
106
+ revealed?: boolean;
107
+ defaultRevealed?: boolean;
108
+ onRevealedChange?: (revealed: boolean) => void;
109
+ }
110
+ /**
111
+ * A value that can be hidden (balances, card numbers). Masked text reads as
112
+ * "Balance, hidden", never as dots, and it re-masks when the app backgrounds.
113
+ */
114
+ export declare function SensitiveValue({ label, children, variant, revealed, defaultRevealed, onRevealedChange, }: SensitiveValueProps): React.JSX.Element;
115
+ export interface PrivacyShieldProps {
116
+ children: React.ReactNode;
117
+ /** Shown over the app in the app switcher (e.g. your logo). */
118
+ cover?: React.ReactNode;
119
+ /** Block screenshots and recording (Android FLAG_SECURE; iOS hides the content in captures). Needs expo-screen-capture. @default false */
120
+ preventCapture?: boolean;
121
+ }
122
+ /**
123
+ * Covers the app when it leaves the foreground, so the app-switcher snapshot
124
+ * shows no balances. Wrap screens with sensitive data (or the whole app).
125
+ */
126
+ export declare function PrivacyShield({ children, cover, preventCapture }: PrivacyShieldProps): React.JSX.Element;
127
+ /** Slim notice while the app has no connection. Pass your network state (e.g. NetInfo). */
128
+ export declare function OfflineBanner({ offline, style, }: {
129
+ offline: boolean;
130
+ style?: StyleProp<ViewStyle>;
131
+ }): React.JSX.Element | null;
132
+ export interface CoachmarkProps {
133
+ title?: string;
134
+ children: string;
135
+ /** Which side the arrow is on (towards the thing it explains). @default 'top' */
136
+ arrow?: 'top' | 'bottom';
137
+ onDismiss: () => void;
138
+ /** Dismiss label. @default messages.close */
139
+ dismissLabel?: string;
140
+ style?: StyleProp<ViewStyle>;
141
+ }
142
+ /** A one-time hint next to a new feature. Place it in your layout; it doesn't measure targets. */
143
+ export declare function Coachmark({ title, children, arrow, onDismiss, dismissLabel, style, }: CoachmarkProps): React.JSX.Element;
144
+ export interface FABProps {
145
+ icon: React.ComponentType<NativeIconProps>;
146
+ /** Accessible name; also shown when `extended`. */
147
+ label: string;
148
+ onPress: () => void;
149
+ extended?: boolean;
150
+ /** Platforms that render it (a FAB reads as Material; iOS uses a toolbar or nav-bar button). @default ['android'] */
151
+ platforms?: ('ios' | 'android')[];
152
+ /** Extra bottom offset, e.g. the tab bar. @default 0 */
153
+ bottomOffset?: number;
154
+ }
155
+ /** Floating primary action, bottom end. Android only by default (MOBILE_PLAN.md D7). */
156
+ export declare function FAB({ icon: Glyph, label, onPress, extended, platforms, bottomOffset, }: FABProps): React.JSX.Element | null;
157
+ export interface DateTimeFieldProps {
158
+ label: string;
159
+ value: Date | null;
160
+ onValueChange: (value: Date) => void;
161
+ /** @default 'date' */
162
+ mode?: 'date' | 'time';
163
+ minimumDate?: Date;
164
+ maximumDate?: Date;
165
+ placeholder?: string;
166
+ style?: StyleProp<ViewStyle>;
167
+ }
168
+ /**
169
+ * A field that opens the platform picker (Android dialog, iOS inline calendar
170
+ * in a sheet). Needs @react-native-community/datetimepicker.
171
+ */
172
+ export declare function DateTimeField({ label, value, onValueChange, mode, minimumDate, maximumDate, placeholder, style, }: DateTimeFieldProps): React.JSX.Element;
173
+ //# sourceMappingURL=mobile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile.d.ts","sourceRoot":"","sources":["../../../src/components/mobile.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import * as React from 'react';
2
+ import { type StyleProp, type ViewStyle } from 'react-native';
3
+ export type SheetDetent = 'content' | number;
4
+ export interface BottomSheetProps {
5
+ open: boolean;
6
+ onOpenChange: (open: boolean) => void;
7
+ /** Heights the sheet rests at: 'content' (fits its content) or a 0–1 fraction of the screen. @default ['content'] */
8
+ detents?: SheetDetent[];
9
+ title?: string;
10
+ children: React.ReactNode;
11
+ /** Drag down, tap the scrim or Android back closes it. @default true */
12
+ dismissable?: boolean;
13
+ /** Let the content scroll (long lists). @default false */
14
+ scroll?: boolean;
15
+ }
16
+ /**
17
+ * A modal sheet from the bottom edge (one at a time, per Apple and Material).
18
+ * Drag the grabber to resize or dismiss; tapping it cycles the detents, which
19
+ * also works with VoiceOver/TalkBack.
20
+ */
21
+ export declare function BottomSheet({ open, onOpenChange, detents, title, children, dismissable, scroll, }: BottomSheetProps): React.JSX.Element;
22
+ export interface SheetAction {
23
+ label: string;
24
+ onPress: () => void;
25
+ destructive?: boolean;
26
+ disabled?: boolean;
27
+ }
28
+ export interface ActionSheetProps {
29
+ open: boolean;
30
+ onOpenChange: (open: boolean) => void;
31
+ title?: string;
32
+ message?: string;
33
+ actions: SheetAction[];
34
+ }
35
+ /**
36
+ * Choices about an action the user started. iOS: the system action sheet
37
+ * (destructive in red, Cancel at the bottom). Android: a bottom sheet list.
38
+ */
39
+ export declare function ActionSheet({ open, onOpenChange, title, message, actions }: ActionSheetProps): React.JSX.Element | null;
40
+ export interface ContextMenuProps {
41
+ actions: SheetAction[];
42
+ title?: string;
43
+ children: React.ReactNode;
44
+ /** Tap action of the wrapped content (long-press opens the menu). */
45
+ onPress?: () => void;
46
+ accessibilityLabel?: string;
47
+ style?: StyleProp<ViewStyle>;
48
+ }
49
+ /**
50
+ * Long-press menu. The same actions are custom accessibility actions, so
51
+ * VoiceOver/TalkBack users reach them from the actions rotor. Always keep a
52
+ * visible way to every action too (HIG).
53
+ */
54
+ export declare function ContextMenu({ actions, title, children, onPress, accessibilityLabel, style, }: ContextMenuProps): React.JSX.Element;
55
+ export interface SelectOption<T extends string> {
56
+ value: T;
57
+ label: string;
58
+ description?: string;
59
+ }
60
+ export interface SelectProps<T extends string> {
61
+ label: string;
62
+ options: readonly SelectOption<T>[];
63
+ value?: T;
64
+ defaultValue?: T;
65
+ onValueChange?: (value: T) => void;
66
+ placeholder?: string;
67
+ helperText?: string;
68
+ error?: string;
69
+ disabled?: boolean;
70
+ style?: StyleProp<ViewStyle>;
71
+ }
72
+ /** A field that opens a sheet of choices (web Select / Combobox on mobile). */
73
+ export declare function Select<T extends string>({ label, options, value, defaultValue, onValueChange, placeholder, helperText, error, disabled, style, }: SelectProps<T>): React.JSX.Element;
74
+ //# sourceMappingURL=overlays.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlays.d.ts","sourceRoot":"","sources":["../../../src/components/overlays.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ControlSize, ToneValue } from '@nexub/core';
2
+ import type { NexubTheme, RoleName } from '../theme/ThemeProvider.js';
3
+ /** Container + on-colour role per tone (same mapping as web Button `tone`). */
4
+ export declare const TONE_ROLES: Record<ToneValue, [RoleName, RoleName]>;
5
+ /** Soft container variant per tone (banners, tags, badges). */
6
+ export declare const TONE_CONTAINERS: Record<ToneValue, [RoleName, RoleName]>;
7
+ /** Accent (text/icon) role per tone. */
8
+ export declare const TONE_TEXT: Record<ToneValue, RoleName>;
9
+ /** Every touch target reaches 44pt (Apple; Android's 48dp is met by md+ controls). */
10
+ export declare const MIN_TARGET = 44;
11
+ export declare const hitSlopFor: (height: number) => {
12
+ top: number;
13
+ bottom: number;
14
+ left: number;
15
+ right: number;
16
+ } | undefined;
17
+ export declare const controlHeight: (theme: NexubTheme, size: ControlSize) => 56 | 32 | 24 | 48 | 40;
18
+ /** Disabled content opacity (same as the web state token). */
19
+ export declare const disabledOpacity: (theme: NexubTheme) => 0.38;
20
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/components/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,2BAAwB,CAAC;AAEnE,+EAA+E;AAC/E,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAU9D,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAUnE,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,CAUjD,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM;;;;;aAGxC,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,UAAU,EAAE,MAAM,WAAW,2BACjC,CAAC;AAElC,8DAA8D;AAC9D,eAAO,MAAM,eAAe,GAAI,OAAO,UAAU,SAA2C,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function useControllableState<T>({ value: controlled, defaultValue, onChange, }: {
2
+ value?: T;
3
+ defaultValue: T;
4
+ onChange?: (value: T) => void;
5
+ }): readonly [T, (next: T) => void];
6
+ //# sourceMappingURL=useControllableState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useControllableState.d.ts","sourceRoot":"","sources":["../../../src/hooks/useControllableState.ts"],"names":[],"mappings":"AAGA,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EACtC,KAAK,EAAE,UAAU,EACjB,YAAY,EACZ,QAAQ,GACT,EAAE;IACD,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,YAAY,EAAE,CAAC,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CAC/B,uBAQU,CAAC,WAOX"}
@@ -0,0 +1,39 @@
1
+ export { NexubNativeProvider, useTheme, useRoles, useHaptics, useNexubMessages, } from './theme/ThemeProvider.js';
2
+ export type { NexubNativeProviderProps, NexubTheme, Roles, RoleName, Scheme, ElevationLevel, } from './theme/ThemeProvider.js';
3
+ export { nexubFonts, fontStyle } from './theme/fonts.js';
4
+ export type { FontFamily, FontSource } from './theme/fonts.js';
5
+ export { playHaptic } from './theme/haptics.js';
6
+ export type { HapticToken } from './theme/haptics.js';
7
+ export { nxSpring, nxEnter, nxExit, nxLayout } from './theme/motion.js';
8
+ export type { SpringFamily, SpringSpeed, EnterKind, ExitKind } from './theme/motion.js';
9
+ export { useControllableState } from './hooks/useControllableState.js';
10
+ export { Text, Heading } from './primitives/Text.js';
11
+ export type { TextProps, HeadingProps } from './primitives/Text.js';
12
+ export { Pressable } from './primitives/Pressable.js';
13
+ export type { PressableProps } from './primitives/Pressable.js';
14
+ export { Surface } from './primitives/Surface.js';
15
+ export type { SurfaceProps, SurfaceTone, ShapeName } from './primitives/Surface.js';
16
+ export { Box, Stack, Inline } from './primitives/Layout.js';
17
+ export type { BoxProps, Space } from './primitives/Layout.js';
18
+ export { Icon } from './primitives/Icon.js';
19
+ export type { IconProps } from './primitives/Icon.js';
20
+ export { ScreenContainer } from './primitives/ScreenContainer.js';
21
+ export type { ScreenContainerProps } from './primitives/ScreenContainer.js';
22
+ export { defaultMessages, directionOf } from '@nexub/core';
23
+ export type { NexubMessages, Direction, ToneValue, Product, GlassMode, ContrastLevel, ControlSize, } from '@nexub/core';
24
+ export { Button, IconButton, ButtonGroup, Link } from './components/actions.js';
25
+ export type { ButtonProps, ButtonVariant, IconButtonProps, ButtonGroupProps, LinkProps, } from './components/actions.js';
26
+ export { Amount, Badge, Avatar, AvatarGroup, Divider } from './components/display.js';
27
+ export type { AmountProps, BadgeProps, AvatarProps, AvatarSize, AvatarGroupProps, DividerProps, } from './components/display.js';
28
+ export { TextField, PasswordInput, SearchField, MoneyInput, Stepper, Checkbox, RadioGroup, Radio, Switch, SegmentedControl, Slider, Chip, FilterChip, } from './components/inputs.js';
29
+ export type { TextFieldProps, PasswordInputProps, SearchFieldProps, MoneyInputProps, StepperProps, CheckboxProps, RadioGroupProps, RadioProps, SwitchProps, SegmentedControlProps, SliderProps, ChipProps, } from './components/inputs.js';
30
+ export { Card, ListItem, ListSection, Accordion } from './components/containers.js';
31
+ export type { CardProps, ListItemProps, ListItemVariant, ListSectionProps, AccordionProps, } from './components/containers.js';
32
+ export { Banner, ToastProvider, useToast, Dialog, Progress, LoadingIndicator, Skeleton, EmptyState, ErrorState, } from './components/feedback.js';
33
+ export type { BannerProps, ToastOptions, ToastProviderProps, DialogProps, ProgressProps, SkeletonProps, EmptyStateProps, ErrorStateProps, } from './components/feedback.js';
34
+ export { BottomSheet, ActionSheet, ContextMenu, Select } from './components/overlays.js';
35
+ export type { BottomSheetProps, SheetDetent, SheetAction, ActionSheetProps, ContextMenuProps, SelectProps, SelectOption, } from './components/overlays.js';
36
+ export { SwipeableRow, RefreshControl, Carousel, PageIndicator, StickyFooter, OTPInput, NumericKeypad, ExpressiveMoneyInput, SensitiveValue, PrivacyShield, OfflineBanner, Coachmark, FAB, DateTimeField, } from './components/mobile.js';
37
+ export type { SwipeAction, SwipeableRowProps, CarouselProps, PageIndicatorProps, StickyFooterProps, OTPInputProps, NumericKeypadProps, ExpressiveMoneyInputProps, SensitiveValueProps, PrivacyShieldProps, CoachmarkProps, FABProps, DateTimeFieldProps, } from './components/mobile.js';
38
+ export { nexubStackOptions, nexubNavigationTheme, nexubTabsOptions, useNexubNavigation, } from './theme/navigation.js';
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,139 @@
1
+ import * as React from 'react';
2
+ import { type NativeIconProps } from '@nexub/icons/native';
3
+ import type { GlassMode } from '@nexub/core';
4
+ import { type ListItemProps } from '../components/containers.js';
5
+ import { type Scheme } from '../theme/ThemeProvider.js';
6
+ export interface OnboardingSlide {
7
+ title: string;
8
+ body: string;
9
+ /** Illustration or icon above the text. */
10
+ art?: React.ReactNode;
11
+ }
12
+ export interface OnboardingScreenProps {
13
+ slides: OnboardingSlide[];
14
+ onGetStarted: () => void;
15
+ onSignIn?: () => void;
16
+ }
17
+ /** Swipeable value slides + Get started / Sign in. */
18
+ export declare function OnboardingScreen({ slides, onGetStarted, onSignIn }: OnboardingScreenProps): React.JSX.Element;
19
+ export interface PermissionPrimerProps {
20
+ icon?: React.ComponentType<NativeIconProps>;
21
+ title: string;
22
+ /** Why the app needs it, in the user's terms. */
23
+ body: string;
24
+ /** Calls the OS prompt. */
25
+ onAllow: () => void;
26
+ onNotNow: () => void;
27
+ }
28
+ /** Explain a permission before the one-shot OS prompt (notifications, camera, location). */
29
+ export declare function PermissionPrimer({ icon: Glyph, title, body, onAllow, onNotNow, }: PermissionPrimerProps): React.JSX.Element;
30
+ export interface SettingsGroup {
31
+ header?: string;
32
+ footer?: string;
33
+ items: ListItemProps[];
34
+ }
35
+ export interface SettingsScreenProps {
36
+ /** Optional profile row/card above the groups. */
37
+ header?: React.ReactNode;
38
+ groups: SettingsGroup[];
39
+ }
40
+ /** Grouped settings (web SettingsLayout + SettingsSection). */
41
+ export declare function SettingsScreen({ header, groups }: SettingsScreenProps): React.JSX.Element;
42
+ export interface AppearanceSectionProps {
43
+ scheme: Scheme | 'system';
44
+ onSchemeChange: (scheme: Scheme | 'system') => void;
45
+ glass: GlassMode;
46
+ onGlassChange: (glass: GlassMode) => void;
47
+ haptics: boolean;
48
+ onHapticsChange: (on: boolean) => void;
49
+ }
50
+ /** Theme, glass intensity dial and haptics: the user preferences NexubNativeProvider takes. */
51
+ export declare function AppearanceSection({ scheme, onSchemeChange, glass, onGlassChange, haptics, onHapticsChange, }: AppearanceSectionProps): React.JSX.Element;
52
+ export interface ProfileHeaderProps {
53
+ name: string;
54
+ detail?: string;
55
+ image?: string;
56
+ onPress?: () => void;
57
+ }
58
+ /** Account card at the top of Settings / Profile (web UserCard). */
59
+ export declare function ProfileHeader({ name, detail, image, onPress }: ProfileHeaderProps): React.JSX.Element;
60
+ export interface NotificationEntry {
61
+ id: string;
62
+ title: string;
63
+ body?: string;
64
+ /** Preformatted, e.g. "2 min ago". */
65
+ time: string;
66
+ unread?: boolean;
67
+ icon?: React.ComponentType<NativeIconProps>;
68
+ }
69
+ export interface NotificationsInboxProps {
70
+ notifications: NotificationEntry[];
71
+ onPress?: (n: NotificationEntry) => void;
72
+ onMarkAllRead?: () => void;
73
+ }
74
+ /** Inbox list with unread dots (web NotificationItem). */
75
+ export declare function NotificationsInbox({ notifications, onPress, onMarkAllRead, }: NotificationsInboxProps): React.JSX.Element;
76
+ export interface SearchScreenProps<T> {
77
+ query: string;
78
+ onQueryChange: (q: string) => void;
79
+ results: T[];
80
+ renderResult: (item: T) => React.ReactNode;
81
+ keyOf: (item: T) => string;
82
+ recent?: string[];
83
+ placeholder?: string;
84
+ }
85
+ /** Search field, recent searches, results and a no-results state. */
86
+ export declare function SearchScreen<T>({ query, onQueryChange, results, renderResult, keyOf, recent, placeholder, }: SearchScreenProps<T>): React.JSX.Element;
87
+ export interface ChatMessage {
88
+ id: string;
89
+ role: 'user' | 'assistant';
90
+ text: string;
91
+ /** Still streaming in. */
92
+ streaming?: boolean;
93
+ }
94
+ export interface ChatScreenProps {
95
+ messages: ChatMessage[];
96
+ onSend: (text: string) => void;
97
+ /** Assistant is thinking (before the first token). */
98
+ thinking?: boolean;
99
+ placeholder?: string;
100
+ empty?: React.ReactNode;
101
+ }
102
+ /** Conversation with a composer above the keyboard (web Conversation + PromptInput + MessageBubble). */
103
+ export declare function ChatScreen({ messages: list, onSend, thinking, placeholder, empty, }: ChatScreenProps): React.JSX.Element;
104
+ export interface Plan {
105
+ id: string;
106
+ name: string;
107
+ /** Preformatted, e.g. "$9.99 / month". */
108
+ price: string;
109
+ features: string[];
110
+ badge?: string;
111
+ }
112
+ export interface PaywallScreenProps {
113
+ title: string;
114
+ plans: Plan[];
115
+ defaultPlan?: string;
116
+ onSubscribe: (planId: string) => void;
117
+ onRestore?: () => void;
118
+ /** Legal copy (auto-renewal terms). */
119
+ terms?: string;
120
+ }
121
+ /** Plan choice + subscribe (web PlanCard). */
122
+ export declare function PaywallScreen({ title, plans, defaultPlan, onSubscribe, onRestore, terms, }: PaywallScreenProps): React.JSX.Element;
123
+ export interface NexubApp {
124
+ id: string;
125
+ name: string;
126
+ /** Tile art (e.g. @nexub/brand icon as an Image), else initials on the product tone. */
127
+ icon?: React.ReactNode;
128
+ tone?: 'leap' | 'bookub' | 'payub' | 'founderub' | 'primary';
129
+ }
130
+ export interface AppSwitcherSheetProps {
131
+ open: boolean;
132
+ onOpenChange: (open: boolean) => void;
133
+ apps: NexubApp[];
134
+ current?: string;
135
+ onOpenApp: (app: NexubApp) => void;
136
+ }
137
+ /** Nexub apps in a sheet (web AppLauncher). */
138
+ export declare function AppSwitcherSheet({ open, onOpenChange, apps, current, onOpenApp, }: AppSwitcherSheetProps): React.JSX.Element;
139
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/patterns/app.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import * as React from 'react';
2
+ export interface AuthScreenProps {
3
+ /** Brand mark above the title. */
4
+ logo?: React.ReactNode;
5
+ title: string;
6
+ description?: string;
7
+ children: React.ReactNode;
8
+ /** Primary action(s), kept above the keyboard. */
9
+ footer: React.ReactNode;
10
+ /** Error from the last attempt (announced). */
11
+ error?: string;
12
+ }
13
+ /** Frame for sign-in, sign-up and verification screens (web AuthCard, full screen). */
14
+ export declare function AuthScreen({ logo, title, description, children, footer, error }: AuthScreenProps): React.JSX.Element;
15
+ export interface SignInScreenProps {
16
+ onSubmit: (email: string, password: string) => void;
17
+ /** Offer passkey/biometric sign-in (name the method: "Sign in with Face ID"). */
18
+ biometricLabel?: string;
19
+ onBiometric?: () => void;
20
+ onForgotPassword?: () => void;
21
+ onCreateAccount?: () => void;
22
+ loading?: boolean;
23
+ error?: string;
24
+ logo?: React.ReactNode;
25
+ /** Copy overrides. */
26
+ title?: string;
27
+ submitLabel?: string;
28
+ }
29
+ /** Email + password sign-in with platform autofill, plus an optional biometric/passkey path. */
30
+ export declare function SignInScreen({ onSubmit, biometricLabel, onBiometric, onForgotPassword, onCreateAccount, loading, error, logo, title, submitLabel, }: SignInScreenProps): React.JSX.Element;
31
+ export interface VerifyCodeScreenProps {
32
+ /** Where the code went, e.g. "+65 •••• 4821". */
33
+ destination: string;
34
+ onComplete: (code: string) => void;
35
+ onResend: () => void;
36
+ /** Seconds before Resend is allowed again. @default 30 */
37
+ resendAfter?: number;
38
+ length?: number;
39
+ error?: string;
40
+ }
41
+ /** One-time code entry (SMS autofill ready) with a resend countdown. */
42
+ export declare function VerifyCodeScreen({ destination, onComplete, onResend, resendAfter, length, error, }: VerifyCodeScreenProps): React.JSX.Element;
43
+ export interface LockScreenProps {
44
+ /** "Unlock with Face ID" / "Unlock with fingerprint" (name the method). */
45
+ unlockLabel: string;
46
+ onUnlock: () => void;
47
+ /** Fallback to the app passcode or password. */
48
+ onUsePasscode?: () => void;
49
+ logo?: React.ReactNode;
50
+ appName?: string;
51
+ }
52
+ /** Biometric unlock on app open/resume, with a passcode fallback. */
53
+ export declare function LockScreen({ unlockLabel, onUnlock, onUsePasscode, logo, appName, }: LockScreenProps): React.JSX.Element;
54
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/patterns/auth.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kDAAkD;IAClD,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,eAAe,qBAuBhG;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,gGAAgG;AAChG,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,OAAO,EACP,KAAK,EACL,IAAI,EACJ,KAAiB,EACjB,WAAuB,GACxB,EAAE,iBAAiB,qBAoEnB;AAED,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAgB,EAChB,MAAU,EACV,KAAK,GACN,EAAE,qBAAqB,qBAmCvB;AAED,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,QAAQ,EACR,aAAa,EACb,IAAI,EACJ,OAAO,GACR,EAAE,eAAe,qBA8CjB"}
@@ -0,0 +1,50 @@
1
+ import * as React from 'react';
2
+ import type { NativeIconProps } from '@nexub/icons/native';
3
+ import type { Transaction } from './money.js';
4
+ export interface QuickAction {
5
+ id: string;
6
+ label: string;
7
+ icon?: React.ComponentType<NativeIconProps>;
8
+ onPress: () => void;
9
+ }
10
+ export interface Insight {
11
+ id: string;
12
+ title: string;
13
+ body: string;
14
+ action?: {
15
+ label: string;
16
+ onPress: () => void;
17
+ };
18
+ }
19
+ export interface HomeScreenProps {
20
+ /** e.g. "Good morning, Mei". Leave out when the native header shows the title. */
21
+ greeting?: string;
22
+ balance: {
23
+ value: number;
24
+ currency: string;
25
+ label?: string;
26
+ };
27
+ /** Send, Add money, Request… Up to four fit one row. */
28
+ quickActions?: QuickAction[];
29
+ /** The latest few transactions. */
30
+ recent?: Transaction[];
31
+ onTransactionPress?: (t: Transaction) => void;
32
+ /** Shows "See all" beside Recent activity. */
33
+ onSeeAllActivity?: () => void;
34
+ insights?: Insight[];
35
+ onRefresh?: () => void;
36
+ refreshing?: boolean;
37
+ /** Copy overrides. */
38
+ labels?: Partial<{
39
+ totalBalance: string;
40
+ recentActivity: string;
41
+ seeAll: string;
42
+ insights: string;
43
+ }>;
44
+ }
45
+ /**
46
+ * Money-app home (Payub): balance hero with quick actions, recent activity,
47
+ * insights and pull-to-refresh. Web twin: `DashboardPage` in @nexub/patterns.
48
+ */
49
+ export declare function HomeScreen({ greeting, balance, quickActions, recent, onTransactionPress, onSeeAllActivity, insights, onRefresh, refreshing, labels, }: HomeScreenProps): React.JSX.Element;
50
+ //# sourceMappingURL=home.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home.d.ts","sourceRoot":"","sources":["../../../src/patterns/home.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAS3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAS,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IAC5C,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;CACjD;AAED,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,wDAAwD;IACxD,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,mCAAmC;IACnC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9C,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtG;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,OAAO,EACP,YAAiB,EACjB,MAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,QAAa,EACb,SAAS,EACT,UAAkB,EAClB,MAAM,GACP,EAAE,eAAe,qBAqJjB"}
@@ -0,0 +1,9 @@
1
+ export { HomeScreen } from './home.js';
2
+ export type { HomeScreenProps, QuickAction, Insight } from './home.js';
3
+ export { AuthScreen, SignInScreen, VerifyCodeScreen, LockScreen } from './auth.js';
4
+ export type { AuthScreenProps, SignInScreenProps, VerifyCodeScreenProps, LockScreenProps, } from './auth.js';
5
+ export { FlowStep, AmountStep, ReviewStep, ActivityList, TransactionDetail, ResultScreen, } from './money.js';
6
+ export type { FlowStepProps, Quote, AmountStepProps, ReviewRow, ReviewStepProps, Transaction, ActivityListProps, TransactionDetailProps, ResultScreenProps, } from './money.js';
7
+ export { OnboardingScreen, PermissionPrimer, SettingsScreen, AppearanceSection, ProfileHeader, NotificationsInbox, SearchScreen, ChatScreen, PaywallScreen, AppSwitcherSheet, } from './app.js';
8
+ export type { OnboardingSlide, OnboardingScreenProps, PermissionPrimerProps, SettingsGroup, SettingsScreenProps, AppearanceSectionProps, ProfileHeaderProps, NotificationEntry, NotificationsInboxProps, SearchScreenProps, ChatMessage, ChatScreenProps, Plan, PaywallScreenProps, NexubApp, AppSwitcherSheetProps, } from './app.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/patterns/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAQ,CAAC;AACpC,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,WAAQ,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,WAAQ,CAAC;AAChF,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,GAChB,MAAM,WAAQ,CAAC;AAChB,OAAO,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,GACb,MAAM,YAAS,CAAC;AACjB,YAAY,EACV,aAAa,EACb,KAAK,EACL,eAAe,EACf,SAAS,EACT,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,YAAS,CAAC;AACjB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,gBAAgB,GACjB,MAAM,UAAO,CAAC;AACf,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,IAAI,EACJ,kBAAkB,EAClB,QAAQ,EACR,qBAAqB,GACtB,MAAM,UAAO,CAAC"}