convex-feedback-ui 0.1.2 → 0.1.3

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 (166) hide show
  1. package/README.md +115 -18
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/native/expo/ExpoFeedbackBody.d.ts +4 -0
  4. package/dist/native/expo/ExpoFeedbackBody.d.ts.map +1 -0
  5. package/dist/native/expo/ExpoFeedbackBody.js +26 -0
  6. package/dist/native/expo/ExpoFeedbackBody.js.map +1 -0
  7. package/dist/native/expo/FeedbackScreen.d.ts +3 -0
  8. package/dist/native/expo/FeedbackScreen.d.ts.map +1 -0
  9. package/dist/native/expo/FeedbackScreen.js +9 -0
  10. package/dist/native/expo/FeedbackScreen.js.map +1 -0
  11. package/dist/native/expo/FeedbackStack.d.ts +3 -0
  12. package/dist/native/expo/FeedbackStack.d.ts.map +1 -0
  13. package/dist/native/expo/FeedbackStack.js +41 -0
  14. package/dist/native/expo/FeedbackStack.js.map +1 -0
  15. package/dist/native/expo/index.d.ts +9 -0
  16. package/dist/native/expo/index.d.ts.map +1 -0
  17. package/dist/native/expo/index.js +7 -0
  18. package/dist/native/expo/index.js.map +1 -0
  19. package/dist/native/expo/types.d.ts +20 -0
  20. package/dist/native/expo/types.d.ts.map +1 -0
  21. package/dist/native/expo/types.js +2 -0
  22. package/dist/native/expo/types.js.map +1 -0
  23. package/dist/native/native/FeedbackScreen.d.ts +3 -0
  24. package/dist/native/native/FeedbackScreen.d.ts.map +1 -0
  25. package/dist/native/native/FeedbackScreen.js +9 -0
  26. package/dist/native/native/FeedbackScreen.js.map +1 -0
  27. package/dist/native/native/index.d.ts +8 -0
  28. package/dist/native/native/index.d.ts.map +1 -0
  29. package/dist/native/native/index.js +7 -0
  30. package/dist/native/native/index.js.map +1 -0
  31. package/dist/native/shared/helpers.d.ts +3 -0
  32. package/dist/native/shared/helpers.d.ts.map +1 -0
  33. package/dist/native/shared/helpers.js +4 -0
  34. package/dist/native/shared/helpers.js.map +1 -0
  35. package/dist/native/shared/ui/BodyContent.d.ts +3 -0
  36. package/dist/native/shared/ui/BodyContent.d.ts.map +1 -0
  37. package/dist/native/shared/ui/BodyContent.js +18 -0
  38. package/dist/native/shared/ui/BodyContent.js.map +1 -0
  39. package/dist/native/shared/ui/Button.d.ts +5 -0
  40. package/dist/native/shared/ui/Button.d.ts.map +1 -0
  41. package/dist/native/shared/ui/Button.js +15 -0
  42. package/dist/native/shared/ui/Button.js.map +1 -0
  43. package/dist/native/shared/ui/CommentBranch.d.ts +3 -0
  44. package/dist/native/shared/ui/CommentBranch.d.ts.map +1 -0
  45. package/dist/native/shared/ui/CommentBranch.js +35 -0
  46. package/dist/native/shared/ui/CommentBranch.js.map +1 -0
  47. package/dist/native/shared/ui/EntryCard.d.ts +3 -0
  48. package/dist/native/shared/ui/EntryCard.d.ts.map +1 -0
  49. package/dist/native/shared/ui/EntryCard.js +13 -0
  50. package/dist/native/shared/ui/EntryCard.js.map +1 -0
  51. package/dist/native/shared/ui/EntryDetail.d.ts +3 -0
  52. package/dist/native/shared/ui/EntryDetail.d.ts.map +1 -0
  53. package/dist/native/shared/ui/EntryDetail.js +37 -0
  54. package/dist/native/shared/ui/EntryDetail.js.map +1 -0
  55. package/dist/native/shared/ui/FeedbackScreenHeader.d.ts +2 -0
  56. package/dist/native/shared/ui/FeedbackScreenHeader.d.ts.map +1 -0
  57. package/dist/native/shared/ui/FeedbackScreenHeader.js +20 -0
  58. package/dist/native/shared/ui/FeedbackScreenHeader.js.map +1 -0
  59. package/dist/native/shared/ui/FeedbackScreenList.d.ts +3 -0
  60. package/dist/native/shared/ui/FeedbackScreenList.d.ts.map +1 -0
  61. package/dist/native/shared/ui/FeedbackScreenList.js +19 -0
  62. package/dist/native/shared/ui/FeedbackScreenList.js.map +1 -0
  63. package/dist/native/shared/ui/NewEntry.d.ts +5 -0
  64. package/dist/native/shared/ui/NewEntry.d.ts.map +1 -0
  65. package/dist/native/shared/ui/NewEntry.js +158 -0
  66. package/dist/native/shared/ui/NewEntry.js.map +1 -0
  67. package/dist/native/shared/ui/ReplyList.d.ts +3 -0
  68. package/dist/native/shared/ui/ReplyList.d.ts.map +1 -0
  69. package/dist/native/shared/ui/ReplyList.js +19 -0
  70. package/dist/native/shared/ui/ReplyList.js.map +1 -0
  71. package/dist/native/{primitives.d.ts → shared/ui/primitives.d.ts} +10 -12
  72. package/dist/native/shared/ui/primitives.d.ts.map +1 -0
  73. package/dist/native/{primitives.js → shared/ui/primitives.js} +19 -25
  74. package/dist/native/shared/ui/primitives.js.map +1 -0
  75. package/dist/react/{context.d.ts → css.d.ts} +2 -4
  76. package/dist/react/css.d.ts.map +1 -0
  77. package/dist/react/css.js +18 -0
  78. package/dist/react/css.js.map +1 -0
  79. package/dist/react/index.d.ts +1 -1
  80. package/dist/react/index.d.ts.map +1 -1
  81. package/dist/react/index.js +1 -1
  82. package/dist/react/index.js.map +1 -1
  83. package/dist/react/primitives.d.ts.map +1 -1
  84. package/dist/react/primitives.js +2 -1
  85. package/dist/react/primitives.js.map +1 -1
  86. package/dist/react/screen.d.ts +3 -3
  87. package/dist/react/screen.d.ts.map +1 -1
  88. package/dist/react/screen.js +25 -22
  89. package/dist/react/screen.js.map +1 -1
  90. package/dist/shared/context/FeedbackBodyProvider.d.ts +5 -0
  91. package/dist/shared/context/FeedbackBodyProvider.d.ts.map +1 -0
  92. package/dist/shared/context/FeedbackBodyProvider.js +43 -0
  93. package/dist/shared/context/FeedbackBodyProvider.js.map +1 -0
  94. package/dist/{native/context.d.ts → shared/context/FeedbackProvider.d.ts} +2 -2
  95. package/dist/shared/context/FeedbackProvider.d.ts.map +1 -0
  96. package/dist/{native/context.js → shared/context/FeedbackProvider.js} +3 -3
  97. package/dist/shared/context/FeedbackProvider.js.map +1 -0
  98. package/dist/shared/helpers.d.ts +7 -0
  99. package/dist/shared/helpers.d.ts.map +1 -0
  100. package/dist/shared/helpers.js +24 -0
  101. package/dist/shared/helpers.js.map +1 -0
  102. package/dist/shared/messages.d.ts.map +1 -1
  103. package/dist/shared/messages.js +23 -14
  104. package/dist/shared/messages.js.map +1 -1
  105. package/dist/shared/theme.d.ts.map +1 -1
  106. package/dist/shared/theme.js +1 -0
  107. package/dist/shared/theme.js.map +1 -1
  108. package/dist/shared/types/context.d.ts +4 -0
  109. package/dist/shared/types/context.d.ts.map +1 -1
  110. package/dist/shared/types/messages.d.ts +12 -1
  111. package/dist/shared/types/messages.d.ts.map +1 -1
  112. package/dist/shared/types/screen.d.ts +55 -18
  113. package/dist/shared/types/screen.d.ts.map +1 -1
  114. package/dist/shared/types/theme.d.ts +4 -0
  115. package/dist/shared/types/theme.d.ts.map +1 -1
  116. package/package.json +27 -12
  117. package/src/native/expo/ExpoFeedbackBody.tsx +48 -0
  118. package/src/native/expo/FeedbackScreen.tsx +37 -0
  119. package/src/native/expo/FeedbackStack.tsx +99 -0
  120. package/src/native/expo/README.md +17 -0
  121. package/src/native/expo/index.ts +8 -0
  122. package/src/native/expo/types.ts +23 -0
  123. package/src/native/native/FeedbackScreen.tsx +37 -0
  124. package/src/native/native/index.ts +7 -0
  125. package/src/native/shared/helpers.ts +9 -0
  126. package/src/native/shared/ui/BodyContent.tsx +43 -0
  127. package/src/native/shared/ui/Button.tsx +29 -0
  128. package/src/native/shared/ui/CommentBranch.tsx +88 -0
  129. package/src/native/shared/ui/EntryCard.tsx +37 -0
  130. package/src/native/shared/ui/EntryDetail.tsx +103 -0
  131. package/src/native/shared/ui/FeedbackScreenHeader.tsx +40 -0
  132. package/src/native/shared/ui/FeedbackScreenList.tsx +61 -0
  133. package/src/native/shared/ui/NewEntry.tsx +375 -0
  134. package/src/native/shared/ui/ReplyList.tsx +41 -0
  135. package/src/native/{primitives.tsx → shared/ui/primitives.tsx} +84 -92
  136. package/src/react/{context.tsx → css.tsx} +2 -44
  137. package/src/react/index.ts +1 -1
  138. package/src/react/primitives.tsx +2 -1
  139. package/src/react/screen.tsx +67 -123
  140. package/src/shared/context/FeedbackBodyProvider.tsx +82 -0
  141. package/src/{native/context.tsx → shared/context/FeedbackProvider.tsx} +3 -3
  142. package/src/shared/helpers.ts +33 -0
  143. package/src/shared/messages.ts +23 -22
  144. package/src/shared/theme.ts +1 -0
  145. package/src/shared/types/context.ts +5 -0
  146. package/src/shared/types/messages.ts +16 -1
  147. package/src/shared/types/screen.ts +69 -23
  148. package/src/shared/types/theme.ts +5 -0
  149. package/dist/native/context.d.ts.map +0 -1
  150. package/dist/native/context.js.map +0 -1
  151. package/dist/native/index.d.ts +0 -7
  152. package/dist/native/index.d.ts.map +0 -1
  153. package/dist/native/index.js +0 -6
  154. package/dist/native/index.js.map +0 -1
  155. package/dist/native/primitives.d.ts.map +0 -1
  156. package/dist/native/primitives.js.map +0 -1
  157. package/dist/native/screen.d.ts +0 -3
  158. package/dist/native/screen.d.ts.map +0 -1
  159. package/dist/native/screen.js +0 -284
  160. package/dist/native/screen.js.map +0 -1
  161. package/dist/react/context.d.ts.map +0 -1
  162. package/dist/react/context.js +0 -41
  163. package/dist/react/context.js.map +0 -1
  164. package/src/native/index.ts +0 -6
  165. package/src/native/screen.tsx +0 -831
  166. /package/src/native/{README.md → native/README.md} +0 -0
