@oxyhq/bloom 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/README.md +105 -90
  2. package/lib/commonjs/bottom-sheet/index.js +2 -2
  3. package/lib/commonjs/context-menu/index.js +18 -19
  4. package/lib/commonjs/context-menu/index.js.map +1 -1
  5. package/lib/commonjs/dialog/BloomDialogProvider.js +61 -0
  6. package/lib/commonjs/dialog/BloomDialogProvider.js.map +1 -0
  7. package/lib/commonjs/dialog/BloomDialogProvider.web.js +45 -0
  8. package/lib/commonjs/dialog/BloomDialogProvider.web.js.map +1 -0
  9. package/lib/commonjs/dialog/Dialog.js +197 -100
  10. package/lib/commonjs/dialog/Dialog.js.map +1 -1
  11. package/lib/commonjs/dialog/Dialog.web.js +194 -84
  12. package/lib/commonjs/dialog/Dialog.web.js.map +1 -1
  13. package/lib/commonjs/dialog/SheetShell.js +149 -0
  14. package/lib/commonjs/dialog/SheetShell.js.map +1 -0
  15. package/lib/commonjs/dialog/alert-store.js +116 -0
  16. package/lib/commonjs/dialog/alert-store.js.map +1 -0
  17. package/lib/commonjs/dialog/alert.js +38 -0
  18. package/lib/commonjs/dialog/alert.js.map +1 -0
  19. package/lib/commonjs/dialog/context.js +10 -2
  20. package/lib/commonjs/dialog/context.js.map +1 -1
  21. package/lib/commonjs/dialog/index.js +8 -24
  22. package/lib/commonjs/dialog/index.js.map +1 -1
  23. package/lib/commonjs/dialog/index.web.js +10 -20
  24. package/lib/commonjs/dialog/index.web.js.map +1 -1
  25. package/lib/commonjs/index.js +101 -66
  26. package/lib/commonjs/index.js.map +1 -1
  27. package/lib/commonjs/index.web.js +101 -66
  28. package/lib/commonjs/index.web.js.map +1 -1
  29. package/lib/commonjs/menu/index.js +21 -23
  30. package/lib/commonjs/menu/index.js.map +1 -1
  31. package/lib/commonjs/select/index.js +26 -27
  32. package/lib/commonjs/select/index.js.map +1 -1
  33. package/lib/commonjs/toast/index.js +42 -13
  34. package/lib/commonjs/toast/index.js.map +1 -1
  35. package/lib/commonjs/toast/index.web.js +19 -15
  36. package/lib/commonjs/toast/index.web.js.map +1 -1
  37. package/lib/module/bottom-sheet/index.js +2 -2
  38. package/lib/module/context-menu/index.js +15 -16
  39. package/lib/module/context-menu/index.js.map +1 -1
  40. package/lib/module/dialog/BloomDialogProvider.js +57 -0
  41. package/lib/module/dialog/BloomDialogProvider.js.map +1 -0
  42. package/lib/module/dialog/BloomDialogProvider.web.js +41 -0
  43. package/lib/module/dialog/BloomDialogProvider.web.js.map +1 -0
  44. package/lib/module/dialog/Dialog.js +199 -87
  45. package/lib/module/dialog/Dialog.js.map +1 -1
  46. package/lib/module/dialog/Dialog.web.js +195 -70
  47. package/lib/module/dialog/Dialog.web.js.map +1 -1
  48. package/lib/module/dialog/SheetShell.js +143 -0
  49. package/lib/module/dialog/SheetShell.js.map +1 -0
  50. package/lib/module/dialog/alert-store.js +107 -0
  51. package/lib/module/dialog/alert-store.js.map +1 -0
  52. package/lib/module/dialog/alert.js +35 -0
  53. package/lib/module/dialog/alert.js.map +1 -0
  54. package/lib/module/dialog/context.js +10 -2
  55. package/lib/module/dialog/context.js.map +1 -1
  56. package/lib/module/dialog/index.js +3 -1
  57. package/lib/module/dialog/index.js.map +1 -1
  58. package/lib/module/dialog/index.web.js +9 -7
  59. package/lib/module/dialog/index.web.js.map +1 -1
  60. package/lib/module/index.js +2 -3
  61. package/lib/module/index.js.map +1 -1
  62. package/lib/module/index.web.js +2 -3
  63. package/lib/module/index.web.js.map +1 -1
  64. package/lib/module/menu/index.js +11 -13
  65. package/lib/module/menu/index.js.map +1 -1
  66. package/lib/module/select/index.js +27 -28
  67. package/lib/module/select/index.js.map +1 -1
  68. package/lib/module/toast/index.js +41 -11
  69. package/lib/module/toast/index.js.map +1 -1
  70. package/lib/module/toast/index.web.js +18 -13
  71. package/lib/module/toast/index.web.js.map +1 -1
  72. package/lib/typescript/commonjs/__tests__/Dialog.test.d.ts +2 -0
  73. package/lib/typescript/commonjs/__tests__/Dialog.test.d.ts.map +1 -0
  74. package/lib/typescript/commonjs/bottom-sheet/index.d.ts +1 -1
  75. package/lib/typescript/commonjs/context-menu/index.d.ts +4 -3
  76. package/lib/typescript/commonjs/context-menu/index.d.ts.map +1 -1
  77. package/lib/typescript/commonjs/dialog/BloomDialogProvider.d.ts +27 -0
  78. package/lib/typescript/commonjs/dialog/BloomDialogProvider.d.ts.map +1 -0
  79. package/lib/typescript/commonjs/dialog/BloomDialogProvider.web.d.ts +15 -0
  80. package/lib/typescript/commonjs/dialog/BloomDialogProvider.web.d.ts.map +1 -0
  81. package/lib/typescript/commonjs/dialog/Dialog.d.ts +37 -10
  82. package/lib/typescript/commonjs/dialog/Dialog.d.ts.map +1 -1
  83. package/lib/typescript/commonjs/dialog/Dialog.web.d.ts +26 -10
  84. package/lib/typescript/commonjs/dialog/Dialog.web.d.ts.map +1 -1
  85. package/lib/typescript/commonjs/dialog/SheetShell.d.ts +31 -0
  86. package/lib/typescript/commonjs/dialog/SheetShell.d.ts.map +1 -0
  87. package/lib/typescript/commonjs/dialog/alert-store.d.ts +70 -0
  88. package/lib/typescript/commonjs/dialog/alert-store.d.ts.map +1 -0
  89. package/lib/typescript/commonjs/dialog/alert.d.ts +27 -0
  90. package/lib/typescript/commonjs/dialog/alert.d.ts.map +1 -0
  91. package/lib/typescript/commonjs/dialog/context.d.ts +7 -0
  92. package/lib/typescript/commonjs/dialog/context.d.ts.map +1 -1
  93. package/lib/typescript/commonjs/dialog/index.d.ts +5 -2
  94. package/lib/typescript/commonjs/dialog/index.d.ts.map +1 -1
  95. package/lib/typescript/commonjs/dialog/index.web.d.ts +5 -2
  96. package/lib/typescript/commonjs/dialog/index.web.d.ts.map +1 -1
  97. package/lib/typescript/commonjs/dialog/types.d.ts +70 -15
  98. package/lib/typescript/commonjs/dialog/types.d.ts.map +1 -1
  99. package/lib/typescript/commonjs/index.d.ts +3 -3
  100. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  101. package/lib/typescript/commonjs/index.web.d.ts +3 -3
  102. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  103. package/lib/typescript/commonjs/menu/index.d.ts +4 -4
  104. package/lib/typescript/commonjs/menu/index.d.ts.map +1 -1
  105. package/lib/typescript/commonjs/select/index.d.ts.map +1 -1
  106. package/lib/typescript/commonjs/toast/index.d.ts +32 -3
  107. package/lib/typescript/commonjs/toast/index.d.ts.map +1 -1
  108. package/lib/typescript/commonjs/toast/index.web.d.ts +14 -7
  109. package/lib/typescript/commonjs/toast/index.web.d.ts.map +1 -1
  110. package/lib/typescript/module/__tests__/Dialog.test.d.ts +2 -0
  111. package/lib/typescript/module/__tests__/Dialog.test.d.ts.map +1 -0
  112. package/lib/typescript/module/bottom-sheet/index.d.ts +1 -1
  113. package/lib/typescript/module/context-menu/index.d.ts +4 -3
  114. package/lib/typescript/module/context-menu/index.d.ts.map +1 -1
  115. package/lib/typescript/module/dialog/BloomDialogProvider.d.ts +27 -0
  116. package/lib/typescript/module/dialog/BloomDialogProvider.d.ts.map +1 -0
  117. package/lib/typescript/module/dialog/BloomDialogProvider.web.d.ts +15 -0
  118. package/lib/typescript/module/dialog/BloomDialogProvider.web.d.ts.map +1 -0
  119. package/lib/typescript/module/dialog/Dialog.d.ts +37 -10
  120. package/lib/typescript/module/dialog/Dialog.d.ts.map +1 -1
  121. package/lib/typescript/module/dialog/Dialog.web.d.ts +26 -10
  122. package/lib/typescript/module/dialog/Dialog.web.d.ts.map +1 -1
  123. package/lib/typescript/module/dialog/SheetShell.d.ts +31 -0
  124. package/lib/typescript/module/dialog/SheetShell.d.ts.map +1 -0
  125. package/lib/typescript/module/dialog/alert-store.d.ts +70 -0
  126. package/lib/typescript/module/dialog/alert-store.d.ts.map +1 -0
  127. package/lib/typescript/module/dialog/alert.d.ts +27 -0
  128. package/lib/typescript/module/dialog/alert.d.ts.map +1 -0
  129. package/lib/typescript/module/dialog/context.d.ts +7 -0
  130. package/lib/typescript/module/dialog/context.d.ts.map +1 -1
  131. package/lib/typescript/module/dialog/index.d.ts +5 -2
  132. package/lib/typescript/module/dialog/index.d.ts.map +1 -1
  133. package/lib/typescript/module/dialog/index.web.d.ts +5 -2
  134. package/lib/typescript/module/dialog/index.web.d.ts.map +1 -1
  135. package/lib/typescript/module/dialog/types.d.ts +70 -15
  136. package/lib/typescript/module/dialog/types.d.ts.map +1 -1
  137. package/lib/typescript/module/index.d.ts +3 -3
  138. package/lib/typescript/module/index.d.ts.map +1 -1
  139. package/lib/typescript/module/index.web.d.ts +3 -3
  140. package/lib/typescript/module/index.web.d.ts.map +1 -1
  141. package/lib/typescript/module/menu/index.d.ts +4 -4
  142. package/lib/typescript/module/menu/index.d.ts.map +1 -1
  143. package/lib/typescript/module/select/index.d.ts.map +1 -1
  144. package/lib/typescript/module/toast/index.d.ts +32 -3
  145. package/lib/typescript/module/toast/index.d.ts.map +1 -1
  146. package/lib/typescript/module/toast/index.web.d.ts +14 -7
  147. package/lib/typescript/module/toast/index.web.d.ts.map +1 -1
  148. package/package.json +3 -14
  149. package/src/__tests__/Dialog.test.tsx +177 -0
  150. package/src/bottom-sheet/index.tsx +3 -3
  151. package/src/context-menu/index.tsx +12 -12
  152. package/src/dialog/BloomDialogProvider.tsx +61 -0
  153. package/src/dialog/BloomDialogProvider.web.tsx +46 -0
  154. package/src/dialog/Dialog.tsx +217 -64
  155. package/src/dialog/Dialog.web.tsx +240 -75
  156. package/src/dialog/SheetShell.tsx +154 -0
  157. package/src/dialog/alert-store.ts +126 -0
  158. package/src/dialog/alert.ts +42 -0
  159. package/src/dialog/context.ts +14 -3
  160. package/src/dialog/index.ts +14 -2
  161. package/src/dialog/index.web.ts +20 -8
  162. package/src/dialog/types.ts +73 -16
  163. package/src/index.ts +17 -3
  164. package/src/index.web.ts +17 -3
  165. package/src/menu/index.tsx +13 -17
  166. package/src/select/index.tsx +30 -30
  167. package/src/toast/index.tsx +55 -11
  168. package/src/toast/index.web.tsx +33 -13
  169. package/lib/commonjs/prompt/Prompt.js +0 -267
  170. package/lib/commonjs/prompt/Prompt.js.map +0 -1
  171. package/lib/commonjs/prompt/index.js +0 -61
  172. package/lib/commonjs/prompt/index.js.map +0 -1
  173. package/lib/module/prompt/Prompt.js +0 -250
  174. package/lib/module/prompt/Prompt.js.map +0 -1
  175. package/lib/module/prompt/index.js +0 -4
  176. package/lib/module/prompt/index.js.map +0 -1
  177. package/lib/typescript/commonjs/prompt/Prompt.d.ts +0 -42
  178. package/lib/typescript/commonjs/prompt/Prompt.d.ts.map +0 -1
  179. package/lib/typescript/commonjs/prompt/index.d.ts +0 -3
  180. package/lib/typescript/commonjs/prompt/index.d.ts.map +0 -1
  181. package/lib/typescript/module/prompt/Prompt.d.ts +0 -42
  182. package/lib/typescript/module/prompt/Prompt.d.ts.map +0 -1
  183. package/lib/typescript/module/prompt/index.d.ts +0 -3
  184. package/lib/typescript/module/prompt/index.d.ts.map +0 -1
  185. package/src/prompt/Prompt.tsx +0 -247
  186. package/src/prompt/index.ts +0 -13
