@vvedantb/native-ui 0.17.2 → 0.18.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 (220) hide show
  1. package/dist/AlertDialog.jsx +123 -0
  2. package/dist/AmbientBackground.jsx +73 -0
  3. package/dist/ArtifactList.jsx +59 -0
  4. package/dist/Avatar.jsx +285 -0
  5. package/dist/Badge.jsx +154 -0
  6. package/dist/BottomSheetContainer.jsx +208 -0
  7. package/dist/BulkActionBar.jsx +717 -0
  8. package/dist/Button.jsx +344 -0
  9. package/dist/CaptureButton.jsx +104 -0
  10. package/dist/Card.jsx +371 -0
  11. package/dist/Checkbox.jsx +177 -0
  12. package/dist/Chip.jsx +79 -0
  13. package/dist/ColorSwatches.jsx +159 -0
  14. package/dist/ConfirmDialog.jsx +157 -0
  15. package/dist/DateTimeField.jsx +204 -0
  16. package/dist/Dialog.jsx +614 -0
  17. package/dist/DividedList.jsx +120 -0
  18. package/dist/DropdownMenu.jsx +849 -0
  19. package/dist/EmptyState.jsx +434 -0
  20. package/dist/ExpoWebRoot.jsx +134 -0
  21. package/dist/FloatingFAB.jsx +95 -0
  22. package/dist/FloatingSurface.jsx +226 -0
  23. package/dist/FloatingTabBar.jsx +403 -0
  24. package/dist/HeaderIconButton.jsx +53 -0
  25. package/dist/IconButton.jsx +157 -0
  26. package/dist/Input.jsx +96 -0
  27. package/dist/Label.jsx +96 -0
  28. package/dist/LabeledSwitchRow.jsx +170 -0
  29. package/dist/LiquidGlass.jsx +2 -0
  30. package/dist/ListRow.jsx +281 -0
  31. package/dist/LoadingState.jsx +205 -0
  32. package/dist/PageIndicator.jsx +128 -0
  33. package/dist/PageTitle.jsx +205 -0
  34. package/dist/Pager.jsx +105 -0
  35. package/dist/PasswordInput.jsx +120 -0
  36. package/dist/PillTabs.jsx +300 -0
  37. package/dist/PinnedBotTile.jsx +212 -0
  38. package/dist/Progress.jsx +147 -0
  39. package/dist/SafeAreaContainer.jsx +38 -0
  40. package/dist/ScreenContainer.jsx +117 -0
  41. package/dist/SearchInput.jsx +150 -0
  42. package/dist/SectionLabel.jsx +128 -0
  43. package/dist/Select.jsx +223 -0
  44. package/dist/Separator.jsx +95 -0
  45. package/dist/Sheet.jsx +343 -0
  46. package/dist/SheetRow.jsx +198 -0
  47. package/dist/Skeleton.jsx +311 -0
  48. package/dist/Spinner.jsx +195 -0
  49. package/dist/StackPageHeader.jsx +160 -0
  50. package/dist/StatGrid.jsx +74 -0
  51. package/dist/StatusDot.jsx +129 -0
  52. package/dist/SurfaceRow.jsx +143 -0
  53. package/dist/SwipeableRow.jsx +50 -0
  54. package/dist/Switch.jsx +130 -0
  55. package/dist/Tabs.jsx +385 -0
  56. package/dist/Textarea.jsx +103 -0
  57. package/dist/ThemeToggle.jsx +78 -0
  58. package/dist/Toast.jsx +396 -0
  59. package/dist/ai/activity-step-detail.jsx +179 -0
  60. package/dist/ai/activity-step-label.js +816 -0
  61. package/dist/ai/activity-step-types.js +14 -0
  62. package/dist/ai/activity-step.jsx +98 -0
  63. package/dist/ai/activity-tasks-utils.js +172 -0
  64. package/dist/ai/activity-timeline.js +47 -0
  65. package/dist/ai/attachments.jsx +258 -0
  66. package/dist/ai/card-button.jsx +188 -0
  67. package/dist/ai/chain-of-thought.jsx +459 -0
  68. package/dist/ai/chat-jump-rail.jsx +57 -0
  69. package/dist/ai/chat-text.js +44 -0
  70. package/dist/ai/chat-thread.jsx +135 -0
  71. package/dist/ai/choice-question.jsx +925 -0
  72. package/dist/ai/code-block.jsx +574 -0
  73. package/dist/ai/collapsible.jsx +275 -0
  74. package/dist/ai/conversation.jsx +723 -0
  75. package/dist/ai/file-chip.jsx +198 -0
  76. package/dist/ai/icon-button.jsx +179 -0
  77. package/dist/ai/index.js +37 -0
  78. package/dist/ai/message-action-sheet.jsx +408 -0
  79. package/dist/ai/message-quote.jsx +241 -0
  80. package/dist/ai/message.jsx +739 -0
  81. package/dist/ai/prompt-input-menu.jsx +365 -0
  82. package/dist/ai/prompt-input.jsx +626 -0
  83. package/dist/ai/reasoning.jsx +446 -0
  84. package/dist/ai/reply-quote-chip.jsx +278 -0
  85. package/dist/ai/response-text.jsx +130 -0
  86. package/dist/ai/shimmer.jsx +149 -0
  87. package/dist/ai/sources.jsx +260 -0
  88. package/dist/ai/subagent-cards.jsx +645 -0
  89. package/dist/ai/suggestion.jsx +186 -0
  90. package/dist/ai/tool-approval-card.jsx +359 -0
  91. package/dist/ai/trace.jsx +728 -0
  92. package/dist/ai/unified-diff.jsx +280 -0
  93. package/dist/ai/use-streaming-disclosure.js +70 -0
  94. package/dist/auth/AuthProviders.jsx +27 -0
  95. package/dist/auth/AuthScreen.jsx +292 -0
  96. package/dist/auth/GoogleSignInButton.jsx +188 -0
  97. package/dist/auth/SecondFactorScreen.jsx +133 -0
  98. package/dist/auth/SignInScreen.jsx +482 -0
  99. package/dist/auth/authErrors.js +131 -0
  100. package/dist/auth/index.js +11 -0
  101. package/dist/auth/totp.js +378 -0
  102. package/dist/blur.js +36 -0
  103. package/dist/brand/AppIcons.jsx +118 -0
  104. package/dist/brand/AppMark.jsx +128 -0
  105. package/dist/brand/AppWordmark.jsx +138 -0
  106. package/dist/brand/GoogleMark.jsx +71 -0
  107. package/dist/brand/ProviderIcon.jsx +192 -0
  108. package/dist/brand/familyApps.js +33 -0
  109. package/dist/brand/index.js +11 -0
  110. package/dist/brand/svg.js +252 -0
  111. package/dist/brand/vProAppBenefits.js +19 -0
  112. package/dist/cn.js +5 -0
  113. package/dist/colors.js +15 -0
  114. package/dist/configureTheme.js +72 -0
  115. package/dist/controlStyles.js +520 -0
  116. package/dist/definiteSize.js +12 -0
  117. package/dist/dialogLayout.js +18 -0
  118. package/dist/entries/ai.js +4 -0
  119. package/dist/entries/ambient.js +3 -0
  120. package/dist/entries/auth.js +5 -0
  121. package/dist/entries/bottom-sheet.js +2 -0
  122. package/dist/entries/brand.js +2 -0
  123. package/dist/entries/button.js +2 -0
  124. package/dist/entries/date-time.js +3 -0
  125. package/dist/entries/expo-router.js +4 -0
  126. package/dist/entries/expo-web-root.js +3 -0
  127. package/dist/entries/floating.js +7 -0
  128. package/dist/entries/gesture-handler.js +4 -0
  129. package/dist/entries/keyboard-controller.js +4 -0
  130. package/dist/entries/layout.js +16 -0
  131. package/dist/entries/markdown.js +4 -0
  132. package/dist/entries/marketing.js +3 -0
  133. package/dist/entries/page-title.js +7 -0
  134. package/dist/entries/password-input.js +3 -0
  135. package/dist/entries/primitives.js +57 -0
  136. package/dist/entries/search-input.js +3 -0
  137. package/dist/entries/tab-bar.js +4 -0
  138. package/dist/entries/theme.js +7 -0
  139. package/dist/entries/toast.js +5 -0
  140. package/dist/entries/video.js +3 -0
  141. package/dist/entries/webview.js +4 -0
  142. package/dist/examples/AiChatGallery.jsx +509 -0
  143. package/dist/examples/ParityGallery.jsx +1307 -0
  144. package/dist/floating.js +62 -0
  145. package/dist/glassBlur.jsx +145 -0
  146. package/dist/gradient.js +17 -0
  147. package/dist/haptics.js +44 -0
  148. package/dist/highlight.js +382 -0
  149. package/dist/index.js +85 -0
  150. package/dist/initials.js +4 -0
  151. package/dist/loadingGrid.js +81 -0
  152. package/dist/markdown/Markdown.jsx +515 -0
  153. package/dist/markdown/MarkdownTable.jsx +443 -0
  154. package/dist/markdown/tableText.js +68 -0
  155. package/dist/marketing/PricingModal.jsx +608 -0
  156. package/dist/marketing/UpgradeToProCard.jsx +164 -0
  157. package/dist/marketing/pricing.js +34 -0
  158. package/dist/media/ImageGallery.jsx +580 -0
  159. package/dist/media/MediaCard.jsx +162 -0
  160. package/dist/media/imageGrid.js +54 -0
  161. package/dist/motion.js +33 -0
  162. package/dist/pagerSwipe.js +104 -0
  163. package/dist/palette.js +104 -0
  164. package/dist/primitives/button.jsx +127 -0
  165. package/dist/primitives/card.jsx +249 -0
  166. package/dist/primitives/icon.jsx +37 -0
  167. package/dist/primitives/input.jsx +56 -0
  168. package/dist/primitives/keyboard-controller.jsx +207 -0
  169. package/dist/primitives/keyboard-parts.jsx +75 -0
  170. package/dist/primitives/native-only-animated-view.jsx +68 -0
  171. package/dist/primitives/overlay.jsx +391 -0
  172. package/dist/primitives/pager-gesture.jsx +131 -0
  173. package/dist/primitives/select-host.jsx +103 -0
  174. package/dist/primitives/select.jsx +555 -0
  175. package/dist/primitives/sheet-drag.jsx +420 -0
  176. package/dist/primitives/sheet-gesture.jsx +219 -0
  177. package/dist/primitives/swipe-row-gesture.jsx +341 -0
  178. package/dist/primitives/switch.jsx +105 -0
  179. package/dist/primitives/text.jsx +145 -0
  180. package/dist/primitives/toast-drag-gesture.jsx +94 -0
  181. package/dist/primitives/use-controllable-state.js +40 -0
  182. package/dist/primitives/web-click-guard.js +69 -0
  183. package/dist/push.js +166 -0
  184. package/dist/relativeTime.js +70 -0
  185. package/dist/router/RouterStackPageHeader.jsx +53 -0
  186. package/dist/selectA11y.js +32 -0
  187. package/dist/settings/MoreFromProjectV.jsx +168 -0
  188. package/dist/settings/SettingsEmptyState.jsx +102 -0
  189. package/dist/settings/SettingsField.jsx +49 -0
  190. package/dist/settings/SettingsSection.jsx +101 -0
  191. package/dist/settings/SettingsStack.jsx +17 -0
  192. package/dist/settings/SettingsToggleRow.jsx +163 -0
  193. package/dist/settings/projectVMobileApps.js +126 -0
  194. package/dist/settings/relaxedSizeStyle.js +11 -0
  195. package/dist/sheetDrag.js +76 -0
  196. package/dist/svgA11y.js +46 -0
  197. package/dist/swipeRow.js +161 -0
  198. package/dist/tabBarRoutes.js +41 -0
  199. package/dist/tabIndicator.js +139 -0
  200. package/dist/tailwind-preset.cjs +255 -0
  201. package/dist/tailwind-preset.d.cts +55 -0
  202. package/dist/theme.jsx +62 -0
  203. package/dist/toastChrome.js +110 -0
  204. package/dist/toastDrag.js +51 -0
  205. package/dist/toastStore.js +54 -0
  206. package/dist/tokens.js +70 -0
  207. package/dist/typography.js +40 -0
  208. package/dist/useReduceMotion.js +32 -0
  209. package/dist/useReduceTransparency.js +27 -0
  210. package/dist/useScheme.js +15 -0
  211. package/dist/video/InlineVideo.jsx +115 -0
  212. package/dist/webview/HtmlView.jsx +169 -0
  213. package/dist/webview/HtmlView.web.jsx +63 -0
  214. package/dist/webview/htmlView.js +43 -0
  215. package/package.json +70 -33
  216. package/src/DropdownMenu.tsx +28 -16
  217. package/src/FloatingTabBar.tsx +78 -41
  218. package/src/ai/conversation.tsx +12 -8
  219. package/src/glassBlur.tsx +47 -22
  220. package/src/primitives/swipe-row-gesture.tsx +11 -2
