@retray-dev/ui-kit 10.1.0 → 12.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/COMPONENTS.md +419 -38
- package/README.md +14 -5
- package/dist/Accordion.js +1 -1
- package/dist/Accordion.mjs +3 -3
- package/dist/AlertBanner.js +1 -1
- package/dist/AlertBanner.mjs +3 -3
- package/dist/AppHeader.js +1 -1
- package/dist/AppHeader.mjs +4 -4
- package/dist/Avatar.mjs +2 -2
- package/dist/Badge.js +1 -1
- package/dist/Badge.mjs +3 -3
- package/dist/Button.js +1 -1
- package/dist/Button.mjs +3 -3
- package/dist/Card.mjs +2 -2
- package/dist/CategoryStrip.js +1 -1
- package/dist/CategoryStrip.mjs +3 -3
- package/dist/Checkbox.mjs +2 -2
- package/dist/Chip.js +1 -1
- package/dist/Chip.mjs +3 -3
- package/dist/ConfirmDialog.d.mts +1 -6
- package/dist/ConfirmDialog.d.ts +1 -6
- package/dist/ConfirmDialog.js +30 -24
- package/dist/ConfirmDialog.mjs +4 -4
- package/dist/CurrencyDisplay.mjs +2 -2
- package/dist/CurrencyInput.d.mts +3 -8
- package/dist/CurrencyInput.d.ts +3 -8
- package/dist/CurrencyInput.js +4 -2
- package/dist/CurrencyInput.mjs +4 -4
- package/dist/DetailRow.d.mts +1 -1
- package/dist/DetailRow.d.ts +1 -1
- package/dist/DetailRow.js +1 -1
- package/dist/DetailRow.mjs +3 -3
- package/dist/EmptyState.js +1 -1
- package/dist/EmptyState.mjs +4 -4
- package/dist/ErrorBoundary.js +1 -1
- package/dist/ErrorBoundary.mjs +3 -3
- package/dist/Form.mjs +2 -2
- package/dist/IconButton.js +1 -1
- package/dist/IconButton.mjs +3 -3
- package/dist/IconPicker.d.mts +17 -0
- package/dist/IconPicker.d.ts +17 -0
- package/dist/IconPicker.js +1424 -0
- package/dist/IconPicker.mjs +8 -0
- package/dist/ImageUpload.d.mts +3 -1
- package/dist/ImageUpload.d.ts +3 -1
- package/dist/ImageUpload.js +28 -10
- package/dist/ImageUpload.mjs +3 -3
- package/dist/ImageViewer.js +1 -1
- package/dist/ImageViewer.mjs +5 -5
- package/dist/Input.js +1 -1
- package/dist/Input.mjs +3 -3
- package/dist/LabelValue.js +1 -1
- package/dist/LabelValue.mjs +3 -3
- package/dist/ListGroup.mjs +2 -2
- package/dist/ListItem.d.mts +7 -7
- package/dist/ListItem.d.ts +7 -7
- package/dist/ListItem.js +13 -8
- package/dist/ListItem.mjs +3 -3
- package/dist/MediaCard.js +1 -1
- package/dist/MediaCard.mjs +3 -3
- package/dist/MenuGroup.mjs +2 -2
- package/dist/MenuItem.js +1 -1
- package/dist/MenuItem.mjs +3 -3
- package/dist/MonthPicker.mjs +2 -2
- package/dist/NumberStepper.d.mts +19 -0
- package/dist/NumberStepper.d.ts +19 -0
- package/dist/NumberStepper.js +410 -0
- package/dist/NumberStepper.mjs +9 -0
- package/dist/PagerDots.js +1 -1
- package/dist/PagerDots.mjs +3 -3
- package/dist/Pressable.d.mts +15 -7
- package/dist/Pressable.d.ts +15 -7
- package/dist/Pressable.js +7 -3
- package/dist/Pressable.mjs +1 -1
- package/dist/PricingCard.js +1 -1
- package/dist/PricingCard.mjs +5 -5
- package/dist/Progress.mjs +2 -2
- package/dist/RadioGroup.mjs +2 -2
- package/dist/RetrayProvider.mjs +3 -3
- package/dist/Select.mjs +2 -2
- package/dist/SelectableGrid.js +1 -1
- package/dist/SelectableGrid.mjs +3 -3
- package/dist/Separator.mjs +2 -2
- package/dist/Sheet.d.mts +4 -46
- package/dist/Sheet.d.ts +4 -46
- package/dist/Sheet.js +46 -114
- package/dist/Sheet.mjs +2 -3
- package/dist/SheetSelect.js +1 -1
- package/dist/SheetSelect.mjs +3 -3
- package/dist/Skeleton.mjs +2 -2
- package/dist/Slider.mjs +2 -2
- package/dist/Spinner.mjs +2 -2
- package/dist/Stats.d.mts +30 -0
- package/dist/Stats.d.ts +30 -0
- package/dist/Stats.js +429 -0
- package/dist/Stats.mjs +9 -0
- package/dist/Switch.mjs +2 -2
- package/dist/TabBar.js +1 -1
- package/dist/TabBar.mjs +3 -3
- package/dist/Tabs.mjs +2 -2
- package/dist/Text.d.mts +3 -1
- package/dist/Text.d.ts +3 -1
- package/dist/Text.js +3 -3
- package/dist/Text.mjs +2 -2
- package/dist/Textarea.js +1 -1
- package/dist/Textarea.mjs +3 -3
- package/dist/Toast.mjs +2 -2
- package/dist/Toggle.js +1 -1
- package/dist/Toggle.mjs +3 -3
- package/dist/{chunk-DJ7RN37L.mjs → chunk-265G6A46.mjs} +2 -2
- package/dist/{chunk-WOEYDUJZ.mjs → chunk-2A2LEFZG.mjs} +2 -2
- package/dist/{chunk-ID72TK46.mjs → chunk-2CBQKU7H.mjs} +1 -1
- package/dist/{chunk-OB4JUQ3O.mjs → chunk-2I2AYECM.mjs} +1 -1
- package/dist/{chunk-WJLKJMKR.mjs → chunk-357YO24D.mjs} +4 -4
- package/dist/{chunk-GQYFLP3D.mjs → chunk-3GEYJ7I5.mjs} +1 -1
- package/dist/{chunk-AV4EMIRH.mjs → chunk-3N2M3WZL.mjs} +1 -1
- package/dist/{chunk-TERDKCLE.mjs → chunk-3UYAZ7I4.mjs} +2 -2
- package/dist/{chunk-JMOZEC77.mjs → chunk-4WFMPFZB.mjs} +1 -1
- package/dist/chunk-5OLNXP3S.mjs +144 -0
- package/dist/{chunk-6OAZJ577.mjs → chunk-7HSILTC4.mjs} +3 -3
- package/dist/{chunk-IRRY3CRZ.mjs → chunk-AKM4EPOT.mjs} +1 -1
- package/dist/{chunk-VGTDN7SW.mjs → chunk-AQEVCEXV.mjs} +2 -2
- package/dist/{chunk-WBOOUHSS.mjs → chunk-BCWEHE34.mjs} +1 -1
- package/dist/{chunk-AJ7ZDNBT.mjs → chunk-BOVUP27T.mjs} +1 -1
- package/dist/{chunk-BRKYVJVV.mjs → chunk-BQZE3HAW.mjs} +1 -1
- package/dist/{chunk-MLF3EZFW.mjs → chunk-D3Y2T42P.mjs} +2 -2
- package/dist/{chunk-3U4SSNWP.mjs → chunk-DF6DU42P.mjs} +2 -2
- package/dist/{chunk-ZJKGQMYH.mjs → chunk-DI7CBDL6.mjs} +2 -2
- package/dist/{chunk-2TFTAWVJ.mjs → chunk-DOGIPOF5.mjs} +2 -2
- package/dist/{chunk-MBMXYJJV.mjs → chunk-E7NEHHXV.mjs} +7 -3
- package/dist/{chunk-MX6HRKMI.mjs → chunk-EFLFRAHD.mjs} +1 -1
- package/dist/{chunk-SOYNZDVY.mjs → chunk-EMUWGDWC.mjs} +6 -1
- package/dist/{chunk-4I7D47FH.mjs → chunk-F4V6XLP4.mjs} +4 -4
- package/dist/{chunk-UREA2GYY.mjs → chunk-FA2KMTH5.mjs} +2 -2
- package/dist/{chunk-Y2NS74WS.mjs → chunk-FFTYLPSB.mjs} +46 -98
- package/dist/{chunk-OHBNABL5.mjs → chunk-FUVYSVGR.mjs} +14 -9
- package/dist/{chunk-KIHCWCWL.mjs → chunk-FVTVCJAH.mjs} +2 -2
- package/dist/{chunk-Y4GL2MHX.mjs → chunk-GK4VRMNE.mjs} +30 -12
- package/dist/{chunk-6Q64UFIA.mjs → chunk-HJ46DTJE.mjs} +1 -1
- package/dist/{chunk-WF2XDFRK.mjs → chunk-HLMPMUK2.mjs} +1 -1
- package/dist/{chunk-GD6KXMG5.mjs → chunk-I4V5XZPS.mjs} +1 -1
- package/dist/{chunk-AZJF2BLK.mjs → chunk-ISY26JQJ.mjs} +2 -2
- package/dist/{chunk-X4G6APW6.mjs → chunk-J6Q2YJEV.mjs} +1 -1
- package/dist/{chunk-KZL5VTYK.mjs → chunk-JCZQOY4O.mjs} +31 -24
- package/dist/{chunk-CZCQZHG6.mjs → chunk-JNVAIDLK.mjs} +2 -2
- package/dist/{chunk-SOA2Z4RB.mjs → chunk-JULSIZDM.mjs} +1 -1
- package/dist/{chunk-T7XZ7H7Y.mjs → chunk-KA7LTET3.mjs} +17 -3
- package/dist/chunk-KHYX4IOM.mjs +1114 -0
- package/dist/{chunk-LXJIIOYQ.mjs → chunk-LRM4AVYY.mjs} +2 -2
- package/dist/{chunk-VQ57HWPL.mjs → chunk-MYZ2EDYU.mjs} +2 -2
- package/dist/chunk-N4ZPVCJH.mjs +126 -0
- package/dist/{chunk-NA7PARID.mjs → chunk-NXI4YDZ2.mjs} +2 -2
- package/dist/{chunk-4K625MVM.mjs → chunk-OULVKTWL.mjs} +2 -2
- package/dist/{chunk-A4MDAP7G.mjs → chunk-P64WHW4A.mjs} +2 -2
- package/dist/{chunk-URI2WBIV.mjs → chunk-P73V2EKS.mjs} +2 -2
- package/dist/{chunk-ZUR7AU5R.mjs → chunk-PGERH3P7.mjs} +2 -2
- package/dist/{chunk-2UYENBLV.mjs → chunk-QSFV2P7O.mjs} +1 -1
- package/dist/{chunk-JT7HKXRB.mjs → chunk-S3KJCPEJ.mjs} +1 -1
- package/dist/{chunk-6MKGPAR2.mjs → chunk-V6NFJXKO.mjs} +2 -2
- package/dist/{chunk-A3A6KNQN.mjs → chunk-WOEWGSTU.mjs} +1 -1
- package/dist/{chunk-JUXSWN54.mjs → chunk-X26S5EVZ.mjs} +4 -2
- package/dist/{chunk-YFZ3ELX5.mjs → chunk-XBAGGKLW.mjs} +2 -2
- package/dist/{chunk-JB67UOB5.mjs → chunk-ZHMSAYLT.mjs} +2 -2
- package/dist/fonts.d.mts +1 -7
- package/dist/fonts.d.ts +1 -7
- package/dist/fonts.js +0 -2
- package/dist/fonts.mjs +1 -2
- package/dist/index.d.mts +7 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.js +1831 -475
- package/dist/index.mjs +54 -51
- package/package.json +3 -3
- package/src/components/ConfirmDialog/ConfirmDialog.tsx +39 -30
- package/src/components/CurrencyInput/CurrencyInput.tsx +4 -7
- package/src/components/DetailRow/DetailRow.tsx +1 -1
- package/src/components/IconPicker/IconPicker.tsx +395 -0
- package/src/components/IconPicker/index.ts +1 -0
- package/src/components/ImageUpload/ImageUpload.tsx +34 -12
- package/src/components/ListItem/ListItem.tsx +43 -28
- package/src/components/NumberStepper/NumberStepper.tsx +147 -0
- package/src/components/NumberStepper/index.ts +1 -0
- package/src/components/Pressable/Pressable.tsx +20 -8
- package/src/components/Sheet/Sheet.tsx +64 -172
- package/src/components/Stats/Stats.tsx +226 -0
- package/src/components/Stats/index.ts +2 -0
- package/src/components/Text/Text.tsx +4 -2
- package/src/fonts.ts +0 -7
- package/src/index.ts +7 -1
- package/src/theme/colorUtils.ts +9 -0
- package/src/utils/curatedIcons.ts +849 -0
- package/src/utils/fontGuard.ts +2 -1
- package/src/utils/icons.ts +20 -2
package/dist/index.mjs
CHANGED
|
@@ -1,61 +1,64 @@
|
|
|
1
|
-
export { Tabs, TabsContent } from './chunk-GQYFLP3D.mjs';
|
|
2
|
-
export { Text } from './chunk-WJLKJMKR.mjs';
|
|
3
|
-
export { Textarea } from './chunk-CZCQZHG6.mjs';
|
|
4
|
-
export { Toggle } from './chunk-KIHCWCWL.mjs';
|
|
5
1
|
export { VirtualList } from './chunk-NC5ZTR2Y.mjs';
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
14
|
-
export {
|
|
15
|
-
export {
|
|
16
|
-
export {
|
|
17
|
-
export {
|
|
18
|
-
export {
|
|
19
|
-
export {
|
|
20
|
-
export {
|
|
21
|
-
export {
|
|
22
|
-
export {
|
|
23
|
-
export {
|
|
24
|
-
export {
|
|
25
|
-
export {
|
|
26
|
-
export {
|
|
27
|
-
export {
|
|
28
|
-
export {
|
|
29
|
-
export {
|
|
30
|
-
export {
|
|
31
|
-
export {
|
|
32
|
-
export {
|
|
33
|
-
export {
|
|
34
|
-
export {
|
|
35
|
-
export {
|
|
2
|
+
export { Stats } from './chunk-5OLNXP3S.mjs';
|
|
3
|
+
export { Switch } from './chunk-HLMPMUK2.mjs';
|
|
4
|
+
export { TabBar } from './chunk-D3Y2T42P.mjs';
|
|
5
|
+
export { Tabs, TabsContent } from './chunk-3GEYJ7I5.mjs';
|
|
6
|
+
export { Text } from './chunk-357YO24D.mjs';
|
|
7
|
+
export { Textarea } from './chunk-JNVAIDLK.mjs';
|
|
8
|
+
export { Toggle } from './chunk-FVTVCJAH.mjs';
|
|
9
|
+
export { Select } from './chunk-WOEWGSTU.mjs';
|
|
10
|
+
export { SelectableGrid } from './chunk-NXI4YDZ2.mjs';
|
|
11
|
+
export { Separator } from './chunk-EFLFRAHD.mjs';
|
|
12
|
+
export { BottomSheetModalProvider, Sheet, BottomSheetTextInput as SheetTextInput } from './chunk-FFTYLPSB.mjs';
|
|
13
|
+
export { SheetSelect } from './chunk-P73V2EKS.mjs';
|
|
14
|
+
export { Skeleton } from './chunk-BOVUP27T.mjs';
|
|
15
|
+
export { Slider } from './chunk-4WFMPFZB.mjs';
|
|
16
|
+
export { MonthPicker, dateToMonthPickerValue, monthPickerValueToDate } from './chunk-I4V5XZPS.mjs';
|
|
17
|
+
export { NumberStepper } from './chunk-N4ZPVCJH.mjs';
|
|
18
|
+
export { Pressable } from './chunk-E7NEHHXV.mjs';
|
|
19
|
+
export { PricingCard } from './chunk-F4V6XLP4.mjs';
|
|
20
|
+
export { Progress } from './chunk-2I2AYECM.mjs';
|
|
21
|
+
export { RadioGroup } from './chunk-J6Q2YJEV.mjs';
|
|
22
|
+
export { RetrayProvider } from './chunk-XBAGGKLW.mjs';
|
|
23
|
+
export { ToastProvider, sonnerToast as toast, useToast } from './chunk-QSFV2P7O.mjs';
|
|
24
|
+
export { ImageViewer } from './chunk-2A2LEFZG.mjs';
|
|
25
|
+
export { PagerDots } from './chunk-OULVKTWL.mjs';
|
|
26
|
+
export { LabelValue } from './chunk-P64WHW4A.mjs';
|
|
27
|
+
export { ListGroup, ListGroupFooter, ListGroupHeader } from './chunk-JULSIZDM.mjs';
|
|
28
|
+
export { ListItem } from './chunk-FUVYSVGR.mjs';
|
|
29
|
+
export { MediaCard } from './chunk-AQEVCEXV.mjs';
|
|
30
|
+
export { MenuGroup, MenuGroupFooter, MenuGroupHeader } from './chunk-AKM4EPOT.mjs';
|
|
31
|
+
export { MenuItem } from './chunk-DI7CBDL6.mjs';
|
|
32
|
+
export { DetailRow } from './chunk-ZHMSAYLT.mjs';
|
|
33
|
+
export { EmptyState } from './chunk-7HSILTC4.mjs';
|
|
34
|
+
export { ErrorBoundary } from './chunk-LRM4AVYY.mjs';
|
|
35
|
+
export { Form, FormField, FormFooter, FormSection } from './chunk-HJ46DTJE.mjs';
|
|
36
|
+
export { IconPicker } from './chunk-KHYX4IOM.mjs';
|
|
37
|
+
export { ImageUpload } from './chunk-GK4VRMNE.mjs';
|
|
38
|
+
export { Spinner } from './chunk-BCWEHE34.mjs';
|
|
36
39
|
export { ButtonGroup } from './chunk-3BBOZ3OQ.mjs';
|
|
37
|
-
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './chunk-
|
|
38
|
-
export { CategoryStrip } from './chunk-
|
|
40
|
+
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './chunk-2CBQKU7H.mjs';
|
|
41
|
+
export { CategoryStrip } from './chunk-MYZ2EDYU.mjs';
|
|
39
42
|
import './chunk-YNROWHQJ.mjs';
|
|
40
|
-
export { Checkbox } from './chunk-
|
|
41
|
-
export { Chip, ChipGroup } from './chunk-
|
|
42
|
-
export { ConfirmDialog } from './chunk-
|
|
43
|
-
export { CurrencyDisplay } from './chunk-
|
|
44
|
-
export { CurrencyInput } from './chunk-
|
|
45
|
-
export { Input } from './chunk-
|
|
46
|
-
export { Accordion } from './chunk-
|
|
47
|
-
export { AlertBanner } from './chunk-
|
|
48
|
-
export { AppHeader } from './chunk-
|
|
49
|
-
export { IconButton } from './chunk-
|
|
50
|
-
export { Avatar } from './chunk-
|
|
51
|
-
export { Badge } from './chunk-
|
|
52
|
-
export { Button } from './chunk-
|
|
43
|
+
export { Checkbox } from './chunk-3N2M3WZL.mjs';
|
|
44
|
+
export { Chip, ChipGroup } from './chunk-FA2KMTH5.mjs';
|
|
45
|
+
export { ConfirmDialog } from './chunk-JCZQOY4O.mjs';
|
|
46
|
+
export { CurrencyDisplay } from './chunk-BQZE3HAW.mjs';
|
|
47
|
+
export { CurrencyInput } from './chunk-X26S5EVZ.mjs';
|
|
48
|
+
export { Input } from './chunk-PGERH3P7.mjs';
|
|
49
|
+
export { Accordion } from './chunk-265G6A46.mjs';
|
|
50
|
+
export { AlertBanner } from './chunk-V6NFJXKO.mjs';
|
|
51
|
+
export { AppHeader } from './chunk-ISY26JQJ.mjs';
|
|
52
|
+
export { IconButton } from './chunk-DF6DU42P.mjs';
|
|
53
|
+
export { Avatar } from './chunk-S3KJCPEJ.mjs';
|
|
54
|
+
export { Badge } from './chunk-3UYAZ7I4.mjs';
|
|
55
|
+
export { Button } from './chunk-DOGIPOF5.mjs';
|
|
53
56
|
import './chunk-3DKJ2GIC.mjs';
|
|
54
57
|
export { impactHeavy, impactLight, impactMedium, notificationError, notificationSuccess, notificationWarning, richHaptics, selectionAsync } from './chunk-EJ7ZPXOH.mjs';
|
|
55
58
|
import './chunk-DVK4G2GT.mjs';
|
|
56
59
|
export { BREAKPOINTS, ICON_SIZES, RADIUS, SHADOWS, SPACING, TYPOGRAPHY } from './chunk-QY3X2UYR.mjs';
|
|
57
|
-
export { Icon, configureIconFamilies, renderIcon } from './chunk-
|
|
58
|
-
export { ThemeProvider, defaultDark, defaultLight, deriveColors, useTheme } from './chunk-
|
|
60
|
+
export { Icon, configureIconFamilies, getValidIconNames, renderIcon } from './chunk-KA7LTET3.mjs';
|
|
61
|
+
export { ThemeProvider, defaultDark, defaultLight, deriveColors, useTheme, withAlpha } from './chunk-EMUWGDWC.mjs';
|
|
59
62
|
import './chunk-2CE3TQVY.mjs';
|
|
60
63
|
import './chunk-Y6FXYEAI.mjs';
|
|
61
64
|
import { useState, useCallback } from 'react';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@retray-dev/ui-kit",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "12.1.0",
|
|
4
4
|
"description": "Personal UI Kit for React Native / Expo",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
"react-native-worklets": "0.5.1",
|
|
111
111
|
"@types/react": "19.1.17",
|
|
112
112
|
"react-native-safe-area-context": "5.6.2",
|
|
113
|
-
"@gorhom/bottom-sheet": "5.2.
|
|
113
|
+
"@gorhom/bottom-sheet": "5.2.14"
|
|
114
114
|
},
|
|
115
115
|
"onlyBuiltDependencies": [
|
|
116
116
|
"esbuild"
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"devDependencies": {
|
|
120
120
|
"@eslint/js": "^9.0.0",
|
|
121
121
|
"@expo/vector-icons": "^15.1.1",
|
|
122
|
-
"@gorhom/bottom-sheet": "5.2.
|
|
122
|
+
"@gorhom/bottom-sheet": "5.2.14",
|
|
123
123
|
"@react-native-community/slider": "5.0.1",
|
|
124
124
|
"@react-native-picker/picker": "2.11.1",
|
|
125
125
|
"@shopify/react-native-skia": "2.2.12",
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import React, { useEffect, useRef } from 'react'
|
|
1
|
+
import React, { useCallback, useEffect, useRef, useId } from 'react'
|
|
2
2
|
import { View, Text, TouchableOpacity, StyleSheet } from 'react-native'
|
|
3
|
-
import
|
|
3
|
+
import {
|
|
4
|
+
BottomSheetModal,
|
|
4
5
|
BottomSheetView,
|
|
5
6
|
BottomSheetBackdrop,
|
|
6
7
|
type BottomSheetBackdropProps,
|
|
7
8
|
} from '@gorhom/bottom-sheet'
|
|
9
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context'
|
|
8
10
|
import { Feather } from '@expo/vector-icons'
|
|
9
11
|
import { impactMedium, notificationSuccess, selectionAsync as hapticSelection } from '../../utils/haptics'
|
|
10
12
|
import { useTheme } from '../../theme'
|
|
@@ -14,16 +16,11 @@ import { s, vs, ms, mvs } from '../../utils/scaling'
|
|
|
14
16
|
export interface ConfirmDialogProps {
|
|
15
17
|
visible: boolean
|
|
16
18
|
title: string
|
|
17
|
-
/** Secondary text below title. */
|
|
18
19
|
subtitle?: string
|
|
19
|
-
/** @deprecated Use `subtitle` instead. */
|
|
20
|
-
description?: string
|
|
21
20
|
confirmLabel?: string
|
|
22
21
|
cancelLabel?: string
|
|
23
22
|
confirmVariant?: 'primary' | 'destructive'
|
|
24
|
-
/** Show a loading spinner in the confirm button (e.g. while async action completes). */
|
|
25
23
|
loading?: boolean
|
|
26
|
-
/** Show an X close button in the top-right corner. */
|
|
27
24
|
showCloseButton?: boolean
|
|
28
25
|
onConfirm: () => void
|
|
29
26
|
onCancel: () => void
|
|
@@ -33,7 +30,6 @@ export function ConfirmDialog({
|
|
|
33
30
|
visible,
|
|
34
31
|
title,
|
|
35
32
|
subtitle,
|
|
36
|
-
description,
|
|
37
33
|
confirmLabel = 'Confirm',
|
|
38
34
|
cancelLabel = 'Cancel',
|
|
39
35
|
confirmVariant = 'primary',
|
|
@@ -43,37 +39,44 @@ export function ConfirmDialog({
|
|
|
43
39
|
onCancel,
|
|
44
40
|
}: ConfirmDialogProps) {
|
|
45
41
|
const { colors } = useTheme()
|
|
46
|
-
const
|
|
47
|
-
const
|
|
42
|
+
const insets = useSafeAreaInsets()
|
|
43
|
+
const ref = useRef<BottomSheetModal>(null)
|
|
44
|
+
const wasOpened = useRef(false)
|
|
45
|
+
const name = useId()
|
|
48
46
|
|
|
49
47
|
useEffect(() => {
|
|
50
48
|
if (visible) {
|
|
51
49
|
impactMedium()
|
|
52
|
-
ref.current?.
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
ref.current?.present()
|
|
51
|
+
wasOpened.current = true
|
|
52
|
+
} else if (wasOpened.current) {
|
|
53
|
+
ref.current?.dismiss()
|
|
55
54
|
}
|
|
56
55
|
}, [visible])
|
|
57
56
|
|
|
58
|
-
const renderBackdrop = (
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
const renderBackdrop = useCallback(
|
|
58
|
+
(props: BottomSheetBackdropProps) => (
|
|
59
|
+
<BottomSheetBackdrop
|
|
60
|
+
{...props}
|
|
61
|
+
disappearsOnIndex={-1}
|
|
62
|
+
appearsOnIndex={0}
|
|
63
|
+
pressBehavior="close"
|
|
64
|
+
/>
|
|
65
|
+
),
|
|
66
|
+
[]
|
|
65
67
|
)
|
|
66
68
|
|
|
67
69
|
return (
|
|
68
|
-
|
|
70
|
+
<BottomSheetModal
|
|
69
71
|
ref={ref}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
+
name={name}
|
|
73
|
+
onDismiss={onCancel}
|
|
72
74
|
enableDynamicSizing
|
|
73
75
|
backdropComponent={renderBackdrop}
|
|
74
|
-
backgroundStyle={
|
|
75
|
-
handleIndicatorStyle={
|
|
76
|
+
backgroundStyle={{ ...styles.background, backgroundColor: colors.card }}
|
|
77
|
+
handleIndicatorStyle={{ ...styles.handle, backgroundColor: colors.border }}
|
|
76
78
|
enablePanDownToClose
|
|
79
|
+
topInset={insets.top}
|
|
77
80
|
>
|
|
78
81
|
<BottomSheetView style={styles.content}>
|
|
79
82
|
<View style={styles.header} accessibilityRole="header">
|
|
@@ -95,9 +98,9 @@ export function ConfirmDialog({
|
|
|
95
98
|
</TouchableOpacity>
|
|
96
99
|
) : null}
|
|
97
100
|
</View>
|
|
98
|
-
{
|
|
101
|
+
{subtitle ? (
|
|
99
102
|
<Text style={[styles.subtitle, { color: colors.foregroundMuted }]} allowFontScaling={true}>
|
|
100
|
-
{
|
|
103
|
+
{subtitle}
|
|
101
104
|
</Text>
|
|
102
105
|
) : null}
|
|
103
106
|
</View>
|
|
@@ -108,7 +111,10 @@ export function ConfirmDialog({
|
|
|
108
111
|
fullWidth
|
|
109
112
|
loading={loading}
|
|
110
113
|
disabled={loading}
|
|
111
|
-
onPress={() => {
|
|
114
|
+
onPress={() => {
|
|
115
|
+
notificationSuccess()
|
|
116
|
+
onConfirm()
|
|
117
|
+
}}
|
|
112
118
|
icon={
|
|
113
119
|
<Feather
|
|
114
120
|
name={confirmVariant === 'destructive' ? 'trash-2' : 'check'}
|
|
@@ -125,12 +131,15 @@ export function ConfirmDialog({
|
|
|
125
131
|
label={cancelLabel}
|
|
126
132
|
variant="secondary"
|
|
127
133
|
fullWidth
|
|
128
|
-
onPress={() => {
|
|
134
|
+
onPress={() => {
|
|
135
|
+
hapticSelection()
|
|
136
|
+
onCancel()
|
|
137
|
+
}}
|
|
129
138
|
icon={<Feather name="x" size={15} color={colors.foreground} />}
|
|
130
139
|
/>
|
|
131
140
|
</View>
|
|
132
141
|
</BottomSheetView>
|
|
133
|
-
</
|
|
142
|
+
</BottomSheetModal>
|
|
134
143
|
)
|
|
135
144
|
}
|
|
136
145
|
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
|
-
import { ViewStyle, TextStyle } from 'react-native'
|
|
2
|
+
import { ViewStyle, TextStyle, TextInputProps } from 'react-native'
|
|
3
3
|
import { Input } from '../Input'
|
|
4
4
|
import { ms, vs } from '../../utils/scaling'
|
|
5
5
|
|
|
6
|
-
export interface CurrencyInputProps {
|
|
7
|
-
value?: string
|
|
8
|
-
onChangeText?: (formatted: string) => void
|
|
6
|
+
export interface CurrencyInputProps extends TextInputProps {
|
|
9
7
|
/** Called with the parsed numeric value (no separators, no prefix). */
|
|
10
8
|
onChangeValue?: (raw: number) => void
|
|
11
9
|
/** Currency symbol shown left of the value. Any string (`'$'`, `'€'`, `'£'`, `'COP '`). Defaults to `'$'`. */
|
|
@@ -18,10 +16,7 @@ export interface CurrencyInputProps {
|
|
|
18
16
|
/** Red helper text; also changes input border to destructive color. */
|
|
19
17
|
error?: string
|
|
20
18
|
hint?: string
|
|
21
|
-
placeholder?: string
|
|
22
|
-
editable?: boolean
|
|
23
19
|
containerStyle?: ViewStyle
|
|
24
|
-
style?: TextStyle
|
|
25
20
|
/** Use inside a Sheet/BottomSheet — passes sheetMode to the underlying Input. */
|
|
26
21
|
sheetMode?: boolean
|
|
27
22
|
}
|
|
@@ -47,6 +42,7 @@ export function CurrencyInput({
|
|
|
47
42
|
containerStyle,
|
|
48
43
|
style,
|
|
49
44
|
sheetMode,
|
|
45
|
+
...props
|
|
50
46
|
}: CurrencyInputProps) {
|
|
51
47
|
const handleChange = (text: string) => {
|
|
52
48
|
const withoutPrefix = prefix && text.startsWith(prefix) ? text.slice(prefix.length) : text
|
|
@@ -73,6 +69,7 @@ export function CurrencyInput({
|
|
|
73
69
|
|
|
74
70
|
return (
|
|
75
71
|
<Input
|
|
72
|
+
{...props}
|
|
76
73
|
value={displayValue}
|
|
77
74
|
onChangeText={handleChange}
|
|
78
75
|
keyboardType="numeric"
|
|
@@ -16,7 +16,7 @@ const weightMap: Record<DetailRowLabelWeight, string> = {
|
|
|
16
16
|
|
|
17
17
|
export interface DetailRowProps {
|
|
18
18
|
label: React.ReactNode
|
|
19
|
-
value: string | React.ReactNode
|
|
19
|
+
value: string | number | React.ReactNode
|
|
20
20
|
/** Dotted/dashed/solid line between label and value. Defaults to 'dotted'. */
|
|
21
21
|
separator?: DetailRowSeparator
|
|
22
22
|
labelWeight?: DetailRowLabelWeight
|