@@ -0,0 +1,4 @@
1
+ import { type FeedbackScreenBodyProps } from "../../shared/types/index.js";
2
+ import type { FeedbackScreenStackProps } from "./types.js";
3
+ export declare function ExpoFeedbackBody({ useStack, StackOptions, ...props }: FeedbackScreenBodyProps & FeedbackScreenStackProps): import("react").JSX.Element;
4
+ //# sourceMappingURL=ExpoFeedbackBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpoFeedbackBody.d.ts","sourceRoot":"","sources":["../../../src/native/expo/ExpoFeedbackBody.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAI3E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAgB,gBAAgB,CAAC,EAC/B,QAAe,EACf,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,uBAAuB,GAAG,wBAAwB,+BAiCpD"}
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useRef } from "react";
3
+ import { useFeedbackBody } from "../../shared/context/FeedbackBodyProvider.js";
4
+ import {} from "../../shared/types/index.js";
5
+ import { FeedbackScreenContent } from "../shared/ui/BodyContent.js";
6
+ import { FeedbackStack } from "./FeedbackStack.js";
7
+ export function ExpoFeedbackBody({ useStack = true, StackOptions, ...props }) {
8
+ const { query, isSearching, setIsSearching, setSelectedEntryId } = useFeedbackBody();
9
+ const searchRef = useRef(null);
10
+ const onEntryOpen = (entryId) => {
11
+ setSelectedEntryId(entryId);
12
+ if ((query || isSearching) && searchRef.current) {
13
+ searchRef.current.blur();
14
+ }
15
+ };
16
+ useEffect(() => {
17
+ const searching = query.trim().length > 0;
18
+ if (searching !== isSearching) {
19
+ setIsSearching(searching);
20
+ }
21
+ }, [query, isSearching, setIsSearching]);
22
+ if (!useStack)
23
+ return _jsx(FeedbackScreenContent, { onEntryOpen: onEntryOpen, ...props });
24
+ return (_jsx(FeedbackStack, { stackOptions: StackOptions, searchRef: searchRef, children: _jsx(FeedbackScreenContent, { hideBackButton: true, showHeader: false, onEntryOpen: onEntryOpen, ...props }) }));
25
+ }
26
+ //# sourceMappingURL=ExpoFeedbackBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpoFeedbackBody.js","sourceRoot":"","sources":["../../../src/native/expo/ExpoFeedbackBody.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAgC,MAAM,6BAA6B,CAAC;AAE3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,GAAG,IAAI,EACf,YAAY,EACZ,GAAG,KAAK,EAC2C;IACnD,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAC9D,eAAe,EAAE,CAAC;IACpB,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAElD,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE;QACtC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YAChD,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAE1C,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC9B,cAAc,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IAEzC,IAAI,CAAC,QAAQ;QACX,OAAO,KAAC,qBAAqB,IAAC,WAAW,EAAE,WAAW,KAAM,KAAK,GAAI,CAAC;IAExE,OAAO,CACL,KAAC,aAAa,IAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,YAC7D,KAAC,qBAAqB,IACpB,cAAc,QACd,UAAU,EAAE,KAAK,EACjB,WAAW,EAAE,WAAW,KACpB,KAAK,GACT,GACY,CACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ExpoFeedbackScreenProps } from "./types";
2
+ export declare function FeedbackScreen({ hooks, messages, theme, unstyled, entrySort, commentSort, enabledKinds, maxCommentDepth, debounceDuration, transformComments, renderActor, ...props }: ExpoFeedbackScreenProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=FeedbackScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackScreen.d.ts","sourceRoot":"","sources":["../../../src/native/expo/FeedbackScreen.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAEvD,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,SAAiB,EACjB,WAAmB,EACnB,YAAoB,EACpB,eAAmB,EACnB,gBAAsB,EACtB,iBAAiB,EACjB,WAAW,EACX,GAAG,KAAK,EACT,EAAE,uBAAuB,+BAiBzB"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { FeedbackBodyProvider } from "../../shared/context/FeedbackBodyProvider";
3
+ import { FeedbackProvider } from "../../shared/context/FeedbackProvider";
4
+ import { kinds } from "../../shared/helpers";
5
+ import { ExpoFeedbackBody } from "./ExpoFeedbackBody";
6
+ export function FeedbackScreen({ hooks, messages, theme, unstyled, entrySort = "top", commentSort = "top", enabledKinds = kinds, maxCommentDepth = 5, debounceDuration = 300, transformComments, renderActor, ...props }) {
7
+ return (_jsx(FeedbackProvider, { messages: messages, theme: theme, unstyled: unstyled, children: _jsx(FeedbackBodyProvider, { hooks: hooks, entrySort: entrySort, commentSort: commentSort, enabledKinds: enabledKinds, maxCommentDepth: maxCommentDepth, debounceDuration: debounceDuration, transformComments: transformComments, renderActor: renderActor, children: _jsx(ExpoFeedbackBody, { ...props }) }) }));
8
+ }
9
+ //# sourceMappingURL=FeedbackScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackScreen.js","sourceRoot":"","sources":["../../../src/native/expo/FeedbackScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,SAAS,GAAG,KAAK,EACjB,WAAW,GAAG,KAAK,EACnB,YAAY,GAAG,KAAK,EACpB,eAAe,GAAG,CAAC,EACnB,gBAAgB,GAAG,GAAG,EACtB,iBAAiB,EACjB,WAAW,EACX,GAAG,KAAK,EACgB;IACxB,OAAO,CACL,KAAC,gBAAgB,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,YACpE,KAAC,oBAAoB,IACnB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,EAAE,WAAW,YAExB,KAAC,gBAAgB,OAAK,KAAK,GAAI,GACV,GACN,CACpB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FeedbackStackProps } from "./types";
2
+ export declare function FeedbackStack({ searchRef, stackOptions, children, }: FeedbackStackProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=FeedbackStack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackStack.d.ts","sourceRoot":"","sources":["../../../src/native/expo/FeedbackStack.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,YAAY,EACZ,QAAQ,GACT,EAAE,kBAAkB,+BAyFpB"}
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Stack, useRouter } from "expo-router";
3
+ import { useFeedbackBody } from "../../shared/context/FeedbackBodyProvider";
4
+ import { useFeedbackUi } from "../../shared/context/FeedbackProvider";
5
+ export function FeedbackStack({ searchRef, stackOptions, children, }) {
6
+ const { query, enabledKinds, selectedEntryId, setQuery, setShowForm, setIsSearching, setSelectedEntryId, } = useFeedbackBody();
7
+ const { messages, theme } = useFeedbackUi();
8
+ const router = useRouter();
9
+ const canGoBack = !!selectedEntryId || router.canGoBack();
10
+ const handleBackPress = () => {
11
+ if (selectedEntryId === null) {
12
+ router.back();
13
+ return;
14
+ }
15
+ if (searchRef.current && query)
16
+ searchRef.current.focus();
17
+ setSelectedEntryId(null);
18
+ return true;
19
+ };
20
+ const pageTitle = enabledKinds.length === 1
21
+ ? messages.kindsPlural[enabledKinds.at(0)]
22
+ : messages.board.title;
23
+ return (_jsxs(_Fragment, { children: [_jsx(Stack.Screen, { options: {
24
+ headerTitle: pageTitle,
25
+ headerShown: true,
26
+ headerTransparent: true,
27
+ headerShadowVisible: true,
28
+ headerBackVisible: false,
29
+ contentStyle: { backgroundColor: theme.colors.background },
30
+ ...stackOptions,
31
+ } }), _jsx(Stack.Toolbar, { placement: "right", children: _jsx(Stack.Toolbar.Button, { icon: "plus", variant: "prominent", accessibilityLabel: messages.board.createEntry, onPress: () => setShowForm(true), tintColor: theme.colors.primary }) }), _jsx(Stack.Toolbar, { placement: "left", children: _jsx(Stack.Toolbar.Button, { hidden: !canGoBack, icon: "chevron.backward", onPress: handleBackPress }) }), children, _jsx(Stack.SearchBar, { onChangeText: (q) => {
32
+ if (selectedEntryId)
33
+ setSelectedEntryId(null);
34
+ setQuery(q.nativeEvent.text);
35
+ }, onOpen: () => console.log("opened"), onClose: () => console.log("closed"), onSearchButtonPress: () => console.log("search button pressed"), onCancelButtonPress: () => console.log("cancel button pressed"), onFocus: () => {
36
+ if (selectedEntryId)
37
+ setSelectedEntryId(null);
38
+ setIsSearching(true);
39
+ }, onBlur: () => setIsSearching(false), obscureBackground: false, allowToolbarIntegration: true, hideNavigationBar: false, ref: searchRef, textColor: theme.colors.text }), _jsx(Stack.Toolbar, { placement: "bottom", children: _jsx(Stack.Toolbar.SearchBarSlot, {}) })] }));
40
+ }
41
+ //# sourceMappingURL=FeedbackStack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackStack.js","sourceRoot":"","sources":["../../../src/native/expo/FeedbackStack.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAGtE,MAAM,UAAU,aAAa,CAAC,EAC5B,SAAS,EACT,YAAY,EACZ,QAAQ,GACW;IACnB,MAAM,EACJ,KAAK,EACL,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,WAAW,EACX,cAAc,EACd,kBAAkB,GACnB,GAAG,eAAe,EAAE,CAAC;IACtB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,SAAS,GAAG,CAAC,CAAC,eAAe,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;IAE1D,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,IAAI,SAAS,CAAC,OAAO,IAAI,KAAK;YAAE,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAE1D,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,SAAS,GACb,YAAY,CAAC,MAAM,KAAK,CAAC;QACvB,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC;QAC3C,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;IAE3B,OAAO,CACL,8BACE,KAAC,KAAK,CAAC,MAAM,IACX,OAAO,EAAE;oBACP,WAAW,EAAE,SAAS;oBACtB,WAAW,EAAE,IAAI;oBACjB,iBAAiB,EAAE,IAAI;oBACvB,mBAAmB,EAAE,IAAI;oBACzB,iBAAiB,EAAE,KAAK;oBACxB,YAAY,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE;oBAC1D,GAAG,YAAY;iBAChB,GACD,EACF,KAAC,KAAK,CAAC,OAAO,IAAC,SAAS,EAAC,OAAO,YAC9B,KAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IACnB,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,kBAAkB,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAChC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,GAC/B,GACY,EAChB,KAAC,KAAK,CAAC,OAAO,IAAC,SAAS,EAAC,MAAM,YAC7B,KAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IACnB,MAAM,EAAE,CAAC,SAAS,EAClB,IAAI,EAAC,kBAAkB,EACvB,OAAO,EAAE,eAAe,GACxB,GACY,EAEf,QAAQ,EAET,KAAC,KAAK,CAAC,SAAS,IACd,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;oBAClB,IAAI,eAAe;wBAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBAC9C,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC,EACD,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EACpC,mBAAmB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAC/D,mBAAmB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAC/D,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,eAAe;wBAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBAC9C,cAAc,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC,EACD,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EACnC,iBAAiB,EAAE,KAAK,EACxB,uBAAuB,QACvB,iBAAiB,EAAE,KAAK,EACxB,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,GAC5B,EACF,KAAC,KAAK,CAAC,OAAO,IAAC,SAAS,EAAC,QAAQ,YAC/B,KAAC,KAAK,CAAC,OAAO,CAAC,aAAa,KAAG,GACjB,IACf,CACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ export * from "../../shared/context/FeedbackBodyProvider.js";
2
+ export * from "../../shared/context/FeedbackProvider.js";
3
+ export * from "../../shared/messages.js";
4
+ export * from "../../shared/theme.js";
5
+ export type * from "../../shared/types/index.js";
6
+ export * from "../shared/ui/primitives.js";
7
+ export * from "./FeedbackScreen.js";
8
+ export type * from "./types.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/native/expo/index.ts"],"names":[],"mappings":"AAAA,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0CAA0C,CAAC;AACzD,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,mBAAmB,6BAA6B,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,mBAAmB,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "../../shared/context/FeedbackBodyProvider.js";
2
+ export * from "../../shared/context/FeedbackProvider.js";
3
+ export * from "../../shared/messages.js";
4
+ export * from "../../shared/theme.js";
5
+ export * from "../shared/ui/primitives.js";
6
+ export * from "./FeedbackScreen.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/native/expo/index.ts"],"names":[],"mappings":"AAAA,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0CAA0C,CAAC;AACzD,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { StackScreenProps } from "expo-router";
2
+ import type { SearchBarCommands } from "react-native-screens";
3
+ import type { FeedbackScreenRootProps } from "../../shared/types";
4
+ interface FeedbackScreenWithStack {
5
+ useStack?: true;
6
+ StackOptions?: StackScreenProps["options"];
7
+ }
8
+ interface FeedbackScreenWithoutStack {
9
+ useStack?: false;
10
+ StackOptions?: never;
11
+ }
12
+ export type FeedbackScreenStackProps = FeedbackScreenWithStack | FeedbackScreenWithoutStack;
13
+ export type ExpoFeedbackScreenProps = FeedbackScreenStackProps & FeedbackScreenRootProps;
14
+ export interface FeedbackStackProps {
15
+ searchRef: React.RefObject<SearchBarCommands | null>;
16
+ stackOptions?: StackScreenProps["options"];
17
+ children: React.ReactNode;
18
+ }
19
+ export {};
20
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/native/expo/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,UAAU,uBAAuB;IAC/B,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,YAAY,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;CAC5C;AACD,UAAU,0BAA0B;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,YAAY,CAAC,EAAE,KAAK,CAAC;CACtB;AACD,MAAM,MAAM,wBAAwB,GAClC,uBAAuB,GAAG,0BAA0B,CAAC;AAEvD,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,GAC5D,uBAAuB,CAAC;AAE1B,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACrD,YAAY,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/native/expo/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { FeedbackScreenRootProps } from "../../shared/types";
2
+ export declare function FeedbackScreen({ hooks, messages, theme, unstyled, entrySort, commentSort, enabledKinds, maxCommentDepth, debounceDuration, transformComments, renderActor, ...props }: FeedbackScreenRootProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=FeedbackScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackScreen.d.ts","sourceRoot":"","sources":["../../../src/native/native/FeedbackScreen.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAGlE,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,SAAiB,EACjB,WAAmB,EACnB,YAAoB,EACpB,eAAmB,EACnB,gBAAsB,EACtB,iBAAiB,EACjB,WAAW,EACX,GAAG,KAAK,EACT,EAAE,uBAAuB,+BAiBzB"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { FeedbackBodyProvider } from "../../shared/context/FeedbackBodyProvider";
3
+ import { FeedbackProvider } from "../../shared/context/FeedbackProvider";
4
+ import { kinds } from "../../shared/helpers";
5
+ import { FeedbackScreenContent } from "../shared/ui/BodyContent";
6
+ export function FeedbackScreen({ hooks, messages, theme, unstyled, entrySort = "top", commentSort = "top", enabledKinds = kinds, maxCommentDepth = 5, debounceDuration = 300, transformComments, renderActor, ...props }) {
7
+ return (_jsx(FeedbackProvider, { messages: messages, theme: theme, unstyled: unstyled, children: _jsx(FeedbackBodyProvider, { hooks: hooks, entrySort: entrySort, commentSort: commentSort, enabledKinds: enabledKinds, maxCommentDepth: maxCommentDepth, debounceDuration: debounceDuration, transformComments: transformComments, renderActor: renderActor, children: _jsx(FeedbackScreenContent, { ...props }) }) }));
8
+ }
9
+ //# sourceMappingURL=FeedbackScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackScreen.js","sourceRoot":"","sources":["../../../src/native/native/FeedbackScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,SAAS,GAAG,KAAK,EACjB,WAAW,GAAG,KAAK,EACnB,YAAY,GAAG,KAAK,EACpB,eAAe,GAAG,CAAC,EACnB,gBAAgB,GAAG,GAAG,EACtB,iBAAiB,EACjB,WAAW,EACX,GAAG,KAAK,EACgB;IACxB,OAAO,CACL,KAAC,gBAAgB,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,YACpE,KAAC,oBAAoB,IACnB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,EAAE,WAAW,YAExB,KAAC,qBAAqB,OAAK,KAAK,GAAI,GACf,GACN,CACpB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ export * from "../../shared/context/FeedbackBodyProvider.js";
2
+ export * from "../../shared/context/FeedbackProvider.js";
3
+ export * from "../../shared/messages.js";
4
+ export * from "../../shared/theme.js";
5
+ export type * from "../../shared/types/index.js";
6
+ export * from "../shared/ui/primitives.js";
7
+ export * from "./FeedbackScreen.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/native/native/index.ts"],"names":[],"mappings":"AAAA,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0CAA0C,CAAC;AACzD,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,mBAAmB,6BAA6B,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "../../shared/context/FeedbackBodyProvider.js";
2
+ export * from "../../shared/context/FeedbackProvider.js";
3
+ export * from "../../shared/messages.js";
4
+ export * from "../../shared/theme.js";
5
+ export * from "../shared/ui/primitives.js";
6
+ export * from "./FeedbackScreen.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/native/native/index.ts"],"names":[],"mappings":"AAAA,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0CAA0C,CAAC;AACzD,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { StyleProp } from "react-native";
2
+ export declare function combineStyle<T>(enabled: boolean, fallback: StyleProp<T>, style: StyleProp<T>): StyleProp<T>;
3
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/native/shared/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,wBAAgB,YAAY,CAAC,CAAC,EAC5B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,EACtB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAClB,SAAS,CAAC,CAAC,CAAC,CAEd"}
@@ -0,0 +1,4 @@
1
+ export function combineStyle(enabled, fallback, style) {
2
+ return enabled ? [fallback, style] : style;
3
+ }
4
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/native/shared/helpers.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAC1B,OAAgB,EAChB,QAAsB,EACtB,KAAmB;IAEnB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FeedbackScreenContentProps } from "../../../shared/types";
2
+ export declare function FeedbackScreenContent({ showHeader, hideBackButton, onEntryOpen, ...colors }: FeedbackScreenContentProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=BodyContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BodyContent.d.ts","sourceRoot":"","sources":["../../../../src/native/shared/ui/BodyContent.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAMxE,wBAAgB,qBAAqB,CAAC,EACpC,UAAiB,EACjB,cAAsB,EACtB,WAAW,EACX,GAAG,MAAM,EACV,EAAE,0BAA0B,+BA8B5B"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useFeedbackBody } from "../../../shared/context/FeedbackBodyProvider.js";
3
+ import { FeedbackScreenHeader } from "./FeedbackScreenHeader";
4
+ import { FeedbackScreenList } from "./FeedbackScreenList";
5
+ import { CreateEntryModal } from "./NewEntry";
6
+ import { FeedbackBoard } from "./primitives.js";
7
+ export function FeedbackScreenContent({ showHeader = true, hideBackButton = false, onEntryOpen, ...colors }) {
8
+ const { showForm, setShowForm, setSelectedEntryId } = useFeedbackBody();
9
+ const handleEntryOpen = (entryId) => {
10
+ setSelectedEntryId(entryId);
11
+ onEntryOpen?.(entryId);
12
+ };
13
+ return (_jsxs(_Fragment, { children: [_jsxs(FeedbackBoard.Root, { ...colors, children: [showHeader && _jsx(FeedbackScreenHeader, {}), _jsx(FeedbackScreenList, { hideBackButton: hideBackButton, onEntryOpen: handleEntryOpen })] }), showForm && (_jsx(CreateEntryModal, { onRequestClose: () => setShowForm(false), onCreated: (id) => {
14
+ setShowForm(false);
15
+ setSelectedEntryId(id);
16
+ } }))] }));
17
+ }
18
+ //# sourceMappingURL=BodyContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BodyContent.js","sourceRoot":"","sources":["../../../../src/native/shared/ui/BodyContent.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,UAAU,qBAAqB,CAAC,EACpC,UAAU,GAAG,IAAI,EACjB,cAAc,GAAG,KAAK,EACtB,WAAW,EACX,GAAG,MAAM,EACkB;IAC3B,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,GAAG,eAAe,EAAE,CAAC;IAExE,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,EAAE;QAC1C,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5B,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO,CACL,8BACE,MAAC,aAAa,CAAC,IAAI,OAAK,MAAM,aAC3B,UAAU,IAAI,KAAC,oBAAoB,KAAG,EAEvC,KAAC,kBAAkB,IACjB,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,eAAe,GAC5B,IACiB,EAEpB,QAAQ,IAAI,CACX,KAAC,gBAAgB,IACf,cAAc,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EACxC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE;oBAChB,WAAW,CAAC,KAAK,CAAC,CAAC;oBACnB,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBACzB,CAAC,GACD,CACH,IACA,CACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function Button({ label, onPress, }: {
2
+ label: string;
3
+ onPress: () => void;
4
+ }): import("react").JSX.Element;
5
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../../src/native/shared/ui/Button.tsx"],"names":[],"mappings":"AAGA,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,OAAO,GACR,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,+BAmBA"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Pressable, Text } from "react-native";
3
+ import { useFeedbackUi } from "../../../shared/context/FeedbackProvider.js";
4
+ export function Button({ label, onPress, }) {
5
+ const { theme } = useFeedbackUi();
6
+ return (_jsx(Pressable, { onPress: onPress, style: {
7
+ alignSelf: "flex-start",
8
+ paddingVertical: 8,
9
+ paddingHorizontal: 11,
10
+ borderRadius: 8,
11
+ borderWidth: 1,
12
+ borderColor: theme.colors.border,
13
+ }, children: _jsx(Text, { style: { color: theme.colors.text, fontWeight: "600" }, children: label }) }));
14
+ }
15
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../../src/native/shared/ui/Button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAE5E,MAAM,UAAU,MAAM,CAAC,EACrB,KAAK,EACL,OAAO,GAIR;IACC,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,CAAC;IAClC,OAAO,CACL,KAAC,SAAS,IACR,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE;YACL,SAAS,EAAE,YAAY;YACvB,eAAe,EAAE,CAAC;YAClB,iBAAiB,EAAE,EAAE;YACrB,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;SACjC,YAED,KAAC,IAAI,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YACzD,KAAK,GACD,GACG,CACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FeedbackScreenCommentBranchProps } from "../../../shared/types";
2
+ export declare function CommentBranch({ comment, entryId, }: FeedbackScreenCommentBranchProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=CommentBranch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentBranch.d.ts","sourceRoot":"","sources":["../../../../src/native/shared/ui/CommentBranch.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AAK9E,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,OAAO,GACR,EAAE,gCAAgC,+BA0ElC"}
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { Text, View } from "react-native";
4
+ import { useFeedbackBody } from "../../../shared/context/FeedbackBodyProvider.js";
5
+ import { useFeedbackUi } from "../../../shared/context/FeedbackProvider.js";
6
+ import { Button } from "./Button";
7
+ import { ReplyList } from "./ReplyList";
8
+ import { Comment, FeedbackForm } from "./primitives.js";
9
+ export function CommentBranch({ comment, entryId, }) {
10
+ const { hooks, maxCommentDepth, renderActor } = useFeedbackBody();
11
+ const { messages, theme } = useFeedbackUi();
12
+ const [expanded, setExpanded] = useState(false);
13
+ const [replying, setReplying] = useState(false);
14
+ const [replyBody, setReplyBody] = useState("");
15
+ const setLike = hooks.useSetCommentLike();
16
+ const createComment = hooks.useCreateComment();
17
+ return (_jsxs(Comment.Root, { comment: comment, children: [renderActor === undefined ? null : (_jsx(View, { children: renderActor(comment.actorId) })), _jsx(Comment.Body, {}), _jsxs(View, { style: {
18
+ flexDirection: "row",
19
+ flexWrap: "wrap",
20
+ alignItems: "center",
21
+ gap: 4,
22
+ }, children: [_jsx(Comment.Like, { onToggle: (active) => void setLike({ commentId: comment.id, desiredState: active }) }), comment.body !== null && comment.depth < maxCommentDepth ? (_jsx(Comment.Reply, { onActivate: () => setReplying((value) => !value) })) : null, _jsx(Comment.RepliesButton, { expanded: expanded, onExpandedChange: setExpanded })] }), replying ? (_jsxs(FeedbackForm.Root, { children: [_jsx(FeedbackForm.Textarea, { value: replyBody, onChangeText: setReplyBody, placeholder: messages.comments.placeholder }), _jsx(FeedbackForm.Submit, { onPress: async () => {
23
+ if (replyBody.trim().length === 0)
24
+ return;
25
+ await createComment({
26
+ entryId,
27
+ parentCommentId: comment.id,
28
+ body: replyBody,
29
+ });
30
+ setReplyBody("");
31
+ setReplying(false);
32
+ setExpanded(true);
33
+ }, children: messages.comments.reply }), _jsx(Button, { label: messages.comments.cancelReply, onPress: () => setReplying(false) })] })) : null, expanded ? (_jsx(ReplyList, { entryId: entryId, parentCommentId: comment.id })) : null, comment.deletedAt !== undefined ? (_jsx(Text, { style: { color: theme.colors.mutedText, fontSize: 11 }, children: messages.comments.deleted })) : null] }));
34
+ }
35
+ //# sourceMappingURL=CommentBranch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentBranch.js","sourceRoot":"","sources":["../../../../src/native/shared/ui/CommentBranch.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { FeedbackScreenEntryCardProps } from "../../../shared/types";
2
+ export declare function EntryCard({ entry, hooks, onOpen, }: FeedbackScreenEntryCardProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=EntryCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryCard.d.ts","sourceRoot":"","sources":["../../../../src/native/shared/ui/EntryCard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAG1E,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,MAAM,GACP,EAAE,4BAA4B,+BA2B9B"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Pressable, View } from "react-native";
3
+ import { FeedbackEntry } from "./primitives";
4
+ export function EntryCard({ entry, hooks, onOpen, }) {
5
+ const setUpvote = hooks.useSetEntryUpvote();
6
+ return (_jsxs(FeedbackEntry.Root, { entry: entry, children: [_jsx(FeedbackEntry.Upvote, { onToggle: (active) => void setUpvote({ entryId: entry.id, desiredState: active }) }), _jsxs(Pressable, { onPress: onOpen, style: { flex: 1, gap: 4 }, children: [_jsxs(View, { style: {
7
+ flexDirection: "row",
8
+ alignItems: "center",
9
+ justifyContent: "space-between",
10
+ gap: 8,
11
+ }, children: [_jsx(FeedbackEntry.Kind, {}), _jsx(FeedbackEntry.Status, {})] }), _jsx(FeedbackEntry.Title, {}), _jsx(FeedbackEntry.Body, { numberOfLines: 3 }), _jsx(FeedbackEntry.CommentCount, {})] })] }));
12
+ }
13
+ //# sourceMappingURL=EntryCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryCard.js","sourceRoot":"","sources":["../../../../src/native/shared/ui/EntryCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,MAAM,GACuB;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC5C,OAAO,CACL,MAAC,aAAa,CAAC,IAAI,IAAC,KAAK,EAAE,KAAK,aAC9B,KAAC,aAAa,CAAC,MAAM,IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CACnB,KAAK,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,GAE7D,EACF,MAAC,SAAS,IAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,aACpD,MAAC,IAAI,IACH,KAAK,EAAE;4BACL,aAAa,EAAE,KAAK;4BACpB,UAAU,EAAE,QAAQ;4BACpB,cAAc,EAAE,eAAe;4BAC/B,GAAG,EAAE,CAAC;yBACP,aAED,KAAC,aAAa,CAAC,IAAI,KAAG,EACtB,KAAC,aAAa,CAAC,MAAM,KAAG,IACnB,EACP,KAAC,aAAa,CAAC,KAAK,KAAG,EACvB,KAAC,aAAa,CAAC,IAAI,IAAC,aAAa,EAAE,CAAC,GAAI,EACxC,KAAC,aAAa,CAAC,YAAY,KAAG,IACpB,IACO,CACtB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FeedbackScreenEntryDetailProps } from "../../../shared/types";
2
+ export declare function EntryDetail({ entryId, onBack, hideBackButton, }: FeedbackScreenEntryDetailProps): import("react").JSX.Element | undefined;
3
+ //# sourceMappingURL=EntryDetail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryDetail.d.ts","sourceRoot":"","sources":["../../../../src/native/shared/ui/EntryDetail.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AAK5E,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,MAAM,EACN,cAAc,GACf,EAAE,8BAA8B,2CAwFhC"}
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo, useState } from "react";
3
+ import { ActivityIndicator, Text, View } from "react-native";
4
+ import { useFeedbackBody } from "../../../shared/context/FeedbackBodyProvider";
5
+ import { useFeedbackUi } from "../../../shared/context/FeedbackProvider";
6
+ import { Button } from "./Button";
7
+ import { CommentBranch } from "./CommentBranch";
8
+ import { FeedbackEntry, FeedbackForm } from "./primitives";
9
+ export function EntryDetail({ entryId, onBack, hideBackButton, }) {
10
+ const { hooks, commentSort, transformComments } = useFeedbackBody();
11
+ const { messages, theme } = useFeedbackUi();
12
+ const entry = hooks.useEntry(entryId);
13
+ const comments = hooks.useComments({ entryId, sort: commentSort });
14
+ const setUpvote = hooks.useSetEntryUpvote();
15
+ const createComment = hooks.useCreateComment();
16
+ const [body, setBody] = useState("");
17
+ const visible = useMemo(() => transformComments?.(comments.results) ?? comments.results, [comments.results, transformComments]);
18
+ if (entry === undefined)
19
+ return (_jsxs(View, { style: {
20
+ flex: 1,
21
+ gap: 8,
22
+ alignItems: "center",
23
+ justifyContent: "center",
24
+ }, children: [_jsx(ActivityIndicator, { size: "large" }), _jsx(Text, { style: { color: theme.colors.mutedText }, children: messages.board.loading })] }));
25
+ if (entry === null) {
26
+ if (hideBackButton)
27
+ return;
28
+ return _jsx(Button, { label: messages.entry.back, onPress: onBack });
29
+ }
30
+ return (_jsxs(View, { style: { gap: 12 }, children: [!hideBackButton && (_jsx(Button, { label: messages.entry.back, onPress: onBack })), _jsxs(FeedbackEntry.Root, { entry: entry, children: [_jsx(FeedbackEntry.Upvote, { onToggle: (active) => void setUpvote({ entryId, desiredState: active }) }), _jsxs(FeedbackEntry.Content, { style: { gap: 5 }, children: [_jsx(FeedbackEntry.Status, {}), _jsx(FeedbackEntry.Title, {}), _jsx(FeedbackEntry.Body, {}), _jsx(FeedbackEntry.CommentCount, {})] })] }), _jsx(Text, { style: { color: theme.colors.text, fontSize: 18, fontWeight: "700" }, children: messages.comments.title }), _jsxs(FeedbackForm.Root, { children: [_jsx(FeedbackForm.Textarea, { value: body, onChangeText: setBody, placeholder: messages.comments.placeholder }), _jsx(FeedbackForm.Submit, { onPress: async () => {
31
+ if (body.trim().length === 0)
32
+ return;
33
+ await createComment({ entryId, body });
34
+ setBody("");
35
+ }, children: messages.comments.submit })] }), _jsx(View, { style: { gap: 8 }, children: visible.map((comment) => (_jsx(CommentBranch, { comment: comment, entryId: entryId }, comment.id))) }), comments.status === "CanLoadMore" && (_jsx(Button, { label: messages.comments.loadMore, onPress: () => comments.loadMore(hooks.pageSizes.comments) }))] }));
36
+ }
37
+ //# sourceMappingURL=EntryDetail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryDetail.js","sourceRoot":"","sources":["../../../../src/native/shared/ui/EntryDetail.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function FeedbackScreenHeader(): import("react").JSX.Element;
2
+ //# sourceMappingURL=FeedbackScreenHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackScreenHeader.d.ts","sourceRoot":"","sources":["../../../../src/native/shared/ui/FeedbackScreenHeader.tsx"],"names":[],"mappings":"AAKA,wBAAgB,oBAAoB,gCAkCnC"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Pressable, Text } from "react-native";
3
+ import { useFeedbackBody } from "../../../shared/context/FeedbackBodyProvider";
4
+ import { useFeedbackUi } from "../../../shared/context/FeedbackProvider";
5
+ import { FeedbackBoard } from "./primitives";
6
+ export function FeedbackScreenHeader() {
7
+ const { query, setShowForm, setQuery, enabledKinds } = useFeedbackBody();
8
+ const { messages, theme } = useFeedbackUi();
9
+ const pageTitle = enabledKinds.length === 1
10
+ ? messages.kindsPlural[enabledKinds.at(0)]
11
+ : messages.board.title;
12
+ return (_jsxs(_Fragment, { children: [_jsxs(FeedbackBoard.Header, { children: [_jsx(FeedbackBoard.Title, { children: pageTitle }), _jsx(Text, { style: { color: theme.colors.mutedText }, children: messages.board.subtitle }), _jsx(Pressable, { onPress: () => setShowForm(true), style: {
13
+ alignSelf: "flex-start",
14
+ paddingVertical: 9,
15
+ paddingHorizontal: 12,
16
+ borderRadius: 9,
17
+ backgroundColor: theme.colors.primary,
18
+ }, children: _jsx(Text, { style: { color: theme.colors.text, fontWeight: "700" }, children: messages.board.createEntry }) })] }), _jsx(FeedbackBoard.Search, { value: query, onValueChange: (q) => setQuery(q) })] }));
19
+ }
20
+ //# sourceMappingURL=FeedbackScreenHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackScreenHeader.js","sourceRoot":"","sources":["../../../../src/native/shared/ui/FeedbackScreenHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,UAAU,oBAAoB;IAClC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,CAAC;IACzE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,CAAC;IAE5C,MAAM,SAAS,GACb,YAAY,CAAC,MAAM,KAAK,CAAC;QACvB,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC;QAC3C,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;IAE3B,OAAO,CACL,8BACE,MAAC,aAAa,CAAC,MAAM,eACnB,KAAC,aAAa,CAAC,KAAK,cAAE,SAAS,GAAuB,EACtD,KAAC,IAAI,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,YAC3C,QAAQ,CAAC,KAAK,CAAC,QAAQ,GACnB,EACP,KAAC,SAAS,IACR,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAChC,KAAK,EAAE;4BACL,SAAS,EAAE,YAAY;4BACvB,eAAe,EAAE,CAAC;4BAClB,iBAAiB,EAAE,EAAE;4BACrB,YAAY,EAAE,CAAC;4BACf,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;yBACtC,YAED,KAAC,IAAI,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YACzD,QAAQ,CAAC,KAAK,CAAC,WAAW,GACtB,GACG,IACS,EACvB,KAAC,aAAa,CAAC,MAAM,IAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAI,IACxE,CACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FeedbackScreenListProps } from "../../../shared/types/index.js";
2
+ export declare function FeedbackScreenList({ hideBackButton, onEntryOpen, }: FeedbackScreenListProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=FeedbackScreenList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackScreenList.d.ts","sourceRoot":"","sources":["../../../../src/native/shared/ui/FeedbackScreenList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAM9E,wBAAgB,kBAAkB,CAAC,EACjC,cAAsB,EACtB,WAAW,GACZ,EAAE,uBAAuB,+BAiDzB"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useFeedbackBody } from "../../../shared/context/FeedbackBodyProvider.js";
3
+ import { useFeedbackUi } from "../../../shared/context/FeedbackProvider.js";
4
+ import { Button } from "./Button.js";
5
+ import { EntryCard } from "./EntryCard.js";
6
+ import { EntryDetail } from "./EntryDetail.js";
7
+ import { FeedbackBoard } from "./primitives.js";
8
+ export function FeedbackScreenList({ hideBackButton = false, onEntryOpen, }) {
9
+ const { hooks, entrySort, isSearching, enabledKinds, selectedEntryId, debouncedQuery, setSelectedEntryId, } = useFeedbackBody();
10
+ const { messages, theme } = useFeedbackUi();
11
+ const list = hooks.useEntries({ sort: entrySort, kinds: enabledKinds });
12
+ const search = hooks.useSearchEntries({
13
+ searchQuery: debouncedQuery,
14
+ kinds: enabledKinds,
15
+ });
16
+ const entries = isSearching ? search : list.results;
17
+ return (_jsxs(_Fragment, { children: [_jsx(FeedbackBoard.List, { style: { paddingHorizontal: theme.spacing }, children: selectedEntryId ? (_jsx(EntryDetail, { entryId: selectedEntryId, hideBackButton: hideBackButton, onBack: () => setSelectedEntryId(null) })) : ((entries ?? []).map((entry) => (_jsx(EntryCard, { entry: entry, hooks: hooks, onOpen: () => onEntryOpen(entry.id) }, entry.id)))) }), !isSearching && list.status === "CanLoadMore" && (_jsx(Button, { label: messages.board.loadMore, onPress: () => list.loadMore(hooks.pageSizes.entries) }))] }));
18
+ }
19
+ //# sourceMappingURL=FeedbackScreenList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackScreenList.js","sourceRoot":"","sources":["../../../../src/native/shared/ui/FeedbackScreenList.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAE5E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,UAAU,kBAAkB,CAAC,EACjC,cAAc,GAAG,KAAK,EACtB,WAAW,GACa;IACxB,MAAM,EACJ,KAAK,EACL,SAAS,EACT,WAAW,EACX,YAAY,EACZ,eAAe,EACf,cAAc,EACd,kBAAkB,GACnB,GAAG,eAAe,EAAE,CAAC;IACtB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,CAAC;IAE5C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACpC,WAAW,EAAE,cAAc;QAC3B,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IAEpD,OAAO,CACL,8BACE,KAAC,aAAa,CAAC,IAAI,IAAC,KAAK,EAAE,EAAE,iBAAiB,EAAE,KAAK,CAAC,OAAO,EAAE,YAC5D,eAAe,CAAC,CAAC,CAAC,CACjB,KAAC,WAAW,IACV,OAAO,EAAE,eAAe,EACxB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,GACtC,CACH,CAAC,CAAC,CAAC,CACF,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC7B,KAAC,SAAS,IAER,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,IAH9B,KAAK,CAAC,EAAE,CAIb,CACH,CAAC,CACH,GACkB,EAEpB,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,IAAI,CAChD,KAAC,MAAM,IACL,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,GACrD,CACH,IACA,CACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { FeedbackScreenEntryModalProps } from "../../../shared/types";
2
+ export declare function CreateEntryModal({ onRequestClose, onCreated, }: FeedbackScreenEntryModalProps & {
3
+ onRequestClose: () => void;
4
+ }): import("react").JSX.Element;
5
+ //# sourceMappingURL=NewEntry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NewEntry.d.ts","sourceRoot":"","sources":["../../../../src/native/shared/ui/NewEntry.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAK3E,wBAAgB,gBAAgB,CAAC,EAC/B,cAAc,EACd,SAAS,GACV,EAAE,6BAA6B,GAAG;IACjC,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,+BA6HA"}