nastech-app 1.0.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 (1111) hide show
  1. package/.claude/agents/i18n-translator.md +119 -0
  2. package/.claude/settings.json +8 -0
  3. package/.eas/workflows/ota.yaml +9 -0
  4. package/.eas/workflows/preview.yaml +12 -0
  5. package/.easignore +12 -0
  6. package/.github/workflows/eas-build.yml +24 -0
  7. package/CHANGELOG.md +117 -0
  8. package/CLAUDE.md +413 -0
  9. package/GoogleService-Info.plist +30 -0
  10. package/LICENSE +21 -0
  11. package/NasTechapp.md +383 -0
  12. package/README.md +75 -0
  13. package/Stores.md +85 -0
  14. package/TERMS.md +83 -0
  15. package/app.config.js +153 -0
  16. package/babel.config.js +28 -0
  17. package/deploy/nastech-app.yaml +51 -0
  18. package/docs/marketing/README-creators.md +73 -0
  19. package/eas-build-post-install.sh +11 -0
  20. package/eas-build-pre-install.sh +27 -0
  21. package/eas.json +78 -0
  22. package/google-services.json +67 -0
  23. package/index.ts +3 -0
  24. package/logo.png +0 -0
  25. package/metro.config.js +54 -0
  26. package/nativewind-env.d.ts +1 -0
  27. package/package.json +233 -0
  28. package/patches/.keep +0 -0
  29. package/plugins/withEinkCompatibility.js +156 -0
  30. package/public/.well-known/apple-app-site-association +22 -0
  31. package/public/.well-known/assetlinks.json +12 -0
  32. package/public/canvaskit.wasm +0 -0
  33. package/public/favicon-active.ico +0 -0
  34. package/release-dev.sh +7 -0
  35. package/release-production.sh +3 -0
  36. package/release.cjs +160 -0
  37. package/sources/-session/SessionView.tsx +944 -0
  38. package/sources/-session/sessionOverlayNav.ts +34 -0
  39. package/sources/app/(app)/_layout.tsx +321 -0
  40. package/sources/app/(app)/artifacts/[id].tsx +279 -0
  41. package/sources/app/(app)/artifacts/edit/[id].tsx +318 -0
  42. package/sources/app/(app)/artifacts/index.tsx +264 -0
  43. package/sources/app/(app)/artifacts/new.tsx +219 -0
  44. package/sources/app/(app)/changelog.tsx +113 -0
  45. package/sources/app/(app)/dev/colors.tsx +197 -0
  46. package/sources/app/(app)/dev/device-info.tsx +183 -0
  47. package/sources/app/(app)/dev/expo-constants.tsx +394 -0
  48. package/sources/app/(app)/dev/index.tsx +400 -0
  49. package/sources/app/(app)/dev/input-styles.tsx +1951 -0
  50. package/sources/app/(app)/dev/inverted-list.tsx +295 -0
  51. package/sources/app/(app)/dev/list-demo.tsx +125 -0
  52. package/sources/app/(app)/dev/logs.tsx +160 -0
  53. package/sources/app/(app)/dev/messages-demo-data.ts +479 -0
  54. package/sources/app/(app)/dev/messages-demo.tsx +45 -0
  55. package/sources/app/(app)/dev/modal-demo.tsx +211 -0
  56. package/sources/app/(app)/dev/multi-text-input.tsx +224 -0
  57. package/sources/app/(app)/dev/purchases.tsx +228 -0
  58. package/sources/app/(app)/dev/qr-test.tsx +168 -0
  59. package/sources/app/(app)/dev/session-composer.tsx +812 -0
  60. package/sources/app/(app)/dev/shimmer-demo.tsx +275 -0
  61. package/sources/app/(app)/dev/tests.tsx +203 -0
  62. package/sources/app/(app)/dev/tools2.tsx +556 -0
  63. package/sources/app/(app)/dev/typography.tsx +177 -0
  64. package/sources/app/(app)/dev/unistyles-demo.tsx +376 -0
  65. package/sources/app/(app)/friends/index.tsx +167 -0
  66. package/sources/app/(app)/friends/search.tsx +232 -0
  67. package/sources/app/(app)/inbox/index.tsx +124 -0
  68. package/sources/app/(app)/index.tsx +264 -0
  69. package/sources/app/(app)/machine/[id].tsx +646 -0
  70. package/sources/app/(app)/new/index.tsx +1611 -0
  71. package/sources/app/(app)/restore/index.tsx +167 -0
  72. package/sources/app/(app)/restore/manual.tsx +138 -0
  73. package/sources/app/(app)/server.tsx +234 -0
  74. package/sources/app/(app)/session/[id]/file.tsx +527 -0
  75. package/sources/app/(app)/session/[id]/files.tsx +442 -0
  76. package/sources/app/(app)/session/[id]/info.tsx +655 -0
  77. package/sources/app/(app)/session/[id]/message/[messageId].tsx +125 -0
  78. package/sources/app/(app)/session/[id].tsx +10 -0
  79. package/sources/app/(app)/session/recent.tsx +270 -0
  80. package/sources/app/(app)/settings/account.tsx +600 -0
  81. package/sources/app/(app)/settings/agents.tsx +180 -0
  82. package/sources/app/(app)/settings/appearance.tsx +259 -0
  83. package/sources/app/(app)/settings/connect/claude.tsx +178 -0
  84. package/sources/app/(app)/settings/features.tsx +177 -0
  85. package/sources/app/(app)/settings/index.tsx +3 -0
  86. package/sources/app/(app)/settings/language.tsx +106 -0
  87. package/sources/app/(app)/settings/usage.tsx +11 -0
  88. package/sources/app/(app)/settings/voice/language.tsx +114 -0
  89. package/sources/app/(app)/settings/voice.tsx +274 -0
  90. package/sources/app/(app)/terminal/connect.tsx +241 -0
  91. package/sources/app/(app)/terminal/index.tsx +184 -0
  92. package/sources/app/(app)/text-selection.tsx +149 -0
  93. package/sources/app/(app)/user/[id].tsx +314 -0
  94. package/sources/app/+html.tsx +39 -0
  95. package/sources/app/_layout.tsx +402 -0
  96. package/sources/assets/animations/game.json +1 -0
  97. package/sources/assets/animations/owl.json +1 -0
  98. package/sources/assets/animations/popcorn.json +1 -0
  99. package/sources/assets/animations/robot.json +1 -0
  100. package/sources/assets/animations/sparkles.json +1 -0
  101. package/sources/assets/animations/stone.json +1 -0
  102. package/sources/assets/fonts/BricolageGrotesque-Bold.ttf +0 -0
  103. package/sources/assets/fonts/IBMPlexMono-Italic.ttf +0 -0
  104. package/sources/assets/fonts/IBMPlexMono-Regular.ttf +0 -0
  105. package/sources/assets/fonts/IBMPlexMono-SemiBold.ttf +0 -0
  106. package/sources/assets/fonts/IBMPlexSans-Italic.ttf +0 -0
  107. package/sources/assets/fonts/IBMPlexSans-Regular.ttf +0 -0
  108. package/sources/assets/fonts/IBMPlexSans-SemiBold.ttf +0 -0
  109. package/sources/assets/fonts/SpaceMono-Regular.ttf +0 -0
  110. package/sources/assets/images/brutalist/Abstract-1.png +0 -0
  111. package/sources/assets/images/brutalist/Abstract-10.png +0 -0
  112. package/sources/assets/images/brutalist/Abstract-100.png +0 -0
  113. package/sources/assets/images/brutalist/Abstract-101.png +0 -0
  114. package/sources/assets/images/brutalist/Abstract-102.png +0 -0
  115. package/sources/assets/images/brutalist/Abstract-103.png +0 -0
  116. package/sources/assets/images/brutalist/Abstract-104.png +0 -0
  117. package/sources/assets/images/brutalist/Abstract-105.png +0 -0
  118. package/sources/assets/images/brutalist/Abstract-106.png +0 -0
  119. package/sources/assets/images/brutalist/Abstract-107.png +0 -0
  120. package/sources/assets/images/brutalist/Abstract-108.png +0 -0
  121. package/sources/assets/images/brutalist/Abstract-109.png +0 -0
  122. package/sources/assets/images/brutalist/Abstract-11.png +0 -0
  123. package/sources/assets/images/brutalist/Abstract-110.png +0 -0
  124. package/sources/assets/images/brutalist/Abstract-111.png +0 -0
  125. package/sources/assets/images/brutalist/Abstract-112.png +0 -0
  126. package/sources/assets/images/brutalist/Abstract-113.png +0 -0
  127. package/sources/assets/images/brutalist/Abstract-114.png +0 -0
  128. package/sources/assets/images/brutalist/Abstract-115.png +0 -0
  129. package/sources/assets/images/brutalist/Abstract-116.png +0 -0
  130. package/sources/assets/images/brutalist/Abstract-117.png +0 -0
  131. package/sources/assets/images/brutalist/Abstract-118.png +0 -0
  132. package/sources/assets/images/brutalist/Abstract-119.png +0 -0
  133. package/sources/assets/images/brutalist/Abstract-12.png +0 -0
  134. package/sources/assets/images/brutalist/Abstract-120.png +0 -0
  135. package/sources/assets/images/brutalist/Abstract-121.png +0 -0
  136. package/sources/assets/images/brutalist/Abstract-122.png +0 -0
  137. package/sources/assets/images/brutalist/Abstract-123.png +0 -0
  138. package/sources/assets/images/brutalist/Abstract-124.png +0 -0
  139. package/sources/assets/images/brutalist/Abstract-125.png +0 -0
  140. package/sources/assets/images/brutalist/Abstract-126.png +0 -0
  141. package/sources/assets/images/brutalist/Abstract-127.png +0 -0
  142. package/sources/assets/images/brutalist/Abstract-128.png +0 -0
  143. package/sources/assets/images/brutalist/Abstract-129.png +0 -0
  144. package/sources/assets/images/brutalist/Abstract-13.png +0 -0
  145. package/sources/assets/images/brutalist/Abstract-130.png +0 -0
  146. package/sources/assets/images/brutalist/Abstract-131.png +0 -0
  147. package/sources/assets/images/brutalist/Abstract-132.png +0 -0
  148. package/sources/assets/images/brutalist/Abstract-133.png +0 -0
  149. package/sources/assets/images/brutalist/Abstract-134.png +0 -0
  150. package/sources/assets/images/brutalist/Abstract-135.png +0 -0
  151. package/sources/assets/images/brutalist/Abstract-136.png +0 -0
  152. package/sources/assets/images/brutalist/Abstract-137.png +0 -0
  153. package/sources/assets/images/brutalist/Abstract-138.png +0 -0
  154. package/sources/assets/images/brutalist/Abstract-139.png +0 -0
  155. package/sources/assets/images/brutalist/Abstract-14.png +0 -0
  156. package/sources/assets/images/brutalist/Abstract-140.png +0 -0
  157. package/sources/assets/images/brutalist/Abstract-141.png +0 -0
  158. package/sources/assets/images/brutalist/Abstract-142.png +0 -0
  159. package/sources/assets/images/brutalist/Abstract-143.png +0 -0
  160. package/sources/assets/images/brutalist/Abstract-144.png +0 -0
  161. package/sources/assets/images/brutalist/Abstract-145.png +0 -0
  162. package/sources/assets/images/brutalist/Abstract-146.png +0 -0
  163. package/sources/assets/images/brutalist/Abstract-147.png +0 -0
  164. package/sources/assets/images/brutalist/Abstract-148.png +0 -0
  165. package/sources/assets/images/brutalist/Abstract-149.png +0 -0
  166. package/sources/assets/images/brutalist/Abstract-15.png +0 -0
  167. package/sources/assets/images/brutalist/Abstract-150.png +0 -0
  168. package/sources/assets/images/brutalist/Abstract-151.png +0 -0
  169. package/sources/assets/images/brutalist/Abstract-152.png +0 -0
  170. package/sources/assets/images/brutalist/Abstract-153.png +0 -0
  171. package/sources/assets/images/brutalist/Abstract-154.png +0 -0
  172. package/sources/assets/images/brutalist/Abstract-155.png +0 -0
  173. package/sources/assets/images/brutalist/Abstract-156.png +0 -0
  174. package/sources/assets/images/brutalist/Abstract-157.png +0 -0
  175. package/sources/assets/images/brutalist/Abstract-158.png +0 -0
  176. package/sources/assets/images/brutalist/Abstract-159.png +0 -0
  177. package/sources/assets/images/brutalist/Abstract-16.png +0 -0
  178. package/sources/assets/images/brutalist/Abstract-160.png +0 -0
  179. package/sources/assets/images/brutalist/Abstract-161.png +0 -0
  180. package/sources/assets/images/brutalist/Abstract-162.png +0 -0
  181. package/sources/assets/images/brutalist/Abstract-163.png +0 -0
  182. package/sources/assets/images/brutalist/Abstract-164.png +0 -0
  183. package/sources/assets/images/brutalist/Abstract-165.png +0 -0
  184. package/sources/assets/images/brutalist/Abstract-166.png +0 -0
  185. package/sources/assets/images/brutalist/Abstract-167.png +0 -0
  186. package/sources/assets/images/brutalist/Abstract-168.png +0 -0
  187. package/sources/assets/images/brutalist/Abstract-169.png +0 -0
  188. package/sources/assets/images/brutalist/Abstract-17.png +0 -0
  189. package/sources/assets/images/brutalist/Abstract-170.png +0 -0
  190. package/sources/assets/images/brutalist/Abstract-171.png +0 -0
  191. package/sources/assets/images/brutalist/Abstract-172.png +0 -0
  192. package/sources/assets/images/brutalist/Abstract-173.png +0 -0
  193. package/sources/assets/images/brutalist/Abstract-174.png +0 -0
  194. package/sources/assets/images/brutalist/Abstract-175.png +0 -0
  195. package/sources/assets/images/brutalist/Abstract-176.png +0 -0
  196. package/sources/assets/images/brutalist/Abstract-177.png +0 -0
  197. package/sources/assets/images/brutalist/Abstract-178.png +0 -0
  198. package/sources/assets/images/brutalist/Abstract-179.png +0 -0
  199. package/sources/assets/images/brutalist/Abstract-18.png +0 -0
  200. package/sources/assets/images/brutalist/Abstract-180.png +0 -0
  201. package/sources/assets/images/brutalist/Abstract-181.png +0 -0
  202. package/sources/assets/images/brutalist/Abstract-182.png +0 -0
  203. package/sources/assets/images/brutalist/Abstract-183.png +0 -0
  204. package/sources/assets/images/brutalist/Abstract-184.png +0 -0
  205. package/sources/assets/images/brutalist/Abstract-185.png +0 -0
  206. package/sources/assets/images/brutalist/Abstract-186.png +0 -0
  207. package/sources/assets/images/brutalist/Abstract-187.png +0 -0
  208. package/sources/assets/images/brutalist/Abstract-188.png +0 -0
  209. package/sources/assets/images/brutalist/Abstract-189.png +0 -0
  210. package/sources/assets/images/brutalist/Abstract-19.png +0 -0
  211. package/sources/assets/images/brutalist/Abstract-190.png +0 -0
  212. package/sources/assets/images/brutalist/Abstract-191.png +0 -0
  213. package/sources/assets/images/brutalist/Abstract-192.png +0 -0
  214. package/sources/assets/images/brutalist/Abstract-193.png +0 -0
  215. package/sources/assets/images/brutalist/Abstract-194.png +0 -0
  216. package/sources/assets/images/brutalist/Abstract-195.png +0 -0
  217. package/sources/assets/images/brutalist/Abstract-196.png +0 -0
  218. package/sources/assets/images/brutalist/Abstract-197.png +0 -0
  219. package/sources/assets/images/brutalist/Abstract-198.png +0 -0
  220. package/sources/assets/images/brutalist/Abstract-199.png +0 -0
  221. package/sources/assets/images/brutalist/Abstract-2.png +0 -0
  222. package/sources/assets/images/brutalist/Abstract-20.png +0 -0
  223. package/sources/assets/images/brutalist/Abstract-200.png +0 -0
  224. package/sources/assets/images/brutalist/Abstract-201.png +0 -0
  225. package/sources/assets/images/brutalist/Abstract-202.png +0 -0
  226. package/sources/assets/images/brutalist/Abstract-203.png +0 -0
  227. package/sources/assets/images/brutalist/Abstract-204.png +0 -0
  228. package/sources/assets/images/brutalist/Abstract-205.png +0 -0
  229. package/sources/assets/images/brutalist/Abstract-206.png +0 -0
  230. package/sources/assets/images/brutalist/Abstract-207.png +0 -0
  231. package/sources/assets/images/brutalist/Abstract-208.png +0 -0
  232. package/sources/assets/images/brutalist/Abstract-209.png +0 -0
  233. package/sources/assets/images/brutalist/Abstract-21.png +0 -0
  234. package/sources/assets/images/brutalist/Abstract-210.png +0 -0
  235. package/sources/assets/images/brutalist/Abstract-211.png +0 -0
  236. package/sources/assets/images/brutalist/Abstract-212.png +0 -0
  237. package/sources/assets/images/brutalist/Abstract-213.png +0 -0
  238. package/sources/assets/images/brutalist/Abstract-214.png +0 -0
  239. package/sources/assets/images/brutalist/Abstract-215.png +0 -0
  240. package/sources/assets/images/brutalist/Abstract-216.png +0 -0
  241. package/sources/assets/images/brutalist/Abstract-217.png +0 -0
  242. package/sources/assets/images/brutalist/Abstract-218.png +0 -0
  243. package/sources/assets/images/brutalist/Abstract-219.png +0 -0
  244. package/sources/assets/images/brutalist/Abstract-22.png +0 -0
  245. package/sources/assets/images/brutalist/Abstract-220.png +0 -0
  246. package/sources/assets/images/brutalist/Abstract-221.png +0 -0
  247. package/sources/assets/images/brutalist/Abstract-222.png +0 -0
  248. package/sources/assets/images/brutalist/Abstract-223.png +0 -0
  249. package/sources/assets/images/brutalist/Abstract-224.png +0 -0
  250. package/sources/assets/images/brutalist/Abstract-225.png +0 -0
  251. package/sources/assets/images/brutalist/Abstract-226.png +0 -0
  252. package/sources/assets/images/brutalist/Abstract-227.png +0 -0
  253. package/sources/assets/images/brutalist/Abstract-228.png +0 -0
  254. package/sources/assets/images/brutalist/Abstract-229.png +0 -0
  255. package/sources/assets/images/brutalist/Abstract-23.png +0 -0
  256. package/sources/assets/images/brutalist/Abstract-230.png +0 -0
  257. package/sources/assets/images/brutalist/Abstract-231.png +0 -0
  258. package/sources/assets/images/brutalist/Abstract-232.png +0 -0
  259. package/sources/assets/images/brutalist/Abstract-233.png +0 -0
  260. package/sources/assets/images/brutalist/Abstract-234.png +0 -0
  261. package/sources/assets/images/brutalist/Abstract-235.png +0 -0
  262. package/sources/assets/images/brutalist/Abstract-236.png +0 -0
  263. package/sources/assets/images/brutalist/Abstract-237.png +0 -0
  264. package/sources/assets/images/brutalist/Abstract-238.png +0 -0
  265. package/sources/assets/images/brutalist/Abstract-239.png +0 -0
  266. package/sources/assets/images/brutalist/Abstract-24.png +0 -0
  267. package/sources/assets/images/brutalist/Abstract-240.png +0 -0
  268. package/sources/assets/images/brutalist/Abstract-241.png +0 -0
  269. package/sources/assets/images/brutalist/Abstract-242.png +0 -0
  270. package/sources/assets/images/brutalist/Abstract-243.png +0 -0
  271. package/sources/assets/images/brutalist/Abstract-244.png +0 -0
  272. package/sources/assets/images/brutalist/Abstract-245.png +0 -0
  273. package/sources/assets/images/brutalist/Abstract-246.png +0 -0
  274. package/sources/assets/images/brutalist/Abstract-247.png +0 -0
  275. package/sources/assets/images/brutalist/Abstract-248.png +0 -0
  276. package/sources/assets/images/brutalist/Abstract-249.png +0 -0
  277. package/sources/assets/images/brutalist/Abstract-25.png +0 -0
  278. package/sources/assets/images/brutalist/Abstract-250.png +0 -0
  279. package/sources/assets/images/brutalist/Abstract-251.png +0 -0
  280. package/sources/assets/images/brutalist/Abstract-252.png +0 -0
  281. package/sources/assets/images/brutalist/Abstract-253.png +0 -0
  282. package/sources/assets/images/brutalist/Abstract-254.png +0 -0
  283. package/sources/assets/images/brutalist/Abstract-255.png +0 -0
  284. package/sources/assets/images/brutalist/Abstract-256.png +0 -0
  285. package/sources/assets/images/brutalist/Abstract-257.png +0 -0
  286. package/sources/assets/images/brutalist/Abstract-258.png +0 -0
  287. package/sources/assets/images/brutalist/Abstract-259.png +0 -0
  288. package/sources/assets/images/brutalist/Abstract-26.png +0 -0
  289. package/sources/assets/images/brutalist/Abstract-260.png +0 -0
  290. package/sources/assets/images/brutalist/Abstract-261.png +0 -0
  291. package/sources/assets/images/brutalist/Abstract-262.png +0 -0
  292. package/sources/assets/images/brutalist/Abstract-27.png +0 -0
  293. package/sources/assets/images/brutalist/Abstract-28.png +0 -0
  294. package/sources/assets/images/brutalist/Abstract-29.png +0 -0
  295. package/sources/assets/images/brutalist/Abstract-3.png +0 -0
  296. package/sources/assets/images/brutalist/Abstract-30.png +0 -0
  297. package/sources/assets/images/brutalist/Abstract-31.png +0 -0
  298. package/sources/assets/images/brutalist/Abstract-32.png +0 -0
  299. package/sources/assets/images/brutalist/Abstract-33.png +0 -0
  300. package/sources/assets/images/brutalist/Abstract-34.png +0 -0
  301. package/sources/assets/images/brutalist/Abstract-35.png +0 -0
  302. package/sources/assets/images/brutalist/Abstract-36.png +0 -0
  303. package/sources/assets/images/brutalist/Abstract-37.png +0 -0
  304. package/sources/assets/images/brutalist/Abstract-38.png +0 -0
  305. package/sources/assets/images/brutalist/Abstract-39.png +0 -0
  306. package/sources/assets/images/brutalist/Abstract-4.png +0 -0
  307. package/sources/assets/images/brutalist/Abstract-40.png +0 -0
  308. package/sources/assets/images/brutalist/Abstract-41.png +0 -0
  309. package/sources/assets/images/brutalist/Abstract-42.png +0 -0
  310. package/sources/assets/images/brutalist/Abstract-43.png +0 -0
  311. package/sources/assets/images/brutalist/Abstract-44.png +0 -0
  312. package/sources/assets/images/brutalist/Abstract-45.png +0 -0
  313. package/sources/assets/images/brutalist/Abstract-46.png +0 -0
  314. package/sources/assets/images/brutalist/Abstract-47.png +0 -0
  315. package/sources/assets/images/brutalist/Abstract-48.png +0 -0
  316. package/sources/assets/images/brutalist/Abstract-49.png +0 -0
  317. package/sources/assets/images/brutalist/Abstract-5.png +0 -0
  318. package/sources/assets/images/brutalist/Abstract-50.png +0 -0
  319. package/sources/assets/images/brutalist/Abstract-51.png +0 -0
  320. package/sources/assets/images/brutalist/Abstract-52.png +0 -0
  321. package/sources/assets/images/brutalist/Abstract-53.png +0 -0
  322. package/sources/assets/images/brutalist/Abstract-54.png +0 -0
  323. package/sources/assets/images/brutalist/Abstract-55.png +0 -0
  324. package/sources/assets/images/brutalist/Abstract-56.png +0 -0
  325. package/sources/assets/images/brutalist/Abstract-57.png +0 -0
  326. package/sources/assets/images/brutalist/Abstract-58.png +0 -0
  327. package/sources/assets/images/brutalist/Abstract-59.png +0 -0
  328. package/sources/assets/images/brutalist/Abstract-6.png +0 -0
  329. package/sources/assets/images/brutalist/Abstract-60.png +0 -0
  330. package/sources/assets/images/brutalist/Abstract-61.png +0 -0
  331. package/sources/assets/images/brutalist/Abstract-62.png +0 -0
  332. package/sources/assets/images/brutalist/Abstract-63.png +0 -0
  333. package/sources/assets/images/brutalist/Abstract-64.png +0 -0
  334. package/sources/assets/images/brutalist/Abstract-65.png +0 -0
  335. package/sources/assets/images/brutalist/Abstract-66.png +0 -0
  336. package/sources/assets/images/brutalist/Abstract-67.png +0 -0
  337. package/sources/assets/images/brutalist/Abstract-68.png +0 -0
  338. package/sources/assets/images/brutalist/Abstract-69.png +0 -0
  339. package/sources/assets/images/brutalist/Abstract-7.png +0 -0
  340. package/sources/assets/images/brutalist/Abstract-70.png +0 -0
  341. package/sources/assets/images/brutalist/Abstract-71.png +0 -0
  342. package/sources/assets/images/brutalist/Abstract-72.png +0 -0
  343. package/sources/assets/images/brutalist/Abstract-73.png +0 -0
  344. package/sources/assets/images/brutalist/Abstract-74.png +0 -0
  345. package/sources/assets/images/brutalist/Abstract-75.png +0 -0
  346. package/sources/assets/images/brutalist/Abstract-76.png +0 -0
  347. package/sources/assets/images/brutalist/Abstract-77.png +0 -0
  348. package/sources/assets/images/brutalist/Abstract-78.png +0 -0
  349. package/sources/assets/images/brutalist/Abstract-79.png +0 -0
  350. package/sources/assets/images/brutalist/Abstract-8.png +0 -0
  351. package/sources/assets/images/brutalist/Abstract-80.png +0 -0
  352. package/sources/assets/images/brutalist/Abstract-81.png +0 -0
  353. package/sources/assets/images/brutalist/Abstract-82.png +0 -0
  354. package/sources/assets/images/brutalist/Abstract-83.png +0 -0
  355. package/sources/assets/images/brutalist/Abstract-84.png +0 -0
  356. package/sources/assets/images/brutalist/Abstract-85.png +0 -0
  357. package/sources/assets/images/brutalist/Abstract-86.png +0 -0
  358. package/sources/assets/images/brutalist/Abstract-87.png +0 -0
  359. package/sources/assets/images/brutalist/Abstract-88.png +0 -0
  360. package/sources/assets/images/brutalist/Abstract-89.png +0 -0
  361. package/sources/assets/images/brutalist/Abstract-9.png +0 -0
  362. package/sources/assets/images/brutalist/Abstract-90.png +0 -0
  363. package/sources/assets/images/brutalist/Abstract-91.png +0 -0
  364. package/sources/assets/images/brutalist/Abstract-92.png +0 -0
  365. package/sources/assets/images/brutalist/Abstract-93.png +0 -0
  366. package/sources/assets/images/brutalist/Abstract-94.png +0 -0
  367. package/sources/assets/images/brutalist/Abstract-95.png +0 -0
  368. package/sources/assets/images/brutalist/Abstract-96.png +0 -0
  369. package/sources/assets/images/brutalist/Abstract-97.png +0 -0
  370. package/sources/assets/images/brutalist/Abstract-98.png +0 -0
  371. package/sources/assets/images/brutalist/Abstract-99.png +0 -0
  372. package/sources/assets/images/brutalist/Bauhaus-1.png +0 -0
  373. package/sources/assets/images/brutalist/Bauhaus-10.png +0 -0
  374. package/sources/assets/images/brutalist/Bauhaus-11.png +0 -0
  375. package/sources/assets/images/brutalist/Bauhaus-12.png +0 -0
  376. package/sources/assets/images/brutalist/Bauhaus-13.png +0 -0
  377. package/sources/assets/images/brutalist/Bauhaus-14.png +0 -0
  378. package/sources/assets/images/brutalist/Bauhaus-15.png +0 -0
  379. package/sources/assets/images/brutalist/Bauhaus-16.png +0 -0
  380. package/sources/assets/images/brutalist/Bauhaus-17.png +0 -0
  381. package/sources/assets/images/brutalist/Bauhaus-18.png +0 -0
  382. package/sources/assets/images/brutalist/Bauhaus-19.png +0 -0
  383. package/sources/assets/images/brutalist/Bauhaus-2.png +0 -0
  384. package/sources/assets/images/brutalist/Bauhaus-20.png +0 -0
  385. package/sources/assets/images/brutalist/Bauhaus-21.png +0 -0
  386. package/sources/assets/images/brutalist/Bauhaus-22.png +0 -0
  387. package/sources/assets/images/brutalist/Bauhaus-23.png +0 -0
  388. package/sources/assets/images/brutalist/Bauhaus-24.png +0 -0
  389. package/sources/assets/images/brutalist/Bauhaus-25.png +0 -0
  390. package/sources/assets/images/brutalist/Bauhaus-26.png +0 -0
  391. package/sources/assets/images/brutalist/Bauhaus-27.png +0 -0
  392. package/sources/assets/images/brutalist/Bauhaus-28.png +0 -0
  393. package/sources/assets/images/brutalist/Bauhaus-29.png +0 -0
  394. package/sources/assets/images/brutalist/Bauhaus-3.png +0 -0
  395. package/sources/assets/images/brutalist/Bauhaus-30.png +0 -0
  396. package/sources/assets/images/brutalist/Bauhaus-31.png +0 -0
  397. package/sources/assets/images/brutalist/Bauhaus-32.png +0 -0
  398. package/sources/assets/images/brutalist/Bauhaus-33.png +0 -0
  399. package/sources/assets/images/brutalist/Bauhaus-34.png +0 -0
  400. package/sources/assets/images/brutalist/Bauhaus-35.png +0 -0
  401. package/sources/assets/images/brutalist/Bauhaus-36.png +0 -0
  402. package/sources/assets/images/brutalist/Bauhaus-37.png +0 -0
  403. package/sources/assets/images/brutalist/Bauhaus-38.png +0 -0
  404. package/sources/assets/images/brutalist/Bauhaus-39.png +0 -0
  405. package/sources/assets/images/brutalist/Bauhaus-4.png +0 -0
  406. package/sources/assets/images/brutalist/Bauhaus-40.png +0 -0
  407. package/sources/assets/images/brutalist/Bauhaus-5.png +0 -0
  408. package/sources/assets/images/brutalist/Bauhaus-6.png +0 -0
  409. package/sources/assets/images/brutalist/Bauhaus-7.png +0 -0
  410. package/sources/assets/images/brutalist/Bauhaus-8.png +0 -0
  411. package/sources/assets/images/brutalist/Bauhaus-9.png +0 -0
  412. package/sources/assets/images/brutalist/Brutalism-1.png +0 -0
  413. package/sources/assets/images/brutalist/Brutalism-10.png +0 -0
  414. package/sources/assets/images/brutalist/Brutalism-100.png +0 -0
  415. package/sources/assets/images/brutalist/Brutalism-101.png +0 -0
  416. package/sources/assets/images/brutalist/Brutalism-102.png +0 -0
  417. package/sources/assets/images/brutalist/Brutalism-103.png +0 -0
  418. package/sources/assets/images/brutalist/Brutalism-104.png +0 -0
  419. package/sources/assets/images/brutalist/Brutalism-105.png +0 -0
  420. package/sources/assets/images/brutalist/Brutalism-106.png +0 -0
  421. package/sources/assets/images/brutalist/Brutalism-107.png +0 -0
  422. package/sources/assets/images/brutalist/Brutalism-108.png +0 -0
  423. package/sources/assets/images/brutalist/Brutalism-109.png +0 -0
  424. package/sources/assets/images/brutalist/Brutalism-11.png +0 -0
  425. package/sources/assets/images/brutalist/Brutalism-110.png +0 -0
  426. package/sources/assets/images/brutalist/Brutalism-111.png +0 -0
  427. package/sources/assets/images/brutalist/Brutalism-112.png +0 -0
  428. package/sources/assets/images/brutalist/Brutalism-113.png +0 -0
  429. package/sources/assets/images/brutalist/Brutalism-114.png +0 -0
  430. package/sources/assets/images/brutalist/Brutalism-115.png +0 -0
  431. package/sources/assets/images/brutalist/Brutalism-116.png +0 -0
  432. package/sources/assets/images/brutalist/Brutalism-117.png +0 -0
  433. package/sources/assets/images/brutalist/Brutalism-118.png +0 -0
  434. package/sources/assets/images/brutalist/Brutalism-12.png +0 -0
  435. package/sources/assets/images/brutalist/Brutalism-13.png +0 -0
  436. package/sources/assets/images/brutalist/Brutalism-14.png +0 -0
  437. package/sources/assets/images/brutalist/Brutalism-15.png +0 -0
  438. package/sources/assets/images/brutalist/Brutalism-16.png +0 -0
  439. package/sources/assets/images/brutalist/Brutalism-17.png +0 -0
  440. package/sources/assets/images/brutalist/Brutalism-18.png +0 -0
  441. package/sources/assets/images/brutalist/Brutalism-19.png +0 -0
  442. package/sources/assets/images/brutalist/Brutalism-2.png +0 -0
  443. package/sources/assets/images/brutalist/Brutalism-20.png +0 -0
  444. package/sources/assets/images/brutalist/Brutalism-21.png +0 -0
  445. package/sources/assets/images/brutalist/Brutalism-22.png +0 -0
  446. package/sources/assets/images/brutalist/Brutalism-23.png +0 -0
  447. package/sources/assets/images/brutalist/Brutalism-24.png +0 -0
  448. package/sources/assets/images/brutalist/Brutalism-25.png +0 -0
  449. package/sources/assets/images/brutalist/Brutalism-26.png +0 -0
  450. package/sources/assets/images/brutalist/Brutalism-27.png +0 -0
  451. package/sources/assets/images/brutalist/Brutalism-28.png +0 -0
  452. package/sources/assets/images/brutalist/Brutalism-29.png +0 -0
  453. package/sources/assets/images/brutalist/Brutalism-3.png +0 -0
  454. package/sources/assets/images/brutalist/Brutalism-30.png +0 -0
  455. package/sources/assets/images/brutalist/Brutalism-31.png +0 -0
  456. package/sources/assets/images/brutalist/Brutalism-32.png +0 -0
  457. package/sources/assets/images/brutalist/Brutalism-33.png +0 -0
  458. package/sources/assets/images/brutalist/Brutalism-34.png +0 -0
  459. package/sources/assets/images/brutalist/Brutalism-35.png +0 -0
  460. package/sources/assets/images/brutalist/Brutalism-36.png +0 -0
  461. package/sources/assets/images/brutalist/Brutalism-37.png +0 -0
  462. package/sources/assets/images/brutalist/Brutalism-38.png +0 -0
  463. package/sources/assets/images/brutalist/Brutalism-39.png +0 -0
  464. package/sources/assets/images/brutalist/Brutalism-4.png +0 -0
  465. package/sources/assets/images/brutalist/Brutalism-40.png +0 -0
  466. package/sources/assets/images/brutalist/Brutalism-41.png +0 -0
  467. package/sources/assets/images/brutalist/Brutalism-42.png +0 -0
  468. package/sources/assets/images/brutalist/Brutalism-43.png +0 -0
  469. package/sources/assets/images/brutalist/Brutalism-44.png +0 -0
  470. package/sources/assets/images/brutalist/Brutalism-45.png +0 -0
  471. package/sources/assets/images/brutalist/Brutalism-46.png +0 -0
  472. package/sources/assets/images/brutalist/Brutalism-47.png +0 -0
  473. package/sources/assets/images/brutalist/Brutalism-48.png +0 -0
  474. package/sources/assets/images/brutalist/Brutalism-49.png +0 -0
  475. package/sources/assets/images/brutalist/Brutalism-5.png +0 -0
  476. package/sources/assets/images/brutalist/Brutalism-50.png +0 -0
  477. package/sources/assets/images/brutalist/Brutalism-51.png +0 -0
  478. package/sources/assets/images/brutalist/Brutalism-52.png +0 -0
  479. package/sources/assets/images/brutalist/Brutalism-53.png +0 -0
  480. package/sources/assets/images/brutalist/Brutalism-54.png +0 -0
  481. package/sources/assets/images/brutalist/Brutalism-55.png +0 -0
  482. package/sources/assets/images/brutalist/Brutalism-56.png +0 -0
  483. package/sources/assets/images/brutalist/Brutalism-57.png +0 -0
  484. package/sources/assets/images/brutalist/Brutalism-58.png +0 -0
  485. package/sources/assets/images/brutalist/Brutalism-59.png +0 -0
  486. package/sources/assets/images/brutalist/Brutalism-6.png +0 -0
  487. package/sources/assets/images/brutalist/Brutalism-60.png +0 -0
  488. package/sources/assets/images/brutalist/Brutalism-61.png +0 -0
  489. package/sources/assets/images/brutalist/Brutalism-62.png +0 -0
  490. package/sources/assets/images/brutalist/Brutalism-63.png +0 -0
  491. package/sources/assets/images/brutalist/Brutalism-64.png +0 -0
  492. package/sources/assets/images/brutalist/Brutalism-65.png +0 -0
  493. package/sources/assets/images/brutalist/Brutalism-66.png +0 -0
  494. package/sources/assets/images/brutalist/Brutalism-67.png +0 -0
  495. package/sources/assets/images/brutalist/Brutalism-68.png +0 -0
  496. package/sources/assets/images/brutalist/Brutalism-69.png +0 -0
  497. package/sources/assets/images/brutalist/Brutalism-7.png +0 -0
  498. package/sources/assets/images/brutalist/Brutalism-70.png +0 -0
  499. package/sources/assets/images/brutalist/Brutalism-71.png +0 -0
  500. package/sources/assets/images/brutalist/Brutalism-72.png +0 -0
  501. package/sources/assets/images/brutalist/Brutalism-73.png +0 -0
  502. package/sources/assets/images/brutalist/Brutalism-74.png +0 -0
  503. package/sources/assets/images/brutalist/Brutalism-75.png +0 -0
  504. package/sources/assets/images/brutalist/Brutalism-76.png +0 -0
  505. package/sources/assets/images/brutalist/Brutalism-77.png +0 -0
  506. package/sources/assets/images/brutalist/Brutalism-78.png +0 -0
  507. package/sources/assets/images/brutalist/Brutalism-79.png +0 -0
  508. package/sources/assets/images/brutalist/Brutalism-8.png +0 -0
  509. package/sources/assets/images/brutalist/Brutalism-80.png +0 -0
  510. package/sources/assets/images/brutalist/Brutalism-81.png +0 -0
  511. package/sources/assets/images/brutalist/Brutalism-82.png +0 -0
  512. package/sources/assets/images/brutalist/Brutalism-83.png +0 -0
  513. package/sources/assets/images/brutalist/Brutalism-84.png +0 -0
  514. package/sources/assets/images/brutalist/Brutalism-85.png +0 -0
  515. package/sources/assets/images/brutalist/Brutalism-86.png +0 -0
  516. package/sources/assets/images/brutalist/Brutalism-87.png +0 -0
  517. package/sources/assets/images/brutalist/Brutalism-88.png +0 -0
  518. package/sources/assets/images/brutalist/Brutalism-89.png +0 -0
  519. package/sources/assets/images/brutalist/Brutalism-9.png +0 -0
  520. package/sources/assets/images/brutalist/Brutalism-90.png +0 -0
  521. package/sources/assets/images/brutalist/Brutalism-91.png +0 -0
  522. package/sources/assets/images/brutalist/Brutalism-92.png +0 -0
  523. package/sources/assets/images/brutalist/Brutalism-93.png +0 -0
  524. package/sources/assets/images/brutalist/Brutalism-94.png +0 -0
  525. package/sources/assets/images/brutalist/Brutalism-95.png +0 -0
  526. package/sources/assets/images/brutalist/Brutalism-96.png +0 -0
  527. package/sources/assets/images/brutalist/Brutalism-97.png +0 -0
  528. package/sources/assets/images/brutalist/Brutalism-98.png +0 -0
  529. package/sources/assets/images/brutalist/Brutalism-99.png +0 -0
  530. package/sources/assets/images/favicon-active.png +0 -0
  531. package/sources/assets/images/favicon.png +0 -0
  532. package/sources/assets/images/gradients/01.png +0 -0
  533. package/sources/assets/images/gradients/02.png +0 -0
  534. package/sources/assets/images/gradients/03.png +0 -0
  535. package/sources/assets/images/gradients/04.png +0 -0
  536. package/sources/assets/images/gradients/05.png +0 -0
  537. package/sources/assets/images/gradients/06.png +0 -0
  538. package/sources/assets/images/gradients/07.png +0 -0
  539. package/sources/assets/images/gradients/08.png +0 -0
  540. package/sources/assets/images/gradients/09.png +0 -0
  541. package/sources/assets/images/gradients/10.png +0 -0
  542. package/sources/assets/images/gradients/100.png +0 -0
  543. package/sources/assets/images/gradients/11.png +0 -0
  544. package/sources/assets/images/gradients/12.png +0 -0
  545. package/sources/assets/images/gradients/13.png +0 -0
  546. package/sources/assets/images/gradients/14.png +0 -0
  547. package/sources/assets/images/gradients/15.png +0 -0
  548. package/sources/assets/images/gradients/16.png +0 -0
  549. package/sources/assets/images/gradients/17.png +0 -0
  550. package/sources/assets/images/gradients/18.png +0 -0
  551. package/sources/assets/images/gradients/19.png +0 -0
  552. package/sources/assets/images/gradients/20.png +0 -0
  553. package/sources/assets/images/gradients/21.png +0 -0
  554. package/sources/assets/images/gradients/22.png +0 -0
  555. package/sources/assets/images/gradients/23.png +0 -0
  556. package/sources/assets/images/gradients/24.png +0 -0
  557. package/sources/assets/images/gradients/25.png +0 -0
  558. package/sources/assets/images/gradients/26.png +0 -0
  559. package/sources/assets/images/gradients/27.png +0 -0
  560. package/sources/assets/images/gradients/28.png +0 -0
  561. package/sources/assets/images/gradients/29.png +0 -0
  562. package/sources/assets/images/gradients/30.png +0 -0
  563. package/sources/assets/images/gradients/31.png +0 -0
  564. package/sources/assets/images/gradients/32.png +0 -0
  565. package/sources/assets/images/gradients/33.png +0 -0
  566. package/sources/assets/images/gradients/34.png +0 -0
  567. package/sources/assets/images/gradients/35.png +0 -0
  568. package/sources/assets/images/gradients/36.png +0 -0
  569. package/sources/assets/images/gradients/37.png +0 -0
  570. package/sources/assets/images/gradients/38.png +0 -0
  571. package/sources/assets/images/gradients/39.png +0 -0
  572. package/sources/assets/images/gradients/40.png +0 -0
  573. package/sources/assets/images/gradients/41.png +0 -0
  574. package/sources/assets/images/gradients/42.png +0 -0
  575. package/sources/assets/images/gradients/43.png +0 -0
  576. package/sources/assets/images/gradients/44.png +0 -0
  577. package/sources/assets/images/gradients/45.png +0 -0
  578. package/sources/assets/images/gradients/46.png +0 -0
  579. package/sources/assets/images/gradients/47.png +0 -0
  580. package/sources/assets/images/gradients/48.png +0 -0
  581. package/sources/assets/images/gradients/49.png +0 -0
  582. package/sources/assets/images/gradients/50.png +0 -0
  583. package/sources/assets/images/gradients/51.png +0 -0
  584. package/sources/assets/images/gradients/52.png +0 -0
  585. package/sources/assets/images/gradients/53.png +0 -0
  586. package/sources/assets/images/gradients/54.png +0 -0
  587. package/sources/assets/images/gradients/55.png +0 -0
  588. package/sources/assets/images/gradients/56.png +0 -0
  589. package/sources/assets/images/gradients/57.png +0 -0
  590. package/sources/assets/images/gradients/58.png +0 -0
  591. package/sources/assets/images/gradients/59.png +0 -0
  592. package/sources/assets/images/gradients/60.png +0 -0
  593. package/sources/assets/images/gradients/61.png +0 -0
  594. package/sources/assets/images/gradients/62.png +0 -0
  595. package/sources/assets/images/gradients/63.png +0 -0
  596. package/sources/assets/images/gradients/64.png +0 -0
  597. package/sources/assets/images/gradients/65.png +0 -0
  598. package/sources/assets/images/gradients/66.png +0 -0
  599. package/sources/assets/images/gradients/67.png +0 -0
  600. package/sources/assets/images/gradients/68.png +0 -0
  601. package/sources/assets/images/gradients/69.png +0 -0
  602. package/sources/assets/images/gradients/70.png +0 -0
  603. package/sources/assets/images/gradients/71.png +0 -0
  604. package/sources/assets/images/gradients/72.png +0 -0
  605. package/sources/assets/images/gradients/73.png +0 -0
  606. package/sources/assets/images/gradients/74.png +0 -0
  607. package/sources/assets/images/gradients/75.png +0 -0
  608. package/sources/assets/images/gradients/76.png +0 -0
  609. package/sources/assets/images/gradients/77.png +0 -0
  610. package/sources/assets/images/gradients/78.png +0 -0
  611. package/sources/assets/images/gradients/79.png +0 -0
  612. package/sources/assets/images/gradients/80.png +0 -0
  613. package/sources/assets/images/gradients/81.png +0 -0
  614. package/sources/assets/images/gradients/82.png +0 -0
  615. package/sources/assets/images/gradients/83.png +0 -0
  616. package/sources/assets/images/gradients/84.png +0 -0
  617. package/sources/assets/images/gradients/85.png +0 -0
  618. package/sources/assets/images/gradients/86.png +0 -0
  619. package/sources/assets/images/gradients/87.png +0 -0
  620. package/sources/assets/images/gradients/88.png +0 -0
  621. package/sources/assets/images/gradients/89.png +0 -0
  622. package/sources/assets/images/gradients/90.png +0 -0
  623. package/sources/assets/images/gradients/91.png +0 -0
  624. package/sources/assets/images/gradients/92.png +0 -0
  625. package/sources/assets/images/gradients/93.png +0 -0
  626. package/sources/assets/images/gradients/94.png +0 -0
  627. package/sources/assets/images/gradients/95.png +0 -0
  628. package/sources/assets/images/gradients/96.png +0 -0
  629. package/sources/assets/images/gradients/97.png +0 -0
  630. package/sources/assets/images/gradients/98.png +0 -0
  631. package/sources/assets/images/gradients/99.png +0 -0
  632. package/sources/assets/images/icon-adaptive.png +0 -0
  633. package/sources/assets/images/icon-claude.png +0 -0
  634. package/sources/assets/images/icon-claude@2x.png +0 -0
  635. package/sources/assets/images/icon-claude@3x.png +0 -0
  636. package/sources/assets/images/icon-gemini.png +0 -0
  637. package/sources/assets/images/icon-gemini@2x.png +0 -0
  638. package/sources/assets/images/icon-gemini@3x.png +0 -0
  639. package/sources/assets/images/icon-gpt.png +0 -0
  640. package/sources/assets/images/icon-gpt@2x.png +0 -0
  641. package/sources/assets/images/icon-gpt@3x.png +0 -0
  642. package/sources/assets/images/icon-monochrome.png +0 -0
  643. package/sources/assets/images/icon-notification.png +0 -0
  644. package/sources/assets/images/icon-openclaw.png +0 -0
  645. package/sources/assets/images/icon-openclaw@2x.png +0 -0
  646. package/sources/assets/images/icon-openclaw@3x.png +0 -0
  647. package/sources/assets/images/icon-tauri.png +0 -0
  648. package/sources/assets/images/icon-voice-white.png +0 -0
  649. package/sources/assets/images/icon-voice.png +0 -0
  650. package/sources/assets/images/icon-voice@2x.png +0 -0
  651. package/sources/assets/images/icon-voice@3x.png +0 -0
  652. package/sources/assets/images/icon.png +0 -0
  653. package/sources/assets/images/logo-black.png +0 -0
  654. package/sources/assets/images/logo-white.png +0 -0
  655. package/sources/assets/images/logotype-dark.png +0 -0
  656. package/sources/assets/images/logotype-dark@2x.png +0 -0
  657. package/sources/assets/images/logotype-dark@3x.png +0 -0
  658. package/sources/assets/images/logotype-light.png +0 -0
  659. package/sources/assets/images/logotype-light@2x.png +0 -0
  660. package/sources/assets/images/logotype-light@3x.png +0 -0
  661. package/sources/assets/images/logotype.png +0 -0
  662. package/sources/assets/images/logotype@2x.png +0 -0
  663. package/sources/assets/images/logotype@3x.png +0 -0
  664. package/sources/assets/images/splash-android-dark.png +0 -0
  665. package/sources/assets/images/splash-android-light.png +0 -0
  666. package/sources/assets/images/transparent.png +0 -0
  667. package/sources/assets/images/zen-icon.png +0 -0
  668. package/sources/auth/AuthContext.tsx +100 -0
  669. package/sources/auth/authAccountApprove.ts +2 -0
  670. package/sources/auth/authApprove.ts +2 -0
  671. package/sources/auth/authChallenge.ts +8 -0
  672. package/sources/auth/authGetToken.ts +4 -0
  673. package/sources/auth/authQRStart.ts +17 -0
  674. package/sources/auth/authQRWait.ts +13 -0
  675. package/sources/auth/secretKeyBackup.spec.ts +465 -0
  676. package/sources/auth/secretKeyBackup.ts +179 -0
  677. package/sources/auth/tokenStorage.ts +27 -0
  678. package/sources/changelog/changelog.json +60 -0
  679. package/sources/changelog/index.ts +3 -0
  680. package/sources/changelog/parser.ts +23 -0
  681. package/sources/changelog/storage.ts +17 -0
  682. package/sources/changelog/types.ts +10 -0
  683. package/sources/components/ActiveSessionsGroupCompact.tsx +567 -0
  684. package/sources/components/AgentContentView.ios.tsx +70 -0
  685. package/sources/components/AgentContentView.tsx +48 -0
  686. package/sources/components/AgentInput.tsx +1468 -0
  687. package/sources/components/AgentInputAttachmentStrip.tsx +122 -0
  688. package/sources/components/AgentInputAutocomplete.tsx +96 -0
  689. package/sources/components/AgentInputSuggestionView.tsx +106 -0
  690. package/sources/components/AllFilesDiffView.tsx +515 -0
  691. package/sources/components/Avatar.tsx +149 -0
  692. package/sources/components/AvatarBrutalist.tsx +501 -0
  693. package/sources/components/AvatarGradient.tsx +147 -0
  694. package/sources/components/AvatarSkia.tsx +111 -0
  695. package/sources/components/AvatarSkia.web.tsx +113 -0
  696. package/sources/components/ChatFooter.tsx +50 -0
  697. package/sources/components/ChatHeaderView.tsx +180 -0
  698. package/sources/components/ChatList.tsx +283 -0
  699. package/sources/components/CodeEditor.tsx +22 -0
  700. package/sources/components/CodeEditor.web.tsx +180 -0
  701. package/sources/components/CodeView.tsx +33 -0
  702. package/sources/components/CommandPalette/CommandPalette.tsx +72 -0
  703. package/sources/components/CommandPalette/CommandPaletteInput.tsx +65 -0
  704. package/sources/components/CommandPalette/CommandPaletteItem.tsx +141 -0
  705. package/sources/components/CommandPalette/CommandPaletteModal.tsx +148 -0
  706. package/sources/components/CommandPalette/CommandPaletteProvider.tsx +141 -0
  707. package/sources/components/CommandPalette/CommandPaletteResults.tsx +129 -0
  708. package/sources/components/CommandPalette/index.ts +3 -0
  709. package/sources/components/CommandPalette/types.ts +15 -0
  710. package/sources/components/CommandPalette/useCommandPalette.ts +107 -0
  711. package/sources/components/CommandView.tsx +135 -0
  712. package/sources/components/CompactGitStatus.tsx +88 -0
  713. package/sources/components/ConnectButton.tsx +117 -0
  714. package/sources/components/Deferred.tsx +18 -0
  715. package/sources/components/DuplicateSheet.tsx +295 -0
  716. package/sources/components/EmptyMainScreen.tsx +171 -0
  717. package/sources/components/EmptyMessages.tsx +123 -0
  718. package/sources/components/EmptySessionsTablet.tsx +111 -0
  719. package/sources/components/ExternalLink.tsx +22 -0
  720. package/sources/components/FAB.tsx +53 -0
  721. package/sources/components/FABWide.tsx +59 -0
  722. package/sources/components/FeedItemCard.tsx +98 -0
  723. package/sources/components/FileIcon.tsx +63 -0
  724. package/sources/components/FileViewPanel.tsx +673 -0
  725. package/sources/components/FilesSidebar.tsx +739 -0
  726. package/sources/components/FloatingOverlay.tsx +48 -0
  727. package/sources/components/GitStatusBadge.tsx +82 -0
  728. package/sources/components/HeaderLogo.tsx +28 -0
  729. package/sources/components/HomeHeader.tsx +243 -0
  730. package/sources/components/HorizontalScrollView.tsx +88 -0
  731. package/sources/components/InboxView.tsx +260 -0
  732. package/sources/components/InlineFileDiff.tsx +277 -0
  733. package/sources/components/Item.tsx +315 -0
  734. package/sources/components/ItemGroup.tsx +147 -0
  735. package/sources/components/ItemList.tsx +102 -0
  736. package/sources/components/MainView.tsx +324 -0
  737. package/sources/components/MessageView.tsx +299 -0
  738. package/sources/components/MultiTextInput.tsx +285 -0
  739. package/sources/components/MultiTextInput.web.tsx +220 -0
  740. package/sources/components/OAuthView.tsx +374 -0
  741. package/sources/components/PermissionModeSelector.tsx +68 -0
  742. package/sources/components/PlaceholderContainerView.tsx +47 -0
  743. package/sources/components/PlusPlus.tsx +34 -0
  744. package/sources/components/PlusPlus.web.tsx +34 -0
  745. package/sources/components/ProjectGitStatus.tsx +102 -0
  746. package/sources/components/RoundButton.tsx +130 -0
  747. package/sources/components/SearchableListSelector.tsx +675 -0
  748. package/sources/components/SessionActionsNativeMenu.android.tsx +58 -0
  749. package/sources/components/SessionActionsNativeMenu.ios.tsx +55 -0
  750. package/sources/components/SessionActionsNativeMenu.tsx +20 -0
  751. package/sources/components/SessionActionsNativeMenu.web.tsx +13 -0
  752. package/sources/components/SessionActionsPopover.tsx +240 -0
  753. package/sources/components/SessionsList.tsx +471 -0
  754. package/sources/components/SessionsListWrapper.tsx +72 -0
  755. package/sources/components/SettingsView.tsx +470 -0
  756. package/sources/components/SettingsViewWrapper.tsx +21 -0
  757. package/sources/components/Shaker.tsx +42 -0
  758. package/sources/components/Shaker.web.tsx +46 -0
  759. package/sources/components/ShimmerView.tsx +106 -0
  760. package/sources/components/SidebarNavigator.tsx +218 -0
  761. package/sources/components/SidebarView.tsx +104 -0
  762. package/sources/components/SimpleSyntaxHighlighter.tsx +322 -0
  763. package/sources/components/StatusBarProvider.tsx +12 -0
  764. package/sources/components/StatusDot.tsx +49 -0
  765. package/sources/components/StyledText.tsx +35 -0
  766. package/sources/components/Switch.tsx +20 -0
  767. package/sources/components/TabBar.tsx +140 -0
  768. package/sources/components/ToolGroupView.tsx +101 -0
  769. package/sources/components/TransitionStack.tsx +14 -0
  770. package/sources/components/UpdateBanner.tsx +74 -0
  771. package/sources/components/UserCard.tsx +41 -0
  772. package/sources/components/UserSearchResult.tsx +129 -0
  773. package/sources/components/VoiceAssistantStatusBar.tsx +260 -0
  774. package/sources/components/VoiceBars.tsx +95 -0
  775. package/sources/components/autocomplete/applySuggestion.test.ts +194 -0
  776. package/sources/components/autocomplete/applySuggestion.ts +61 -0
  777. package/sources/components/autocomplete/findActiveWord.test.ts +365 -0
  778. package/sources/components/autocomplete/findActiveWord.ts +207 -0
  779. package/sources/components/autocomplete/suggestions.ts +79 -0
  780. package/sources/components/autocomplete/useActiveSuggestions.ts +130 -0
  781. package/sources/components/autocomplete/useActiveWord.ts +19 -0
  782. package/sources/components/diff/DiffView.tsx +188 -0
  783. package/sources/components/diff/PierreDiffView.tsx +253 -0
  784. package/sources/components/diff/calculateDiff.ts +317 -0
  785. package/sources/components/entityColor.ts +51 -0
  786. package/sources/components/haptics.ts +9 -0
  787. package/sources/components/haptics.web.ts +7 -0
  788. package/sources/components/layout.ts +44 -0
  789. package/sources/components/markdown/MarkdownView.tsx +670 -0
  790. package/sources/components/markdown/MermaidRenderer.tsx +233 -0
  791. package/sources/components/markdown/linkUtils.test.ts +17 -0
  792. package/sources/components/markdown/linkUtils.ts +5 -0
  793. package/sources/components/markdown/parseMarkdown.test.ts +64 -0
  794. package/sources/components/markdown/parseMarkdown.ts +46 -0
  795. package/sources/components/markdown/parseMarkdownBlock.test.ts +108 -0
  796. package/sources/components/markdown/parseMarkdownBlock.ts +200 -0
  797. package/sources/components/markdown/parseMarkdownSpans.ts +88 -0
  798. package/sources/components/modelModeOptions.test.ts +114 -0
  799. package/sources/components/modelModeOptions.ts +257 -0
  800. package/sources/components/navigation/Header.tsx +252 -0
  801. package/sources/components/parseLocalCommandMessage.spec.ts +96 -0
  802. package/sources/components/parseLocalCommandMessage.ts +97 -0
  803. package/sources/components/qr/QRCode.tsx +178 -0
  804. package/sources/components/qr/QRCode.web.tsx +229 -0
  805. package/sources/components/qr/index.ts +2 -0
  806. package/sources/components/qr/qrMatrix.ts +48 -0
  807. package/sources/components/tools/PermissionFooter.tsx +527 -0
  808. package/sources/components/tools/ToolDiffView.tsx +60 -0
  809. package/sources/components/tools/ToolError.tsx +49 -0
  810. package/sources/components/tools/ToolFullView.tsx +193 -0
  811. package/sources/components/tools/ToolHeader.tsx +93 -0
  812. package/sources/components/tools/ToolSectionView.tsx +42 -0
  813. package/sources/components/tools/ToolStatusIndicator.tsx +36 -0
  814. package/sources/components/tools/ToolView.tsx +340 -0
  815. package/sources/components/tools/knownTools.tsx +957 -0
  816. package/sources/components/tools/views/AskUserQuestionView.tsx +357 -0
  817. package/sources/components/tools/views/BashView.tsx +47 -0
  818. package/sources/components/tools/views/BashViewFull.tsx +81 -0
  819. package/sources/components/tools/views/CodexBashView.tsx +126 -0
  820. package/sources/components/tools/views/CodexDiffView.tsx +79 -0
  821. package/sources/components/tools/views/CodexPatchView.tsx +186 -0
  822. package/sources/components/tools/views/EditView.tsx +33 -0
  823. package/sources/components/tools/views/EditViewFull.tsx +38 -0
  824. package/sources/components/tools/views/ExitPlanToolView.tsx +21 -0
  825. package/sources/components/tools/views/FileView.tsx +118 -0
  826. package/sources/components/tools/views/GeminiEditView.tsx +75 -0
  827. package/sources/components/tools/views/GeminiExecuteView.tsx +92 -0
  828. package/sources/components/tools/views/MCPToolView.tsx +31 -0
  829. package/sources/components/tools/views/MultiEditView.tsx +41 -0
  830. package/sources/components/tools/views/MultiEditViewFull.tsx +84 -0
  831. package/sources/components/tools/views/TaskView.tsx +129 -0
  832. package/sources/components/tools/views/TodoView.tsx +90 -0
  833. package/sources/components/tools/views/WriteView.tsx +29 -0
  834. package/sources/components/tools/views/_all.tsx +88 -0
  835. package/sources/components/usage/UsageBar.tsx +80 -0
  836. package/sources/components/usage/UsageChart.tsx +164 -0
  837. package/sources/components/usage/UsagePanel.tsx +283 -0
  838. package/sources/components/web/FaviconPermissionIndicator.tsx +44 -0
  839. package/sources/config.ts +3 -0
  840. package/sources/constants/Languages.ts +116 -0
  841. package/sources/constants/Typography.ts +116 -0
  842. package/sources/dev/testRunner.ts +277 -0
  843. package/sources/docs/autocomplete-text-manipulation.md +224 -0
  844. package/sources/encryption/aes.appspec.ts +25 -0
  845. package/sources/encryption/aes.ts +21 -0
  846. package/sources/encryption/aes.web.test.ts +73 -0
  847. package/sources/encryption/aes.web.ts +79 -0
  848. package/sources/encryption/base64.appspec.ts +240 -0
  849. package/sources/encryption/base64.native.ts +12 -0
  850. package/sources/encryption/base64.ts +46 -0
  851. package/sources/encryption/blob.test.ts +120 -0
  852. package/sources/encryption/blob.ts +58 -0
  853. package/sources/encryption/deriveKey.appspec.ts +72 -0
  854. package/sources/encryption/deriveKey.ts +46 -0
  855. package/sources/encryption/hex.ts +17 -0
  856. package/sources/encryption/hmac_sha512.appspec.ts +40 -0
  857. package/sources/encryption/hmac_sha512.ts +42 -0
  858. package/sources/encryption/libsodium.lib.ts +2 -0
  859. package/sources/encryption/libsodium.lib.web.ts +2 -0
  860. package/sources/encryption/libsodium.ts +58 -0
  861. package/sources/encryption/text.test.ts +61 -0
  862. package/sources/encryption/text.ts +11 -0
  863. package/sources/hooks/useAsyncCommand.ts +25 -0
  864. package/sources/hooks/useAttachmentImage.ts +134 -0
  865. package/sources/hooks/useAutocomplete.ts +69 -0
  866. package/sources/hooks/useAutocompleteSession.ts +53 -0
  867. package/sources/hooks/useChangelog.ts +45 -0
  868. package/sources/hooks/useCheckCameraPermissions.ts +25 -0
  869. package/sources/hooks/useConnectAccount.ts +107 -0
  870. package/sources/hooks/useConnectTerminal.ts +112 -0
  871. package/sources/hooks/useDemoMessages.ts +48 -0
  872. package/sources/hooks/useDraft.ts +120 -0
  873. package/sources/hooks/useElapsedTime.ts +36 -0
  874. package/sources/hooks/useGetPath.ts +13 -0
  875. package/sources/hooks/useGitStatusFiles.ts +45 -0
  876. package/sources/hooks/useGlobalKeyboard.ts +29 -0
  877. package/sources/hooks/useGroupedMessages.ts +149 -0
  878. package/sources/hooks/useImagePicker.ts +135 -0
  879. package/sources/hooks/useInboxHasContent.ts +19 -0
  880. package/sources/hooks/useMultiClick.ts +56 -0
  881. package/sources/hooks/useNasTechAction.ts +45 -0
  882. package/sources/hooks/useNativeUpdate.ts +10 -0
  883. package/sources/hooks/useNavigateToSession.ts +20 -0
  884. package/sources/hooks/useNewSessionDraft.ts +70 -0
  885. package/sources/hooks/usePrefetchFileContents.ts +162 -0
  886. package/sources/hooks/useSearch.ts +120 -0
  887. package/sources/hooks/useSessionQuickActions.ts +325 -0
  888. package/sources/hooks/useTauriDrag.ts +76 -0
  889. package/sources/hooks/useTauriZoom.ts +67 -0
  890. package/sources/hooks/useUpdates.ts +84 -0
  891. package/sources/hooks/useVisibleSessionListViewData.ts +65 -0
  892. package/sources/hooks/useWorktreeCleanup.ts +69 -0
  893. package/sources/log.ts +108 -0
  894. package/sources/modal/ModalManager.ts +203 -0
  895. package/sources/modal/ModalProvider.tsx +103 -0
  896. package/sources/modal/components/BaseModal.tsx +122 -0
  897. package/sources/modal/components/CustomModal.tsx +42 -0
  898. package/sources/modal/components/WebAlertModal.tsx +139 -0
  899. package/sources/modal/components/WebPromptModal.tsx +185 -0
  900. package/sources/modal/index.ts +3 -0
  901. package/sources/modal/types.ts +79 -0
  902. package/sources/nastech-wire/index.ts +10 -0
  903. package/sources/nastech-wire/legacyProtocol.ts +27 -0
  904. package/sources/nastech-wire/messageMeta.ts +14 -0
  905. package/sources/nastech-wire/messages.ts +113 -0
  906. package/sources/nastech-wire/sessionProtocol.ts +134 -0
  907. package/sources/nastech-wire/voice.ts +34 -0
  908. package/sources/polyfills/screenOrientation.ts +33 -0
  909. package/sources/realtime/RealtimeProvider.tsx +20 -0
  910. package/sources/realtime/RealtimeProvider.web.tsx +15 -0
  911. package/sources/realtime/RealtimeSession.ts +200 -0
  912. package/sources/realtime/RealtimeVoiceSession.tsx +211 -0
  913. package/sources/realtime/RealtimeVoiceSession.web.tsx +209 -0
  914. package/sources/realtime/hooks/contextFormatters.ts +127 -0
  915. package/sources/realtime/hooks/voiceHooks.ts +232 -0
  916. package/sources/realtime/realtimeClientTools.ts +94 -0
  917. package/sources/realtime/types.ts +19 -0
  918. package/sources/realtime/voiceConfig.ts +31 -0
  919. package/sources/realtime/voiceExperiment.ts +91 -0
  920. package/sources/realtime/voiceSystemPrompt.ts +75 -0
  921. package/sources/scripts/compareTranslations.ts +217 -0
  922. package/sources/scripts/parseChangelog.ts +87 -0
  923. package/sources/sync/__testdata__/trace_0.json +3986 -0
  924. package/sources/sync/__testdata__/trace_1.json +1391 -0
  925. package/sources/sync/__testdata__/trace_2.json +182 -0
  926. package/sources/sync/agentDefaults.ts +108 -0
  927. package/sources/sync/apiArtifacts.ts +143 -0
  928. package/sources/sync/apiAttachments.ts +217 -0
  929. package/sources/sync/apiFeed.ts +60 -0
  930. package/sources/sync/apiFriends.ts +217 -0
  931. package/sources/sync/apiGithub.spec.ts +97 -0
  932. package/sources/sync/apiGithub.ts +103 -0
  933. package/sources/sync/apiKv.ts +270 -0
  934. package/sources/sync/apiPush.ts +83 -0
  935. package/sources/sync/apiServices.ts +64 -0
  936. package/sources/sync/apiSocket.ts +290 -0
  937. package/sources/sync/apiTypes.spec.ts +23 -0
  938. package/sources/sync/apiTypes.ts +213 -0
  939. package/sources/sync/apiUsage.ts +130 -0
  940. package/sources/sync/apiVoice.ts +57 -0
  941. package/sources/sync/appConfig.ts +95 -0
  942. package/sources/sync/artifactTypes.ts +85 -0
  943. package/sources/sync/attachmentTypes.ts +28 -0
  944. package/sources/sync/encryption/artifactEncryption.ts +83 -0
  945. package/sources/sync/encryption/encryption.ts +220 -0
  946. package/sources/sync/encryption/encryptionCache.ts +248 -0
  947. package/sources/sync/encryption/encryptor.appspec.ts +409 -0
  948. package/sources/sync/encryption/encryptor.ts +126 -0
  949. package/sources/sync/encryption/machineEncryption.ts +122 -0
  950. package/sources/sync/encryption/sessionEncryption.ts +207 -0
  951. package/sources/sync/feedTypes.ts +43 -0
  952. package/sources/sync/friendTypes.ts +92 -0
  953. package/sources/sync/git-parsers/LineParser.ts +62 -0
  954. package/sources/sync/git-parsers/parseBranch.ts +97 -0
  955. package/sources/sync/git-parsers/parseDiff.ts +180 -0
  956. package/sources/sync/git-parsers/parseStatus.ts +162 -0
  957. package/sources/sync/git-parsers/parseStatusV2.ts +307 -0
  958. package/sources/sync/gitStatusFiles.ts +185 -0
  959. package/sources/sync/gitStatusSync.ts +282 -0
  960. package/sources/sync/localSettings.ts +67 -0
  961. package/sources/sync/messageMeta.test.ts +87 -0
  962. package/sources/sync/messageMeta.ts +36 -0
  963. package/sources/sync/modeHacks.test.ts +29 -0
  964. package/sources/sync/modeHacks.ts +22 -0
  965. package/sources/sync/nastechApi.ts +124 -0
  966. package/sources/sync/ops.ts +776 -0
  967. package/sources/sync/persistence.ts +322 -0
  968. package/sources/sync/profile.ts +95 -0
  969. package/sources/sync/projectFiles.ts +54 -0
  970. package/sources/sync/prompt/systemPrompt.ts +20 -0
  971. package/sources/sync/purchases.ts +67 -0
  972. package/sources/sync/pushRegistration.ts +229 -0
  973. package/sources/sync/reducer/activityUpdateAccumulator.test.ts +492 -0
  974. package/sources/sync/reducer/activityUpdateAccumulator.ts +96 -0
  975. package/sources/sync/reducer/messageToEvent.ts +85 -0
  976. package/sources/sync/reducer/phase0-skipping.spec.ts +206 -0
  977. package/sources/sync/reducer/reducer.spec.ts +3169 -0
  978. package/sources/sync/reducer/reducer.ts +1214 -0
  979. package/sources/sync/reducer/reducerTracer.spec.ts +502 -0
  980. package/sources/sync/reducer/reducerTracer.ts +310 -0
  981. package/sources/sync/revenueCat/index.ts +21 -0
  982. package/sources/sync/revenueCat/revenueCat.ts +215 -0
  983. package/sources/sync/revenueCat/revenueCat.web.ts +238 -0
  984. package/sources/sync/revenueCat/types.ts +82 -0
  985. package/sources/sync/serverConfig.ts +72 -0
  986. package/sources/sync/settings.spec.ts +456 -0
  987. package/sources/sync/settings.ts +186 -0
  988. package/sources/sync/storage.ts +1653 -0
  989. package/sources/sync/storageTypes.spec.ts +24 -0
  990. package/sources/sync/storageTypes.ts +215 -0
  991. package/sources/sync/suggestionCommands.ts +149 -0
  992. package/sources/sync/suggestionFile.ts +206 -0
  993. package/sources/sync/sync.ts +2555 -0
  994. package/sources/sync/typesMessage.ts +69 -0
  995. package/sources/sync/typesMessageMeta.test.ts +14 -0
  996. package/sources/sync/typesMessageMeta.ts +17 -0
  997. package/sources/sync/typesRaw.spec.ts +2010 -0
  998. package/sources/sync/typesRaw.ts +1183 -0
  999. package/sources/sync/uploadFormFile.ts +29 -0
  1000. package/sources/sync/uploadFormFile.web.ts +14 -0
  1001. package/sources/sync/webTabTitle.ts +58 -0
  1002. package/sources/text/README.md +223 -0
  1003. package/sources/text/_all.ts +104 -0
  1004. package/sources/text/_default.ts +1015 -0
  1005. package/sources/text/index.ts +215 -0
  1006. package/sources/text/translations/ca.ts +993 -0
  1007. package/sources/text/translations/en.ts +1009 -0
  1008. package/sources/text/translations/es.ts +995 -0
  1009. package/sources/text/translations/it.ts +992 -0
  1010. package/sources/text/translations/ja.ts +993 -0
  1011. package/sources/text/translations/pl.ts +1024 -0
  1012. package/sources/text/translations/pt.ts +992 -0
  1013. package/sources/text/translations/ru.ts +1023 -0
  1014. package/sources/text/translations/zh-Hans.ts +992 -0
  1015. package/sources/text/translations/zh-Hant.ts +991 -0
  1016. package/sources/theme.css +72 -0
  1017. package/sources/theme.dark.json +31 -0
  1018. package/sources/theme.figma.json +457 -0
  1019. package/sources/theme.gen.ts +10 -0
  1020. package/sources/theme.light.json +31 -0
  1021. package/sources/theme.ts +452 -0
  1022. package/sources/track/index.ts +171 -0
  1023. package/sources/track/tracking.ts +12 -0
  1024. package/sources/track/useTrackScreens.ts +10 -0
  1025. package/sources/types/react-native-webrtc-web-shim.d.ts +6 -0
  1026. package/sources/unistyles.ts +97 -0
  1027. package/sources/utils/codexUnifiedDiff.spec.ts +43 -0
  1028. package/sources/utils/codexUnifiedDiff.ts +70 -0
  1029. package/sources/utils/consoleLogging.ts +145 -0
  1030. package/sources/utils/copySessionMetadataToClipboard.ts +53 -0
  1031. package/sources/utils/debounce.test.ts +646 -0
  1032. package/sources/utils/debounce.ts +122 -0
  1033. package/sources/utils/deviceCalculations.test.ts +318 -0
  1034. package/sources/utils/deviceCalculations.ts +87 -0
  1035. package/sources/utils/errors.ts +10 -0
  1036. package/sources/utils/formatPermissionParams.ts +23 -0
  1037. package/sources/utils/isTauri.ts +7 -0
  1038. package/sources/utils/loadSkia.ts +3 -0
  1039. package/sources/utils/loadSkia.web.ts +5 -0
  1040. package/sources/utils/lock.ts +40 -0
  1041. package/sources/utils/machineUtils.ts +6 -0
  1042. package/sources/utils/messageUtils.ts +254 -0
  1043. package/sources/utils/microphonePermissions.ts +109 -0
  1044. package/sources/utils/notificationRouting.test.ts +51 -0
  1045. package/sources/utils/notificationRouting.ts +81 -0
  1046. package/sources/utils/oauth.ts +143 -0
  1047. package/sources/utils/openExternalUrl.ts +19 -0
  1048. package/sources/utils/parseToken.ts +23 -0
  1049. package/sources/utils/pasteImages.web.ts +81 -0
  1050. package/sources/utils/pathUtils.spec.ts +226 -0
  1051. package/sources/utils/pathUtils.ts +75 -0
  1052. package/sources/utils/platform.ts +19 -0
  1053. package/sources/utils/readFileBytes.ts +11 -0
  1054. package/sources/utils/readFileBytes.web.ts +12 -0
  1055. package/sources/utils/requestReview.ts +135 -0
  1056. package/sources/utils/responsive.ts +87 -0
  1057. package/sources/utils/resumeCommand.test.ts +78 -0
  1058. package/sources/utils/resumeCommand.ts +70 -0
  1059. package/sources/utils/sessionFileLinks.test.ts +112 -0
  1060. package/sources/utils/sessionFileLinks.ts +388 -0
  1061. package/sources/utils/sessionUtils.ts +226 -0
  1062. package/sources/utils/stringUtils.ts +41 -0
  1063. package/sources/utils/sync.ts +164 -0
  1064. package/sources/utils/thumbhash.ts +17 -0
  1065. package/sources/utils/thumbhash.web.ts +85 -0
  1066. package/sources/utils/time.ts +41 -0
  1067. package/sources/utils/toSnakeCase.test.ts +182 -0
  1068. package/sources/utils/toSnakeCase.ts +40 -0
  1069. package/sources/utils/toolCommand.test.ts +23 -0
  1070. package/sources/utils/toolCommand.ts +35 -0
  1071. package/sources/utils/toolComparison.test.ts +101 -0
  1072. package/sources/utils/toolComparison.ts +73 -0
  1073. package/sources/utils/toolErrorParser.test.ts +126 -0
  1074. package/sources/utils/toolErrorParser.ts +102 -0
  1075. package/sources/utils/trimIdent.ts +27 -0
  1076. package/sources/utils/truncateForLogs.ts +37 -0
  1077. package/sources/utils/versionUtils.test.ts +58 -0
  1078. package/sources/utils/versionUtils.ts +69 -0
  1079. package/sources/utils/web/faviconGenerator.ts +39 -0
  1080. package/sources/utils/worktree.ts +192 -0
  1081. package/sources/wire/index.ts +97 -0
  1082. package/src-tauri/Cargo.lock +5978 -0
  1083. package/src-tauri/Cargo.toml +27 -0
  1084. package/src-tauri/build.rs +3 -0
  1085. package/src-tauri/capabilities/default.json +27 -0
  1086. package/src-tauri/deny.toml +53 -0
  1087. package/src-tauri/entitlements.plist +24 -0
  1088. package/src-tauri/icons/128x128.png +0 -0
  1089. package/src-tauri/icons/128x128@2x.png +0 -0
  1090. package/src-tauri/icons/32x32.png +0 -0
  1091. package/src-tauri/icons/64x64.png +0 -0
  1092. package/src-tauri/icons/Square107x107Logo.png +0 -0
  1093. package/src-tauri/icons/Square142x142Logo.png +0 -0
  1094. package/src-tauri/icons/Square150x150Logo.png +0 -0
  1095. package/src-tauri/icons/Square284x284Logo.png +0 -0
  1096. package/src-tauri/icons/Square30x30Logo.png +0 -0
  1097. package/src-tauri/icons/Square310x310Logo.png +0 -0
  1098. package/src-tauri/icons/Square44x44Logo.png +0 -0
  1099. package/src-tauri/icons/Square71x71Logo.png +0 -0
  1100. package/src-tauri/icons/Square89x89Logo.png +0 -0
  1101. package/src-tauri/icons/StoreLogo.png +0 -0
  1102. package/src-tauri/icons/icon.icns +0 -0
  1103. package/src-tauri/icons/icon.ico +0 -0
  1104. package/src-tauri/icons/icon.png +0 -0
  1105. package/src-tauri/src/lib.rs +18 -0
  1106. package/src-tauri/src/main.rs +6 -0
  1107. package/src-tauri/tauri.conf.json +51 -0
  1108. package/src-tauri/tauri.dev.conf.json +20 -0
  1109. package/src-tauri/tauri.preview.conf.json +20 -0
  1110. package/tsconfig.json +45 -0
  1111. package/vitest.config.ts +26 -0