@@ -0,0 +1,275 @@
1
+ import { c as _c } from "react/compiler-runtime";
2
+ import { createContext, useContext } from "react";
3
+ import { Pressable, View } from "react-native";
4
+ import { IconChevronDown, IconChevronRight } from "@tabler/icons-react-native";
5
+ import Animated from "react-native-reanimated";
6
+ import { cn } from "../cn";
7
+ import { MIN_TOUCH_TARGET, touchSlop } from "../controlStyles";
8
+ import { useControllableState } from "../primitives/use-controllable-state";
9
+ import { useReduceMotion } from "../useReduceMotion";
10
+
11
+ // A small fold for the AI parts: native-ui has no `Collapsible`. A `Pressable`
12
+ // trigger and content that mounts only while open. The content appears at
13
+ // once: a fade would also run each time a list mounts an open fold (a chat
14
+ // opening, a virtualised row scrolled back). The chevron turns in 150 ms; with
15
+ // Reduce Motion it changes in place.
16
+
17
+ /**
18
+ * The web chevron: `transition-transform duration-150`. The curve is the
19
+ * predefined `ease-out`: a `cubicBezier(...)` value in an `Animated.View`
20
+ * style does not typecheck against `react-native-reanimated` 4.3.
21
+ */
22
+ const CHEVRON_TURN = {
23
+ transitionProperty: "transform",
24
+ transitionDuration: 150,
25
+ transitionTimingFunction: "ease-out"
26
+ };
27
+ const CollapsibleContext = createContext(null);
28
+
29
+ /** The open state of the enclosing `Collapsible`, for a chevron or a custom trigger. */
30
+ export function useCollapsible() {
31
+ const context = useContext(CollapsibleContext);
32
+ if (!context) {
33
+ throw new Error("Collapsible parts must be used within Collapsible");
34
+ }
35
+ return context;
36
+ }
37
+ /** Holds its own open state, or takes `open` and `onOpenChange`, as the web Radix `Collapsible`. */
38
+ export function Collapsible(t0) {
39
+ const $ = _c(17);
40
+ let onOpenChange;
41
+ let open;
42
+ let props;
43
+ let t1;
44
+ if ($[0] !== t0) {
45
+ ({
46
+ open,
47
+ defaultOpen: t1,
48
+ onOpenChange,
49
+ ...props
50
+ } = t0);
51
+ $[0] = t0;
52
+ $[1] = onOpenChange;
53
+ $[2] = open;
54
+ $[3] = props;
55
+ $[4] = t1;
56
+ } else {
57
+ onOpenChange = $[1];
58
+ open = $[2];
59
+ props = $[3];
60
+ t1 = $[4];
61
+ }
62
+ const defaultOpen = t1 === undefined ? false : t1;
63
+ let t2;
64
+ if ($[5] !== defaultOpen || $[6] !== onOpenChange || $[7] !== open) {
65
+ t2 = {
66
+ value: open,
67
+ defaultValue: defaultOpen,
68
+ onChange: onOpenChange
69
+ };
70
+ $[5] = defaultOpen;
71
+ $[6] = onOpenChange;
72
+ $[7] = open;
73
+ $[8] = t2;
74
+ } else {
75
+ t2 = $[8];
76
+ }
77
+ const [isOpen, setOpen] = useControllableState(t2);
78
+ let t3;
79
+ if ($[9] !== isOpen || $[10] !== setOpen) {
80
+ t3 = {
81
+ open: isOpen,
82
+ setOpen
83
+ };
84
+ $[9] = isOpen;
85
+ $[10] = setOpen;
86
+ $[11] = t3;
87
+ } else {
88
+ t3 = $[11];
89
+ }
90
+ let t4;
91
+ if ($[12] !== props) {
92
+ t4 = <View {...props} />;
93
+ $[12] = props;
94
+ $[13] = t4;
95
+ } else {
96
+ t4 = $[13];
97
+ }
98
+ let t5;
99
+ if ($[14] !== t3 || $[15] !== t4) {
100
+ t5 = <CollapsibleContext.Provider value={t3}>{t4}</CollapsibleContext.Provider>;
101
+ $[14] = t3;
102
+ $[15] = t4;
103
+ $[16] = t5;
104
+ } else {
105
+ t5 = $[16];
106
+ }
107
+ return t5;
108
+ }
109
+
110
+ /** A `text-sm` line with the web `py-1`: 28 high. The slop brings it to 44. */
111
+ const TRIGGER_ROW_HEIGHT = 28;
112
+ /** Toggles the fold. A button with `expanded` state for VoiceOver and TalkBack. */
113
+ export function CollapsibleTrigger(t0) {
114
+ const $ = _c(20);
115
+ let accessibilityState;
116
+ let className;
117
+ let onPress;
118
+ let props;
119
+ if ($[0] !== t0) {
120
+ ({
121
+ className,
122
+ onPress,
123
+ accessibilityState,
124
+ ...props
125
+ } = t0);
126
+ $[0] = t0;
127
+ $[1] = accessibilityState;
128
+ $[2] = className;
129
+ $[3] = onPress;
130
+ $[4] = props;
131
+ } else {
132
+ accessibilityState = $[1];
133
+ className = $[2];
134
+ onPress = $[3];
135
+ props = $[4];
136
+ }
137
+ const {
138
+ open,
139
+ setOpen
140
+ } = useCollapsible();
141
+ let t1;
142
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
143
+ t1 = touchSlop(MIN_TOUCH_TARGET, TRIGGER_ROW_HEIGHT);
144
+ $[5] = t1;
145
+ } else {
146
+ t1 = $[5];
147
+ }
148
+ let t2;
149
+ if ($[6] !== className) {
150
+ t2 = cn("active:opacity-70", className);
151
+ $[6] = className;
152
+ $[7] = t2;
153
+ } else {
154
+ t2 = $[7];
155
+ }
156
+ let t3;
157
+ if ($[8] !== accessibilityState || $[9] !== open) {
158
+ t3 = {
159
+ ...accessibilityState,
160
+ expanded: open
161
+ };
162
+ $[8] = accessibilityState;
163
+ $[9] = open;
164
+ $[10] = t3;
165
+ } else {
166
+ t3 = $[10];
167
+ }
168
+ let t4;
169
+ if ($[11] !== onPress || $[12] !== open || $[13] !== setOpen) {
170
+ t4 = event => {
171
+ onPress?.(event);
172
+ setOpen(!open);
173
+ };
174
+ $[11] = onPress;
175
+ $[12] = open;
176
+ $[13] = setOpen;
177
+ $[14] = t4;
178
+ } else {
179
+ t4 = $[14];
180
+ }
181
+ let t5;
182
+ if ($[15] !== props || $[16] !== t2 || $[17] !== t3 || $[18] !== t4) {
183
+ t5 = <Pressable accessibilityRole="button" hitSlop={t1} className={t2} {...props} accessibilityState={t3} onPress={t4} />;
184
+ $[15] = props;
185
+ $[16] = t2;
186
+ $[17] = t3;
187
+ $[18] = t4;
188
+ $[19] = t5;
189
+ } else {
190
+ t5 = $[19];
191
+ }
192
+ return t5;
193
+ }
194
+
195
+ /** Mounted only while the fold is open. */
196
+ export function CollapsibleContent(props) {
197
+ const $ = _c(2);
198
+ const {
199
+ open
200
+ } = useCollapsible();
201
+ if (!open) {
202
+ return null;
203
+ }
204
+ let t0;
205
+ if ($[0] !== props) {
206
+ t0 = <View {...props} />;
207
+ $[0] = props;
208
+ $[1] = t0;
209
+ } else {
210
+ t0 = $[1];
211
+ }
212
+ return t0;
213
+ }
214
+
215
+ /**
216
+ * The fold chevron: `down` turns up when open (reasoning, sources, chain of
217
+ * thought), `right` turns down (trace lines), as the web `rotate-180` and
218
+ * `rotate-90`, easing over 150 ms as the web does (at once with Reduce Motion).
219
+ */
220
+ export function CollapsibleChevron(t0) {
221
+ const $ = _c(12);
222
+ const {
223
+ open,
224
+ variant: t1,
225
+ size,
226
+ color
227
+ } = t0;
228
+ const variant = t1 === undefined ? "down" : t1;
229
+ const Icon = variant === "down" ? IconChevronDown : IconChevronRight;
230
+ const reduceMotion = useReduceMotion();
231
+ const turn = variant === "down" ? "180deg" : "90deg";
232
+ const t2 = open ? turn : "0deg";
233
+ let t3;
234
+ if ($[0] !== t2) {
235
+ t3 = {
236
+ transform: [{
237
+ rotate: t2
238
+ }]
239
+ };
240
+ $[0] = t2;
241
+ $[1] = t3;
242
+ } else {
243
+ t3 = $[1];
244
+ }
245
+ const t4 = reduceMotion ? null : CHEVRON_TURN;
246
+ let t5;
247
+ if ($[2] !== t3 || $[3] !== t4) {
248
+ t5 = [t3, t4];
249
+ $[2] = t3;
250
+ $[3] = t4;
251
+ $[4] = t5;
252
+ } else {
253
+ t5 = $[4];
254
+ }
255
+ let t6;
256
+ if ($[5] !== Icon || $[6] !== color || $[7] !== size) {
257
+ t6 = <Icon size={size} color={color} />;
258
+ $[5] = Icon;
259
+ $[6] = color;
260
+ $[7] = size;
261
+ $[8] = t6;
262
+ } else {
263
+ t6 = $[8];
264
+ }
265
+ let t7;
266
+ if ($[9] !== t5 || $[10] !== t6) {
267
+ t7 = <Animated.View style={t5}>{t6}</Animated.View>;
268
+ $[9] = t5;
269
+ $[10] = t6;
270
+ $[11] = t7;
271
+ } else {
272
+ t7 = $[11];
273
+ }
274
+ return t7;
275
+ }