@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.
- package/README.md +113 -2
- package/lib/module/components/actions.js +222 -0
- package/lib/module/components/actions.js.map +1 -0
- package/lib/module/components/containers.js +300 -0
- package/lib/module/components/containers.js.map +1 -0
- package/lib/module/components/display.js +299 -0
- package/lib/module/components/display.js.map +1 -0
- package/lib/module/components/feedback.js +484 -0
- package/lib/module/components/feedback.js.map +1 -0
- package/lib/module/components/inputs.js +792 -0
- package/lib/module/components/inputs.js.map +1 -0
- package/lib/module/components/mobile.js +818 -0
- package/lib/module/components/mobile.js.map +1 -0
- package/lib/module/components/overlays.js +421 -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 +31 -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/home.js +201 -0
- package/lib/module/patterns/home.js.map +1 -0
- package/lib/module/patterns/index.js +8 -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 +79 -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/motion.js +89 -0
- package/lib/module/theme/motion.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 +68 -0
- package/lib/typescript/components/display.d.ts.map +1 -0
- package/lib/typescript/components/feedback.d.ts +96 -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 +39 -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/home.d.ts +50 -0
- package/lib/typescript/patterns/home.d.ts.map +1 -0
- package/lib/typescript/patterns/index.d.ts +9 -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/motion.d.ts +79 -0
- package/lib/typescript/theme/motion.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 +352 -0
- package/src/components/display.tsx +345 -0
- package/src/components/feedback.tsx +541 -0
- package/src/components/inputs.tsx +899 -0
- package/src/components/mobile.tsx +883 -0
- package/src/components/overlays.tsx +488 -0
- package/src/components/shared.ts +54 -0
- package/src/hooks/useControllableState.ts +27 -0
- package/src/index.ts +177 -0
- package/src/patterns/app.tsx +715 -0
- package/src/patterns/auth.tsx +266 -0
- package/src/patterns/home.tsx +211 -0
- package/src/patterns/index.ts +59 -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 +97 -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/motion.ts +105 -0
- package/src/theme/navigation.ts +68 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Native chrome, Nexub colours: options for the system navigation (native
|
|
4
|
+
// stack header, tabs, React Navigation theme). We theme it; we never redraw it.
|
|
5
|
+
import { fontStyle } from "./fonts.js";
|
|
6
|
+
import { useTheme } from "./ThemeProvider.js";
|
|
7
|
+
|
|
8
|
+
/** Native stack `screenOptions`: large titles on a surface-coloured native header, Nexub type and tint. */
|
|
9
|
+
export function nexubStackOptions(theme) {
|
|
10
|
+
const {
|
|
11
|
+
roles,
|
|
12
|
+
fonts
|
|
13
|
+
} = theme;
|
|
14
|
+
return {
|
|
15
|
+
headerLargeTitle: true,
|
|
16
|
+
// Opaque: a transparent header hid the expanded large title (iOS 26); the
|
|
17
|
+
// system still draws its scroll-edge effect on an opaque native header.
|
|
18
|
+
headerTransparent: false,
|
|
19
|
+
headerShadowVisible: false,
|
|
20
|
+
headerLargeTitleShadowVisible: false,
|
|
21
|
+
headerTintColor: roles.primary,
|
|
22
|
+
headerStyle: {
|
|
23
|
+
backgroundColor: roles.surface
|
|
24
|
+
},
|
|
25
|
+
headerTitleStyle: {
|
|
26
|
+
color: roles['on-surface'],
|
|
27
|
+
...fontStyle('sans', 600, fonts)
|
|
28
|
+
},
|
|
29
|
+
headerLargeTitleStyle: {
|
|
30
|
+
color: roles['on-surface'],
|
|
31
|
+
...fontStyle('display', 700, fonts)
|
|
32
|
+
},
|
|
33
|
+
contentStyle: {
|
|
34
|
+
backgroundColor: roles.surface
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** React Navigation `theme` (also Expo Router's ThemeProvider). */
|
|
40
|
+
export function nexubNavigationTheme(theme) {
|
|
41
|
+
const {
|
|
42
|
+
roles,
|
|
43
|
+
fonts,
|
|
44
|
+
scheme
|
|
45
|
+
} = theme;
|
|
46
|
+
const font = weight => {
|
|
47
|
+
const f = fontStyle('sans', weight, fonts);
|
|
48
|
+
return {
|
|
49
|
+
fontFamily: 'fontFamily' in f ? f.fontFamily : 'System',
|
|
50
|
+
fontWeight: String(weight)
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
return {
|
|
54
|
+
dark: scheme === 'dark',
|
|
55
|
+
colors: {
|
|
56
|
+
primary: roles.primary,
|
|
57
|
+
background: roles.surface,
|
|
58
|
+
card: roles['surface-container'],
|
|
59
|
+
text: roles['on-surface'],
|
|
60
|
+
border: roles['outline-variant'],
|
|
61
|
+
notification: roles.error
|
|
62
|
+
},
|
|
63
|
+
fonts: {
|
|
64
|
+
regular: font(400),
|
|
65
|
+
medium: font(500),
|
|
66
|
+
bold: font(600),
|
|
67
|
+
heavy: font(700)
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** Colours for native tab bars (Expo Router NativeTabs / react-native-bottom-tabs). */
|
|
73
|
+
export function nexubTabsOptions(theme) {
|
|
74
|
+
const {
|
|
75
|
+
roles,
|
|
76
|
+
fonts
|
|
77
|
+
} = theme;
|
|
78
|
+
return {
|
|
79
|
+
tintColor: roles.primary,
|
|
80
|
+
inactiveTintColor: roles['on-surface-variant'],
|
|
81
|
+
backgroundColor: roles['surface-container'],
|
|
82
|
+
badgeBackgroundColor: roles.error,
|
|
83
|
+
labelStyle: {
|
|
84
|
+
...fontStyle('sans', 500, fonts),
|
|
85
|
+
fontSize: 11
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/** All three for the current theme: `const nav = useNexubNavigation()`. */
|
|
91
|
+
export function useNexubNavigation() {
|
|
92
|
+
const theme = useTheme();
|
|
93
|
+
return {
|
|
94
|
+
stack: nexubStackOptions(theme),
|
|
95
|
+
theme: nexubNavigationTheme(theme),
|
|
96
|
+
tabs: nexubTabsOptions(theme)
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=navigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["fontStyle","useTheme","nexubStackOptions","theme","roles","fonts","headerLargeTitle","headerTransparent","headerShadowVisible","headerLargeTitleShadowVisible","headerTintColor","primary","headerStyle","backgroundColor","surface","headerTitleStyle","color","headerLargeTitleStyle","contentStyle","nexubNavigationTheme","scheme","font","weight","f","fontFamily","fontWeight","String","dark","colors","background","card","text","border","notification","error","regular","medium","bold","heavy","nexubTabsOptions","tintColor","inactiveTintColor","badgeBackgroundColor","labelStyle","fontSize","useNexubNavigation","stack","tabs"],"sourceRoot":"../../../src","sources":["theme/navigation.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type StyleProp, type ViewStyle } from 'react-native';
|
|
3
|
+
import type { ControlSize, ToneValue } from '@nexub/core';
|
|
4
|
+
import type { NativeIconProps } from '@nexub/icons/native';
|
|
5
|
+
import { type PressableProps } from '../primitives/Pressable.js';
|
|
6
|
+
import type { HapticToken } from '../theme/haptics.js';
|
|
7
|
+
export type ButtonVariant = 'filled' | 'tonal' | 'outlined' | 'text' | 'glass';
|
|
8
|
+
export interface ButtonProps extends Omit<PressableProps, 'children'> {
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
/** @default 'filled' */
|
|
11
|
+
variant?: ButtonVariant;
|
|
12
|
+
/** Solid semantic or product colour (overrides the variant colour). */
|
|
13
|
+
tone?: ToneValue;
|
|
14
|
+
/** The control ladder. Primary actions on mobile use 'lg' (48). @default 'md' */
|
|
15
|
+
size?: ControlSize;
|
|
16
|
+
/** Shows a spinner, blocks presses and announces `loadingLabel`. */
|
|
17
|
+
loading?: boolean;
|
|
18
|
+
loadingLabel?: string;
|
|
19
|
+
fullWidth?: boolean;
|
|
20
|
+
leadingIcon?: React.ComponentType<NativeIconProps>;
|
|
21
|
+
trailingIcon?: React.ComponentType<NativeIconProps>;
|
|
22
|
+
}
|
|
23
|
+
/** Capsule button. One `filled` (or toned) action per screen; the rest tonal/outlined/text. */
|
|
24
|
+
export declare function Button({ children, variant, tone, size, loading, loadingLabel, fullWidth, leadingIcon: Leading, trailingIcon: Trailing, disabled, style, accessibilityLabel, ...rest }: ButtonProps): React.JSX.Element;
|
|
25
|
+
export interface IconButtonProps extends Omit<PressableProps, 'children'> {
|
|
26
|
+
icon: React.ComponentType<NativeIconProps>;
|
|
27
|
+
/** Required: the accessible name (what it does, not "button"). */
|
|
28
|
+
label: string;
|
|
29
|
+
/** @default 'text' */
|
|
30
|
+
variant?: ButtonVariant;
|
|
31
|
+
tone?: ToneValue;
|
|
32
|
+
/** @default 'md' */
|
|
33
|
+
size?: ControlSize;
|
|
34
|
+
/** Toggle state for icon toggles (favourite, mute). */
|
|
35
|
+
selected?: boolean;
|
|
36
|
+
haptic?: HapticToken;
|
|
37
|
+
}
|
|
38
|
+
/** Circular icon-only button; always 44pt+ to touch. */
|
|
39
|
+
export declare function IconButton({ icon: Glyph, label, variant, tone, size, selected, disabled, style, ...rest }: IconButtonProps): React.JSX.Element;
|
|
40
|
+
export interface ButtonGroupProps {
|
|
41
|
+
children: React.ReactNode;
|
|
42
|
+
/** 'stack' puts actions full-width in a column (bottom of forms). @default 'row' */
|
|
43
|
+
direction?: 'row' | 'stack';
|
|
44
|
+
style?: StyleProp<ViewStyle>;
|
|
45
|
+
}
|
|
46
|
+
/** Related actions together. In a stack, put the primary action first. */
|
|
47
|
+
export declare function ButtonGroup({ children, direction, style }: ButtonGroupProps): React.JSX.Element;
|
|
48
|
+
export interface LinkProps extends Omit<PressableProps, 'children'> {
|
|
49
|
+
children: string;
|
|
50
|
+
}
|
|
51
|
+
/** Inline text action. Opens nothing by itself: pass `onPress` (e.g. router.push / Linking.openURL). */
|
|
52
|
+
export declare function Link({ children, style, ...rest }: LinkProps): React.JSX.Element;
|
|
53
|
+
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/components/actions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA2B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,4BAAyB,CAAC;AAIzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAkB,CAAC;AAGpD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AA2B/E,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC;IACnE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,wBAAwB;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,uEAAuE;IACvE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,iFAAiF;IACjF,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,oEAAoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IACnD,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;CACrD;AAED,+FAA+F;AAC/F,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,OAAkB,EAClB,IAAI,EACJ,IAAW,EACX,OAAO,EACP,YAAY,EACZ,SAAS,EACT,WAAW,EAAE,OAAO,EACpB,YAAY,EAAE,QAAQ,EACtB,QAAQ,EACR,KAAK,EACL,kBAAkB,EAClB,GAAG,IAAI,EACR,EAAE,WAAW,qBA0Eb;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC;IACvE,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IAC3C,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oBAAoB;IACpB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,EACzB,IAAI,EAAE,KAAK,EACX,KAAK,EACL,OAAgB,EAChB,IAAI,EACJ,IAAW,EACX,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,GAAG,IAAI,EACR,EAAE,eAAe,qBAqCjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,oFAAoF;IACpF,SAAS,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,SAAiB,EAAE,KAAK,EAAE,EAAE,gBAAgB,qBAkBnF;AAED,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC;IACjE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wGAAwG;AACxG,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,qBAgB3D"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type StyleProp, type ViewProps, type ViewStyle } from 'react-native';
|
|
3
|
+
import { type SurfaceProps } from '../primitives/Surface.js';
|
|
4
|
+
export interface CardProps extends SurfaceProps {
|
|
5
|
+
/** Makes the whole card one pressable target (navigates to detail). */
|
|
6
|
+
onPress?: () => void;
|
|
7
|
+
/** Accessible name when pressable. */
|
|
8
|
+
accessibilityLabel?: string;
|
|
9
|
+
}
|
|
10
|
+
/** Content container on a tonal tier. Hierarchy through tone, not shadow (elevation for floating cards only). */
|
|
11
|
+
export declare function Card({ onPress, accessibilityLabel, tone, radius, style, children, ...rest }: CardProps): React.JSX.Element;
|
|
12
|
+
export type ListItemVariant = 'static' | 'navigation' | 'switch' | 'checkbox' | 'radio' | 'button' | 'value';
|
|
13
|
+
export interface ListItemProps {
|
|
14
|
+
title: string;
|
|
15
|
+
subtitle?: string;
|
|
16
|
+
/** Icon, Avatar or flag before the text. */
|
|
17
|
+
leading?: React.ReactNode;
|
|
18
|
+
/** Trailing text (variant 'value' or 'navigation'), e.g. "English" or an amount. */
|
|
19
|
+
value?: string;
|
|
20
|
+
/** Custom trailing content (overrides the variant's). */
|
|
21
|
+
trailing?: React.ReactNode;
|
|
22
|
+
/** @default 'navigation' when onPress is set, else 'static' */
|
|
23
|
+
variant?: ListItemVariant;
|
|
24
|
+
/** For switch / checkbox / radio rows. */
|
|
25
|
+
checked?: boolean;
|
|
26
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
27
|
+
onPress?: () => void;
|
|
28
|
+
/** Button rows: red, for destructive actions (Sign out, Delete). */
|
|
29
|
+
destructive?: boolean;
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
style?: StyleProp<ViewStyle>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* One row of a list (Wise "List Item" model). The whole row is a single
|
|
35
|
+
* target and a single screen-reader element: "Title, subtitle, value".
|
|
36
|
+
*/
|
|
37
|
+
export declare function ListItem({ title, subtitle, leading, value, trailing, variant: variantProp, checked, onCheckedChange, onPress, destructive, disabled, style, }: ListItemProps): React.JSX.Element;
|
|
38
|
+
export interface ListSectionProps extends ViewProps {
|
|
39
|
+
/** Section title above the group. */
|
|
40
|
+
header?: string;
|
|
41
|
+
/** Helper text below the group. */
|
|
42
|
+
footer?: string;
|
|
43
|
+
/** Divider inset: 16 for text rows, 56 when rows have a leading icon. @default 16 */
|
|
44
|
+
inset?: number;
|
|
45
|
+
children: React.ReactNode;
|
|
46
|
+
}
|
|
47
|
+
/** Inset-grouped rows on a container tier, hairlines between rows only. */
|
|
48
|
+
export declare function ListSection({ header, footer, inset, children, style, ...rest }: ListSectionProps): React.JSX.Element;
|
|
49
|
+
export interface AccordionProps {
|
|
50
|
+
title: string;
|
|
51
|
+
expanded?: boolean;
|
|
52
|
+
defaultExpanded?: boolean;
|
|
53
|
+
onExpandedChange?: (expanded: boolean) => void;
|
|
54
|
+
children: React.ReactNode;
|
|
55
|
+
style?: StyleProp<ViewStyle>;
|
|
56
|
+
}
|
|
57
|
+
/** Disclosure: a header row that shows or hides its content. */
|
|
58
|
+
export declare function Accordion({ title, expanded, defaultExpanded, onExpandedChange, children, style, }: AccordionProps): React.JSX.Element;
|
|
59
|
+
//# sourceMappingURL=containers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../../src/components/containers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAKtB,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,0BAAuB,CAAC;AASnE,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,sCAAsC;IACtC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,iHAAiH;AACjH,wBAAgB,IAAI,CAAC,EACnB,OAAO,EACP,kBAAkB,EAClB,IAA8B,EAC9B,MAAoB,EACpB,KAAK,EACL,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,SAAS,qBAsBX;AAID,MAAM,MAAM,eAAe,GACzB,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEjF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,oEAAoE;IACpE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,KAAK,EACL,QAAQ,EACR,OAAO,EAAE,WAAW,EACpB,OAAO,EACP,eAAe,EACf,OAAO,EACP,WAAW,EACX,QAAQ,EACR,KAAK,GACN,EAAE,aAAa,qBAqHf;AAID,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,MAAM,EACN,KAAU,EACV,QAAQ,EACR,KAAK,EACL,GAAG,IAAI,EACR,EAAE,gBAAgB,qBAiDlB;AAID,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,gEAAgE;AAChE,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,eAAuB,EACvB,gBAAgB,EAChB,QAAQ,EACR,KAAK,GACN,EAAE,cAAc,qBAsChB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type StyleProp, type ViewProps, type ViewStyle } from 'react-native';
|
|
3
|
+
import { type ToneValue } from '@nexub/core';
|
|
4
|
+
import type { NativeIconProps } from '@nexub/icons/native';
|
|
5
|
+
export interface AmountProps {
|
|
6
|
+
/**
|
|
7
|
+
* Animate value changes: the new figure rises in on the spatial spring.
|
|
8
|
+
* Wraps the text in a view, so leave it off when Amount sits inside other text.
|
|
9
|
+
* @default false
|
|
10
|
+
*/
|
|
11
|
+
animate?: boolean;
|
|
12
|
+
value: number;
|
|
13
|
+
/** ISO 4217 code, e.g. 'USD', 'EUR', 'INR'. */
|
|
14
|
+
currency: string;
|
|
15
|
+
/** BCP 47 locale. @default the provider's */
|
|
16
|
+
locale?: string;
|
|
17
|
+
/** `display`: a hero figure in the brand face with a quieter symbol and minor units. @default 'md' */
|
|
18
|
+
size?: 'sm' | 'md' | 'lg' | 'display';
|
|
19
|
+
/** `auto` colours gains success and losses error (use with signDisplay). @default 'neutral' */
|
|
20
|
+
tone?: 'neutral' | 'auto';
|
|
21
|
+
/** e.g. 'exceptZero' to show "+" on gains. */
|
|
22
|
+
signDisplay?: Intl.NumberFormatOptions['signDisplay'];
|
|
23
|
+
style?: StyleProp<ViewStyle>;
|
|
24
|
+
}
|
|
25
|
+
/** Money, formatted by Intl with tabular figures. Same API as web `Amount`. */
|
|
26
|
+
export declare function Amount({ value, currency, locale, size, tone, signDisplay, animate, style, }: AmountProps): React.JSX.Element;
|
|
27
|
+
export interface BadgeProps extends ViewProps {
|
|
28
|
+
children?: string | number;
|
|
29
|
+
/** @default 'neutral' */
|
|
30
|
+
tone?: ToneValue;
|
|
31
|
+
/** @default 'soft' */
|
|
32
|
+
variant?: 'solid' | 'soft' | 'outline';
|
|
33
|
+
/** @default 'md' */
|
|
34
|
+
size?: 'sm' | 'md';
|
|
35
|
+
/** A status dot before the label (replaces web StatusPill). */
|
|
36
|
+
dot?: boolean;
|
|
37
|
+
leadingIcon?: React.ComponentType<NativeIconProps>;
|
|
38
|
+
}
|
|
39
|
+
/** Status, count or category label. Never tappable; use `Chip` for anything a user toggles. */
|
|
40
|
+
export declare function Badge({ children, tone, variant, size, dot, leadingIcon: Lead, style, ...rest }: BadgeProps): React.JSX.Element;
|
|
41
|
+
export type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
42
|
+
export interface AvatarProps extends ViewProps {
|
|
43
|
+
/** Image URL. Falls back to initials when missing or broken. */
|
|
44
|
+
src?: string;
|
|
45
|
+
/** Person or org name: initials and the accessible name. */
|
|
46
|
+
name?: string;
|
|
47
|
+
/** @default 'md' */
|
|
48
|
+
size?: AvatarSize;
|
|
49
|
+
/** Online/status dot. */
|
|
50
|
+
badge?: boolean;
|
|
51
|
+
}
|
|
52
|
+
export declare function Avatar({ src, name, size, badge, style, ...rest }: AvatarProps): React.JSX.Element;
|
|
53
|
+
export interface AvatarGroupProps extends ViewProps {
|
|
54
|
+
children: React.ReactElement<AvatarProps>[];
|
|
55
|
+
/** Avatars shown before "+N". @default 4 */
|
|
56
|
+
max?: number;
|
|
57
|
+
size?: AvatarSize;
|
|
58
|
+
}
|
|
59
|
+
export declare function AvatarGroup({ children, max, size, style, ...rest }: AvatarGroupProps): React.JSX.Element;
|
|
60
|
+
export interface DividerProps extends ViewProps {
|
|
61
|
+
/** Indent from the start edge (aligns with list text after a leading icon). */
|
|
62
|
+
inset?: number;
|
|
63
|
+
/** @default 'horizontal' */
|
|
64
|
+
orientation?: 'horizontal' | 'vertical';
|
|
65
|
+
}
|
|
66
|
+
/** Hairline separator. Prefer spacing and tonal tiers first (Calm Depth: remove dividers before adding them). */
|
|
67
|
+
export declare function Divider({ inset, orientation, style, ...rest }: DividerProps): React.JSX.Element;
|
|
68
|
+
//# sourceMappingURL=display.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../../src/components/display.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type StyleProp, type ViewProps, type ViewStyle } from 'react-native';
|
|
3
|
+
import type { ToneValue } from '@nexub/core';
|
|
4
|
+
import { type NativeIconProps } from '@nexub/icons/native';
|
|
5
|
+
export interface BannerProps extends ViewProps {
|
|
6
|
+
title?: string;
|
|
7
|
+
children?: React.ReactNode;
|
|
8
|
+
/** @default 'info' */
|
|
9
|
+
tone?: ToneValue;
|
|
10
|
+
/** One action, e.g. <Button variant="text">Review</Button>. */
|
|
11
|
+
action?: React.ReactNode;
|
|
12
|
+
onDismiss?: () => void;
|
|
13
|
+
}
|
|
14
|
+
/** Persistent in-page message (web Banner / Alert / Callout). */
|
|
15
|
+
export declare function Banner({ title, children, tone, action, onDismiss, style, ...rest }: BannerProps): React.JSX.Element;
|
|
16
|
+
export interface ToastOptions {
|
|
17
|
+
message: string;
|
|
18
|
+
/** One short action ("Undo"). */
|
|
19
|
+
action?: {
|
|
20
|
+
label: string;
|
|
21
|
+
onPress: () => void;
|
|
22
|
+
};
|
|
23
|
+
tone?: ToneValue;
|
|
24
|
+
/** 'short' 4 s, 'long' 10 s (Material snackbar timings). @default 'long' with an action (time to reach it, WCAG 2.2.1), else 'short' */
|
|
25
|
+
duration?: 'short' | 'long';
|
|
26
|
+
}
|
|
27
|
+
export interface ToastProviderProps {
|
|
28
|
+
children: React.ReactNode;
|
|
29
|
+
/** Extra space above the bottom inset, e.g. the tab bar height. @default 0 */
|
|
30
|
+
bottomOffset?: number;
|
|
31
|
+
}
|
|
32
|
+
/** Hosts one toast at a time above the bottom safe area. Put it inside NexubNativeProvider. */
|
|
33
|
+
export declare function ToastProvider({ children, bottomOffset }: ToastProviderProps): React.JSX.Element;
|
|
34
|
+
/** `const toast = useToast(); toast({ message: 'Saved' })`. Needs ToastProvider. */
|
|
35
|
+
export declare const useToast: () => (t: ToastOptions) => void;
|
|
36
|
+
export interface DialogProps {
|
|
37
|
+
open: boolean;
|
|
38
|
+
onOpenChange: (open: boolean) => void;
|
|
39
|
+
title: string;
|
|
40
|
+
description?: string;
|
|
41
|
+
/** Extra content between the description and the actions. */
|
|
42
|
+
children?: React.ReactNode;
|
|
43
|
+
/** 1–2 Buttons; put the confirming action last. */
|
|
44
|
+
actions: React.ReactNode;
|
|
45
|
+
/** Tapping the scrim or Android back closes it. @default true */
|
|
46
|
+
dismissable?: boolean;
|
|
47
|
+
}
|
|
48
|
+
/** Modal alert for decisions that block the flow. Prefer a sheet for anything longer. */
|
|
49
|
+
export declare function Dialog({ open, onOpenChange, title, description, children, actions, dismissable, }: DialogProps): React.JSX.Element;
|
|
50
|
+
export interface ProgressProps {
|
|
51
|
+
/** 0–1. */
|
|
52
|
+
value: number;
|
|
53
|
+
label: string;
|
|
54
|
+
/** @default 'linear' */
|
|
55
|
+
variant?: 'linear' | 'circular';
|
|
56
|
+
/** Circular diameter. @default 40 */
|
|
57
|
+
size?: number;
|
|
58
|
+
style?: StyleProp<ViewStyle>;
|
|
59
|
+
}
|
|
60
|
+
/** Determinate progress. For unknown waits use LoadingIndicator. */
|
|
61
|
+
export declare function Progress({ value, label, variant, size, style }: ProgressProps): React.JSX.Element;
|
|
62
|
+
/** The platform activity indicator in the primary role. */
|
|
63
|
+
export declare function LoadingIndicator({ size, label, }: {
|
|
64
|
+
size?: 'small' | 'large';
|
|
65
|
+
label?: string;
|
|
66
|
+
}): React.JSX.Element;
|
|
67
|
+
export interface SkeletonProps {
|
|
68
|
+
width?: ViewStyle['width'];
|
|
69
|
+
/** @default 16 */
|
|
70
|
+
height?: number;
|
|
71
|
+
/** @default 'field' */
|
|
72
|
+
radius?: 'field' | 'control' | 'container' | number;
|
|
73
|
+
style?: StyleProp<ViewStyle>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Loading placeholder. Breathes between full and half opacity (a slow, calm
|
|
77
|
+
* shimmer); static under Reduce Motion. Hidden from screen readers.
|
|
78
|
+
*/
|
|
79
|
+
export declare function Skeleton({ width, height, radius, style }: SkeletonProps): React.JSX.Element;
|
|
80
|
+
export interface EmptyStateProps extends ViewProps {
|
|
81
|
+
title: string;
|
|
82
|
+
description?: string;
|
|
83
|
+
icon?: React.ComponentType<NativeIconProps>;
|
|
84
|
+
/** @default 'neutral' */
|
|
85
|
+
tone?: ToneValue;
|
|
86
|
+
/** Primary next step, e.g. <Button>Add money</Button>. */
|
|
87
|
+
action?: React.ReactNode;
|
|
88
|
+
}
|
|
89
|
+
/** Nothing here yet: say why and offer the next step. */
|
|
90
|
+
export declare function EmptyState({ title, description, icon: Glyph, tone, action, style, ...rest }: EmptyStateProps): React.JSX.Element;
|
|
91
|
+
export interface ErrorStateProps extends Omit<EmptyStateProps, 'tone' | 'action'> {
|
|
92
|
+
/** Shows a Retry button (messages.retry). */
|
|
93
|
+
onRetry?: () => void;
|
|
94
|
+
}
|
|
95
|
+
export declare function ErrorState({ onRetry, icon, ...rest }: ErrorStateProps): React.JSX.Element;
|
|
96
|
+
//# sourceMappingURL=feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../../src/components/feedback.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAML,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAYtB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAML,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAiB7B,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,sBAAsB;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,iEAAiE;AACjE,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,QAAQ,EACR,IAAa,EACb,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,WAAW,qBAkDb;AAID,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IAChD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,wIAAwI;IACxI,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC7B;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,+FAA+F;AAC/F,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,YAAgB,EAAE,EAAE,kBAAkB,qBA6E/E;AAED,oFAAoF;AACpF,eAAO,MAAM,QAAQ,YAzFoB,YAAY,KAAK,IAyFF,CAAC;AAIzD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,mDAAmD;IACnD,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,iEAAiE;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,yFAAyF;AACzF,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,OAAO,EACP,WAAkB,GACnB,EAAE,WAAW,qBAyEb;AAID,MAAM,WAAW,aAAa;IAC5B,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAChC,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAkB,EAAE,IAAS,EAAE,KAAK,EAAE,EAAE,aAAa,qBAwD7F;AAED,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,EAC/B,IAAc,EACd,KAAK,GACN,EAAE;IACD,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,qBASA;AAID,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC3B,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;IACpD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAAc,EAAE,MAAW,EAAE,MAAgB,EAAE,KAAK,EAAE,EAAE,aAAa,qBA4B/F;AAOD,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IAC5C,yBAAyB;IACzB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,IAAI,EAAE,KAAY,EAClB,IAAgB,EAChB,MAAM,EACN,KAAK,EACL,GAAG,IAAI,EACR,EAAE,eAAe,qBAuCjB;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC/E,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,IAAoB,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,qBAgBrF"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { TextInput, type StyleProp, type TextInputProps, type ViewStyle } from 'react-native';
|
|
3
|
+
import { type ControlSize } from '@nexub/core';
|
|
4
|
+
import { type NativeIconProps } from '@nexub/icons/native';
|
|
5
|
+
export interface TextFieldProps extends Omit<TextInputProps, 'style' | 'editable'> {
|
|
6
|
+
ref?: React.Ref<React.ComponentRef<typeof TextInput>>;
|
|
7
|
+
/** Visible label above the field (also its accessible name). */
|
|
8
|
+
label: string;
|
|
9
|
+
/** Hint under the field. Replaced by `error` when set. */
|
|
10
|
+
helperText?: string;
|
|
11
|
+
/** Error message: red outline, announced, replaces the helper text. */
|
|
12
|
+
error?: string;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
/** @default 'lg' (48, the mobile field height) */
|
|
15
|
+
size?: Extract<ControlSize, 'md' | 'lg' | 'xl'>;
|
|
16
|
+
leading?: React.ReactNode;
|
|
17
|
+
trailing?: React.ReactNode;
|
|
18
|
+
style?: StyleProp<ViewStyle>;
|
|
19
|
+
}
|
|
20
|
+
/** Labelled text input (web Input + Label + HelperText + FormError in one). */
|
|
21
|
+
export declare function TextField({ ref, label, helperText, error, disabled, size, leading, trailing, style, multiline, onFocus, onBlur, ...rest }: TextFieldProps): React.JSX.Element;
|
|
22
|
+
export interface PasswordInputProps extends Omit<TextFieldProps, 'secureTextEntry' | 'trailing'> {
|
|
23
|
+
}
|
|
24
|
+
/** Password field with a show/hide toggle and the platform autofill hints. */
|
|
25
|
+
export declare function PasswordInput(props: PasswordInputProps): React.JSX.Element;
|
|
26
|
+
export interface SearchFieldProps extends Omit<TextInputProps, 'style'> {
|
|
27
|
+
/** Accessible name. @default messages.search */
|
|
28
|
+
label?: string;
|
|
29
|
+
style?: StyleProp<ViewStyle>;
|
|
30
|
+
}
|
|
31
|
+
/** Capsule search input with a clear button. */
|
|
32
|
+
export declare function SearchField({ label, value, defaultValue, onChangeText, style, ...rest }: SearchFieldProps): React.JSX.Element;
|
|
33
|
+
export interface MoneyInputProps extends Omit<TextFieldProps, 'value' | 'defaultValue' | 'onChange' | 'leading' | 'keyboardType'> {
|
|
34
|
+
currency: string;
|
|
35
|
+
value?: number | null;
|
|
36
|
+
defaultValue?: number | null;
|
|
37
|
+
/** Parsed value (rounded to the currency's minor units), or null when empty. */
|
|
38
|
+
onValueChange?: (value: number | null) => void;
|
|
39
|
+
locale?: string;
|
|
40
|
+
}
|
|
41
|
+
/** Amount entry: decimal keypad, currency symbol, locale-aware parsing (de-DE "1.234,5" → 1234.5). */
|
|
42
|
+
export declare function MoneyInput({ currency, value, defaultValue, onValueChange, locale, ...rest }: MoneyInputProps): React.JSX.Element;
|
|
43
|
+
export interface StepperProps {
|
|
44
|
+
/** Accessible name of the value, e.g. "Guests". */
|
|
45
|
+
label: string;
|
|
46
|
+
value?: number;
|
|
47
|
+
defaultValue?: number;
|
|
48
|
+
onValueChange?: (value: number) => void;
|
|
49
|
+
min?: number;
|
|
50
|
+
max?: number;
|
|
51
|
+
step?: number;
|
|
52
|
+
disabled?: boolean;
|
|
53
|
+
style?: StyleProp<ViewStyle>;
|
|
54
|
+
}
|
|
55
|
+
/** − value + for small counts. Adjustable with VoiceOver/TalkBack swipe up/down. */
|
|
56
|
+
export declare function Stepper({ label, value, defaultValue, onValueChange, min, max, step, disabled, style, }: StepperProps): React.JSX.Element;
|
|
57
|
+
export interface CheckboxProps {
|
|
58
|
+
label: string;
|
|
59
|
+
checked?: boolean;
|
|
60
|
+
defaultChecked?: boolean;
|
|
61
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
62
|
+
description?: string;
|
|
63
|
+
disabled?: boolean;
|
|
64
|
+
style?: StyleProp<ViewStyle>;
|
|
65
|
+
}
|
|
66
|
+
/** Checkbox with its label; the whole row is the target. */
|
|
67
|
+
export declare function Checkbox({ label, checked, defaultChecked, onCheckedChange, description, disabled, style, }: CheckboxProps): React.JSX.Element;
|
|
68
|
+
export interface RadioGroupProps {
|
|
69
|
+
/** Accessible name of the group. */
|
|
70
|
+
label: string;
|
|
71
|
+
value?: string;
|
|
72
|
+
defaultValue?: string;
|
|
73
|
+
onValueChange?: (value: string) => void;
|
|
74
|
+
disabled?: boolean;
|
|
75
|
+
children: React.ReactNode;
|
|
76
|
+
style?: StyleProp<ViewStyle>;
|
|
77
|
+
}
|
|
78
|
+
export declare function RadioGroup({ label, value, defaultValue, onValueChange, disabled, children, style, }: RadioGroupProps): React.JSX.Element;
|
|
79
|
+
export interface RadioProps {
|
|
80
|
+
value: string;
|
|
81
|
+
label: string;
|
|
82
|
+
description?: string;
|
|
83
|
+
disabled?: boolean;
|
|
84
|
+
}
|
|
85
|
+
export declare function Radio({ value, label, description, disabled: own }: RadioProps): React.JSX.Element;
|
|
86
|
+
export interface SwitchProps {
|
|
87
|
+
/** Accessible name (visible label lives in the ListItem / row next to it). */
|
|
88
|
+
label: string;
|
|
89
|
+
checked?: boolean;
|
|
90
|
+
defaultChecked?: boolean;
|
|
91
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
92
|
+
disabled?: boolean;
|
|
93
|
+
}
|
|
94
|
+
/** The platform switch (UISwitch / Material), coloured with Nexub roles. The OS plays its haptic. */
|
|
95
|
+
export declare function Switch({ label, checked, defaultChecked, onCheckedChange, disabled, }: SwitchProps): React.JSX.Element;
|
|
96
|
+
export interface SegmentedControlProps<T extends string> {
|
|
97
|
+
label: string;
|
|
98
|
+
options: readonly {
|
|
99
|
+
value: T;
|
|
100
|
+
label: string;
|
|
101
|
+
}[];
|
|
102
|
+
value?: T;
|
|
103
|
+
defaultValue?: T;
|
|
104
|
+
onValueChange?: (value: T) => void;
|
|
105
|
+
style?: StyleProp<ViewStyle>;
|
|
106
|
+
}
|
|
107
|
+
/** 2–5 mutually exclusive views of the same content. */
|
|
108
|
+
export declare function SegmentedControl<T extends string>({ label, options, value, defaultValue, onValueChange, style, }: SegmentedControlProps<T>): React.JSX.Element;
|
|
109
|
+
export interface SliderProps {
|
|
110
|
+
label: string;
|
|
111
|
+
value?: number;
|
|
112
|
+
defaultValue?: number;
|
|
113
|
+
onValueChange?: (value: number) => void;
|
|
114
|
+
min?: number;
|
|
115
|
+
max?: number;
|
|
116
|
+
step?: number;
|
|
117
|
+
disabled?: boolean;
|
|
118
|
+
/** Announced value text, e.g. (v) => `${v}%`. */
|
|
119
|
+
formatValue?: (value: number) => string;
|
|
120
|
+
style?: StyleProp<ViewStyle>;
|
|
121
|
+
}
|
|
122
|
+
/** Continuous value. Drag anywhere on the track; VoiceOver/TalkBack adjust by `step`. */
|
|
123
|
+
export declare function Slider({ label, value, defaultValue, onValueChange, min, max, step, disabled, formatValue, style, }: SliderProps): React.JSX.Element;
|
|
124
|
+
export interface ChipProps {
|
|
125
|
+
label: string;
|
|
126
|
+
/** Toggle state (filter chips). */
|
|
127
|
+
selected?: boolean;
|
|
128
|
+
onPress?: () => void;
|
|
129
|
+
/** Shows a remove button (its label is messages.remove). */
|
|
130
|
+
onRemove?: () => void;
|
|
131
|
+
leadingIcon?: React.ComponentType<NativeIconProps>;
|
|
132
|
+
disabled?: boolean;
|
|
133
|
+
style?: StyleProp<ViewStyle>;
|
|
134
|
+
}
|
|
135
|
+
/** Capsule control: a filter, a choice or an input token. */
|
|
136
|
+
export declare function Chip({ label, selected, onPress, onRemove, leadingIcon: Lead, disabled, style, }: ChipProps): React.JSX.Element;
|
|
137
|
+
/** A toggleable Chip (selected → check icon). */
|
|
138
|
+
export declare function FilterChip(props: ChipProps & {
|
|
139
|
+
selected: boolean;
|
|
140
|
+
}): React.JSX.Element;
|
|
141
|
+
//# sourceMappingURL=inputs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../../../src/components/inputs.tsx"],"names":[],"mappings":"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"}
|