@@ -0,0 +1,1951 @@
1
+ import * as React from 'react';
2
+ import { View, Text, ScrollView, Pressable, TextInput, Platform } from 'react-native';
3
+ import { Ionicons, MaterialIcons, FontAwesome5, Feather } from '@expo/vector-icons';
4
+ import { Typography } from '@/constants/Typography';
5
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
6
+
7
+ type InputStyle = {
8
+ id: string;
9
+ name: string;
10
+ description: string;
11
+ preview: React.ReactNode;
12
+ };
13
+
14
+ export default function InputStylesDemo() {
15
+ const [selectedStyle, setSelectedStyle] = React.useState('slack');
16
+ const safeArea = useSafeAreaInsets();
17
+
18
+ // Define all input style variants
19
+ const inputStyles: InputStyle[] = [
20
+ {
21
+ id: 'slack',
22
+ name: 'Slack Style',
23
+ description: 'Minimalist with icon-only buttons',
24
+ preview: (
25
+ <View style={{ backgroundColor: '#fff' }}>
26
+ <View style={{
27
+ flexDirection: 'row',
28
+ alignItems: 'center',
29
+ paddingHorizontal: 12,
30
+ paddingTop: 8,
31
+ paddingBottom: 4,
32
+ }}>
33
+ <Pressable style={{ padding: 6, marginRight: 2 }}>
34
+ <Ionicons name="at" size={18} color="#666" />
35
+ </Pressable>
36
+ <Pressable style={{ padding: 6, marginRight: 2 }}>
37
+ <Ionicons name="star-outline" size={18} color="#666" />
38
+ </Pressable>
39
+ <Pressable style={{ padding: 6, marginRight: 2 }}>
40
+ <MaterialIcons name="format-bold" size={18} color="#666" />
41
+ </Pressable>
42
+ <Pressable style={{ padding: 6, marginRight: 2 }}>
43
+ <MaterialIcons name="format-italic" size={18} color="#666" />
44
+ </Pressable>
45
+ <Pressable style={{ padding: 6, marginRight: 2 }}>
46
+ <MaterialIcons name="link" size={18} color="#666" />
47
+ </Pressable>
48
+ <View style={{ flex: 1 }} />
49
+ <Pressable style={{ padding: 6 }}>
50
+ <Ionicons name="code-slash" size={18} color="#666" />
51
+ </Pressable>
52
+ </View>
53
+ <View style={{
54
+ flexDirection: 'row',
55
+ alignItems: 'flex-end',
56
+ paddingHorizontal: 12,
57
+ paddingBottom: 12,
58
+ }}>
59
+ <Pressable style={{ padding: 8 }}>
60
+ <Ionicons name="add" size={20} color="#666" />
61
+ </Pressable>
62
+ <View style={{
63
+ flex: 1,
64
+ flexDirection: 'row',
65
+ alignItems: 'center',
66
+ backgroundColor: '#f8f8f8',
67
+ borderRadius: 8,
68
+ borderWidth: 1,
69
+ borderColor: '#e0e0e0',
70
+ paddingHorizontal: 12,
71
+ marginHorizontal: 8,
72
+ height: 36,
73
+ }}>
74
+ <TextInput
75
+ style={{ flex: 1, fontSize: 14, color: '#333' }}
76
+ placeholder="Message"
77
+ placeholderTextColor="#999"
78
+ editable={false}
79
+ />
80
+ </View>
81
+ <Pressable style={{ padding: 8 }}>
82
+ <Ionicons name="send" size={18} color="#007a5a" />
83
+ </Pressable>
84
+ </View>
85
+ </View>
86
+ ),
87
+ },
88
+ {
89
+ id: 'openai',
90
+ name: 'OpenAI Style',
91
+ description: 'Clean with subtle rounded corners',
92
+ preview: (
93
+ <View style={{ backgroundColor: '#fff' }}>
94
+ <View style={{ padding: 16 }}>
95
+ <View style={{
96
+ flexDirection: 'row',
97
+ alignItems: 'center',
98
+ backgroundColor: '#f7f7f8',
99
+ borderRadius: 24,
100
+ borderWidth: 1,
101
+ borderColor: '#e5e5e5',
102
+ paddingLeft: 16,
103
+ paddingRight: 4,
104
+ minHeight: 48,
105
+ }}>
106
+ <TextInput
107
+ style={{ flex: 1, fontSize: 16, color: '#000', paddingVertical: 12 }}
108
+ placeholder="Message ChatGPT..."
109
+ placeholderTextColor="#8e8e8e"
110
+ editable={false}
111
+ />
112
+ <Pressable style={{
113
+ width: 40,
114
+ height: 40,
115
+ borderRadius: 20,
116
+ backgroundColor: '#000',
117
+ alignItems: 'center',
118
+ justifyContent: 'center',
119
+ }}>
120
+ <Ionicons name="arrow-up" size={20} color="#fff" />
121
+ </Pressable>
122
+ </View>
123
+ </View>
124
+ <View style={{
125
+ flexDirection: 'row',
126
+ alignItems: 'center',
127
+ paddingHorizontal: 20,
128
+ paddingBottom: 12,
129
+ }}>
130
+ <Pressable style={{
131
+ paddingHorizontal: 14,
132
+ paddingVertical: 6,
133
+ borderRadius: 16,
134
+ backgroundColor: '#f0f0f0',
135
+ marginRight: 8,
136
+ }}>
137
+ <Ionicons name="attach" size={16} color="#666" />
138
+ </Pressable>
139
+ <Pressable style={{
140
+ paddingHorizontal: 14,
141
+ paddingVertical: 6,
142
+ borderRadius: 16,
143
+ backgroundColor: '#f0f0f0',
144
+ marginRight: 8,
145
+ }}>
146
+ <Ionicons name="image" size={16} color="#666" />
147
+ </Pressable>
148
+ <Pressable style={{
149
+ paddingHorizontal: 14,
150
+ paddingVertical: 6,
151
+ borderRadius: 16,
152
+ backgroundColor: '#f0f0f0',
153
+ }}>
154
+ <Text style={{ fontSize: 13, color: '#666' }}>GPT-4</Text>
155
+ </Pressable>
156
+ </View>
157
+ </View>
158
+ ),
159
+ },
160
+ {
161
+ id: 'discord',
162
+ name: 'Discord Style',
163
+ description: 'Dark mode with attachment button',
164
+ preview: (
165
+ <View style={{ backgroundColor: '#36393f' }}>
166
+ <View style={{ padding: 16 }}>
167
+ <View style={{
168
+ flexDirection: 'row',
169
+ alignItems: 'center',
170
+ backgroundColor: '#40444b',
171
+ borderRadius: 8,
172
+ paddingHorizontal: 16,
173
+ minHeight: 44,
174
+ }}>
175
+ <Pressable style={{ marginRight: 16 }}>
176
+ <Ionicons name="add-circle" size={24} color="#b9bbbe" />
177
+ </Pressable>
178
+ <TextInput
179
+ style={{ flex: 1, fontSize: 16, color: '#dcddde' }}
180
+ placeholder="Message #general"
181
+ placeholderTextColor="#72767d"
182
+ editable={false}
183
+ />
184
+ <Pressable style={{ marginLeft: 12 }}>
185
+ <MaterialIcons name="gif" size={24} color="#b9bbbe" />
186
+ </Pressable>
187
+ <Pressable style={{ marginLeft: 12 }}>
188
+ <Ionicons name="star" size={24} color="#b9bbbe" />
189
+ </Pressable>
190
+ </View>
191
+ </View>
192
+ <View style={{
193
+ flexDirection: 'row',
194
+ alignItems: 'center',
195
+ paddingHorizontal: 20,
196
+ paddingBottom: 12,
197
+ }}>
198
+ <Pressable style={{ padding: 4, marginRight: 8 }}>
199
+ <Feather name="gift" size={18} color="#b9bbbe" />
200
+ </Pressable>
201
+ <Pressable style={{ padding: 4, marginRight: 8 }}>
202
+ <MaterialIcons name="sticky-note-2" size={18} color="#b9bbbe" />
203
+ </Pressable>
204
+ <Pressable style={{ padding: 4 }}>
205
+ <Ionicons name="game-controller" size={18} color="#b9bbbe" />
206
+ </Pressable>
207
+ </View>
208
+ </View>
209
+ ),
210
+ },
211
+ {
212
+ id: 'whatsapp',
213
+ name: 'WhatsApp Style',
214
+ description: 'Green accents with circular buttons',
215
+ preview: (
216
+ <View style={{ backgroundColor: '#e5ddd5' }}>
217
+ <View style={{
218
+ flexDirection: 'row',
219
+ alignItems: 'flex-end',
220
+ padding: 8,
221
+ }}>
222
+ <View style={{
223
+ flex: 1,
224
+ flexDirection: 'row',
225
+ alignItems: 'center',
226
+ backgroundColor: '#fff',
227
+ borderRadius: 25,
228
+ paddingHorizontal: 12,
229
+ marginRight: 8,
230
+ minHeight: 42,
231
+ }}>
232
+ <Pressable style={{ marginRight: 8 }}>
233
+ <Ionicons name="star-outline" size={24} color="#51585c" />
234
+ </Pressable>
235
+ <TextInput
236
+ style={{ flex: 1, fontSize: 16, color: '#000' }}
237
+ placeholder="Type a message"
238
+ placeholderTextColor="#999"
239
+ editable={false}
240
+ />
241
+ <Pressable style={{ marginLeft: 8 }}>
242
+ <Ionicons name="attach" size={24} color="#51585c" />
243
+ </Pressable>
244
+ <Pressable style={{ marginLeft: 8 }}>
245
+ <Ionicons name="camera" size={24} color="#51585c" />
246
+ </Pressable>
247
+ </View>
248
+ <Pressable style={{
249
+ width: 48,
250
+ height: 48,
251
+ borderRadius: 24,
252
+ backgroundColor: '#25d366',
253
+ alignItems: 'center',
254
+ justifyContent: 'center',
255
+ }}>
256
+ <Ionicons name="mic" size={24} color="#fff" />
257
+ </Pressable>
258
+ </View>
259
+ <View style={{
260
+ flexDirection: 'row',
261
+ alignItems: 'center',
262
+ paddingHorizontal: 12,
263
+ paddingBottom: 8,
264
+ }}>
265
+ <Pressable style={{
266
+ paddingHorizontal: 12,
267
+ paddingVertical: 4,
268
+ backgroundColor: 'rgba(0,0,0,0.05)',
269
+ borderRadius: 12,
270
+ marginRight: 6,
271
+ }}>
272
+ <Text style={{ fontSize: 12, color: '#667781' }}>Photo</Text>
273
+ </Pressable>
274
+ <Pressable style={{
275
+ paddingHorizontal: 12,
276
+ paddingVertical: 4,
277
+ backgroundColor: 'rgba(0,0,0,0.05)',
278
+ borderRadius: 12,
279
+ marginRight: 6,
280
+ }}>
281
+ <Text style={{ fontSize: 12, color: '#667781' }}>Video</Text>
282
+ </Pressable>
283
+ <Pressable style={{
284
+ paddingHorizontal: 12,
285
+ paddingVertical: 4,
286
+ backgroundColor: 'rgba(0,0,0,0.05)',
287
+ borderRadius: 12,
288
+ }}>
289
+ <Text style={{ fontSize: 12, color: '#667781' }}>Document</Text>
290
+ </Pressable>
291
+ </View>
292
+ </View>
293
+ ),
294
+ },
295
+ {
296
+ id: 'telegram',
297
+ name: 'Telegram Style',
298
+ description: 'Flat design with sharp corners',
299
+ preview: (
300
+ <View style={{ backgroundColor: '#fff' }}>
301
+ <View style={{
302
+ flexDirection: 'row',
303
+ alignItems: 'center',
304
+ padding: 8,
305
+ borderTopWidth: 1,
306
+ borderTopColor: '#e0e0e0',
307
+ }}>
308
+ <Pressable style={{ padding: 8 }}>
309
+ <Ionicons name="attach" size={24} color="#8e8e8e" />
310
+ </Pressable>
311
+ <View style={{
312
+ flex: 1,
313
+ backgroundColor: '#f0f0f0',
314
+ borderRadius: 18,
315
+ paddingHorizontal: 16,
316
+ paddingVertical: 8,
317
+ marginHorizontal: 8,
318
+ }}>
319
+ <TextInput
320
+ style={{ fontSize: 16, color: '#000' }}
321
+ placeholder="Message"
322
+ placeholderTextColor="#999"
323
+ editable={false}
324
+ />
325
+ </View>
326
+ <Pressable style={{ padding: 8 }}>
327
+ <Ionicons name="mic" size={24} color="#0088cc" />
328
+ </Pressable>
329
+ <Pressable style={{
330
+ padding: 8,
331
+ backgroundColor: '#0088cc',
332
+ borderRadius: 20,
333
+ }}>
334
+ <Ionicons name="send" size={20} color="#fff" />
335
+ </Pressable>
336
+ </View>
337
+ <View style={{
338
+ flexDirection: 'row',
339
+ alignItems: 'center',
340
+ paddingHorizontal: 16,
341
+ paddingBottom: 8,
342
+ }}>
343
+ <Pressable style={{ padding: 4, marginRight: 12 }}>
344
+ <Ionicons name="star-outline" size={20} color="#8e8e8e" />
345
+ </Pressable>
346
+ <Pressable style={{ padding: 4, marginRight: 12 }}>
347
+ <MaterialIcons name="sticky-note-2" size={20} color="#8e8e8e" />
348
+ </Pressable>
349
+ <Pressable style={{ padding: 4, marginRight: 12 }}>
350
+ <Ionicons name="location" size={20} color="#8e8e8e" />
351
+ </Pressable>
352
+ <Pressable style={{ padding: 4 }}>
353
+ <Ionicons name="timer-outline" size={20} color="#8e8e8e" />
354
+ </Pressable>
355
+ </View>
356
+ </View>
357
+ ),
358
+ },
359
+ {
360
+ id: 'linear',
361
+ name: 'Linear Style',
362
+ description: 'Modern with subtle gradients',
363
+ preview: (
364
+ <View style={{ backgroundColor: '#fcfcfc' }}>
365
+ <View style={{ padding: 16 }}>
366
+ <View style={{
367
+ flexDirection: 'row',
368
+ alignItems: 'center',
369
+ backgroundColor: '#fff',
370
+ borderRadius: 8,
371
+ borderWidth: 1,
372
+ borderColor: '#e1e4e8',
373
+ paddingLeft: 16,
374
+ paddingRight: 8,
375
+ minHeight: 42,
376
+ }}>
377
+ <TextInput
378
+ style={{ flex: 1, fontSize: 15, color: '#24292e' }}
379
+ placeholder="Add a comment..."
380
+ placeholderTextColor="#6a737d"
381
+ editable={false}
382
+ />
383
+ <Pressable style={{
384
+ paddingHorizontal: 16,
385
+ paddingVertical: 6,
386
+ backgroundColor: '#5e6ad2',
387
+ borderRadius: 6,
388
+ }}>
389
+ <Text style={{ color: '#fff', fontSize: 14, fontWeight: '600' }}>
390
+ Comment
391
+ </Text>
392
+ </Pressable>
393
+ </View>
394
+ </View>
395
+ <View style={{
396
+ flexDirection: 'row',
397
+ alignItems: 'center',
398
+ paddingHorizontal: 20,
399
+ paddingBottom: 12,
400
+ }}>
401
+ <Pressable style={{ marginRight: 16 }}>
402
+ <Ionicons name="at" size={18} color="#6a737d" />
403
+ </Pressable>
404
+ <Pressable style={{ marginRight: 16 }}>
405
+ <MaterialIcons name="tag" size={18} color="#6a737d" />
406
+ </Pressable>
407
+ <Pressable style={{ marginRight: 16 }}>
408
+ <Ionicons name="code-slash" size={18} color="#6a737d" />
409
+ </Pressable>
410
+ <Pressable>
411
+ <Ionicons name="attach" size={18} color="#6a737d" />
412
+ </Pressable>
413
+ </View>
414
+ </View>
415
+ ),
416
+ },
417
+ {
418
+ id: 'notion',
419
+ name: 'Notion Style',
420
+ description: 'Minimal with "/" command hint',
421
+ preview: (
422
+ <View style={{ backgroundColor: '#fff' }}>
423
+ <View style={{ padding: 16 }}>
424
+ <View style={{
425
+ borderRadius: 3,
426
+ borderWidth: 1,
427
+ borderColor: 'rgba(55, 53, 47, 0.16)',
428
+ paddingHorizontal: 12,
429
+ paddingVertical: 8,
430
+ }}>
431
+ <TextInput
432
+ style={{ fontSize: 16, color: '#37352f' }}
433
+ placeholder="Type '/' for commands"
434
+ placeholderTextColor="rgba(55, 53, 47, 0.4)"
435
+ editable={false}
436
+ />
437
+ </View>
438
+ </View>
439
+ <View style={{
440
+ flexDirection: 'row',
441
+ alignItems: 'center',
442
+ paddingHorizontal: 20,
443
+ paddingBottom: 12,
444
+ }}>
445
+ <Pressable style={{
446
+ paddingHorizontal: 10,
447
+ paddingVertical: 4,
448
+ backgroundColor: '#f7f6f3',
449
+ borderRadius: 3,
450
+ marginRight: 8,
451
+ }}>
452
+ <Text style={{ fontSize: 12, color: '#787774' }}>Add icon</Text>
453
+ </Pressable>
454
+ <Pressable style={{
455
+ paddingHorizontal: 10,
456
+ paddingVertical: 4,
457
+ backgroundColor: '#f7f6f3',
458
+ borderRadius: 3,
459
+ marginRight: 8,
460
+ }}>
461
+ <Text style={{ fontSize: 12, color: '#787774' }}>Add cover</Text>
462
+ </Pressable>
463
+ <Pressable style={{
464
+ paddingHorizontal: 10,
465
+ paddingVertical: 4,
466
+ backgroundColor: '#f7f6f3',
467
+ borderRadius: 3,
468
+ }}>
469
+ <Text style={{ fontSize: 12, color: '#787774' }}>Add comment</Text>
470
+ </Pressable>
471
+ </View>
472
+ </View>
473
+ ),
474
+ },
475
+ {
476
+ id: 'github',
477
+ name: 'GitHub Style',
478
+ description: 'Developer-focused with markdown hint',
479
+ preview: (
480
+ <View style={{ backgroundColor: '#f6f8fa' }}>
481
+ <View style={{ padding: 16 }}>
482
+ <View style={{
483
+ backgroundColor: '#fff',
484
+ borderRadius: 6,
485
+ borderWidth: 1,
486
+ borderColor: '#d1d5da',
487
+ padding: 8,
488
+ }}>
489
+ <View style={{
490
+ flexDirection: 'row',
491
+ marginBottom: 8,
492
+ paddingBottom: 8,
493
+ borderBottomWidth: 1,
494
+ borderBottomColor: '#e1e4e8',
495
+ }}>
496
+ <Pressable style={{ marginRight: 16 }}>
497
+ <MaterialIcons name="format-bold" size={18} color="#586069" />
498
+ </Pressable>
499
+ <Pressable style={{ marginRight: 16 }}>
500
+ <MaterialIcons name="format-italic" size={18} color="#586069" />
501
+ </Pressable>
502
+ <Pressable style={{ marginRight: 16 }}>
503
+ <MaterialIcons name="code" size={18} color="#586069" />
504
+ </Pressable>
505
+ <Pressable style={{ marginRight: 16 }}>
506
+ <MaterialIcons name="link" size={18} color="#586069" />
507
+ </Pressable>
508
+ <Pressable style={{ marginRight: 16 }}>
509
+ <MaterialIcons name="format-list-bulleted" size={18} color="#586069" />
510
+ </Pressable>
511
+ <Pressable>
512
+ <MaterialIcons name="format-list-numbered" size={18} color="#586069" />
513
+ </Pressable>
514
+ </View>
515
+ <TextInput
516
+ style={{ fontSize: 14, color: '#24292e', minHeight: 60 }}
517
+ placeholder="Leave a comment"
518
+ placeholderTextColor="#6a737d"
519
+ multiline
520
+ editable={false}
521
+ />
522
+ </View>
523
+ </View>
524
+ <View style={{
525
+ flexDirection: 'row',
526
+ alignItems: 'center',
527
+ justifyContent: 'space-between',
528
+ paddingHorizontal: 20,
529
+ paddingBottom: 12,
530
+ }}>
531
+ <Text style={{ fontSize: 12, color: '#6a737d' }}>
532
+ Markdown is supported
533
+ </Text>
534
+ <View style={{ flexDirection: 'row' }}>
535
+ <Pressable style={{
536
+ paddingHorizontal: 12,
537
+ paddingVertical: 6,
538
+ backgroundColor: '#fafbfc',
539
+ borderRadius: 6,
540
+ borderWidth: 1,
541
+ borderColor: '#d1d5da',
542
+ marginRight: 8,
543
+ }}>
544
+ <Text style={{ fontSize: 14, color: '#24292e' }}>Cancel</Text>
545
+ </Pressable>
546
+ <Pressable style={{
547
+ paddingHorizontal: 12,
548
+ paddingVertical: 6,
549
+ backgroundColor: '#2ea44f',
550
+ borderRadius: 6,
551
+ }}>
552
+ <Text style={{ fontSize: 14, color: '#fff', fontWeight: '600' }}>Comment</Text>
553
+ </Pressable>
554
+ </View>
555
+ </View>
556
+ </View>
557
+ ),
558
+ },
559
+ {
560
+ id: 'imessage',
561
+ name: 'Apple Messages',
562
+ description: 'iOS native messaging style',
563
+ preview: (
564
+ <View style={{ backgroundColor: '#fff' }}>
565
+ <View style={{
566
+ flexDirection: 'row',
567
+ alignItems: 'flex-end',
568
+ padding: 8,
569
+ }}>
570
+ <Pressable style={{
571
+ width: 34,
572
+ height: 34,
573
+ borderRadius: 17,
574
+ backgroundColor: '#007AFF',
575
+ alignItems: 'center',
576
+ justifyContent: 'center',
577
+ marginRight: 8,
578
+ }}>
579
+ <Ionicons name="camera" size={20} color="#fff" />
580
+ </Pressable>
581
+ <View style={{
582
+ flex: 1,
583
+ backgroundColor: '#e5e5ea',
584
+ borderRadius: 18,
585
+ paddingHorizontal: 12,
586
+ paddingVertical: 8,
587
+ marginRight: 8,
588
+ minHeight: 34,
589
+ }}>
590
+ <TextInput
591
+ style={{ fontSize: 17, color: '#000' }}
592
+ placeholder="iMessage"
593
+ placeholderTextColor="#8e8e93"
594
+ editable={false}
595
+ />
596
+ </View>
597
+ <Pressable style={{
598
+ width: 34,
599
+ height: 34,
600
+ borderRadius: 17,
601
+ backgroundColor: '#007AFF',
602
+ alignItems: 'center',
603
+ justifyContent: 'center',
604
+ }}>
605
+ <Ionicons name="arrow-up" size={20} color="#fff" />
606
+ </Pressable>
607
+ </View>
608
+ <View style={{
609
+ flexDirection: 'row',
610
+ alignItems: 'center',
611
+ paddingHorizontal: 12,
612
+ paddingBottom: 8,
613
+ }}>
614
+ <Pressable style={{ padding: 6, marginRight: 4 }}>
615
+ <Ionicons name="apps" size={22} color="#8e8e93" />
616
+ </Pressable>
617
+ <Pressable style={{ padding: 6, marginRight: 4 }}>
618
+ <Ionicons name="images" size={22} color="#8e8e93" />
619
+ </Pressable>
620
+ <Pressable style={{ padding: 6, marginRight: 4 }}>
621
+ <MaterialIcons name="sticky-note-2" size={22} color="#8e8e93" />
622
+ </Pressable>
623
+ <Pressable style={{ padding: 6 }}>
624
+ <Ionicons name="musical-notes" size={22} color="#8e8e93" />
625
+ </Pressable>
626
+ </View>
627
+ </View>
628
+ ),
629
+ },
630
+ {
631
+ id: 'material',
632
+ name: 'Material Design',
633
+ description: 'Google\'s design language',
634
+ preview: (
635
+ <View style={{ backgroundColor: '#fff' }}>
636
+ <View style={{ padding: 16 }}>
637
+ <View style={{
638
+ borderBottomWidth: 2,
639
+ borderBottomColor: '#1976d2',
640
+ paddingBottom: 8,
641
+ }}>
642
+ <Text style={{
643
+ fontSize: 12,
644
+ color: '#1976d2',
645
+ marginBottom: 4,
646
+ }}>
647
+ Message
648
+ </Text>
649
+ <View style={{
650
+ flexDirection: 'row',
651
+ alignItems: 'center',
652
+ }}>
653
+ <TextInput
654
+ style={{ flex: 1, fontSize: 16, color: '#000' }}
655
+ placeholder="Type your message"
656
+ placeholderTextColor="#999"
657
+ editable={false}
658
+ />
659
+ <Pressable style={{ marginLeft: 8 }}>
660
+ <MaterialIcons name="send" size={24} color="#1976d2" />
661
+ </Pressable>
662
+ </View>
663
+ </View>
664
+ </View>
665
+ <View style={{
666
+ flexDirection: 'row',
667
+ alignItems: 'center',
668
+ paddingHorizontal: 20,
669
+ paddingBottom: 12,
670
+ }}>
671
+ <Pressable style={{
672
+ width: 40,
673
+ height: 40,
674
+ borderRadius: 20,
675
+ backgroundColor: '#f5f5f5',
676
+ alignItems: 'center',
677
+ justifyContent: 'center',
678
+ marginRight: 12,
679
+ }}>
680
+ <Ionicons name="attach" size={20} color="#757575" />
681
+ </Pressable>
682
+ <Pressable style={{
683
+ width: 40,
684
+ height: 40,
685
+ borderRadius: 20,
686
+ backgroundColor: '#f5f5f5',
687
+ alignItems: 'center',
688
+ justifyContent: 'center',
689
+ marginRight: 12,
690
+ }}>
691
+ <Ionicons name="image" size={20} color="#757575" />
692
+ </Pressable>
693
+ <Pressable style={{
694
+ width: 40,
695
+ height: 40,
696
+ borderRadius: 20,
697
+ backgroundColor: '#f5f5f5',
698
+ alignItems: 'center',
699
+ justifyContent: 'center',
700
+ marginRight: 12,
701
+ }}>
702
+ <Ionicons name="mic" size={20} color="#757575" />
703
+ </Pressable>
704
+ <Pressable style={{
705
+ width: 40,
706
+ height: 40,
707
+ borderRadius: 20,
708
+ backgroundColor: '#f5f5f5',
709
+ alignItems: 'center',
710
+ justifyContent: 'center',
711
+ }}>
712
+ <Ionicons name="location" size={20} color="#757575" />
713
+ </Pressable>
714
+ </View>
715
+ </View>
716
+ ),
717
+ },
718
+ {
719
+ id: 'brutalist',
720
+ name: 'Brutalist Style',
721
+ description: 'Bold borders and high contrast',
722
+ preview: (
723
+ <View style={{ backgroundColor: '#ffeb3b' }}>
724
+ <View style={{ padding: 16 }}>
725
+ <View style={{
726
+ flexDirection: 'row',
727
+ alignItems: 'center',
728
+ backgroundColor: '#fff',
729
+ borderWidth: 3,
730
+ borderColor: '#000',
731
+ paddingHorizontal: 16,
732
+ minHeight: 56,
733
+ }}>
734
+ <TextInput
735
+ style={{
736
+ flex: 1,
737
+ fontSize: 18,
738
+ color: '#000',
739
+ fontWeight: 'bold',
740
+ }}
741
+ placeholder="TYPE HERE!"
742
+ placeholderTextColor="#666"
743
+ editable={false}
744
+ />
745
+ <Pressable style={{
746
+ backgroundColor: '#000',
747
+ paddingHorizontal: 20,
748
+ paddingVertical: 10,
749
+ marginLeft: 8,
750
+ }}>
751
+ <Text style={{
752
+ color: '#fff',
753
+ fontSize: 16,
754
+ fontWeight: 'bold'
755
+ }}>
756
+ SEND
757
+ </Text>
758
+ </Pressable>
759
+ </View>
760
+ </View>
761
+ <View style={{
762
+ flexDirection: 'row',
763
+ alignItems: 'center',
764
+ paddingHorizontal: 20,
765
+ paddingBottom: 12,
766
+ }}>
767
+ <Pressable style={{
768
+ backgroundColor: '#000',
769
+ borderWidth: 2,
770
+ borderColor: '#000',
771
+ paddingHorizontal: 16,
772
+ paddingVertical: 8,
773
+ marginRight: 8,
774
+ }}>
775
+ <Text style={{ color: '#fff', fontWeight: 'bold' }}>BOLD</Text>
776
+ </Pressable>
777
+ <Pressable style={{
778
+ backgroundColor: '#fff',
779
+ borderWidth: 2,
780
+ borderColor: '#000',
781
+ paddingHorizontal: 16,
782
+ paddingVertical: 8,
783
+ marginRight: 8,
784
+ }}>
785
+ <Text style={{ color: '#000', fontWeight: 'bold' }}>ITALIC</Text>
786
+ </Pressable>
787
+ <Pressable style={{
788
+ backgroundColor: '#f44336',
789
+ borderWidth: 2,
790
+ borderColor: '#000',
791
+ paddingHorizontal: 16,
792
+ paddingVertical: 8,
793
+ }}>
794
+ <Text style={{ color: '#fff', fontWeight: 'bold' }}>LINK</Text>
795
+ </Pressable>
796
+ </View>
797
+ </View>
798
+ ),
799
+ },
800
+ {
801
+ id: 'glassmorphism',
802
+ name: 'Glassmorphism',
803
+ description: 'Translucent with blur effects',
804
+ preview: (
805
+ <View style={{ backgroundColor: '#1a1a2e' }}>
806
+ <View style={{ padding: 16 }}>
807
+ <View style={{
808
+ flexDirection: 'row',
809
+ alignItems: 'center',
810
+ backgroundColor: 'rgba(255, 255, 255, 0.1)',
811
+ borderRadius: 16,
812
+ borderWidth: 1,
813
+ borderColor: 'rgba(255, 255, 255, 0.2)',
814
+ paddingHorizontal: 16,
815
+ paddingVertical: 12,
816
+ }}>
817
+ <TextInput
818
+ style={{
819
+ flex: 1,
820
+ fontSize: 16,
821
+ color: '#fff',
822
+ }}
823
+ placeholder="Type a message..."
824
+ placeholderTextColor="rgba(255, 255, 255, 0.5)"
825
+ editable={false}
826
+ />
827
+ <Pressable style={{
828
+ width: 40,
829
+ height: 40,
830
+ borderRadius: 20,
831
+ backgroundColor: 'rgba(255, 255, 255, 0.2)',
832
+ alignItems: 'center',
833
+ justifyContent: 'center',
834
+ marginLeft: 12,
835
+ }}>
836
+ <Ionicons name="send" size={20} color="#fff" />
837
+ </Pressable>
838
+ </View>
839
+ </View>
840
+ <View style={{
841
+ flexDirection: 'row',
842
+ alignItems: 'center',
843
+ paddingHorizontal: 20,
844
+ paddingBottom: 12,
845
+ }}>
846
+ <Pressable style={{
847
+ width: 36,
848
+ height: 36,
849
+ borderRadius: 18,
850
+ backgroundColor: 'rgba(255, 255, 255, 0.1)',
851
+ borderWidth: 1,
852
+ borderColor: 'rgba(255, 255, 255, 0.2)',
853
+ alignItems: 'center',
854
+ justifyContent: 'center',
855
+ marginRight: 12,
856
+ }}>
857
+ <Ionicons name="attach" size={18} color="rgba(255, 255, 255, 0.8)" />
858
+ </Pressable>
859
+ <Pressable style={{
860
+ width: 36,
861
+ height: 36,
862
+ borderRadius: 18,
863
+ backgroundColor: 'rgba(255, 255, 255, 0.1)',
864
+ borderWidth: 1,
865
+ borderColor: 'rgba(255, 255, 255, 0.2)',
866
+ alignItems: 'center',
867
+ justifyContent: 'center',
868
+ marginRight: 12,
869
+ }}>
870
+ <Ionicons name="image" size={18} color="rgba(255, 255, 255, 0.8)" />
871
+ </Pressable>
872
+ <Pressable style={{
873
+ width: 36,
874
+ height: 36,
875
+ borderRadius: 18,
876
+ backgroundColor: 'rgba(255, 255, 255, 0.1)',
877
+ borderWidth: 1,
878
+ borderColor: 'rgba(255, 255, 255, 0.2)',
879
+ alignItems: 'center',
880
+ justifyContent: 'center',
881
+ }}>
882
+ <Ionicons name="sparkles" size={18} color="rgba(255, 255, 255, 0.8)" />
883
+ </Pressable>
884
+ </View>
885
+ </View>
886
+ ),
887
+ },
888
+ {
889
+ id: 'spotify',
890
+ name: 'Spotify Style',
891
+ description: 'Music-focused with playback controls',
892
+ preview: (
893
+ <View style={{ backgroundColor: '#121212' }}>
894
+ <View style={{ padding: 16 }}>
895
+ <View style={{
896
+ flexDirection: 'row',
897
+ alignItems: 'center',
898
+ backgroundColor: '#282828',
899
+ borderRadius: 24,
900
+ paddingHorizontal: 16,
901
+ paddingVertical: 12,
902
+ }}>
903
+ <Ionicons name="search" size={20} color="#b3b3b3" />
904
+ <TextInput
905
+ style={{
906
+ flex: 1,
907
+ fontSize: 16,
908
+ color: '#fff',
909
+ marginLeft: 12,
910
+ }}
911
+ placeholder="Search for songs..."
912
+ placeholderTextColor="#535353"
913
+ editable={false}
914
+ />
915
+ <Pressable style={{ marginLeft: 12 }}>
916
+ <Ionicons name="mic" size={20} color="#1db954" />
917
+ </Pressable>
918
+ </View>
919
+ </View>
920
+ <View style={{
921
+ flexDirection: 'row',
922
+ alignItems: 'center',
923
+ justifyContent: 'center',
924
+ paddingHorizontal: 20,
925
+ paddingBottom: 12,
926
+ }}>
927
+ <Pressable style={{ padding: 12 }}>
928
+ <Ionicons name="shuffle" size={24} color="#b3b3b3" />
929
+ </Pressable>
930
+ <Pressable style={{ padding: 12 }}>
931
+ <Ionicons name="play-skip-back" size={24} color="#fff" />
932
+ </Pressable>
933
+ <Pressable style={{
934
+ width: 56,
935
+ height: 56,
936
+ borderRadius: 28,
937
+ backgroundColor: '#1db954',
938
+ alignItems: 'center',
939
+ justifyContent: 'center',
940
+ marginHorizontal: 16,
941
+ }}>
942
+ <Ionicons name="play" size={28} color="#000" style={{ marginLeft: 2 }} />
943
+ </Pressable>
944
+ <Pressable style={{ padding: 12 }}>
945
+ <Ionicons name="play-skip-forward" size={24} color="#fff" />
946
+ </Pressable>
947
+ <Pressable style={{ padding: 12 }}>
948
+ <Ionicons name="repeat" size={24} color="#1db954" />
949
+ </Pressable>
950
+ </View>
951
+ </View>
952
+ ),
953
+ },
954
+ {
955
+ id: 'figma',
956
+ name: 'Figma Style',
957
+ description: 'Design tool with collaborative features',
958
+ preview: (
959
+ <View style={{ backgroundColor: '#2c2c2c' }}>
960
+ <View style={{ padding: 16 }}>
961
+ <View style={{
962
+ flexDirection: 'row',
963
+ alignItems: 'center',
964
+ backgroundColor: '#383838',
965
+ borderRadius: 8,
966
+ paddingHorizontal: 12,
967
+ paddingVertical: 10,
968
+ }}>
969
+ <TextInput
970
+ style={{ flex: 1, fontSize: 14, color: '#fff' }}
971
+ placeholder="Add a comment..."
972
+ placeholderTextColor="#a0a0a0"
973
+ editable={false}
974
+ />
975
+ <Pressable style={{
976
+ paddingHorizontal: 16,
977
+ paddingVertical: 6,
978
+ backgroundColor: '#0d99ff',
979
+ borderRadius: 6,
980
+ marginLeft: 8,
981
+ }}>
982
+ <Text style={{ color: '#fff', fontSize: 14, fontWeight: '600' }}>
983
+ Post
984
+ </Text>
985
+ </Pressable>
986
+ </View>
987
+ </View>
988
+ <View style={{
989
+ flexDirection: 'row',
990
+ alignItems: 'center',
991
+ justifyContent: 'space-between',
992
+ paddingHorizontal: 20,
993
+ paddingBottom: 12,
994
+ }}>
995
+ <View style={{ flexDirection: 'row' }}>
996
+ <Pressable style={{
997
+ width: 28,
998
+ height: 28,
999
+ borderRadius: 14,
1000
+ backgroundColor: '#ff7262',
1001
+ marginRight: -8,
1002
+ borderWidth: 2,
1003
+ borderColor: '#2c2c2c',
1004
+ }} />
1005
+ <Pressable style={{
1006
+ width: 28,
1007
+ height: 28,
1008
+ borderRadius: 14,
1009
+ backgroundColor: '#0d99ff',
1010
+ marginRight: -8,
1011
+ borderWidth: 2,
1012
+ borderColor: '#2c2c2c',
1013
+ zIndex: -1,
1014
+ }} />
1015
+ <Pressable style={{
1016
+ width: 28,
1017
+ height: 28,
1018
+ borderRadius: 14,
1019
+ backgroundColor: '#1abcfe',
1020
+ borderWidth: 2,
1021
+ borderColor: '#2c2c2c',
1022
+ zIndex: -2,
1023
+ }} />
1024
+ <Text style={{
1025
+ color: '#a0a0a0',
1026
+ fontSize: 12,
1027
+ marginLeft: 12,
1028
+ alignSelf: 'center',
1029
+ }}>
1030
+ 3 people here
1031
+ </Text>
1032
+ </View>
1033
+ <View style={{ flexDirection: 'row' }}>
1034
+ <Pressable style={{ padding: 4 }}>
1035
+ <Ionicons name="star-outline" size={20} color="#a0a0a0" />
1036
+ </Pressable>
1037
+ <Pressable style={{ padding: 4, marginLeft: 8 }}>
1038
+ <Ionicons name="at" size={20} color="#a0a0a0" />
1039
+ </Pressable>
1040
+ </View>
1041
+ </View>
1042
+ </View>
1043
+ ),
1044
+ },
1045
+ {
1046
+ id: 'twitter',
1047
+ name: 'Twitter/X Style',
1048
+ description: 'Microblogging with character limit',
1049
+ preview: (
1050
+ <View style={{ backgroundColor: '#000' }}>
1051
+ <View style={{ padding: 16 }}>
1052
+ <View style={{
1053
+ borderRadius: 16,
1054
+ borderWidth: 1,
1055
+ borderColor: '#333',
1056
+ padding: 12,
1057
+ }}>
1058
+ <TextInput
1059
+ style={{
1060
+ fontSize: 18,
1061
+ color: '#fff',
1062
+ minHeight: 60,
1063
+ }}
1064
+ placeholder="What's happening?"
1065
+ placeholderTextColor="#71767b"
1066
+ multiline
1067
+ editable={false}
1068
+ />
1069
+ <View style={{
1070
+ flexDirection: 'row',
1071
+ alignItems: 'center',
1072
+ justifyContent: 'space-between',
1073
+ marginTop: 12,
1074
+ }}>
1075
+ <View style={{ flexDirection: 'row' }}>
1076
+ <Pressable style={{ marginRight: 16 }}>
1077
+ <Ionicons name="image-outline" size={20} color="#1d9bf0" />
1078
+ </Pressable>
1079
+ <Pressable style={{ marginRight: 16 }}>
1080
+ <MaterialIcons name="gif" size={20} color="#1d9bf0" />
1081
+ </Pressable>
1082
+ <Pressable style={{ marginRight: 16 }}>
1083
+ <Ionicons name="stats-chart" size={20} color="#1d9bf0" />
1084
+ </Pressable>
1085
+ <Pressable>
1086
+ <Ionicons name="star-outline" size={20} color="#1d9bf0" />
1087
+ </Pressable>
1088
+ </View>
1089
+ <View style={{ flexDirection: 'row', alignItems: 'center' }}>
1090
+ <Text style={{ color: '#71767b', fontSize: 14, marginRight: 12 }}>
1091
+ 0/280
1092
+ </Text>
1093
+ <Pressable style={{
1094
+ paddingHorizontal: 16,
1095
+ paddingVertical: 8,
1096
+ backgroundColor: '#1d9bf0',
1097
+ borderRadius: 18,
1098
+ }}>
1099
+ <Text style={{ color: '#fff', fontSize: 15, fontWeight: '600' }}>
1100
+ Post
1101
+ </Text>
1102
+ </Pressable>
1103
+ </View>
1104
+ </View>
1105
+ </View>
1106
+ </View>
1107
+ <View style={{
1108
+ flexDirection: 'row',
1109
+ alignItems: 'center',
1110
+ paddingHorizontal: 20,
1111
+ paddingBottom: 12,
1112
+ }}>
1113
+ <Pressable style={{
1114
+ paddingHorizontal: 12,
1115
+ paddingVertical: 4,
1116
+ borderRadius: 12,
1117
+ borderWidth: 1,
1118
+ borderColor: '#333',
1119
+ marginRight: 8,
1120
+ }}>
1121
+ <Text style={{ fontSize: 12, color: '#1d9bf0' }}>Everyone</Text>
1122
+ </Pressable>
1123
+ <Pressable style={{
1124
+ paddingHorizontal: 12,
1125
+ paddingVertical: 4,
1126
+ borderRadius: 12,
1127
+ borderWidth: 1,
1128
+ borderColor: '#333',
1129
+ marginRight: 8,
1130
+ }}>
1131
+ <Text style={{ fontSize: 12, color: '#71767b' }}>Location</Text>
1132
+ </Pressable>
1133
+ <Pressable style={{
1134
+ paddingHorizontal: 12,
1135
+ paddingVertical: 4,
1136
+ borderRadius: 12,
1137
+ borderWidth: 1,
1138
+ borderColor: '#333',
1139
+ }}>
1140
+ <Text style={{ fontSize: 12, color: '#71767b' }}>Schedule</Text>
1141
+ </Pressable>
1142
+ </View>
1143
+ </View>
1144
+ ),
1145
+ },
1146
+ {
1147
+ id: 'arc',
1148
+ name: 'Arc Browser Style',
1149
+ description: 'Minimal with command palette',
1150
+ preview: (
1151
+ <View style={{ backgroundColor: '#f6f6f6' }}>
1152
+ <View style={{ padding: 16 }}>
1153
+ <View style={{
1154
+ flexDirection: 'row',
1155
+ alignItems: 'center',
1156
+ backgroundColor: '#fff',
1157
+ borderRadius: 12,
1158
+ paddingHorizontal: 16,
1159
+ paddingVertical: 12,
1160
+ ...Platform.select({
1161
+ ios: {
1162
+ shadowColor: '#000',
1163
+ shadowOffset: { width: 0, height: 2 },
1164
+ shadowOpacity: 0.05,
1165
+ shadowRadius: 8,
1166
+ },
1167
+ android: {
1168
+ elevation: 2,
1169
+ },
1170
+ }),
1171
+ }}>
1172
+ <Ionicons name="search" size={18} color="#999" />
1173
+ <TextInput
1174
+ style={{
1175
+ flex: 1,
1176
+ fontSize: 15,
1177
+ color: '#000',
1178
+ marginLeft: 12,
1179
+ }}
1180
+ placeholder="Search or enter URL..."
1181
+ placeholderTextColor="#999"
1182
+ editable={false}
1183
+ />
1184
+ <Pressable style={{
1185
+ paddingHorizontal: 8,
1186
+ paddingVertical: 4,
1187
+ backgroundColor: '#f0f0f0',
1188
+ borderRadius: 6,
1189
+ }}>
1190
+ <Text style={{ fontSize: 12, color: '#666' }}>⌘K</Text>
1191
+ </Pressable>
1192
+ </View>
1193
+ </View>
1194
+ <View style={{
1195
+ flexDirection: 'row',
1196
+ alignItems: 'center',
1197
+ justifyContent: 'center',
1198
+ paddingHorizontal: 20,
1199
+ paddingBottom: 12,
1200
+ }}>
1201
+ <Pressable style={{
1202
+ flexDirection: 'row',
1203
+ alignItems: 'center',
1204
+ paddingHorizontal: 12,
1205
+ paddingVertical: 6,
1206
+ backgroundColor: '#e8e8e8',
1207
+ borderRadius: 8,
1208
+ marginRight: 8,
1209
+ }}>
1210
+ <View style={{
1211
+ width: 8,
1212
+ height: 8,
1213
+ borderRadius: 4,
1214
+ backgroundColor: '#ff5f57',
1215
+ marginRight: 6,
1216
+ }} />
1217
+ <Text style={{ fontSize: 13, color: '#333' }}>Space 1</Text>
1218
+ </Pressable>
1219
+ <Pressable style={{
1220
+ flexDirection: 'row',
1221
+ alignItems: 'center',
1222
+ paddingHorizontal: 12,
1223
+ paddingVertical: 6,
1224
+ backgroundColor: '#e8e8e8',
1225
+ borderRadius: 8,
1226
+ marginRight: 8,
1227
+ }}>
1228
+ <View style={{
1229
+ width: 8,
1230
+ height: 8,
1231
+ borderRadius: 4,
1232
+ backgroundColor: '#ffbd2e',
1233
+ marginRight: 6,
1234
+ }} />
1235
+ <Text style={{ fontSize: 13, color: '#333' }}>Space 2</Text>
1236
+ </Pressable>
1237
+ <Pressable style={{
1238
+ flexDirection: 'row',
1239
+ alignItems: 'center',
1240
+ paddingHorizontal: 12,
1241
+ paddingVertical: 6,
1242
+ backgroundColor: '#e8e8e8',
1243
+ borderRadius: 8,
1244
+ }}>
1245
+ <View style={{
1246
+ width: 8,
1247
+ height: 8,
1248
+ borderRadius: 4,
1249
+ backgroundColor: '#28ca42',
1250
+ marginRight: 6,
1251
+ }} />
1252
+ <Text style={{ fontSize: 13, color: '#333' }}>Space 3</Text>
1253
+ </Pressable>
1254
+ </View>
1255
+ </View>
1256
+ ),
1257
+ },
1258
+ {
1259
+ id: 'claude',
1260
+ name: 'Claude Style',
1261
+ description: 'AI assistant with artifacts',
1262
+ preview: (
1263
+ <View style={{ backgroundColor: '#f9f7f4' }}>
1264
+ <View style={{ padding: 16 }}>
1265
+ <View style={{
1266
+ backgroundColor: '#fff',
1267
+ borderRadius: 16,
1268
+ borderWidth: 1,
1269
+ borderColor: '#e5e3df',
1270
+ paddingHorizontal: 16,
1271
+ paddingVertical: 12,
1272
+ }}>
1273
+ <TextInput
1274
+ style={{
1275
+ fontSize: 16,
1276
+ color: '#000',
1277
+ minHeight: 40,
1278
+ }}
1279
+ placeholder="Ask Claude anything..."
1280
+ placeholderTextColor="#999"
1281
+ multiline
1282
+ editable={false}
1283
+ />
1284
+ <View style={{
1285
+ flexDirection: 'row',
1286
+ alignItems: 'center',
1287
+ justifyContent: 'space-between',
1288
+ marginTop: 8,
1289
+ }}>
1290
+ <View style={{ flexDirection: 'row' }}>
1291
+ <Pressable style={{ marginRight: 16 }}>
1292
+ <Ionicons name="attach" size={20} color="#666" />
1293
+ </Pressable>
1294
+ <Pressable>
1295
+ <Ionicons name="code-slash" size={20} color="#666" />
1296
+ </Pressable>
1297
+ </View>
1298
+ <Pressable style={{
1299
+ backgroundColor: '#d97706',
1300
+ paddingHorizontal: 16,
1301
+ paddingVertical: 8,
1302
+ borderRadius: 20,
1303
+ }}>
1304
+ <Ionicons name="arrow-up" size={18} color="#fff" />
1305
+ </Pressable>
1306
+ </View>
1307
+ </View>
1308
+ </View>
1309
+ <View style={{
1310
+ flexDirection: 'row',
1311
+ alignItems: 'center',
1312
+ paddingHorizontal: 20,
1313
+ paddingBottom: 12,
1314
+ }}>
1315
+ <Pressable style={{
1316
+ flexDirection: 'row',
1317
+ alignItems: 'center',
1318
+ paddingHorizontal: 12,
1319
+ paddingVertical: 6,
1320
+ backgroundColor: '#fff',
1321
+ borderRadius: 20,
1322
+ borderWidth: 1,
1323
+ borderColor: '#e5e3df',
1324
+ marginRight: 8,
1325
+ }}>
1326
+ <View style={{
1327
+ width: 6,
1328
+ height: 6,
1329
+ borderRadius: 3,
1330
+ backgroundColor: '#d97706',
1331
+ marginRight: 6,
1332
+ }} />
1333
+ <Text style={{ fontSize: 13, color: '#666' }}>Claude 3.5</Text>
1334
+ </Pressable>
1335
+ <Pressable style={{
1336
+ paddingHorizontal: 12,
1337
+ paddingVertical: 6,
1338
+ backgroundColor: '#f4f2ee',
1339
+ borderRadius: 20,
1340
+ marginRight: 8,
1341
+ }}>
1342
+ <Text style={{ fontSize: 13, color: '#666' }}>Artifacts</Text>
1343
+ </Pressable>
1344
+ <Pressable style={{
1345
+ paddingHorizontal: 12,
1346
+ paddingVertical: 6,
1347
+ backgroundColor: '#f4f2ee',
1348
+ borderRadius: 20,
1349
+ }}>
1350
+ <Text style={{ fontSize: 13, color: '#666' }}>Projects</Text>
1351
+ </Pressable>
1352
+ </View>
1353
+ </View>
1354
+ ),
1355
+ },
1356
+ {
1357
+ id: 'reddit',
1358
+ name: 'Reddit Style',
1359
+ description: 'Community-focused with markdown',
1360
+ preview: (
1361
+ <View style={{ backgroundColor: '#1a1a1b' }}>
1362
+ <View style={{ padding: 12 }}>
1363
+ <View style={{
1364
+ backgroundColor: '#272729',
1365
+ borderRadius: 4,
1366
+ borderWidth: 1,
1367
+ borderColor: '#343536',
1368
+ padding: 12,
1369
+ }}>
1370
+ <TextInput
1371
+ style={{
1372
+ fontSize: 14,
1373
+ color: '#d7dadc',
1374
+ minHeight: 80,
1375
+ }}
1376
+ placeholder="What are your thoughts?"
1377
+ placeholderTextColor="#818384"
1378
+ multiline
1379
+ editable={false}
1380
+ />
1381
+ </View>
1382
+ <View style={{
1383
+ flexDirection: 'row',
1384
+ alignItems: 'center',
1385
+ marginTop: 8,
1386
+ backgroundColor: '#1a1a1b',
1387
+ borderRadius: 4,
1388
+ paddingVertical: 4,
1389
+ }}>
1390
+ <Pressable style={{ padding: 8 }}>
1391
+ <MaterialIcons name="format-bold" size={18} color="#818384" />
1392
+ </Pressable>
1393
+ <Pressable style={{ padding: 8 }}>
1394
+ <MaterialIcons name="format-italic" size={18} color="#818384" />
1395
+ </Pressable>
1396
+ <Pressable style={{ padding: 8 }}>
1397
+ <MaterialIcons name="link" size={18} color="#818384" />
1398
+ </Pressable>
1399
+ <Pressable style={{ padding: 8 }}>
1400
+ <MaterialIcons name="strikethrough-s" size={18} color="#818384" />
1401
+ </Pressable>
1402
+ <Pressable style={{ padding: 8 }}>
1403
+ <MaterialIcons name="code" size={18} color="#818384" />
1404
+ </Pressable>
1405
+ <View style={{ flex: 1 }} />
1406
+ <Pressable style={{
1407
+ paddingHorizontal: 16,
1408
+ paddingVertical: 6,
1409
+ backgroundColor: '#ff4500',
1410
+ borderRadius: 20,
1411
+ marginRight: 8,
1412
+ }}>
1413
+ <Text style={{ color: '#fff', fontSize: 14, fontWeight: '600' }}>
1414
+ Reply
1415
+ </Text>
1416
+ </Pressable>
1417
+ </View>
1418
+ </View>
1419
+ <View style={{
1420
+ flexDirection: 'row',
1421
+ alignItems: 'center',
1422
+ paddingHorizontal: 16,
1423
+ paddingBottom: 8,
1424
+ }}>
1425
+ <Pressable style={{ marginRight: 16 }}>
1426
+ <Ionicons name="arrow-up-outline" size={20} color="#818384" />
1427
+ </Pressable>
1428
+ <Text style={{ color: '#818384', fontSize: 16, marginRight: 16 }}>0</Text>
1429
+ <Pressable style={{ marginRight: 16 }}>
1430
+ <Ionicons name="arrow-down-outline" size={20} color="#818384" />
1431
+ </Pressable>
1432
+ <Pressable style={{ marginRight: 16 }}>
1433
+ <Ionicons name="chatbox-outline" size={18} color="#818384" />
1434
+ </Pressable>
1435
+ <Pressable style={{ marginRight: 16 }}>
1436
+ <Ionicons name="share-outline" size={18} color="#818384" />
1437
+ </Pressable>
1438
+ <Pressable>
1439
+ <Ionicons name="bookmark-outline" size={18} color="#818384" />
1440
+ </Pressable>
1441
+ </View>
1442
+ </View>
1443
+ ),
1444
+ },
1445
+ {
1446
+ id: 'wechat',
1447
+ name: 'WeChat Style',
1448
+ description: 'Chinese super-app design',
1449
+ preview: (
1450
+ <View style={{ backgroundColor: '#ededed' }}>
1451
+ <View style={{
1452
+ flexDirection: 'row',
1453
+ alignItems: 'flex-end',
1454
+ padding: 8,
1455
+ }}>
1456
+ <Pressable style={{
1457
+ width: 40,
1458
+ height: 40,
1459
+ borderRadius: 20,
1460
+ backgroundColor: '#fff',
1461
+ alignItems: 'center',
1462
+ justifyContent: 'center',
1463
+ marginRight: 8,
1464
+ borderWidth: 1,
1465
+ borderColor: '#e0e0e0',
1466
+ }}>
1467
+ <Ionicons name="mic-outline" size={24} color="#333" />
1468
+ </Pressable>
1469
+ <View style={{
1470
+ flex: 1,
1471
+ backgroundColor: '#fff',
1472
+ borderRadius: 4,
1473
+ paddingHorizontal: 12,
1474
+ paddingVertical: 8,
1475
+ marginRight: 8,
1476
+ borderWidth: 1,
1477
+ borderColor: '#e0e0e0',
1478
+ }}>
1479
+ <TextInput
1480
+ style={{ fontSize: 16, color: '#000' }}
1481
+ placeholder="Type message"
1482
+ placeholderTextColor="#999"
1483
+ editable={false}
1484
+ />
1485
+ </View>
1486
+ <Pressable style={{
1487
+ width: 40,
1488
+ height: 40,
1489
+ borderRadius: 20,
1490
+ backgroundColor: '#fff',
1491
+ alignItems: 'center',
1492
+ justifyContent: 'center',
1493
+ marginRight: 8,
1494
+ borderWidth: 1,
1495
+ borderColor: '#e0e0e0',
1496
+ }}>
1497
+ <Ionicons name="star-outline" size={24} color="#333" />
1498
+ </Pressable>
1499
+ <Pressable style={{
1500
+ width: 40,
1501
+ height: 40,
1502
+ borderRadius: 20,
1503
+ backgroundColor: '#fff',
1504
+ alignItems: 'center',
1505
+ justifyContent: 'center',
1506
+ borderWidth: 1,
1507
+ borderColor: '#e0e0e0',
1508
+ }}>
1509
+ <Ionicons name="add" size={24} color="#333" />
1510
+ </Pressable>
1511
+ </View>
1512
+ <View style={{
1513
+ flexDirection: 'row',
1514
+ alignItems: 'center',
1515
+ justifyContent: 'space-around',
1516
+ paddingVertical: 12,
1517
+ backgroundColor: '#fff',
1518
+ borderTopWidth: 1,
1519
+ borderTopColor: '#e0e0e0',
1520
+ }}>
1521
+ <Pressable style={{ alignItems: 'center' }}>
1522
+ <Ionicons name="camera" size={24} color="#576b95" />
1523
+ <Text style={{ fontSize: 11, color: '#576b95', marginTop: 2 }}>Album</Text>
1524
+ </Pressable>
1525
+ <Pressable style={{ alignItems: 'center' }}>
1526
+ <Ionicons name="videocam" size={24} color="#576b95" />
1527
+ <Text style={{ fontSize: 11, color: '#576b95', marginTop: 2 }}>Sight</Text>
1528
+ </Pressable>
1529
+ <Pressable style={{ alignItems: 'center' }}>
1530
+ <Ionicons name="call" size={24} color="#576b95" />
1531
+ <Text style={{ fontSize: 11, color: '#576b95', marginTop: 2 }}>Call</Text>
1532
+ </Pressable>
1533
+ <Pressable style={{ alignItems: 'center' }}>
1534
+ <Ionicons name="location" size={24} color="#576b95" />
1535
+ <Text style={{ fontSize: 11, color: '#576b95', marginTop: 2 }}>Location</Text>
1536
+ </Pressable>
1537
+ <Pressable style={{ alignItems: 'center' }}>
1538
+ <MaterialIcons name="attach-money" size={24} color="#576b95" />
1539
+ <Text style={{ fontSize: 11, color: '#576b95', marginTop: 2 }}>Transfer</Text>
1540
+ </Pressable>
1541
+ </View>
1542
+ </View>
1543
+ ),
1544
+ },
1545
+ {
1546
+ id: 'obsidian',
1547
+ name: 'Obsidian Style',
1548
+ description: 'Note-taking with linking',
1549
+ preview: (
1550
+ <View style={{ backgroundColor: '#202020' }}>
1551
+ <View style={{ padding: 16 }}>
1552
+ <View style={{
1553
+ backgroundColor: '#262626',
1554
+ borderRadius: 6,
1555
+ borderWidth: 1,
1556
+ borderColor: '#404040',
1557
+ padding: 12,
1558
+ }}>
1559
+ <TextInput
1560
+ style={{
1561
+ fontSize: 15,
1562
+ color: '#e0e0e0',
1563
+ fontFamily: Platform.select({ ios: 'Menlo', android: 'monospace' }),
1564
+ }}
1565
+ placeholder="# Start typing..."
1566
+ placeholderTextColor="#666"
1567
+ editable={false}
1568
+ />
1569
+ </View>
1570
+ </View>
1571
+ <View style={{
1572
+ flexDirection: 'row',
1573
+ alignItems: 'center',
1574
+ paddingHorizontal: 20,
1575
+ paddingBottom: 12,
1576
+ }}>
1577
+ <Pressable style={{ padding: 6, marginRight: 8 }}>
1578
+ <Text style={{ color: '#7f6df2', fontSize: 16 }}>[[</Text>
1579
+ </Pressable>
1580
+ <Pressable style={{ padding: 6, marginRight: 8 }}>
1581
+ <MaterialIcons name="tag" size={18} color="#7f6df2" />
1582
+ </Pressable>
1583
+ <Pressable style={{ padding: 6, marginRight: 8 }}>
1584
+ <MaterialIcons name="format-bold" size={18} color="#666" />
1585
+ </Pressable>
1586
+ <Pressable style={{ padding: 6, marginRight: 8 }}>
1587
+ <MaterialIcons name="format-italic" size={18} color="#666" />
1588
+ </Pressable>
1589
+ <Pressable style={{ padding: 6, marginRight: 8 }}>
1590
+ <MaterialIcons name="code" size={18} color="#666" />
1591
+ </Pressable>
1592
+ <View style={{ flex: 1 }} />
1593
+ <Pressable style={{
1594
+ flexDirection: 'row',
1595
+ alignItems: 'center',
1596
+ paddingHorizontal: 10,
1597
+ paddingVertical: 4,
1598
+ backgroundColor: '#404040',
1599
+ borderRadius: 4,
1600
+ }}>
1601
+ <Ionicons name="document-text" size={14} color="#e0e0e0" />
1602
+ <Text style={{ color: '#e0e0e0', fontSize: 12, marginLeft: 4 }}>
1603
+ Markdown
1604
+ </Text>
1605
+ </Pressable>
1606
+ </View>
1607
+ </View>
1608
+ ),
1609
+ },
1610
+ {
1611
+ id: 'snapchat',
1612
+ name: 'Snapchat Style',
1613
+ description: 'Ephemeral messaging with camera',
1614
+ preview: (
1615
+ <View style={{ backgroundColor: '#000' }}>
1616
+ <View style={{
1617
+ flexDirection: 'row',
1618
+ alignItems: 'center',
1619
+ padding: 12,
1620
+ }}>
1621
+ <Pressable style={{
1622
+ width: 50,
1623
+ height: 50,
1624
+ borderRadius: 25,
1625
+ backgroundColor: '#fffc00',
1626
+ alignItems: 'center',
1627
+ justifyContent: 'center',
1628
+ marginRight: 12,
1629
+ }}>
1630
+ <Ionicons name="camera" size={28} color="#000" />
1631
+ </Pressable>
1632
+ <View style={{
1633
+ flex: 1,
1634
+ backgroundColor: '#1a1a1a',
1635
+ borderRadius: 25,
1636
+ paddingHorizontal: 16,
1637
+ paddingVertical: 12,
1638
+ marginRight: 12,
1639
+ }}>
1640
+ <TextInput
1641
+ style={{ fontSize: 16, color: '#fff' }}
1642
+ placeholder="Send a chat"
1643
+ placeholderTextColor="#666"
1644
+ editable={false}
1645
+ />
1646
+ </View>
1647
+ <Pressable style={{
1648
+ width: 36,
1649
+ height: 36,
1650
+ borderRadius: 18,
1651
+ backgroundColor: '#1a1a1a',
1652
+ alignItems: 'center',
1653
+ justifyContent: 'center',
1654
+ }}>
1655
+ <MaterialIcons name="more-horiz" size={24} color="#fff" />
1656
+ </Pressable>
1657
+ </View>
1658
+ <View style={{
1659
+ flexDirection: 'row',
1660
+ alignItems: 'center',
1661
+ justifyContent: 'center',
1662
+ paddingBottom: 12,
1663
+ }}>
1664
+ <Pressable style={{
1665
+ paddingHorizontal: 16,
1666
+ paddingVertical: 8,
1667
+ backgroundColor: '#fffc00',
1668
+ borderRadius: 20,
1669
+ marginRight: 8,
1670
+ }}>
1671
+ <Text style={{ color: '#000', fontSize: 14, fontWeight: '600' }}>
1672
+ Snap
1673
+ </Text>
1674
+ </Pressable>
1675
+ <Pressable style={{
1676
+ paddingHorizontal: 16,
1677
+ paddingVertical: 8,
1678
+ backgroundColor: '#1a1a1a',
1679
+ borderRadius: 20,
1680
+ marginRight: 8,
1681
+ }}>
1682
+ <Text style={{ color: '#fff', fontSize: 14 }}>
1683
+ Stickers
1684
+ </Text>
1685
+ </Pressable>
1686
+ <Pressable style={{
1687
+ paddingHorizontal: 16,
1688
+ paddingVertical: 8,
1689
+ backgroundColor: '#1a1a1a',
1690
+ borderRadius: 20,
1691
+ }}>
1692
+ <Text style={{ color: '#fff', fontSize: 14 }}>
1693
+ Games
1694
+ </Text>
1695
+ </Pressable>
1696
+ </View>
1697
+ </View>
1698
+ ),
1699
+ },
1700
+ {
1701
+ id: 'teams',
1702
+ name: 'Microsoft Teams',
1703
+ description: 'Corporate communication style',
1704
+ preview: (
1705
+ <View style={{ backgroundColor: '#f5f5f5' }}>
1706
+ <View style={{ padding: 12 }}>
1707
+ <View style={{
1708
+ backgroundColor: '#fff',
1709
+ borderRadius: 4,
1710
+ borderWidth: 1,
1711
+ borderColor: '#e1e1e1',
1712
+ paddingBottom: 8,
1713
+ }}>
1714
+ <View style={{
1715
+ flexDirection: 'row',
1716
+ borderBottomWidth: 1,
1717
+ borderBottomColor: '#e1e1e1',
1718
+ paddingHorizontal: 12,
1719
+ paddingVertical: 8,
1720
+ }}>
1721
+ <Pressable style={{ marginRight: 16 }}>
1722
+ <MaterialIcons name="format-bold" size={20} color="#605e5c" />
1723
+ </Pressable>
1724
+ <Pressable style={{ marginRight: 16 }}>
1725
+ <MaterialIcons name="format-italic" size={20} color="#605e5c" />
1726
+ </Pressable>
1727
+ <Pressable style={{ marginRight: 16 }}>
1728
+ <MaterialIcons name="format-underlined" size={20} color="#605e5c" />
1729
+ </Pressable>
1730
+ <Pressable style={{ marginRight: 16 }}>
1731
+ <MaterialIcons name="format-color-text" size={20} color="#605e5c" />
1732
+ </Pressable>
1733
+ <View style={{ flex: 1 }} />
1734
+ <Pressable>
1735
+ <MaterialIcons name="more-horiz" size={20} color="#605e5c" />
1736
+ </Pressable>
1737
+ </View>
1738
+ <TextInput
1739
+ style={{
1740
+ fontSize: 14,
1741
+ color: '#201f1e',
1742
+ paddingHorizontal: 12,
1743
+ paddingVertical: 8,
1744
+ minHeight: 40,
1745
+ }}
1746
+ placeholder="Type a new message"
1747
+ placeholderTextColor="#a19f9d"
1748
+ editable={false}
1749
+ />
1750
+ <View style={{
1751
+ flexDirection: 'row',
1752
+ alignItems: 'center',
1753
+ justifyContent: 'space-between',
1754
+ paddingHorizontal: 12,
1755
+ marginTop: 8,
1756
+ }}>
1757
+ <View style={{ flexDirection: 'row' }}>
1758
+ <Pressable style={{ marginRight: 16 }}>
1759
+ <Ionicons name="attach" size={20} color="#605e5c" />
1760
+ </Pressable>
1761
+ <Pressable style={{ marginRight: 16 }}>
1762
+ <Ionicons name="star-outline" size={20} color="#605e5c" />
1763
+ </Pressable>
1764
+ <Pressable>
1765
+ <MaterialIcons name="gif" size={20} color="#605e5c" />
1766
+ </Pressable>
1767
+ </View>
1768
+ <Pressable style={{
1769
+ backgroundColor: '#6264a7',
1770
+ paddingHorizontal: 20,
1771
+ paddingVertical: 8,
1772
+ borderRadius: 4,
1773
+ }}>
1774
+ <Ionicons name="send" size={16} color="#fff" />
1775
+ </Pressable>
1776
+ </View>
1777
+ </View>
1778
+ </View>
1779
+ <View style={{
1780
+ flexDirection: 'row',
1781
+ alignItems: 'center',
1782
+ paddingHorizontal: 16,
1783
+ paddingBottom: 8,
1784
+ }}>
1785
+ <Pressable style={{
1786
+ flexDirection: 'row',
1787
+ alignItems: 'center',
1788
+ paddingHorizontal: 12,
1789
+ paddingVertical: 6,
1790
+ backgroundColor: '#fff',
1791
+ borderRadius: 16,
1792
+ borderWidth: 1,
1793
+ borderColor: '#e1e1e1',
1794
+ marginRight: 8,
1795
+ }}>
1796
+ <Ionicons name="videocam" size={16} color="#6264a7" />
1797
+ <Text style={{ fontSize: 13, color: '#605e5c', marginLeft: 6 }}>
1798
+ Meet now
1799
+ </Text>
1800
+ </Pressable>
1801
+ <Pressable style={{
1802
+ flexDirection: 'row',
1803
+ alignItems: 'center',
1804
+ paddingHorizontal: 12,
1805
+ paddingVertical: 6,
1806
+ backgroundColor: '#fff',
1807
+ borderRadius: 16,
1808
+ borderWidth: 1,
1809
+ borderColor: '#e1e1e1',
1810
+ }}>
1811
+ <Ionicons name="calendar" size={16} color="#6264a7" />
1812
+ <Text style={{ fontSize: 13, color: '#605e5c', marginLeft: 6 }}>
1813
+ Schedule
1814
+ </Text>
1815
+ </Pressable>
1816
+ </View>
1817
+ </View>
1818
+ ),
1819
+ },
1820
+ ];
1821
+
1822
+ // Render the selected style at the bottom
1823
+ const renderActiveInput = () => {
1824
+ const style = inputStyles.find(s => s.id === selectedStyle);
1825
+ if (!style) return null;
1826
+
1827
+ return (
1828
+ <View style={{
1829
+ position: 'absolute',
1830
+ bottom: safeArea.bottom,
1831
+ left: 0,
1832
+ right: 0,
1833
+ backgroundColor: '#fff',
1834
+ borderTopWidth: 1,
1835
+ borderTopColor: '#e0e0e0',
1836
+ ...Platform.select({
1837
+ ios: {
1838
+ shadowColor: '#000',
1839
+ shadowOffset: { width: 0, height: -2 },
1840
+ shadowOpacity: 0.1,
1841
+ shadowRadius: 4,
1842
+ },
1843
+ android: {
1844
+ elevation: 8,
1845
+ },
1846
+ }),
1847
+ }}>
1848
+ <View style={{ paddingBottom: 8, paddingTop: 8 }}>
1849
+ <Text style={{
1850
+ textAlign: 'center',
1851
+ fontSize: 12,
1852
+ color: '#666',
1853
+ marginBottom: 4,
1854
+ ...Typography.default(),
1855
+ }}>
1856
+ Active Style: {style.name}
1857
+ </Text>
1858
+ {style.preview}
1859
+ </View>
1860
+ </View>
1861
+ );
1862
+ };
1863
+
1864
+ return (
1865
+ <View style={{ flex: 1, backgroundColor: '#f5f5f5' }}>
1866
+ <ScrollView
1867
+ style={{ flex: 1 }}
1868
+ contentContainerStyle={{
1869
+ paddingBottom: 250 + safeArea.bottom,
1870
+ paddingTop: 16,
1871
+ }}
1872
+ >
1873
+ <Text style={{
1874
+ fontSize: 24,
1875
+ fontWeight: 'bold',
1876
+ marginBottom: 8,
1877
+ paddingHorizontal: 16,
1878
+ ...Typography.default('semiBold'),
1879
+ }}>
1880
+ Input Style Variants
1881
+ </Text>
1882
+ <Text style={{
1883
+ fontSize: 14,
1884
+ color: '#666',
1885
+ marginBottom: 24,
1886
+ paddingHorizontal: 16,
1887
+ ...Typography.default(),
1888
+ }}>
1889
+ Tap any style to see it applied to the bottom input
1890
+ </Text>
1891
+
1892
+ {inputStyles.map((style) => (
1893
+ <Pressable
1894
+ key={style.id}
1895
+ onPress={() => setSelectedStyle(style.id)}
1896
+ style={{
1897
+ marginHorizontal: 16,
1898
+ marginBottom: 16,
1899
+ backgroundColor: '#fff',
1900
+ borderRadius: 12,
1901
+ overflow: 'hidden',
1902
+ borderWidth: selectedStyle === style.id ? 2 : 1,
1903
+ borderColor: selectedStyle === style.id ? '#007AFF' : '#e0e0e0',
1904
+ }}
1905
+ >
1906
+ <View style={{
1907
+ paddingHorizontal: 16,
1908
+ paddingTop: 12,
1909
+ paddingBottom: 8,
1910
+ }}>
1911
+ <View style={{
1912
+ flexDirection: 'row',
1913
+ alignItems: 'center',
1914
+ justifyContent: 'space-between',
1915
+ marginBottom: 4,
1916
+ }}>
1917
+ <Text style={{
1918
+ fontSize: 18,
1919
+ fontWeight: '600',
1920
+ color: '#000',
1921
+ ...Typography.default('semiBold'),
1922
+ }}>
1923
+ {style.name}
1924
+ </Text>
1925
+ {selectedStyle === style.id && (
1926
+ <Ionicons name="checkmark-circle" size={24} color="#007AFF" />
1927
+ )}
1928
+ </View>
1929
+ <Text style={{
1930
+ fontSize: 14,
1931
+ color: '#666',
1932
+ marginBottom: 12,
1933
+ ...Typography.default(),
1934
+ }}>
1935
+ {style.description}
1936
+ </Text>
1937
+ </View>
1938
+ <View style={{
1939
+ borderTopWidth: 1,
1940
+ borderTopColor: '#f0f0f0',
1941
+ }}>
1942
+ {style.preview}
1943
+ </View>
1944
+ </Pressable>
1945
+ ))}
1946
+ </ScrollView>
1947
+
1948
+ {renderActiveInput()}
1949
+ </View>
1950
+ );
1951
+ }