@mrmeg/expo-ui 0.7.3 → 0.9.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/LLM_USAGE.md +24 -13
- package/README.md +8 -10
- package/dist/components/Accordion.d.ts +4 -4
- package/dist/components/AnimatedView.d.ts +1 -1
- package/dist/components/Badge.d.ts +1 -1
- package/dist/components/BottomSheet.d.ts +7 -7
- package/dist/components/Button.d.ts +3 -3
- package/dist/components/Button.js +17 -1
- package/dist/components/Card.d.ts +6 -6
- package/dist/components/Checkbox.d.ts +2 -1
- package/dist/components/Collapsible.d.ts +4 -3
- package/dist/components/Dialog.d.ts +10 -10
- package/dist/components/DismissKeyboard.d.ts +1 -1
- package/dist/components/Drawer.d.ts +7 -7
- package/dist/components/DropdownMenu.d.ts +10 -10
- package/dist/components/EmptyState.d.ts +1 -1
- package/dist/components/ErrorBoundary.d.ts +1 -1
- package/dist/components/Icon.d.ts +1 -1
- package/dist/components/InputOTP.d.ts +2 -1
- package/dist/components/Label.d.ts +1 -1
- package/dist/components/MaxWidthContainer.d.ts +1 -1
- package/dist/components/Notification.d.ts +4 -10
- package/dist/components/Notification.js +12 -13
- package/dist/components/Popover.d.ts +4 -4
- package/dist/components/Progress.d.ts +2 -1
- package/dist/components/RadioGroup.d.ts +3 -2
- package/dist/components/SegmentedControl.d.ts +2 -1
- package/dist/components/Select.d.ts +7 -7
- package/dist/components/Separator.d.ts +2 -1
- package/dist/components/Skeleton.d.ts +5 -4
- package/dist/components/Slider.d.ts +2 -1
- package/dist/components/StatusBar.d.ts +1 -1
- package/dist/components/StyledText.d.ts +12 -12
- package/dist/components/Switch.d.ts +2 -1
- package/dist/components/Tabs.d.ts +5 -5
- package/dist/components/TextInput.d.ts +1 -1
- package/dist/components/TextInput.js +9 -1
- package/dist/components/Toggle.d.ts +3 -2
- package/dist/components/ToggleGroup.d.ts +4 -3
- package/dist/components/ToggleGroup.js +2 -7
- package/dist/components/Tooltip.d.ts +3 -3
- package/dist/components/UIProvider.d.ts +1 -1
- package/dist/hooks/useTheme.d.ts +1 -1
- package/dist/hooks/useTheme.js +28 -93
- package/dist/state/globalUIStore.d.ts +9 -1
- package/dist/state/globalUIStore.js +9 -1
- package/dist/state/index.d.ts +1 -0
- package/dist/state/index.js +1 -0
- package/dist/state/notify.d.ts +50 -0
- package/dist/state/notify.js +31 -0
- package/dist/state/themeColorScope.d.ts +1 -1
- package/llms-full.md +34 -3
- package/package.json +2 -2
package/LLM_USAGE.md
CHANGED
|
@@ -15,7 +15,7 @@ import { Button, StyledText, UIProvider } from "@mrmeg/expo-ui/components";
|
|
|
15
15
|
import { Button as ButtonDirect } from "@mrmeg/expo-ui/components/Button";
|
|
16
16
|
import { colors, spacing, typography } from "@mrmeg/expo-ui/constants";
|
|
17
17
|
import { useResources, useTheme } from "@mrmeg/expo-ui/hooks";
|
|
18
|
-
import { globalUIStore, useThemeStore } from "@mrmeg/expo-ui/state";
|
|
18
|
+
import { globalUIStore, notify, useThemeStore } from "@mrmeg/expo-ui/state";
|
|
19
19
|
import { configureExpoUiI18n, hapticLight } from "@mrmeg/expo-ui/lib";
|
|
20
20
|
```
|
|
21
21
|
|
|
@@ -92,7 +92,7 @@ configureExpoUiI18n((key, options) => i18n.t(key, options));
|
|
|
92
92
|
- Use `Button.preset`, not `variant`, for buttons.
|
|
93
93
|
- Button visible heights are compact: `sm` 28px, `md` 32px, and `lg` 40px.
|
|
94
94
|
- Use `Button size="sm"` for compact popover, tooltip, and toolbar triggers; nested `StyledText` inherits the selected Button size.
|
|
95
|
-
- Use `
|
|
95
|
+
- Use `notify` plus root-mounted `UIProvider` for transient global feedback. (`globalUIStore` remains available for reactive subscriptions and tests.)
|
|
96
96
|
- Keep app monitoring, auth, API, and domain behavior outside this package.
|
|
97
97
|
|
|
98
98
|
Useful theme tokens include:
|
|
@@ -125,8 +125,9 @@ Token intent:
|
|
|
125
125
|
|
|
126
126
|
Use `getShadowStyle()` for package surfaces that need elevation. It supports
|
|
127
127
|
`base`, `soft`, `sharp`, `subtle`, `elevated`, `glow`, `glass`, `card`,
|
|
128
|
-
`cardHover`, and `cardSubtle`, returning
|
|
129
|
-
|
|
128
|
+
`cardHover`, and `cardSubtle`, returning a cross-platform `boxShadow` value
|
|
129
|
+
(RN 0.85 + react-native-web 0.21 deprecate the legacy `shadow*` props). Use
|
|
130
|
+
`getFocusRingStyle()` for web focus styling. Keep
|
|
130
131
|
web controls compact, but preserve mobile tap comfort with package controls
|
|
131
132
|
that already provide native hit slop or 44px touch rows.
|
|
132
133
|
|
|
@@ -249,19 +250,29 @@ import { Button, Switch, TextInput } from "@mrmeg/expo-ui/components";
|
|
|
249
250
|
|
|
250
251
|
```tsx
|
|
251
252
|
import { EmptyState, Progress, SkeletonCard } from "@mrmeg/expo-ui/components";
|
|
252
|
-
import {
|
|
253
|
+
import { notify } from "@mrmeg/expo-ui/state";
|
|
253
254
|
|
|
254
255
|
{isLoading ? <SkeletonCard /> : null}
|
|
255
256
|
<Progress value={65} variant="accent" />
|
|
256
257
|
<EmptyState icon="inbox" title="No messages" description="New messages will appear here." />
|
|
257
258
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
259
|
+
// Convenience helpers
|
|
260
|
+
notify.success("Saved", { messages: ["Your changes were saved."] });
|
|
261
|
+
notify.error("Upload failed");
|
|
262
|
+
notify.warning("Connection slow");
|
|
263
|
+
notify.info("Copied to clipboard");
|
|
264
|
+
|
|
265
|
+
// Loading spinner — stays until replaced or hidden (no auto-dismiss)
|
|
266
|
+
notify.loading("Uploading…");
|
|
267
|
+
notify.hide();
|
|
268
|
+
|
|
269
|
+
// Full control (same payload as globalUIStore show())
|
|
270
|
+
notify({ type: "success", title: "Saved", action: { label: "View", onPress: openSavedItem } });
|
|
271
|
+
|
|
272
|
+
// Loading → success/error around a promise
|
|
273
|
+
await notify.promise(saveProfile(), {
|
|
274
|
+
loading: "Saving…",
|
|
275
|
+
success: "Profile saved", // or (value) => `Saved ${value.name}`
|
|
276
|
+
error: "Could not save profile", // or (err) => err.message
|
|
266
277
|
});
|
|
267
278
|
```
|
package/README.md
CHANGED
|
@@ -28,8 +28,8 @@ bun add @mrmeg/expo-ui
|
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
Consumers must also install the native and Expo peer dependencies listed in
|
|
31
|
-
`package.json`. The tested baseline is Expo SDK
|
|
32
|
-
Native 0.
|
|
31
|
+
`package.json`. The tested baseline is Expo SDK 56 with React 19.2, React
|
|
32
|
+
Native 0.85, and React Native Web 0.21. UI animations and keyboard-aware
|
|
33
33
|
sheet offsets use React Native Animated by default.
|
|
34
34
|
`@rn-primitives/*` packages are managed by `@mrmeg/expo-ui` because they are
|
|
35
35
|
implementation details of the exported UI components. Native bottom sheet
|
|
@@ -49,14 +49,14 @@ import { colors, spacing, typography } from "@mrmeg/expo-ui/constants";
|
|
|
49
49
|
import { colors as colorsDirect } from "@mrmeg/expo-ui/constants/colors";
|
|
50
50
|
import { useResources, useTheme } from "@mrmeg/expo-ui/hooks";
|
|
51
51
|
import { useTheme as useThemeDirect } from "@mrmeg/expo-ui/hooks/useTheme";
|
|
52
|
-
import { globalUIStore, useThemeStore } from "@mrmeg/expo-ui/state";
|
|
52
|
+
import { globalUIStore, notify, useThemeStore } from "@mrmeg/expo-ui/state";
|
|
53
53
|
import { configureExpoUiI18n, hapticLight } from "@mrmeg/expo-ui/lib";
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
The root barrel also exports the public surface:
|
|
57
57
|
|
|
58
58
|
```tsx
|
|
59
|
-
import { Button, UIProvider, colors, useTheme } from "@mrmeg/expo-ui";
|
|
59
|
+
import { Button, UIProvider, colors, notify, useTheme } from "@mrmeg/expo-ui";
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
## Theme System
|
|
@@ -272,7 +272,7 @@ Use `Button.preset`, not `variant`. `default` is the neutral primary action, `se
|
|
|
272
272
|
|
|
273
273
|
Use `StyledText` or its aliases instead of raw `Text` whenever the text is part of app UI. Use `TextInput` for labeled fields because it already owns label, helper text, error text, clear buttons, password visibility, numeric filtering, and left/right elements.
|
|
274
274
|
|
|
275
|
-
Mount `UIProvider` once near the root before using `Dialog`, `AlertDialog`, `BottomSheet`, `Drawer`, `DropdownMenu`, `Popover`, `SelectContent`, `Tooltip`, or package notifications. On native, `BottomSheet.Content` listens to React Native keyboard events when `avoidKeyboard` is enabled; it defaults to `true` and can be disabled per sheet. Trigger transient feedback
|
|
275
|
+
Mount `UIProvider` once near the root before using `Dialog`, `AlertDialog`, `BottomSheet`, `Drawer`, `DropdownMenu`, `Popover`, `SelectContent`, `Tooltip`, or package notifications. On native, `BottomSheet.Content` listens to React Native keyboard events when `avoidKeyboard` is enabled; it defaults to `true` and can be disabled per sheet. Trigger transient feedback with `notify`.
|
|
276
276
|
|
|
277
277
|
Use `Skeleton` components for loading content with stable dimensions, `EmptyState` for no-data/recoverable errors, `Alert` for blocking confirm/alert dialogs, and `Notification` for transient global feedback.
|
|
278
278
|
|
|
@@ -322,15 +322,13 @@ Feedback:
|
|
|
322
322
|
|
|
323
323
|
```tsx
|
|
324
324
|
import { EmptyState, Progress, SkeletonCard } from "@mrmeg/expo-ui/components";
|
|
325
|
-
import {
|
|
325
|
+
import { notify } from "@mrmeg/expo-ui/state";
|
|
326
326
|
|
|
327
327
|
{isLoading ? <SkeletonCard /> : null}
|
|
328
328
|
<Progress value={65} variant="accent" />
|
|
329
329
|
<EmptyState icon="inbox" title="No messages" description="New messages will appear here." />
|
|
330
330
|
|
|
331
|
-
|
|
332
|
-
type: "success",
|
|
333
|
-
title: "Saved",
|
|
331
|
+
notify.success("Saved", {
|
|
334
332
|
messages: ["Your changes were saved."],
|
|
335
333
|
action: {
|
|
336
334
|
label: "View",
|
|
@@ -457,5 +455,5 @@ bun run ui:consumer-smoke
|
|
|
457
455
|
`bun run ui:consumer-smoke` installs the packed tarball into a clean fixture,
|
|
458
456
|
checks the documented export-map files, type-checks all public package
|
|
459
457
|
entrypoints, verifies that `@mrmeg/expo-ui/constants` can be imported by
|
|
460
|
-
plain Node ESM for token inspection, and runs an Expo SDK
|
|
458
|
+
plain Node ESM for token inspection, and runs an Expo SDK 56 iOS export
|
|
461
459
|
against the packed package without a custom Metro config.
|
|
@@ -32,12 +32,12 @@ type AccordionRootProps = WebSingleAccordionRootProps | WebMultipleAccordionRoot
|
|
|
32
32
|
* </AccordionItem>
|
|
33
33
|
* </Accordion>
|
|
34
34
|
*/
|
|
35
|
-
declare function Accordion({ children, style, ...props }: AccordionRootProps): import("react
|
|
35
|
+
declare function Accordion({ children, style, ...props }: AccordionRootProps): import("react").JSX.Element;
|
|
36
36
|
/**
|
|
37
37
|
* Accordion Item Component
|
|
38
38
|
* Individual accordion item with border styling
|
|
39
39
|
*/
|
|
40
|
-
declare function AccordionItem({ children, value, style: styleOverride, ...props }: AccordionPrimitive.ItemProps & React.RefAttributes<AccordionPrimitive.ItemRef>): import("react
|
|
40
|
+
declare function AccordionItem({ children, value, style: styleOverride, ...props }: AccordionPrimitive.ItemProps & React.RefAttributes<AccordionPrimitive.ItemRef>): import("react").JSX.Element;
|
|
41
41
|
/**
|
|
42
42
|
* Accordion Trigger Component
|
|
43
43
|
* Clickable header that expands/collapses the content
|
|
@@ -45,10 +45,10 @@ declare function AccordionItem({ children, value, style: styleOverride, ...props
|
|
|
45
45
|
*/
|
|
46
46
|
declare function AccordionTrigger({ children, style: styleOverride, ...props }: AccordionPrimitive.TriggerProps & {
|
|
47
47
|
children?: React.ReactNode;
|
|
48
|
-
} & React.RefAttributes<AccordionPrimitive.TriggerRef>): import("react
|
|
48
|
+
} & React.RefAttributes<AccordionPrimitive.TriggerRef>): import("react").JSX.Element;
|
|
49
49
|
/**
|
|
50
50
|
* Accordion Content Component
|
|
51
51
|
* Expandable content area with animations
|
|
52
52
|
*/
|
|
53
|
-
declare function AccordionContent({ children, style: styleOverride, ...props }: AccordionPrimitive.ContentProps & React.RefAttributes<AccordionPrimitive.ContentRef>): import("react
|
|
53
|
+
declare function AccordionContent({ children, style: styleOverride, ...props }: AccordionPrimitive.ContentProps & React.RefAttributes<AccordionPrimitive.ContentRef>): import("react").JSX.Element;
|
|
54
54
|
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
|
|
@@ -51,5 +51,5 @@ interface AnimatedViewProps extends ViewProps {
|
|
|
51
51
|
* </AnimatedView>
|
|
52
52
|
* ```
|
|
53
53
|
*/
|
|
54
|
-
export declare function AnimatedView({ children, type, enterDuration, delay, style, ...props }: AnimatedViewProps):
|
|
54
|
+
export declare function AnimatedView({ children, type, enterDuration, delay, style, ...props }: AnimatedViewProps): React.JSX.Element;
|
|
55
55
|
export {};
|
|
@@ -20,5 +20,5 @@ export interface BadgeProps {
|
|
|
20
20
|
* <Badge variant="destructive">Error</Badge>
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
|
-
declare function Badge({ children, text, variant, style: styleOverride }: BadgeProps):
|
|
23
|
+
declare function Badge({ children, text, variant, style: styleOverride }: BadgeProps): React.JSX.Element;
|
|
24
24
|
export { Badge };
|
|
@@ -133,14 +133,14 @@ interface BottomSheetCloseProps {
|
|
|
133
133
|
style?: StyleProp<ViewStyle>;
|
|
134
134
|
}
|
|
135
135
|
declare function useBottomSheetContext(): BottomSheetContextValue;
|
|
136
|
-
declare function BottomSheetRoot({ open: controlledOpen, onOpenChange: controlledOnOpenChange, defaultOpen, snapPoints, closeOnBackdropPress, children, }: BottomSheetProps):
|
|
137
|
-
declare function BottomSheetTrigger({ asChild, children, style: styleOverride }: BottomSheetTriggerProps):
|
|
138
|
-
declare function BottomSheetContent({ swipeEnabled: _swipeEnabled, avoidKeyboard: _avoidKeyboard, dismissKeyboardOnDrag: _dismissKeyboardOnDrag, style: styleOverride, children, }: BottomSheetContentProps):
|
|
136
|
+
declare function BottomSheetRoot({ open: controlledOpen, onOpenChange: controlledOnOpenChange, defaultOpen, snapPoints, closeOnBackdropPress, children, }: BottomSheetProps): React.JSX.Element;
|
|
137
|
+
declare function BottomSheetTrigger({ asChild, children, style: styleOverride }: BottomSheetTriggerProps): React.JSX.Element;
|
|
138
|
+
declare function BottomSheetContent({ swipeEnabled: _swipeEnabled, avoidKeyboard: _avoidKeyboard, dismissKeyboardOnDrag: _dismissKeyboardOnDrag, style: styleOverride, children, }: BottomSheetContentProps): React.JSX.Element;
|
|
139
139
|
declare function BottomSheetHandle(_props: BottomSheetHandleProps): null;
|
|
140
|
-
declare function BottomSheetHeader({ children, style, ...props }: BottomSheetHeaderProps):
|
|
141
|
-
declare function BottomSheetBody({ children, style, contentContainerStyle, onContentSizeChange, onLayout, ...props }: BottomSheetBodyProps):
|
|
142
|
-
declare function BottomSheetFooter({ children, style, ...props }: BottomSheetFooterProps):
|
|
143
|
-
declare function BottomSheetClose({ asChild, children, style: styleOverride }: BottomSheetCloseProps):
|
|
140
|
+
declare function BottomSheetHeader({ children, style, ...props }: BottomSheetHeaderProps): React.JSX.Element;
|
|
141
|
+
declare function BottomSheetBody({ children, style, contentContainerStyle, onContentSizeChange, onLayout, ...props }: BottomSheetBodyProps): React.JSX.Element;
|
|
142
|
+
declare function BottomSheetFooter({ children, style, ...props }: BottomSheetFooterProps): React.JSX.Element;
|
|
143
|
+
declare function BottomSheetClose({ asChild, children, style: styleOverride }: BottomSheetCloseProps): React.JSX.Element;
|
|
144
144
|
declare const BottomSheet: typeof BottomSheetRoot & {
|
|
145
145
|
Trigger: typeof BottomSheetTrigger;
|
|
146
146
|
Content: typeof BottomSheetContent;
|
|
@@ -141,7 +141,7 @@ export interface ButtonProps extends PressableProps {
|
|
|
141
141
|
* </Button>
|
|
142
142
|
* ```
|
|
143
143
|
*/
|
|
144
|
-
declare function ButtonRoot(props: ButtonProps):
|
|
144
|
+
declare function ButtonRoot(props: ButtonProps): React.JSX.Element;
|
|
145
145
|
/**
|
|
146
146
|
* Button.Text
|
|
147
147
|
* Text content for a Button. Inherits the button's control typography, color,
|
|
@@ -154,7 +154,7 @@ declare function ButtonRoot(props: ButtonProps): import("react/jsx-runtime").JSX
|
|
|
154
154
|
* </Button>
|
|
155
155
|
* ```
|
|
156
156
|
*/
|
|
157
|
-
declare function ButtonText(props: TextProps):
|
|
157
|
+
declare function ButtonText(props: TextProps): React.JSX.Element;
|
|
158
158
|
/**
|
|
159
159
|
* Button.Icon
|
|
160
160
|
* Icon content for a Button. Defaults its color to the button's text color
|
|
@@ -167,7 +167,7 @@ declare function ButtonText(props: TextProps): import("react/jsx-runtime").JSX.E
|
|
|
167
167
|
* </Button>
|
|
168
168
|
* ```
|
|
169
169
|
*/
|
|
170
|
-
declare function ButtonIcon(props: IconProps):
|
|
170
|
+
declare function ButtonIcon(props: IconProps): React.JSX.Element;
|
|
171
171
|
/**
|
|
172
172
|
* Button with explicit subcomponents.
|
|
173
173
|
* - `Button.Text` for label text (inherits control typography)
|
|
@@ -121,7 +121,23 @@ function ButtonRoot(props) {
|
|
|
121
121
|
scaleTo: preset === "link" ? 1 : 0.97,
|
|
122
122
|
});
|
|
123
123
|
const showFocusRing = (event) => {
|
|
124
|
-
|
|
124
|
+
// On web, pointer taps focus the element too, which left the ring visible
|
|
125
|
+
// after every click. :focus-visible is only true for keyboard-driven
|
|
126
|
+
// focus, so gate the ring on it; fall back to showing the ring when the
|
|
127
|
+
// target can't be queried (non-DOM targets, older engines).
|
|
128
|
+
let ringVisible = true;
|
|
129
|
+
if (Platform.OS === "web") {
|
|
130
|
+
const target = event?.nativeEvent?.target;
|
|
131
|
+
if (target && typeof target.matches === "function") {
|
|
132
|
+
try {
|
|
133
|
+
ringVisible = target.matches(":focus-visible");
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
ringVisible = true;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
setFocused(ringVisible);
|
|
125
141
|
onFocus?.(event);
|
|
126
142
|
};
|
|
127
143
|
const hideFocusRing = (event) => {
|
|
@@ -13,30 +13,30 @@ export interface CardProps {
|
|
|
13
13
|
/** Whether the card is disabled (only relevant when onPress is set) */
|
|
14
14
|
disabled?: boolean;
|
|
15
15
|
}
|
|
16
|
-
declare function Card({ children, style: styleOverride, variant, onPress, disabled }: CardProps):
|
|
16
|
+
declare function Card({ children, style: styleOverride, variant, onPress, disabled }: CardProps): React.JSX.Element;
|
|
17
17
|
export interface CardHeaderProps {
|
|
18
18
|
children?: React.ReactNode;
|
|
19
19
|
style?: StyleProp<ViewStyle>;
|
|
20
20
|
}
|
|
21
|
-
declare function CardHeader({ children, style: styleOverride }: CardHeaderProps):
|
|
21
|
+
declare function CardHeader({ children, style: styleOverride }: CardHeaderProps): React.JSX.Element;
|
|
22
22
|
export interface CardContentProps {
|
|
23
23
|
children?: React.ReactNode;
|
|
24
24
|
style?: StyleProp<ViewStyle>;
|
|
25
25
|
}
|
|
26
|
-
declare function CardContent({ children, style: styleOverride }: CardContentProps):
|
|
26
|
+
declare function CardContent({ children, style: styleOverride }: CardContentProps): React.JSX.Element;
|
|
27
27
|
export interface CardFooterProps {
|
|
28
28
|
children?: React.ReactNode;
|
|
29
29
|
style?: StyleProp<ViewStyle>;
|
|
30
30
|
}
|
|
31
|
-
declare function CardFooter({ children, style: styleOverride }: CardFooterProps):
|
|
31
|
+
declare function CardFooter({ children, style: styleOverride }: CardFooterProps): React.JSX.Element;
|
|
32
32
|
export interface CardTitleProps extends Omit<TextProps, "style"> {
|
|
33
33
|
children?: React.ReactNode;
|
|
34
34
|
style?: StyleProp<TextStyle>;
|
|
35
35
|
}
|
|
36
|
-
declare function CardTitle({ children, style: styleOverride, ...props }: CardTitleProps):
|
|
36
|
+
declare function CardTitle({ children, style: styleOverride, ...props }: CardTitleProps): React.JSX.Element;
|
|
37
37
|
export interface CardDescriptionProps extends Omit<TextProps, "style"> {
|
|
38
38
|
children?: React.ReactNode;
|
|
39
39
|
style?: StyleProp<TextStyle>;
|
|
40
40
|
}
|
|
41
|
-
declare function CardDescription({ children, style: styleOverride, ...props }: CardDescriptionProps):
|
|
41
|
+
declare function CardDescription({ children, style: styleOverride, ...props }: CardDescriptionProps): React.JSX.Element;
|
|
42
42
|
export { Card, CardHeader, CardContent, CardFooter, CardTitle, CardDescription };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import { StyleProp, ViewStyle } from "react-native";
|
|
2
3
|
import * as CheckboxPrimitive from "@rn-primitives/checkbox";
|
|
3
4
|
/**
|
|
@@ -35,5 +36,5 @@ export interface CheckboxProps extends Omit<CheckboxPrimitive.RootProps, "style"
|
|
|
35
36
|
*/
|
|
36
37
|
required?: boolean;
|
|
37
38
|
}
|
|
38
|
-
declare function Checkbox({ size, label, indeterminate, error, style: styleOverride, labelStyle, required, checked, onCheckedChange, disabled, ...props }: CheckboxProps):
|
|
39
|
+
declare function Checkbox({ size, label, indeterminate, error, style: styleOverride, labelStyle, required, checked, onCheckedChange, disabled, ...props }: CheckboxProps): React.JSX.Element;
|
|
39
40
|
export { Checkbox };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as React from "react";
|
|
1
2
|
import * as CollapsiblePrimitive from "@rn-primitives/collapsible";
|
|
2
3
|
/**
|
|
3
4
|
* Collapsible Component (Root)
|
|
@@ -18,7 +19,7 @@ import * as CollapsiblePrimitive from "@rn-primitives/collapsible";
|
|
|
18
19
|
* ```
|
|
19
20
|
*/
|
|
20
21
|
type CollapsibleProps = CollapsiblePrimitive.RootProps;
|
|
21
|
-
declare function Collapsible({ children, ...props }: CollapsibleProps):
|
|
22
|
+
declare function Collapsible({ children, ...props }: CollapsibleProps): React.JSX.Element;
|
|
22
23
|
/**
|
|
23
24
|
* CollapsibleTrigger Component
|
|
24
25
|
* The trigger button/element that toggles the collapsible state
|
|
@@ -40,7 +41,7 @@ declare function Collapsible({ children, ...props }: CollapsibleProps): import("
|
|
|
40
41
|
* ```
|
|
41
42
|
*/
|
|
42
43
|
type CollapsibleTriggerProps = CollapsiblePrimitive.TriggerProps;
|
|
43
|
-
declare function CollapsibleTrigger({ style: styleOverride, ...props }: CollapsibleTriggerProps):
|
|
44
|
+
declare function CollapsibleTrigger({ style: styleOverride, ...props }: CollapsibleTriggerProps): React.JSX.Element;
|
|
44
45
|
/**
|
|
45
46
|
* CollapsibleContent Component
|
|
46
47
|
* The content that expands and collapses
|
|
@@ -62,6 +63,6 @@ type CollapsibleContentProps = CollapsiblePrimitive.ContentProps & {
|
|
|
62
63
|
*/
|
|
63
64
|
forceMount?: boolean;
|
|
64
65
|
};
|
|
65
|
-
declare function CollapsibleContent({ forceMount, style: styleOverride, children, ...props }: CollapsibleContentProps):
|
|
66
|
+
declare function CollapsibleContent({ forceMount, style: styleOverride, children, ...props }: CollapsibleContentProps): React.JSX.Element;
|
|
66
67
|
export { Collapsible, CollapsibleContent, CollapsibleTrigger };
|
|
67
68
|
export type { CollapsibleContentProps, CollapsibleProps, CollapsibleTriggerProps };
|
|
@@ -23,19 +23,19 @@ declare const DialogClose: {
|
|
|
23
23
|
interface DialogProps extends DialogPrimitive.RootProps {
|
|
24
24
|
children: React.ReactNode;
|
|
25
25
|
}
|
|
26
|
-
declare function DialogRoot({ children, ...props }: DialogProps):
|
|
26
|
+
declare function DialogRoot({ children, ...props }: DialogProps): React.JSX.Element;
|
|
27
27
|
interface DialogContentProps extends DialogPrimitive.ContentProps {
|
|
28
28
|
portalHost?: string;
|
|
29
29
|
}
|
|
30
|
-
declare function DialogContent({ portalHost, style, children, ...props }: DialogContentProps):
|
|
31
|
-
declare function DialogHeader({ children, style, ...props }: ViewProps):
|
|
32
|
-
declare function DialogFooter({ children, style, ...props }: ViewProps):
|
|
30
|
+
declare function DialogContent({ portalHost, style, children, ...props }: DialogContentProps): React.JSX.Element;
|
|
31
|
+
declare function DialogHeader({ children, style, ...props }: ViewProps): React.JSX.Element;
|
|
32
|
+
declare function DialogFooter({ children, style, ...props }: ViewProps): React.JSX.Element;
|
|
33
33
|
declare function DialogTitle({ children, style, ...props }: DialogPrimitive.TitleProps & {
|
|
34
34
|
children: React.ReactNode;
|
|
35
|
-
}):
|
|
35
|
+
}): React.JSX.Element;
|
|
36
36
|
declare function DialogDescription({ children, style, ...props }: DialogPrimitive.DescriptionProps & {
|
|
37
37
|
children: React.ReactNode;
|
|
38
|
-
}):
|
|
38
|
+
}): React.JSX.Element;
|
|
39
39
|
declare const Dialog: typeof DialogRoot & {
|
|
40
40
|
Trigger: {
|
|
41
41
|
({ asChild, onPress: onPressProp, disabled, ref, ...props }: Omit<import("react-native").PressableProps & React.RefAttributes<View>, "ref"> & {
|
|
@@ -91,17 +91,17 @@ declare const AlertDialogCancel: {
|
|
|
91
91
|
interface AlertDialogProps extends AlertDialogPrimitive.RootProps {
|
|
92
92
|
children: React.ReactNode;
|
|
93
93
|
}
|
|
94
|
-
declare function AlertDialogRoot({ children, ...props }: AlertDialogProps):
|
|
94
|
+
declare function AlertDialogRoot({ children, ...props }: AlertDialogProps): React.JSX.Element;
|
|
95
95
|
interface AlertDialogContentProps extends AlertDialogPrimitive.ContentProps {
|
|
96
96
|
portalHost?: string;
|
|
97
97
|
}
|
|
98
|
-
declare function AlertDialogContent({ portalHost, style, children, ...props }: AlertDialogContentProps):
|
|
98
|
+
declare function AlertDialogContent({ portalHost, style, children, ...props }: AlertDialogContentProps): React.JSX.Element;
|
|
99
99
|
declare function AlertDialogTitle({ children, style, ...props }: AlertDialogPrimitive.TitleProps & {
|
|
100
100
|
children: React.ReactNode;
|
|
101
|
-
}):
|
|
101
|
+
}): React.JSX.Element;
|
|
102
102
|
declare function AlertDialogDescription({ children, style, ...props }: AlertDialogPrimitive.DescriptionProps & {
|
|
103
103
|
children: React.ReactNode;
|
|
104
|
-
}):
|
|
104
|
+
}): React.JSX.Element;
|
|
105
105
|
declare const AlertDialog: typeof AlertDialogRoot & {
|
|
106
106
|
Trigger: {
|
|
107
107
|
({ asChild, onPress: onPressProp, disabled, ref, ...props }: Omit<import("react-native").PressableProps & React.RefAttributes<View>, "ref"> & {
|
|
@@ -11,5 +11,5 @@ type Props = {
|
|
|
11
11
|
/**
|
|
12
12
|
* @returns Wrapper for a view that dismisses the keyboard when tapped outside of a text input
|
|
13
13
|
*/
|
|
14
|
-
export declare const DismissKeyboard: ({ children, style, avoidKeyboard, scrollable }: Props) =>
|
|
14
|
+
export declare const DismissKeyboard: ({ children, style, avoidKeyboard, scrollable }: Props) => React.JSX.Element;
|
|
15
15
|
export {};
|
|
@@ -46,12 +46,12 @@ interface DrawerBodyProps extends ViewProps {
|
|
|
46
46
|
interface DrawerFooterProps extends ViewProps {
|
|
47
47
|
children: React.ReactNode;
|
|
48
48
|
}
|
|
49
|
-
declare function DrawerRoot({ open: controlledOpen, onOpenChange: controlledOnOpenChange, defaultOpen, side, width, closeOnBackdropPress, children, }: DrawerProps):
|
|
50
|
-
declare function DrawerTrigger({ asChild, children, style: styleOverride }: DrawerTriggerProps):
|
|
51
|
-
declare function DrawerContent({ swipeEnabled, swipeThreshold, velocityThreshold, style: styleOverride, children, ...props }: DrawerContentProps):
|
|
52
|
-
declare function DrawerHeader({ children, style, ...props }: DrawerHeaderProps):
|
|
53
|
-
declare function DrawerBody({ children, style, ...props }: DrawerBodyProps):
|
|
54
|
-
declare function DrawerFooter({ children, style, ...props }: DrawerFooterProps):
|
|
49
|
+
declare function DrawerRoot({ open: controlledOpen, onOpenChange: controlledOnOpenChange, defaultOpen, side, width, closeOnBackdropPress, children, }: DrawerProps): React.JSX.Element;
|
|
50
|
+
declare function DrawerTrigger({ asChild, children, style: styleOverride }: DrawerTriggerProps): React.JSX.Element;
|
|
51
|
+
declare function DrawerContent({ swipeEnabled, swipeThreshold, velocityThreshold, style: styleOverride, children, ...props }: DrawerContentProps): React.JSX.Element | null;
|
|
52
|
+
declare function DrawerHeader({ children, style, ...props }: DrawerHeaderProps): React.JSX.Element;
|
|
53
|
+
declare function DrawerBody({ children, style, ...props }: DrawerBodyProps): React.JSX.Element;
|
|
54
|
+
declare function DrawerFooter({ children, style, ...props }: DrawerFooterProps): React.JSX.Element;
|
|
55
55
|
declare function useDrawerClose(): () => void;
|
|
56
56
|
interface DrawerCloseProps {
|
|
57
57
|
/** Use child component as close button */
|
|
@@ -61,7 +61,7 @@ interface DrawerCloseProps {
|
|
|
61
61
|
/** Optional style override */
|
|
62
62
|
style?: StyleProp<ViewStyle>;
|
|
63
63
|
}
|
|
64
|
-
declare function DrawerClose({ asChild, children, style: styleOverride }: DrawerCloseProps):
|
|
64
|
+
declare function DrawerClose({ asChild, children, style: styleOverride }: DrawerCloseProps): React.JSX.Element;
|
|
65
65
|
declare const Drawer: typeof DrawerRoot & {
|
|
66
66
|
Trigger: typeof DrawerTrigger;
|
|
67
67
|
Content: typeof DrawerContent;
|
|
@@ -46,7 +46,7 @@ declare const DropdownMenuRadioGroup: {
|
|
|
46
46
|
* props over slot props), so this only fills the gap when none is set.
|
|
47
47
|
*/
|
|
48
48
|
type DropdownMenuTriggerProps = DropdownMenuPrimitive.TriggerProps;
|
|
49
|
-
declare function DropdownMenuTrigger({ ...props }: DropdownMenuTriggerProps):
|
|
49
|
+
declare function DropdownMenuTrigger({ ...props }: DropdownMenuTriggerProps): React.JSX.Element;
|
|
50
50
|
/**
|
|
51
51
|
* DropdownMenuSubTrigger Component
|
|
52
52
|
* Trigger for sub-menus with automatic chevron icon
|
|
@@ -55,13 +55,13 @@ declare function DropdownMenuTrigger({ ...props }: DropdownMenuTriggerProps): im
|
|
|
55
55
|
type DropdownMenuSubTriggerProps = DropdownMenuPrimitive.SubTriggerProps & {
|
|
56
56
|
inset?: boolean;
|
|
57
57
|
};
|
|
58
|
-
declare function DropdownMenuSubTrigger({ inset, children, style: styleOverride, ...props }: DropdownMenuSubTriggerProps):
|
|
58
|
+
declare function DropdownMenuSubTrigger({ inset, children, style: styleOverride, ...props }: DropdownMenuSubTriggerProps): React.JSX.Element;
|
|
59
59
|
/**
|
|
60
60
|
* DropdownMenuSubContent Component
|
|
61
61
|
* Content container for sub-menus
|
|
62
62
|
*/
|
|
63
63
|
type DropdownMenuSubContentProps = DropdownMenuPrimitive.SubContentProps;
|
|
64
|
-
declare function DropdownMenuSubContent({ style: styleOverride, ...props }: DropdownMenuSubContentProps):
|
|
64
|
+
declare function DropdownMenuSubContent({ style: styleOverride, ...props }: DropdownMenuSubContentProps): React.JSX.Element;
|
|
65
65
|
/**
|
|
66
66
|
* DropdownMenuContent Component
|
|
67
67
|
* Main dropdown content with portal, overlay, and animation
|
|
@@ -74,7 +74,7 @@ declare function DropdownMenuSubContent({ style: styleOverride, ...props }: Drop
|
|
|
74
74
|
type DropdownMenuContentProps = DropdownMenuPrimitive.ContentProps & {
|
|
75
75
|
portalHost?: string;
|
|
76
76
|
};
|
|
77
|
-
declare function DropdownMenuContent({ side, align, sideOffset, portalHost, style: styleOverride, ...props }: DropdownMenuContentProps):
|
|
77
|
+
declare function DropdownMenuContent({ side, align, sideOffset, portalHost, style: styleOverride, ...props }: DropdownMenuContentProps): React.JSX.Element;
|
|
78
78
|
/**
|
|
79
79
|
* DropdownMenuItem Component
|
|
80
80
|
* Standard menu item with optional destructive variant
|
|
@@ -83,19 +83,19 @@ type DropdownMenuItemProps = DropdownMenuPrimitive.ItemProps & {
|
|
|
83
83
|
inset?: boolean;
|
|
84
84
|
variant?: "default" | "destructive";
|
|
85
85
|
};
|
|
86
|
-
declare function DropdownMenuItem({ inset, variant, style: styleOverride, ...props }: DropdownMenuItemProps):
|
|
86
|
+
declare function DropdownMenuItem({ inset, variant, style: styleOverride, ...props }: DropdownMenuItemProps): React.JSX.Element;
|
|
87
87
|
/**
|
|
88
88
|
* DropdownMenuCheckboxItem Component
|
|
89
89
|
* Menu item with checkbox indicator
|
|
90
90
|
*/
|
|
91
91
|
type DropdownMenuCheckboxItemProps = DropdownMenuPrimitive.CheckboxItemProps;
|
|
92
|
-
declare function DropdownMenuCheckboxItem({ children, style: styleOverride, ...props }: DropdownMenuCheckboxItemProps):
|
|
92
|
+
declare function DropdownMenuCheckboxItem({ children, style: styleOverride, ...props }: DropdownMenuCheckboxItemProps): React.JSX.Element;
|
|
93
93
|
/**
|
|
94
94
|
* DropdownMenuRadioItem Component
|
|
95
95
|
* Menu item with radio button indicator
|
|
96
96
|
*/
|
|
97
97
|
type DropdownMenuRadioItemProps = DropdownMenuPrimitive.RadioItemProps;
|
|
98
|
-
declare function DropdownMenuRadioItem({ children, style: styleOverride, ...props }: DropdownMenuRadioItemProps):
|
|
98
|
+
declare function DropdownMenuRadioItem({ children, style: styleOverride, ...props }: DropdownMenuRadioItemProps): React.JSX.Element;
|
|
99
99
|
/**
|
|
100
100
|
* DropdownMenuLabel Component
|
|
101
101
|
* Label for menu sections
|
|
@@ -103,13 +103,13 @@ declare function DropdownMenuRadioItem({ children, style: styleOverride, ...prop
|
|
|
103
103
|
type DropdownMenuLabelProps = DropdownMenuPrimitive.LabelProps & {
|
|
104
104
|
inset?: boolean;
|
|
105
105
|
};
|
|
106
|
-
declare function DropdownMenuLabel({ inset, style: styleOverride, ...props }: DropdownMenuLabelProps):
|
|
106
|
+
declare function DropdownMenuLabel({ inset, style: styleOverride, ...props }: DropdownMenuLabelProps): React.JSX.Element;
|
|
107
107
|
/**
|
|
108
108
|
* DropdownMenuSeparator Component
|
|
109
109
|
* Visual divider between menu sections
|
|
110
110
|
*/
|
|
111
111
|
type DropdownMenuSeparatorProps = DropdownMenuPrimitive.SeparatorProps;
|
|
112
|
-
declare function DropdownMenuSeparator({ style: styleOverride, ...props }: DropdownMenuSeparatorProps):
|
|
112
|
+
declare function DropdownMenuSeparator({ style: styleOverride, ...props }: DropdownMenuSeparatorProps): React.JSX.Element;
|
|
113
113
|
/**
|
|
114
114
|
* DropdownMenuShortcut Component
|
|
115
115
|
* Text component for displaying keyboard shortcuts
|
|
@@ -119,6 +119,6 @@ interface DropdownMenuShortcutProps {
|
|
|
119
119
|
text?: string;
|
|
120
120
|
style?: TextStyle;
|
|
121
121
|
}
|
|
122
|
-
declare function DropdownMenuShortcut({ children, text, style: styleOverride, ...props }: DropdownMenuShortcutProps):
|
|
122
|
+
declare function DropdownMenuShortcut({ children, text, style: styleOverride, ...props }: DropdownMenuShortcutProps): React.JSX.Element;
|
|
123
123
|
export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, };
|
|
124
124
|
export type { DropdownMenuTriggerProps, DropdownMenuSubTriggerProps, DropdownMenuSubContentProps, DropdownMenuContentProps, DropdownMenuItemProps, DropdownMenuCheckboxItemProps, DropdownMenuRadioItemProps, DropdownMenuLabelProps, DropdownMenuSeparatorProps, DropdownMenuShortcutProps, };
|
|
@@ -39,4 +39,4 @@ export interface EmptyStateProps {
|
|
|
39
39
|
* />
|
|
40
40
|
* ```
|
|
41
41
|
*/
|
|
42
|
-
export declare function EmptyState({ icon, iconSize, title, description, actionLabel, onAction, actionPreset, style, children, }: EmptyStateProps):
|
|
42
|
+
export declare function EmptyState({ icon, iconSize, title, description, actionLabel, onAction, actionPreset, style, children, }: EmptyStateProps): React.JSX.Element;
|
|
@@ -52,6 +52,6 @@ export declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBo
|
|
|
52
52
|
resetError: () => void;
|
|
53
53
|
static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState>;
|
|
54
54
|
componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
|
|
55
|
-
render(): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> |
|
|
55
|
+
render(): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined;
|
|
56
56
|
}
|
|
57
57
|
export {};
|
|
@@ -45,5 +45,5 @@ export type IconProps = FeatherIconProps | CustomIconProps;
|
|
|
45
45
|
* <Icon name="terminal" style={{ marginRight: 8 }} />
|
|
46
46
|
* ```
|
|
47
47
|
*/
|
|
48
|
-
export declare function Icon(props: IconProps):
|
|
48
|
+
export declare function Icon(props: IconProps): React.JSX.Element;
|
|
49
49
|
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import { StyleProp, ViewStyle } from "react-native";
|
|
2
3
|
export interface InputOTPProps {
|
|
3
4
|
/**
|
|
@@ -68,5 +69,5 @@ export interface InputOTPProps {
|
|
|
68
69
|
* />
|
|
69
70
|
* ```
|
|
70
71
|
*/
|
|
71
|
-
declare function InputOTP({ length, value, onChangeText, onComplete, error, errorText, disabled, autoFocus, secureTextEntry, inputMode, style: styleOverride, }: InputOTPProps):
|
|
72
|
+
declare function InputOTP({ length, value, onChangeText, onComplete, error, errorText, disabled, autoFocus, secureTextEntry, inputMode, style: styleOverride, }: InputOTPProps): React.JSX.Element;
|
|
72
73
|
export { InputOTP };
|
|
@@ -58,4 +58,4 @@ export interface LabelProps {
|
|
|
58
58
|
* </Label>
|
|
59
59
|
* ```
|
|
60
60
|
*/
|
|
61
|
-
export declare function Label({ children, nativeID, required, size, error, disabled, style, onPress, }: LabelProps): import("react
|
|
61
|
+
export declare function Label({ children, nativeID, required, size, error, disabled, style, onPress, }: LabelProps): import("react").JSX.Element;
|
|
@@ -54,5 +54,5 @@ interface MaxWidthContainerProps {
|
|
|
54
54
|
* </MaxWidthContainer>
|
|
55
55
|
* ```
|
|
56
56
|
*/
|
|
57
|
-
export declare function MaxWidthContainer({ children, maxWidth, preset, style, centered, }: MaxWidthContainerProps):
|
|
57
|
+
export declare function MaxWidthContainer({ children, maxWidth, preset, style, centered, }: MaxWidthContainerProps): React.JSX.Element;
|
|
58
58
|
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
/**
|
|
2
3
|
* Notification
|
|
3
4
|
*
|
|
@@ -7,20 +8,13 @@
|
|
|
7
8
|
* Usage:
|
|
8
9
|
* ```ts
|
|
9
10
|
* // Top notification (default)
|
|
10
|
-
*
|
|
11
|
-
* type: "success",
|
|
12
|
-
* title: "Saved",
|
|
11
|
+
* notify.success("Saved", {
|
|
13
12
|
* messages: ["Your changes have been saved."],
|
|
14
13
|
* duration: 3000,
|
|
15
14
|
* });
|
|
16
15
|
*
|
|
17
16
|
* // Bottom toast
|
|
18
|
-
*
|
|
19
|
-
* type: "info",
|
|
20
|
-
* title: "Copied to clipboard",
|
|
21
|
-
* duration: 2000,
|
|
22
|
-
* position: "bottom",
|
|
23
|
-
* });
|
|
17
|
+
* notify.info("Copied to clipboard", { duration: 2000, position: "bottom" });
|
|
24
18
|
* ```
|
|
25
19
|
*/
|
|
26
|
-
export declare const Notification: () =>
|
|
20
|
+
export declare const Notification: () => React.JSX.Element | null;
|