@nexub/react-native 0.0.0-stage → 2.1.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.
- package/README.md +111 -2
- package/lib/module/components/actions.js +222 -0
- package/lib/module/components/actions.js.map +1 -0
- package/lib/module/components/containers.js +292 -0
- package/lib/module/components/containers.js.map +1 -0
- package/lib/module/components/display.js +266 -0
- package/lib/module/components/display.js.map +1 -0
- package/lib/module/components/feedback.js +464 -0
- package/lib/module/components/feedback.js.map +1 -0
- package/lib/module/components/inputs.js +746 -0
- package/lib/module/components/inputs.js.map +1 -0
- package/lib/module/components/mobile.js +811 -0
- package/lib/module/components/mobile.js.map +1 -0
- package/lib/module/components/overlays.js +418 -0
- package/lib/module/components/overlays.js.map +1 -0
- package/lib/module/components/shared.js +57 -0
- package/lib/module/components/shared.js.map +1 -0
- package/lib/module/hooks/useControllableState.js +23 -0
- package/lib/module/hooks/useControllableState.js.map +1 -0
- package/lib/module/index.js +30 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/patterns/app.js +709 -0
- package/lib/module/patterns/app.js.map +1 -0
- package/lib/module/patterns/auth.js +224 -0
- package/lib/module/patterns/auth.js.map +1 -0
- package/lib/module/patterns/index.js +7 -0
- package/lib/module/patterns/index.js.map +1 -0
- package/lib/module/patterns/money.js +419 -0
- package/lib/module/patterns/money.js.map +1 -0
- package/lib/module/primitives/Icon.js +17 -0
- package/lib/module/primitives/Icon.js.map +1 -0
- package/lib/module/primitives/Layout.js +79 -0
- package/lib/module/primitives/Layout.js.map +1 -0
- package/lib/module/primitives/Pressable.js +77 -0
- package/lib/module/primitives/Pressable.js.map +1 -0
- package/lib/module/primitives/ScreenContainer.js +58 -0
- package/lib/module/primitives/ScreenContainer.js.map +1 -0
- package/lib/module/primitives/Surface.js +57 -0
- package/lib/module/primitives/Surface.js.map +1 -0
- package/lib/module/primitives/Text.js +70 -0
- package/lib/module/primitives/Text.js.map +1 -0
- package/lib/module/theme/ThemeProvider.js +127 -0
- package/lib/module/theme/ThemeProvider.js.map +1 -0
- package/lib/module/theme/fonts.js +56 -0
- package/lib/module/theme/fonts.js.map +1 -0
- package/lib/module/theme/haptics.js +56 -0
- package/lib/module/theme/haptics.js.map +1 -0
- package/lib/module/theme/navigation.js +99 -0
- package/lib/module/theme/navigation.js.map +1 -0
- package/lib/typescript/components/actions.d.ts +53 -0
- package/lib/typescript/components/actions.d.ts.map +1 -0
- package/lib/typescript/components/containers.d.ts +59 -0
- package/lib/typescript/components/containers.d.ts.map +1 -0
- package/lib/typescript/components/display.d.ts +62 -0
- package/lib/typescript/components/display.d.ts.map +1 -0
- package/lib/typescript/components/feedback.d.ts +93 -0
- package/lib/typescript/components/feedback.d.ts.map +1 -0
- package/lib/typescript/components/inputs.d.ts +141 -0
- package/lib/typescript/components/inputs.d.ts.map +1 -0
- package/lib/typescript/components/mobile.d.ts +173 -0
- package/lib/typescript/components/mobile.d.ts.map +1 -0
- package/lib/typescript/components/overlays.d.ts +74 -0
- package/lib/typescript/components/overlays.d.ts.map +1 -0
- package/lib/typescript/components/shared.d.ts +20 -0
- package/lib/typescript/components/shared.d.ts.map +1 -0
- package/lib/typescript/hooks/useControllableState.d.ts +6 -0
- package/lib/typescript/hooks/useControllableState.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +37 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/patterns/app.d.ts +139 -0
- package/lib/typescript/patterns/app.d.ts.map +1 -0
- package/lib/typescript/patterns/auth.d.ts +54 -0
- package/lib/typescript/patterns/auth.d.ts.map +1 -0
- package/lib/typescript/patterns/index.d.ts +7 -0
- package/lib/typescript/patterns/index.d.ts.map +1 -0
- package/lib/typescript/patterns/money.d.ts +106 -0
- package/lib/typescript/patterns/money.d.ts.map +1 -0
- package/lib/typescript/primitives/Icon.d.ts +12 -0
- package/lib/typescript/primitives/Icon.d.ts.map +1 -0
- package/lib/typescript/primitives/Layout.d.ts +26 -0
- package/lib/typescript/primitives/Layout.d.ts.map +1 -0
- package/lib/typescript/primitives/Pressable.d.ts +21 -0
- package/lib/typescript/primitives/Pressable.d.ts.map +1 -0
- package/lib/typescript/primitives/ScreenContainer.d.ts +25 -0
- package/lib/typescript/primitives/ScreenContainer.d.ts.map +1 -0
- package/lib/typescript/primitives/Surface.d.ts +23 -0
- package/lib/typescript/primitives/Surface.d.ts.map +1 -0
- package/lib/typescript/primitives/Text.d.ts +21 -0
- package/lib/typescript/primitives/Text.d.ts.map +1 -0
- package/lib/typescript/theme/ThemeProvider.d.ts +69 -0
- package/lib/typescript/theme/ThemeProvider.d.ts.map +1 -0
- package/lib/typescript/theme/fonts.d.ts +25 -0
- package/lib/typescript/theme/fonts.d.ts.map +1 -0
- package/lib/typescript/theme/haptics.d.ts +3 -0
- package/lib/typescript/theme/haptics.d.ts.map +1 -0
- package/lib/typescript/theme/navigation.d.ts +158 -0
- package/lib/typescript/theme/navigation.d.ts.map +1 -0
- package/package.json +138 -3
- package/src/components/actions.tsx +259 -0
- package/src/components/containers.tsx +341 -0
- package/src/components/display.tsx +314 -0
- package/src/components/feedback.tsx +522 -0
- package/src/components/inputs.tsx +851 -0
- package/src/components/mobile.tsx +879 -0
- package/src/components/overlays.tsx +485 -0
- package/src/components/shared.ts +54 -0
- package/src/hooks/useControllableState.ts +27 -0
- package/src/index.ts +175 -0
- package/src/patterns/app.tsx +715 -0
- package/src/patterns/auth.tsx +266 -0
- package/src/patterns/index.ts +57 -0
- package/src/patterns/money.tsx +458 -0
- package/src/primitives/Icon.tsx +15 -0
- package/src/primitives/Layout.tsx +71 -0
- package/src/primitives/Pressable.tsx +94 -0
- package/src/primitives/ScreenContainer.tsx +65 -0
- package/src/primitives/Surface.tsx +75 -0
- package/src/primitives/Text.tsx +79 -0
- package/src/theme/ThemeProvider.tsx +210 -0
- package/src/theme/fonts.ts +52 -0
- package/src/theme/haptics.ts +57 -0
- package/src/theme/navigation.ts +68 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlays.d.ts","sourceRoot":"","sources":["../../../src/components/overlays.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAUL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAiBtB,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;AAK7C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,qHAAqH;IACrH,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,wEAAwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,YAAY,EACZ,OAAqB,EACrB,KAAK,EACL,QAAQ,EACR,WAAkB,EAClB,MAAM,GACP,EAAE,gBAAgB,qBA6LlB;AAID,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,gBAAgB,4BAkD5F;AAID,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,KAAK,EACL,QAAQ,EACR,OAAO,EACP,kBAAkB,EAClB,KAAK,GACN,EAAE,gBAAgB,qBAuBlB;AAID,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM;IAC5C,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,+EAA+E;AAC/E,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,EACvC,KAAK,EACL,OAAO,EACP,KAAK,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,UAAU,EACV,KAAK,EACL,QAAQ,EACR,KAAK,GACN,EAAE,WAAW,CAAC,CAAC,CAAC,qBA6EhB"}
|
|
@@ -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 @@
|
|
|
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,37 @@
|
|
|
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 { useControllableState } from './hooks/useControllableState.js';
|
|
8
|
+
export { Text, Heading } from './primitives/Text.js';
|
|
9
|
+
export type { TextProps, HeadingProps } from './primitives/Text.js';
|
|
10
|
+
export { Pressable } from './primitives/Pressable.js';
|
|
11
|
+
export type { PressableProps } from './primitives/Pressable.js';
|
|
12
|
+
export { Surface } from './primitives/Surface.js';
|
|
13
|
+
export type { SurfaceProps, SurfaceTone, ShapeName } from './primitives/Surface.js';
|
|
14
|
+
export { Box, Stack, Inline } from './primitives/Layout.js';
|
|
15
|
+
export type { BoxProps, Space } from './primitives/Layout.js';
|
|
16
|
+
export { Icon } from './primitives/Icon.js';
|
|
17
|
+
export type { IconProps } from './primitives/Icon.js';
|
|
18
|
+
export { ScreenContainer } from './primitives/ScreenContainer.js';
|
|
19
|
+
export type { ScreenContainerProps } from './primitives/ScreenContainer.js';
|
|
20
|
+
export { defaultMessages, directionOf } from '@nexub/core';
|
|
21
|
+
export type { NexubMessages, Direction, ToneValue, Product, GlassMode, ContrastLevel, ControlSize, } from '@nexub/core';
|
|
22
|
+
export { Button, IconButton, ButtonGroup, Link } from './components/actions.js';
|
|
23
|
+
export type { ButtonProps, ButtonVariant, IconButtonProps, ButtonGroupProps, LinkProps, } from './components/actions.js';
|
|
24
|
+
export { Amount, Badge, Avatar, AvatarGroup, Divider } from './components/display.js';
|
|
25
|
+
export type { AmountProps, BadgeProps, AvatarProps, AvatarSize, AvatarGroupProps, DividerProps, } from './components/display.js';
|
|
26
|
+
export { TextField, PasswordInput, SearchField, MoneyInput, Stepper, Checkbox, RadioGroup, Radio, Switch, SegmentedControl, Slider, Chip, FilterChip, } from './components/inputs.js';
|
|
27
|
+
export type { TextFieldProps, PasswordInputProps, SearchFieldProps, MoneyInputProps, StepperProps, CheckboxProps, RadioGroupProps, RadioProps, SwitchProps, SegmentedControlProps, SliderProps, ChipProps, } from './components/inputs.js';
|
|
28
|
+
export { Card, ListItem, ListSection, Accordion } from './components/containers.js';
|
|
29
|
+
export type { CardProps, ListItemProps, ListItemVariant, ListSectionProps, AccordionProps, } from './components/containers.js';
|
|
30
|
+
export { Banner, ToastProvider, useToast, Dialog, Progress, LoadingIndicator, Skeleton, EmptyState, ErrorState, } from './components/feedback.js';
|
|
31
|
+
export type { BannerProps, ToastOptions, ToastProviderProps, DialogProps, ProgressProps, SkeletonProps, EmptyStateProps, ErrorStateProps, } from './components/feedback.js';
|
|
32
|
+
export { BottomSheet, ActionSheet, ContextMenu, Select } from './components/overlays.js';
|
|
33
|
+
export type { BottomSheetProps, SheetDetent, SheetAction, ActionSheetProps, ContextMenuProps, SelectProps, SelectOption, } from './components/overlays.js';
|
|
34
|
+
export { SwipeableRow, RefreshControl, Carousel, PageIndicator, StickyFooter, OTPInput, NumericKeypad, ExpressiveMoneyInput, SensitiveValue, PrivacyShield, OfflineBanner, Coachmark, FAB, DateTimeField, } from './components/mobile.js';
|
|
35
|
+
export type { SwipeAction, SwipeableRowProps, CarouselProps, PageIndicatorProps, StickyFooterProps, OTPInputProps, NumericKeypadProps, ExpressiveMoneyInputProps, SensitiveValueProps, PrivacyShieldProps, CoachmarkProps, FABProps, DateTimeFieldProps, } from './components/mobile.js';
|
|
36
|
+
export { nexubStackOptions, nexubNavigationTheme, nexubTabsOptions, useNexubNavigation, } from './theme/navigation.js';
|
|
37
|
+
//# 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,7 @@
|
|
|
1
|
+
export { AuthScreen, SignInScreen, VerifyCodeScreen, LockScreen } from './auth.js';
|
|
2
|
+
export type { AuthScreenProps, SignInScreenProps, VerifyCodeScreenProps, LockScreenProps, } from './auth.js';
|
|
3
|
+
export { FlowStep, AmountStep, ReviewStep, ActivityList, TransactionDetail, ResultScreen, } from './money.js';
|
|
4
|
+
export type { FlowStepProps, Quote, AmountStepProps, ReviewRow, ReviewStepProps, Transaction, ActivityListProps, TransactionDetailProps, ResultScreenProps, } from './money.js';
|
|
5
|
+
export { OnboardingScreen, PermissionPrimer, SettingsScreen, AppearanceSection, ProfileHeader, NotificationsInbox, SearchScreen, ChatScreen, PaywallScreen, AppSwitcherSheet, } from './app.js';
|
|
6
|
+
export type { OnboardingSlide, OnboardingScreenProps, PermissionPrimerProps, SettingsGroup, SettingsScreenProps, AppearanceSectionProps, ProfileHeaderProps, NotificationEntry, NotificationsInboxProps, SearchScreenProps, ChatMessage, ChatScreenProps, Plan, PaywallScreenProps, NexubApp, AppSwitcherSheetProps, } from './app.js';
|
|
7
|
+
//# 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,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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type NativeIconProps } from '@nexub/icons/native';
|
|
3
|
+
import { type SwipeAction } from '../components/mobile.js';
|
|
4
|
+
export interface FlowStepProps {
|
|
5
|
+
/** 1-based. */
|
|
6
|
+
step: number;
|
|
7
|
+
total: number;
|
|
8
|
+
title: string;
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
footer: React.ReactNode;
|
|
11
|
+
}
|
|
12
|
+
/** One step of a multi-step flow: progress, title, content, sticky primary action. */
|
|
13
|
+
export declare function FlowStep({ step, total, title, children, footer }: FlowStepProps): React.JSX.Element;
|
|
14
|
+
export interface Quote {
|
|
15
|
+
fee: number;
|
|
16
|
+
/** Units of `to` per unit of `from`. */
|
|
17
|
+
rate: number;
|
|
18
|
+
/** e.g. "In seconds", "By Friday". */
|
|
19
|
+
arrives: string;
|
|
20
|
+
}
|
|
21
|
+
export interface AmountStepProps {
|
|
22
|
+
from: string;
|
|
23
|
+
to: string;
|
|
24
|
+
/** Available balance in `from`. */
|
|
25
|
+
balance: number;
|
|
26
|
+
/** Quote for an amount (fees and rate shown before anything else, like Wise). */
|
|
27
|
+
quote: (amount: number) => Quote;
|
|
28
|
+
onContinue: (amount: number) => void;
|
|
29
|
+
step?: number;
|
|
30
|
+
total?: number;
|
|
31
|
+
}
|
|
32
|
+
/** Amount entry with the fee, rate and arrival shown live. */
|
|
33
|
+
export declare function AmountStep({ from, to, balance, quote, onContinue, step, total, }: AmountStepProps): React.JSX.Element;
|
|
34
|
+
export interface ReviewRow {
|
|
35
|
+
label: string;
|
|
36
|
+
value: string;
|
|
37
|
+
}
|
|
38
|
+
export interface ReviewStepProps {
|
|
39
|
+
rows: ReviewRow[];
|
|
40
|
+
/** "Confirm and send". */
|
|
41
|
+
confirmLabel: string;
|
|
42
|
+
onConfirm: () => void;
|
|
43
|
+
/** Biometric confirmation, named: "Confirm with Face ID". Shown as the hint under the button. */
|
|
44
|
+
confirmHint?: string;
|
|
45
|
+
loading?: boolean;
|
|
46
|
+
step?: number;
|
|
47
|
+
total?: number;
|
|
48
|
+
}
|
|
49
|
+
/** Summary before money moves: every number visible, one confirming action. */
|
|
50
|
+
export declare function ReviewStep({ rows, confirmLabel, onConfirm, confirmHint, loading, step, total, }: ReviewStepProps): React.JSX.Element;
|
|
51
|
+
export interface Transaction {
|
|
52
|
+
id: string;
|
|
53
|
+
title: string;
|
|
54
|
+
subtitle?: string;
|
|
55
|
+
/** Negative = money out. */
|
|
56
|
+
amount: number;
|
|
57
|
+
currency: string;
|
|
58
|
+
date: Date;
|
|
59
|
+
status?: 'pending' | 'failed';
|
|
60
|
+
/** Avatar image URL. */
|
|
61
|
+
image?: string;
|
|
62
|
+
}
|
|
63
|
+
export interface ActivityListProps {
|
|
64
|
+
transactions: Transaction[];
|
|
65
|
+
onPress?: (t: Transaction) => void;
|
|
66
|
+
onRefresh?: () => void;
|
|
67
|
+
refreshing?: boolean;
|
|
68
|
+
onEndReached?: () => void;
|
|
69
|
+
/** Swipe actions per row (also accessibility actions). */
|
|
70
|
+
actions?: (t: Transaction) => SwipeAction[];
|
|
71
|
+
header?: React.ReactElement;
|
|
72
|
+
empty?: React.ReactElement;
|
|
73
|
+
}
|
|
74
|
+
/** Transactions grouped by day, with pull-to-refresh, paging and swipe actions (web ActivityFeed). */
|
|
75
|
+
export declare function ActivityList({ transactions, onPress, onRefresh, refreshing, onEndReached, actions, header, empty, }: ActivityListProps): React.JSX.Element;
|
|
76
|
+
export interface TransactionDetailProps {
|
|
77
|
+
transaction: Transaction;
|
|
78
|
+
/** Extra rows: reference, account, category… */
|
|
79
|
+
rows?: ReviewRow[];
|
|
80
|
+
actions?: React.ReactNode;
|
|
81
|
+
}
|
|
82
|
+
/** One transaction: hero amount, status, summary rows (web InfoList). */
|
|
83
|
+
export declare function TransactionDetail({ transaction: t, rows, actions }: TransactionDetailProps): React.JSX.Element;
|
|
84
|
+
export interface ResultScreenProps {
|
|
85
|
+
/** @default 'success' */
|
|
86
|
+
kind?: 'success' | 'error' | 'offline' | 'maintenance' | 'update';
|
|
87
|
+
title: string;
|
|
88
|
+
description?: string;
|
|
89
|
+
/** Hero figure (e.g. the amount sent). */
|
|
90
|
+
amount?: {
|
|
91
|
+
value: number;
|
|
92
|
+
currency: string;
|
|
93
|
+
};
|
|
94
|
+
primary: {
|
|
95
|
+
label: string;
|
|
96
|
+
onPress: () => void;
|
|
97
|
+
};
|
|
98
|
+
secondary?: {
|
|
99
|
+
label: string;
|
|
100
|
+
onPress: () => void;
|
|
101
|
+
};
|
|
102
|
+
icon?: React.ComponentType<NativeIconProps>;
|
|
103
|
+
}
|
|
104
|
+
/** Full-screen outcome: success, error, offline, maintenance, or "update required". */
|
|
105
|
+
export declare function ResultScreen({ kind, title, description, amount, primary, secondary, icon, }: ResultScreenProps): React.JSX.Element;
|
|
106
|
+
//# sourceMappingURL=money.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../../../src/patterns/money.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { NativeIconProps } from '@nexub/icons/native';
|
|
3
|
+
import { type RoleName } from '../theme/ThemeProvider.js';
|
|
4
|
+
export interface IconProps extends Omit<NativeIconProps, 'color'> {
|
|
5
|
+
/** An icon from `@nexub/icons/native`, e.g. `Search`. */
|
|
6
|
+
icon: React.ComponentType<NativeIconProps>;
|
|
7
|
+
/** Colour role. @default 'on-surface-variant' */
|
|
8
|
+
color?: RoleName;
|
|
9
|
+
}
|
|
10
|
+
/** An `@nexub/icons/native` icon coloured by a role. Decorative unless `label` is set. */
|
|
11
|
+
export declare function Icon({ icon: Glyph, color, ...rest }: IconProps): React.JSX.Element;
|
|
12
|
+
//# sourceMappingURL=Icon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../src/primitives/Icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,2BAAwB,CAAC;AAEjE,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC;IAC/D,yDAAyD;IACzD,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IAC3C,iDAAiD;IACjD,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,0FAA0F;AAC1F,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAA4B,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,qBAErF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type ViewProps, type ViewStyle } from 'react-native';
|
|
3
|
+
import type { NativeTokens } from '@nexub/tokens/native';
|
|
4
|
+
import { type RoleName } from '../theme/ThemeProvider.js';
|
|
5
|
+
import type { ShapeName } from './Surface.js';
|
|
6
|
+
export type Space = keyof NativeTokens['spacing'];
|
|
7
|
+
export interface BoxProps extends ViewProps {
|
|
8
|
+
/** Padding on every side (spacing token). */
|
|
9
|
+
padding?: Space;
|
|
10
|
+
/** Horizontal padding (start + end, so RTL is free). */
|
|
11
|
+
paddingX?: Space;
|
|
12
|
+
paddingY?: Space;
|
|
13
|
+
/** Gap between children. */
|
|
14
|
+
gap?: Space;
|
|
15
|
+
background?: RoleName;
|
|
16
|
+
radius?: ShapeName;
|
|
17
|
+
align?: ViewStyle['alignItems'];
|
|
18
|
+
justify?: ViewStyle['justifyContent'];
|
|
19
|
+
flex?: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function Box({ style, ...props }: BoxProps): React.JSX.Element;
|
|
22
|
+
/** Children in a column. @default gap '3' */
|
|
23
|
+
export declare function Stack({ gap, style, ...props }: BoxProps): React.JSX.Element;
|
|
24
|
+
/** Children in a row that wraps, centred on the cross axis. @default gap '2' */
|
|
25
|
+
export declare function Inline({ gap, align, style, ...props }: BoxProps): React.JSX.Element;
|
|
26
|
+
//# sourceMappingURL=Layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layout.d.ts","sourceRoot":"","sources":["../../../src/primitives/Layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,2BAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAW,CAAC;AAE3C,MAAM,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;AAElD,MAAM,WAAW,QAAS,SAAQ,SAAS;IACzC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,4BAA4B;IAC5B,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA4BD,wBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,QAAQ,qBAEhD;AAED,6CAA6C;AAC7C,wBAAgB,KAAK,CAAC,EAAE,GAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,QAAQ,qBAE7D;AAED,gFAAgF;AAChF,wBAAgB,MAAM,CAAC,EAAE,GAAS,EAAE,KAAgB,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,QAAQ,qBAWhF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type PressableProps as RNPressableProps, type StyleProp, type ViewStyle } from 'react-native';
|
|
3
|
+
import type { HapticToken } from '../theme/haptics.js';
|
|
4
|
+
import { type RoleName } from '../theme/ThemeProvider.js';
|
|
5
|
+
export interface PressableProps extends Omit<RNPressableProps, 'style' | 'children'> {
|
|
6
|
+
style?: StyleProp<ViewStyle>;
|
|
7
|
+
children?: React.ReactNode;
|
|
8
|
+
/** Haptic played on press (Apple: not for plain taps — toggles, selections, outcomes). */
|
|
9
|
+
haptic?: HapticToken;
|
|
10
|
+
/** On-colour of the state layer, or false for none. @default 'on-surface' */
|
|
11
|
+
stateLayer?: RoleName | false;
|
|
12
|
+
/** Press-scale target, or false for none. @default 0.97 */
|
|
13
|
+
pressScale?: number | false;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The base of every Nexub control: a state layer (on-colour at the pressed
|
|
17
|
+
* opacity) and a 0.97 press-scale on the spatial-fast spring. No ripple.
|
|
18
|
+
* Reduce Motion is honoured by Reanimated (ReduceMotion.System).
|
|
19
|
+
*/
|
|
20
|
+
export declare function Pressable({ style, children, haptic, stateLayer, pressScale, disabled, onPress, onPressIn, onPressOut, ...rest }: PressableProps): React.JSX.Element;
|
|
21
|
+
//# sourceMappingURL=Pressable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pressable.d.ts","sourceRoot":"","sources":["../../../src/primitives/Pressable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAKL,KAAK,cAAc,IAAI,gBAAgB,EACvC,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAkB,CAAC;AACpD,OAAO,EAAwB,KAAK,QAAQ,EAAE,MAAM,2BAAwB,CAAC;AAO7E,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,UAAU,CAAC;IAClF,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,0FAA0F;IAC1F,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC9B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,UAAyB,EACzB,UAAiB,EACjB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,EACV,GAAG,IAAI,EACR,EAAE,cAAc,qBA+ChB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type ScrollViewProps, type ViewStyle } from 'react-native';
|
|
3
|
+
import { type Edge } from 'react-native-safe-area-context';
|
|
4
|
+
import { type RoleName } from '../theme/ThemeProvider.js';
|
|
5
|
+
import type { Space } from './Layout.js';
|
|
6
|
+
export interface ScreenContainerProps extends Omit<ScrollViewProps, 'contentContainerStyle'> {
|
|
7
|
+
/** Scrolls (and lets a native large title collapse). @default true */
|
|
8
|
+
scroll?: boolean;
|
|
9
|
+
/** Safe-area edges to pad. A native header already covers 'top'. @default ['left', 'right', 'bottom'] */
|
|
10
|
+
edges?: Edge[];
|
|
11
|
+
/** @default 'surface' */
|
|
12
|
+
background?: RoleName;
|
|
13
|
+
/** Content padding. @default '4' */
|
|
14
|
+
padding?: Space;
|
|
15
|
+
/** Gap between children. @default '4' */
|
|
16
|
+
gap?: Space;
|
|
17
|
+
contentStyle?: ViewStyle;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The root of every screen: background, edge-to-edge safe-area insets and
|
|
21
|
+
* content padding. With `scroll`, iOS adjusts insets itself
|
|
22
|
+
* (contentInsetAdjustmentBehavior) so native large titles collapse.
|
|
23
|
+
*/
|
|
24
|
+
export declare function ScreenContainer({ scroll, edges, background, padding, gap, contentStyle, children, style, ...rest }: ScreenContainerProps): React.JSX.Element;
|
|
25
|
+
//# sourceMappingURL=ScreenContainer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScreenContainer.d.ts","sourceRoot":"","sources":["../../../src/primitives/ScreenContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAoB,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAqB,KAAK,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,2BAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAU,CAAC;AAEtC,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,eAAe,EAAE,uBAAuB,CAAC;IAC1F,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yGAAyG;IACzG,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,yBAAyB;IACzB,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,oCAAoC;IACpC,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAC9B,MAAa,EACb,KAAmC,EACnC,UAAsB,EACtB,OAAa,EACb,GAAS,EACT,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,GAAG,IAAI,EACR,EAAE,oBAAoB,qBA6BtB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type ViewProps } from 'react-native';
|
|
3
|
+
import type { NativeTokens } from '@nexub/tokens/native';
|
|
4
|
+
import { type ElevationLevel, type RoleName } from '../theme/ThemeProvider.js';
|
|
5
|
+
export type SurfaceTone = Extract<RoleName, `surface${string}`>;
|
|
6
|
+
export type ShapeName = keyof NativeTokens['shape'];
|
|
7
|
+
export interface SurfaceProps extends ViewProps {
|
|
8
|
+
/** Tonal tier. @default 'surface' */
|
|
9
|
+
tone?: SurfaceTone;
|
|
10
|
+
/** @default 0 */
|
|
11
|
+
elevation?: ElevationLevel;
|
|
12
|
+
/** 'glass' is for the control layer only (bars, floating controls), never content. @default 'solid' */
|
|
13
|
+
material?: 'solid' | 'glass';
|
|
14
|
+
/** Corner radius: a shape token or dp. */
|
|
15
|
+
radius?: ShapeName | number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A tonal surface. `material="glass"` is native Liquid Glass on iOS 26+, and
|
|
19
|
+
* `surface-elevated` + hairline elsewhere, or whenever glass is 'off' (user
|
|
20
|
+
* setting or Reduce Transparency).
|
|
21
|
+
*/
|
|
22
|
+
export declare function Surface({ tone, elevation, material, radius, style, ...rest }: SurfaceProps): React.JSX.Element;
|
|
23
|
+
//# sourceMappingURL=Surface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Surface.d.ts","sourceRoot":"","sources":["../../../src/primitives/Surface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA8B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,2BAAwB,CAAC;AAYtF,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,MAAM,EAAE,CAAC,CAAC;AAChE,MAAM,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;AAEpD,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,qCAAqC;IACrC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,iBAAiB;IACjB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,uGAAuG;IACvG,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,EACtB,IAAgB,EAChB,SAAa,EACb,QAAkB,EAClB,MAAM,EACN,KAAK,EACL,GAAG,IAAI,EACR,EAAE,YAAY,qBAiCd"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type TextProps as RNTextProps } from 'react-native';
|
|
3
|
+
import type { NativeTypeRole } from '@nexub/tokens/native';
|
|
4
|
+
import { type FontFamily } from '../theme/fonts.js';
|
|
5
|
+
import { type RoleName } from '../theme/ThemeProvider.js';
|
|
6
|
+
export interface TextProps extends RNTextProps {
|
|
7
|
+
/** Type role. @default 'body-md' */
|
|
8
|
+
variant?: NativeTypeRole;
|
|
9
|
+
/** Colour role. @default 'on-surface' */
|
|
10
|
+
color?: RoleName;
|
|
11
|
+
/** Tabular figures, for numbers that line up. */
|
|
12
|
+
tabular?: boolean;
|
|
13
|
+
/** Overrides the role's family (e.g. 'mono' for codes). */
|
|
14
|
+
family?: FontFamily;
|
|
15
|
+
}
|
|
16
|
+
export declare function Text({ variant, color, tabular, family, style, ...rest }: TextProps): React.JSX.Element;
|
|
17
|
+
export interface HeadingProps extends TextProps {
|
|
18
|
+
}
|
|
19
|
+
/** Text announced as a heading. @default variant 'headline-sm' */
|
|
20
|
+
export declare function Heading({ variant, ...rest }: HeadingProps): React.JSX.Element;
|
|
21
|
+
//# sourceMappingURL=Text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../src/primitives/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAkB,KAAK,SAAS,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,mBAAgB,CAAC;AAC5D,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,2BAAwB,CAAC;AA4BjE,MAAM,WAAW,SAAU,SAAQ,WAAW;IAC5C,oCAAoC;IACpC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,yCAAyC;IACzC,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,wBAAgB,IAAI,CAAC,EACnB,OAAmB,EACnB,KAAoB,EACpB,OAAO,EACP,MAAM,EACN,KAAK,EACL,GAAG,IAAI,EACR,EAAE,SAAS,qBAqBX;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS;CAAG;AAElD,kEAAkE;AAClE,wBAAgB,OAAO,CAAC,EAAE,OAAuB,EAAE,GAAG,IAAI,EAAE,EAAE,YAAY,qBAEzE"}
|