@@ -1,42 +0,0 @@
1
- import React from 'react';
2
- import { type GestureResponderEvent } from 'react-native';
3
- import * as Dialog from '../dialog';
4
- export { type DialogControlProps as PromptControlProps, useDialogControl as usePromptControl, } from '../dialog';
5
- export declare function Outer({ children, control, testID, onClose, }: React.PropsWithChildren<{
6
- control: Dialog.DialogControlProps;
7
- testID?: string;
8
- onClose?: () => void;
9
- }>): import("react/jsx-runtime").JSX.Element;
10
- export declare function TitleText({ children }: React.PropsWithChildren): import("react/jsx-runtime").JSX.Element;
11
- export declare function DescriptionText({ children, selectable, }: React.PropsWithChildren<{
12
- selectable?: boolean;
13
- }>): import("react/jsx-runtime").JSX.Element;
14
- export declare function Actions({ children }: {
15
- children: React.ReactNode;
16
- }): import("react/jsx-runtime").JSX.Element;
17
- export declare function Content({ children }: {
18
- children: React.ReactNode;
19
- }): import("react/jsx-runtime").JSX.Element;
20
- export type ActionColor = 'primary' | 'primary_subtle' | 'secondary' | 'negative' | 'negative_subtle';
21
- export declare function Cancel({ cta }: {
22
- cta?: string;
23
- }): import("react/jsx-runtime").JSX.Element;
24
- export declare function Action({ onPress, color, cta, disabled, shouldCloseOnPress, testID, }: {
25
- onPress: (e: GestureResponderEvent) => void;
26
- color?: ActionColor;
27
- cta?: string;
28
- disabled?: boolean;
29
- shouldCloseOnPress?: boolean;
30
- testID?: string;
31
- }): import("react/jsx-runtime").JSX.Element;
32
- export declare function Basic({ control, title, description, cancelButtonCta, confirmButtonCta, onConfirm, confirmButtonColor, showCancel, }: {
33
- control: Dialog.DialogOuterProps['control'];
34
- title: string;
35
- description?: string;
36
- cancelButtonCta?: string;
37
- confirmButtonCta?: string;
38
- onConfirm: (e: GestureResponderEvent) => void;
39
- confirmButtonColor?: ActionColor;
40
- showCancel?: boolean;
41
- }): import("react/jsx-runtime").JSX.Element;
42
- //# sourceMappingURL=Prompt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Prompt.d.ts","sourceRoot":"","sources":["../../../../src/prompt/Prompt.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiE,MAAM,OAAO,CAAC;AACtF,OAAO,EAA0C,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAIlG,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,KAAK,kBAAkB,IAAI,kBAAkB,EAC7C,gBAAgB,IAAI,gBAAgB,GACrC,MAAM,WAAW,CAAC;AAWnB,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,OAAO,EACP,MAAM,EACN,OAAO,GACR,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC,kBAAkB,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC,2CA8BD;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,iBAAiB,2CAkB9D;AAED,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,UAAU,GACX,EAAE,KAAK,CAAC,iBAAiB,CAAC;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,2CAkBnD;AAED,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAElE;AAED,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAElE;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,gBAAgB,GAAG,WAAW,GAAG,UAAU,GAAG,iBAAiB,CAAC;AAkBtG,wBAAgB,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,2CAuB/C;AAED,wBAAgB,MAAM,CAAC,EACrB,OAAO,EACP,KAAiB,EACjB,GAAG,EACH,QAAgB,EAChB,kBAAyB,EACzB,MAAM,GACP,EAAE;IACD,OAAO,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC5C,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,2CAsCA;AAED,wBAAgB,KAAK,CAAC,EACpB,OAAO,EACP,KAAK,EACL,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,UAAiB,GAClB,EAAE;IACD,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC9C,kBAAkB,CAAC,EAAE,WAAW,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,2CAkBA"}
@@ -1,3 +0,0 @@
1
- export { Outer, TitleText, DescriptionText, Actions, Content, Cancel, Action, Basic, usePromptControl, } from './Prompt';
2
- export type { PromptControlProps, ActionColor } from './Prompt';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/prompt/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,SAAS,EACT,eAAe,EACf,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,EACN,KAAK,EACL,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
@@ -1,247 +0,0 @@
1
- import React, { createContext, useCallback, useContext, useId, useMemo } from 'react';
2
- import { View, Text, TouchableOpacity, Platform, type GestureResponderEvent } from 'react-native';
3
-
4
- import { useTheme } from '../theme/use-theme';
5
- import type { ThemeColors } from '../theme/types';
6
- import * as Dialog from '../dialog';
7
-
8
- export {
9
- type DialogControlProps as PromptControlProps,
10
- useDialogControl as usePromptControl,
11
- } from '../dialog';
12
-
13
- const PromptContext = createContext<{
14
- titleId: string;
15
- descriptionId: string;
16
- }>({
17
- titleId: '',
18
- descriptionId: '',
19
- });
20
- PromptContext.displayName = 'BloomPromptContext';
21
-
22
- export function Outer({
23
- children,
24
- control,
25
- testID,
26
- onClose,
27
- }: React.PropsWithChildren<{
28
- control: Dialog.DialogControlProps;
29
- testID?: string;
30
- onClose?: () => void;
31
- }>) {
32
- const titleId = useId();
33
- const descriptionId = useId();
34
-
35
- const context = useMemo(
36
- () => ({ titleId, descriptionId }),
37
- [titleId, descriptionId],
38
- );
39
-
40
- return (
41
- <Dialog.Outer
42
- control={control}
43
- testID={testID}
44
- onClose={onClose}
45
- webOptions={{ alignCenter: true }}
46
- preventExpansion
47
- >
48
- <PromptContext.Provider value={context}>
49
- <Dialog.ScrollableInner
50
- label=""
51
- style={Platform.select({
52
- web: { maxWidth: 320, borderRadius: 36 },
53
- default: undefined,
54
- })}
55
- >
56
- {children}
57
- </Dialog.ScrollableInner>
58
- </PromptContext.Provider>
59
- </Dialog.Outer>
60
- );
61
- }
62
-
63
- export function TitleText({ children }: React.PropsWithChildren) {
64
- const { titleId } = useContext(PromptContext);
65
- const theme = useTheme();
66
-
67
- return (
68
- <Text
69
- nativeID={titleId}
70
- style={{
71
- fontSize: 22,
72
- fontWeight: '600',
73
- color: theme.colors.text,
74
- paddingBottom: 4,
75
- lineHeight: 30,
76
- }}
77
- >
78
- {children}
79
- </Text>
80
- );
81
- }
82
-
83
- export function DescriptionText({
84
- children,
85
- selectable,
86
- }: React.PropsWithChildren<{ selectable?: boolean }>) {
87
- const { descriptionId } = useContext(PromptContext);
88
- const theme = useTheme();
89
-
90
- return (
91
- <Text
92
- nativeID={descriptionId}
93
- selectable={selectable}
94
- style={{
95
- fontSize: 16,
96
- color: theme.colors.textSecondary,
97
- paddingBottom: 16,
98
- lineHeight: 22,
99
- }}
100
- >
101
- {children}
102
- </Text>
103
- );
104
- }
105
-
106
- export function Actions({ children }: { children: React.ReactNode }) {
107
- return <View style={{ width: '100%', gap: 8, justifyContent: 'flex-end' }}>{children}</View>;
108
- }
109
-
110
- export function Content({ children }: { children: React.ReactNode }) {
111
- return <View style={{ paddingBottom: 8 }}>{children}</View>;
112
- }
113
-
114
- export type ActionColor = 'primary' | 'primary_subtle' | 'secondary' | 'negative' | 'negative_subtle';
115
-
116
- function getActionColors(color: ActionColor, colors: ThemeColors) {
117
- switch (color) {
118
- case 'negative':
119
- return { background: colors.negative, foreground: colors.negativeForeground };
120
- case 'negative_subtle':
121
- return { background: colors.negativeSubtle, foreground: colors.negativeSubtleForeground };
122
- case 'primary_subtle':
123
- return { background: colors.primarySubtle, foreground: colors.primarySubtleForeground };
124
- case 'secondary':
125
- return { background: colors.contrast50, foreground: colors.text };
126
- case 'primary':
127
- default:
128
- return { background: colors.primary, foreground: '#FFFFFF' };
129
- }
130
- }
131
-
132
- export function Cancel({ cta }: { cta?: string }) {
133
- const { close } = Dialog.useDialogContext();
134
- const theme = useTheme();
135
- const { background } = getActionColors('secondary', theme.colors);
136
-
137
- return (
138
- <TouchableOpacity
139
- style={{
140
- borderRadius: 9999,
141
- alignItems: 'center',
142
- justifyContent: 'center',
143
- backgroundColor: background,
144
- paddingVertical: 12,
145
- paddingHorizontal: 24,
146
- }}
147
- onPress={() => close()}
148
- activeOpacity={0.7}
149
- >
150
- <Text style={{ fontSize: 16, fontWeight: '500', color: theme.colors.text }}>
151
- {cta ?? 'Cancel'}
152
- </Text>
153
- </TouchableOpacity>
154
- );
155
- }
156
-
157
- export function Action({
158
- onPress,
159
- color = 'primary',
160
- cta,
161
- disabled = false,
162
- shouldCloseOnPress = true,
163
- testID,
164
- }: {
165
- onPress: (e: GestureResponderEvent) => void;
166
- color?: ActionColor;
167
- cta?: string;
168
- disabled?: boolean;
169
- shouldCloseOnPress?: boolean;
170
- testID?: string;
171
- }) {
172
- const { close } = Dialog.useDialogContext();
173
- const theme = useTheme();
174
-
175
- const handleOnPress = useCallback(
176
- (e: GestureResponderEvent) => {
177
- if (shouldCloseOnPress) {
178
- close(() => onPress(e));
179
- } else {
180
- onPress(e);
181
- }
182
- },
183
- [close, onPress, shouldCloseOnPress],
184
- );
185
-
186
- const { background, foreground } = getActionColors(color, theme.colors);
187
-
188
- return (
189
- <TouchableOpacity
190
- style={{
191
- borderRadius: 9999,
192
- alignItems: 'center',
193
- justifyContent: 'center',
194
- backgroundColor: background,
195
- opacity: disabled ? 0.5 : 1,
196
- paddingVertical: 12,
197
- paddingHorizontal: 24,
198
- }}
199
- onPress={handleOnPress}
200
- disabled={disabled}
201
- activeOpacity={0.7}
202
- testID={testID}
203
- >
204
- <Text style={{ fontSize: 16, fontWeight: '500', color: foreground }}>
205
- {cta ?? 'Confirm'}
206
- </Text>
207
- </TouchableOpacity>
208
- );
209
- }
210
-
211
- export function Basic({
212
- control,
213
- title,
214
- description,
215
- cancelButtonCta,
216
- confirmButtonCta,
217
- onConfirm,
218
- confirmButtonColor,
219
- showCancel = true,
220
- }: {
221
- control: Dialog.DialogOuterProps['control'];
222
- title: string;
223
- description?: string;
224
- cancelButtonCta?: string;
225
- confirmButtonCta?: string;
226
- onConfirm: (e: GestureResponderEvent) => void;
227
- confirmButtonColor?: ActionColor;
228
- showCancel?: boolean;
229
- }) {
230
- return (
231
- <Outer control={control} testID="confirmModal">
232
- <Content>
233
- <TitleText>{title}</TitleText>
234
- {description && <DescriptionText>{description}</DescriptionText>}
235
- </Content>
236
- <Actions>
237
- <Action
238
- cta={confirmButtonCta}
239
- onPress={onConfirm}
240
- color={confirmButtonColor}
241
- testID="confirmBtn"
242
- />
243
- {showCancel && <Cancel cta={cancelButtonCta} />}
244
- </Actions>
245
- </Outer>
246
- );
247
- }
@@ -1,13 +0,0 @@
1
- export {
2
- Outer,
3
- TitleText,
4
- DescriptionText,
5
- Actions,
6
- Content,
7
- Cancel,
8
- Action,
9
- Basic,
10
- usePromptControl,
11
- } from './Prompt';
12
-
13
- export type { PromptControlProps, ActionColor } from './Prompt';