@tempoxyz/id 0.0.0-stage → 0.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 (712) hide show
  1. package/README.md +80 -2
  2. package/dist/App.d.ts +20 -0
  3. package/dist/App.d.ts.map +1 -0
  4. package/dist/App.js +26 -0
  5. package/dist/App.js.map +1 -0
  6. package/dist/app/client/.assetsignore +2 -0
  7. package/dist/app/client/assets/BRLA-CZvVDNYr.png +0 -0
  8. package/dist/app/client/assets/CHFAU-DCedc4aH.png +0 -0
  9. package/dist/app/client/assets/DLUSD-BnRXm3EI.png +0 -0
  10. package/dist/app/client/assets/PRIME-CiFp2-3e.svg +14 -0
  11. package/dist/app/client/assets/Pilat-Bold-C1t1eIrF.woff2 +0 -0
  12. package/dist/app/client/assets/Pilat-Book-CbS8ofT8.woff2 +0 -0
  13. package/dist/app/client/assets/Pilat-Demi-CADSbPAt.woff2 +0 -0
  14. package/dist/app/client/assets/Pilat-Regular-Bx8vzE7q.woff2 +0 -0
  15. package/dist/app/client/assets/USD1-COVcO_PB.svg +30 -0
  16. package/dist/app/client/assets/YLDS-CRh8Zw0g.svg +3 -0
  17. package/dist/app/client/assets/ccip-Cq1mMiVl.js +1 -0
  18. package/dist/app/client/assets/frxUSD-n9pTpinR.svg +1 -0
  19. package/dist/app/client/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
  20. package/dist/app/client/assets/index-B7YJVP00.css +1 -0
  21. package/dist/app/client/assets/index-UXTxXCLk.js +55 -0
  22. package/dist/app/client/assets/pathUSD-BvaO6ooS.svg +25 -0
  23. package/dist/app/client/assets/reset-co-CHrff.css +1 -0
  24. package/dist/app/client/assets/wYLDS-CaCKDrO-.svg +10 -0
  25. package/dist/app/db/auth.d.ts +3207 -0
  26. package/dist/app/db/auth.d.ts.map +1 -0
  27. package/dist/app/db/auth.js +330 -0
  28. package/dist/app/db/auth.js.map +1 -0
  29. package/dist/app/db/schema.d.ts +932 -0
  30. package/dist/app/db/schema.d.ts.map +1 -0
  31. package/dist/app/db/schema.js +171 -0
  32. package/dist/app/db/schema.js.map +1 -0
  33. package/dist/app/server/.vite/manifest.json +489 -0
  34. package/dist/app/server/assets/BRLA-CZvVDNYr.png +0 -0
  35. package/dist/app/server/assets/CHFAU-DCedc4aH.png +0 -0
  36. package/dist/app/server/assets/DLUSD-BnRXm3EI.png +0 -0
  37. package/dist/app/server/assets/PRIME-CiFp2-3e.svg +14 -0
  38. package/dist/app/server/assets/Pilat-Bold-C1t1eIrF.woff2 +0 -0
  39. package/dist/app/server/assets/Pilat-Book-CbS8ofT8.woff2 +0 -0
  40. package/dist/app/server/assets/Pilat-Demi-CADSbPAt.woff2 +0 -0
  41. package/dist/app/server/assets/Pilat-Regular-Bx8vzE7q.woff2 +0 -0
  42. package/dist/app/server/assets/USD1-COVcO_PB.svg +30 -0
  43. package/dist/app/server/assets/YLDS-CRh8Zw0g.svg +3 -0
  44. package/dist/app/server/assets/_tanstack-start-manifest_v-11GtFGrq.js +1 -0
  45. package/dist/app/server/assets/arktype-aI7TBD0R-D1R3Byo5.js +2 -0
  46. package/dist/app/server/assets/arktype-aI7TBD0R-D1R3Byo5.js.map +1 -0
  47. package/dist/app/server/assets/authorize-C95F-9E1-CbESJKGU.js +31 -0
  48. package/dist/app/server/assets/authorize-C95F-9E1-CbESJKGU.js.map +1 -0
  49. package/dist/app/server/assets/bun-sqlite-dialect-DoOVo4ja-CtyBkVMb.js +2 -0
  50. package/dist/app/server/assets/bun-sqlite-dialect-DoOVo4ja-CtyBkVMb.js.map +1 -0
  51. package/dist/app/server/assets/call-UQamaCKN.js +32 -0
  52. package/dist/app/server/assets/call-UQamaCKN.js.map +1 -0
  53. package/dist/app/server/assets/ccip-CbNKFO4n.js +2 -0
  54. package/dist/app/server/assets/ccip-CbNKFO4n.js.map +1 -0
  55. package/dist/app/server/assets/compiled-query-Ds2NVcFT.js +2 -0
  56. package/dist/app/server/assets/compiled-query-Ds2NVcFT.js.map +1 -0
  57. package/dist/app/server/assets/convert-BIC8n32x.js +2 -0
  58. package/dist/app/server/assets/convert-BIC8n32x.js.map +1 -0
  59. package/dist/app/server/assets/cookie-CS900nSP.css +1 -0
  60. package/dist/app/server/assets/cookie-Cce9CrIP.js +10 -0
  61. package/dist/app/server/assets/cookie-Cce9CrIP.js.map +1 -0
  62. package/dist/app/server/assets/core-B1HCXUmx.js +56 -0
  63. package/dist/app/server/assets/core-B1HCXUmx.js.map +1 -0
  64. package/dist/app/server/assets/d1-sqlite-dialect-m0f01-4z-Cv-csE1u.js +2 -0
  65. package/dist/app/server/assets/d1-sqlite-dialect-m0f01-4z-Cv-csE1u.js.map +1 -0
  66. package/dist/app/server/assets/default-u_dwuiYb-BJJ9PwCi.js +2 -0
  67. package/dist/app/server/assets/default-u_dwuiYb-BJJ9PwCi.js.map +1 -0
  68. package/dist/app/server/assets/dist-BxSwugSY.js +1 -0
  69. package/dist/app/server/assets/dist-CZGFhmQd.js +2 -0
  70. package/dist/app/server/assets/dist-CZGFhmQd.js.map +1 -0
  71. package/dist/app/server/assets/dist-Dg3PQqiW.js +15 -0
  72. package/dist/app/server/assets/dist-Dg3PQqiW.js.map +1 -0
  73. package/dist/app/server/assets/effect-QlVUlMFu-2tSPDT2b.js +2 -0
  74. package/dist/app/server/assets/effect-QlVUlMFu-2tSPDT2b.js.map +1 -0
  75. package/dist/app/server/assets/empty-plugin-adapters-BaGcmrjC.js +2 -0
  76. package/dist/app/server/assets/empty-plugin-adapters-BaGcmrjC.js.map +1 -0
  77. package/dist/app/server/assets/factory-ipHlJXZY.js +5 -0
  78. package/dist/app/server/assets/factory-ipHlJXZY.js.map +1 -0
  79. package/dist/app/server/assets/frxUSD-n9pTpinR.svg +1 -0
  80. package/dist/app/server/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
  81. package/dist/app/server/assets/get-id-field-B0x109VU.js +6 -0
  82. package/dist/app/server/assets/get-id-field-B0x109VU.js.map +1 -0
  83. package/dist/app/server/assets/index-CLddUTqr-xpSuLpBt.js +2 -0
  84. package/dist/app/server/assets/index-CLddUTqr-xpSuLpBt.js.map +1 -0
  85. package/dist/app/server/assets/index-DZEfthgZ-8Uq5s5Pt.js +2 -0
  86. package/dist/app/server/assets/index-DZEfthgZ-8Uq5s5Pt.js.map +1 -0
  87. package/dist/app/server/assets/kysely-adapter-MkHAI9Jk.js +1 -0
  88. package/dist/app/server/assets/node-sqlite-dialect-BowWLXvK.js +2 -0
  89. package/dist/app/server/assets/node-sqlite-dialect-BowWLXvK.js.map +1 -0
  90. package/dist/app/server/assets/pathUSD-BvaO6ooS.svg +25 -0
  91. package/dist/app/server/assets/reset-co-CHrff.css +1 -0
  92. package/dist/app/server/assets/rolldown-runtime-B0Z9INg1.js +1 -0
  93. package/dist/app/server/assets/router-CcbyBCI4.css +1 -0
  94. package/dist/app/server/assets/router-xjZtEeaI.js +7 -0
  95. package/dist/app/server/assets/router-xjZtEeaI.js.map +1 -0
  96. package/dist/app/server/assets/schema-check-Cf7QOZZD.js +9 -0
  97. package/dist/app/server/assets/schema-check-Cf7QOZZD.js.map +1 -0
  98. package/dist/app/server/assets/schemas-C2lCYmR5.js +2 -0
  99. package/dist/app/server/assets/schemas-C2lCYmR5.js.map +1 -0
  100. package/dist/app/server/assets/secp256k1-buM5g4AL.js +2 -0
  101. package/dist/app/server/assets/secp256k1-buM5g4AL.js.map +1 -0
  102. package/dist/app/server/assets/sqlite-adapter-C_LAV4e3.js +2 -0
  103. package/dist/app/server/assets/sqlite-adapter-C_LAV4e3.js.map +1 -0
  104. package/dist/app/server/assets/sqlite-introspector-DSCAP82F-Crx7Ny14.js +6 -0
  105. package/dist/app/server/assets/sqlite-introspector-DSCAP82F-Crx7Ny14.js.map +1 -0
  106. package/dist/app/server/assets/standard-json-Cg1N07hM.js +2 -0
  107. package/dist/app/server/assets/standard-json-Cg1N07hM.js.map +1 -0
  108. package/dist/app/server/assets/standard-json-DY77efq0.js +2 -0
  109. package/dist/app/server/assets/standard-json-DY77efq0.js.map +1 -0
  110. package/dist/app/server/assets/standard-json-ig2t0wRt.js +2 -0
  111. package/dist/app/server/assets/standard-json-ig2t0wRt.js.map +1 -0
  112. package/dist/app/server/assets/standard-json-t-LNckA6.js +2 -0
  113. package/dist/app/server/assets/standard-json-t-LNckA6.js.map +1 -0
  114. package/dist/app/server/assets/standard-openapi-CONmVRl8.js +2 -0
  115. package/dist/app/server/assets/standard-openapi-CONmVRl8.js.map +1 -0
  116. package/dist/app/server/assets/start-C63VetBp.js +2 -0
  117. package/dist/app/server/assets/start-C63VetBp.js.map +1 -0
  118. package/dist/app/server/assets/sury-CWZTCd75-xt1mWc9f.js +2 -0
  119. package/dist/app/server/assets/sury-CWZTCd75-xt1mWc9f.js.map +1 -0
  120. package/dist/app/server/assets/typebox-Dei93FPO-D_lCVdAz.js +2 -0
  121. package/dist/app/server/assets/typebox-Dei93FPO-D_lCVdAz.js.map +1 -0
  122. package/dist/app/server/assets/utils-C4ZXZIZW.js +2 -0
  123. package/dist/app/server/assets/utils-C4ZXZIZW.js.map +1 -0
  124. package/dist/app/server/assets/valibot--1zFm7rT-NSoY2xTp.js +2 -0
  125. package/dist/app/server/assets/valibot--1zFm7rT-NSoY2xTp.js.map +1 -0
  126. package/dist/app/server/assets/valibot-D_HTw1Gn-CJwWeOUE.js +2 -0
  127. package/dist/app/server/assets/valibot-D_HTw1Gn-CJwWeOUE.js.map +1 -0
  128. package/dist/app/server/assets/wYLDS-CaCKDrO-.svg +10 -0
  129. package/dist/app/server/assets/zod-Bwrt9trS-CV38yPnQ.js +2 -0
  130. package/dist/app/server/assets/zod-Bwrt9trS-CV38yPnQ.js.map +1 -0
  131. package/dist/app/server/assets/zod-DSgpEGAE-BvlnBE2L.js +2 -0
  132. package/dist/app/server/assets/zod-DSgpEGAE-BvlnBE2L.js.map +1 -0
  133. package/dist/app/server/index.js +574 -0
  134. package/dist/app/server/index.js.map +1 -0
  135. package/dist/app/server/wrangler.json +1 -0
  136. package/dist/cli/Admin.d.ts +38 -0
  137. package/dist/cli/Admin.d.ts.map +1 -0
  138. package/dist/cli/Admin.js +62 -0
  139. package/dist/cli/Admin.js.map +1 -0
  140. package/dist/cli/Apps.d.ts +9 -0
  141. package/dist/cli/Apps.d.ts.map +1 -0
  142. package/dist/cli/Apps.js +36 -0
  143. package/dist/cli/Apps.js.map +1 -0
  144. package/dist/cli/Cli.d.ts +14 -0
  145. package/dist/cli/Cli.d.ts.map +1 -0
  146. package/dist/cli/Cli.js +27 -0
  147. package/dist/cli/Cli.js.map +1 -0
  148. package/dist/cli/Project.d.ts +20 -0
  149. package/dist/cli/Project.d.ts.map +1 -0
  150. package/dist/cli/Project.js +88 -0
  151. package/dist/cli/Project.js.map +1 -0
  152. package/dist/cli/Realms.d.ts +24 -0
  153. package/dist/cli/Realms.d.ts.map +1 -0
  154. package/dist/cli/Realms.js +49 -0
  155. package/dist/cli/Realms.js.map +1 -0
  156. package/dist/cli/Session.d.ts +85 -0
  157. package/dist/cli/Session.d.ts.map +1 -0
  158. package/dist/cli/Session.js +178 -0
  159. package/dist/cli/Session.js.map +1 -0
  160. package/dist/cli/User.d.ts +29 -0
  161. package/dist/cli/User.d.ts.map +1 -0
  162. package/dist/cli/User.js +39 -0
  163. package/dist/cli/User.js.map +1 -0
  164. package/dist/cli/V1.d.ts +35 -0
  165. package/dist/cli/V1.d.ts.map +1 -0
  166. package/dist/cli/V1.js +41 -0
  167. package/dist/cli/V1.js.map +1 -0
  168. package/dist/cli/bin.d.ts +3 -0
  169. package/dist/cli/bin.d.ts.map +1 -0
  170. package/dist/cli/bin.js +46 -0
  171. package/dist/cli/bin.js.map +1 -0
  172. package/dist/cli/commands/admin/apps/create.d.ts +23 -0
  173. package/dist/cli/commands/admin/apps/create.d.ts.map +1 -0
  174. package/dist/cli/commands/admin/apps/create.js +89 -0
  175. package/dist/cli/commands/admin/apps/create.js.map +1 -0
  176. package/dist/cli/commands/admin/apps/delete.d.ts +14 -0
  177. package/dist/cli/commands/admin/apps/delete.d.ts.map +1 -0
  178. package/dist/cli/commands/admin/apps/delete.js +41 -0
  179. package/dist/cli/commands/admin/apps/delete.js.map +1 -0
  180. package/dist/cli/commands/admin/apps/index.d.ts +5 -0
  181. package/dist/cli/commands/admin/apps/index.d.ts.map +1 -0
  182. package/dist/cli/commands/admin/apps/index.js +14 -0
  183. package/dist/cli/commands/admin/apps/index.js.map +1 -0
  184. package/dist/cli/commands/admin/apps/list.d.ts +9 -0
  185. package/dist/cli/commands/admin/apps/list.d.ts.map +1 -0
  186. package/dist/cli/commands/admin/apps/list.js +26 -0
  187. package/dist/cli/commands/admin/apps/list.js.map +1 -0
  188. package/dist/cli/commands/admin/apps/rotate-secret.d.ts +16 -0
  189. package/dist/cli/commands/admin/apps/rotate-secret.d.ts.map +1 -0
  190. package/dist/cli/commands/admin/apps/rotate-secret.js +47 -0
  191. package/dist/cli/commands/admin/apps/rotate-secret.js.map +1 -0
  192. package/dist/cli/commands/admin/apps/update.d.ts +20 -0
  193. package/dist/cli/commands/admin/apps/update.d.ts.map +1 -0
  194. package/dist/cli/commands/admin/apps/update.js +76 -0
  195. package/dist/cli/commands/admin/apps/update.js.map +1 -0
  196. package/dist/cli/commands/admin/index.d.ts +5 -0
  197. package/dist/cli/commands/admin/index.d.ts.map +1 -0
  198. package/dist/cli/commands/admin/index.js +13 -0
  199. package/dist/cli/commands/admin/index.js.map +1 -0
  200. package/dist/cli/commands/admin/migrate.d.ts +9 -0
  201. package/dist/cli/commands/admin/migrate.d.ts.map +1 -0
  202. package/dist/cli/commands/admin/migrate.js +17 -0
  203. package/dist/cli/commands/admin/migrate.js.map +1 -0
  204. package/dist/cli/commands/admin/realms/add.d.ts +12 -0
  205. package/dist/cli/commands/admin/realms/add.d.ts.map +1 -0
  206. package/dist/cli/commands/admin/realms/add.js +42 -0
  207. package/dist/cli/commands/admin/realms/add.js.map +1 -0
  208. package/dist/cli/commands/admin/realms/index.d.ts +5 -0
  209. package/dist/cli/commands/admin/realms/index.d.ts.map +1 -0
  210. package/dist/cli/commands/admin/realms/index.js +13 -0
  211. package/dist/cli/commands/admin/realms/index.js.map +1 -0
  212. package/dist/cli/commands/admin/realms/list.d.ts +13 -0
  213. package/dist/cli/commands/admin/realms/list.d.ts.map +1 -0
  214. package/dist/cli/commands/admin/realms/list.js +36 -0
  215. package/dist/cli/commands/admin/realms/list.js.map +1 -0
  216. package/dist/cli/commands/admin/realms/passkeys/index.d.ts +5 -0
  217. package/dist/cli/commands/admin/realms/passkeys/index.d.ts.map +1 -0
  218. package/dist/cli/commands/admin/realms/passkeys/index.js +13 -0
  219. package/dist/cli/commands/admin/realms/passkeys/index.js.map +1 -0
  220. package/dist/cli/commands/admin/realms/passkeys/set.d.ts +16 -0
  221. package/dist/cli/commands/admin/realms/passkeys/set.d.ts.map +1 -0
  222. package/dist/cli/commands/admin/realms/passkeys/set.js +46 -0
  223. package/dist/cli/commands/admin/realms/passkeys/set.js.map +1 -0
  224. package/dist/cli/commands/admin/realms/privy/index.d.ts +5 -0
  225. package/dist/cli/commands/admin/realms/privy/index.d.ts.map +1 -0
  226. package/dist/cli/commands/admin/realms/privy/index.js +13 -0
  227. package/dist/cli/commands/admin/realms/privy/index.js.map +1 -0
  228. package/dist/cli/commands/admin/realms/privy/set.d.ts +18 -0
  229. package/dist/cli/commands/admin/realms/privy/set.d.ts.map +1 -0
  230. package/dist/cli/commands/admin/realms/privy/set.js +66 -0
  231. package/dist/cli/commands/admin/realms/privy/set.js.map +1 -0
  232. package/dist/cli/commands/admin/realms/remove.d.ts +11 -0
  233. package/dist/cli/commands/admin/realms/remove.d.ts.map +1 -0
  234. package/dist/cli/commands/admin/realms/remove.js +35 -0
  235. package/dist/cli/commands/admin/realms/remove.js.map +1 -0
  236. package/dist/cli/commands/admin/realms/secp256k1/disable.d.ts +15 -0
  237. package/dist/cli/commands/admin/realms/secp256k1/disable.d.ts.map +1 -0
  238. package/dist/cli/commands/admin/realms/secp256k1/disable.js +42 -0
  239. package/dist/cli/commands/admin/realms/secp256k1/disable.js.map +1 -0
  240. package/dist/cli/commands/admin/realms/secp256k1/enable.d.ts +15 -0
  241. package/dist/cli/commands/admin/realms/secp256k1/enable.d.ts.map +1 -0
  242. package/dist/cli/commands/admin/realms/secp256k1/enable.js +42 -0
  243. package/dist/cli/commands/admin/realms/secp256k1/enable.js.map +1 -0
  244. package/dist/cli/commands/admin/realms/secp256k1/index.d.ts +9 -0
  245. package/dist/cli/commands/admin/realms/secp256k1/index.d.ts.map +1 -0
  246. package/dist/cli/commands/admin/realms/secp256k1/index.js +17 -0
  247. package/dist/cli/commands/admin/realms/secp256k1/index.js.map +1 -0
  248. package/dist/cli/commands/admin/realms/set.d.ts +16 -0
  249. package/dist/cli/commands/admin/realms/set.d.ts.map +1 -0
  250. package/dist/cli/commands/admin/realms/set.js +46 -0
  251. package/dist/cli/commands/admin/realms/set.js.map +1 -0
  252. package/dist/cli/commands/admin/rotate-key.d.ts +15 -0
  253. package/dist/cli/commands/admin/rotate-key.d.ts.map +1 -0
  254. package/dist/cli/commands/admin/rotate-key.js +46 -0
  255. package/dist/cli/commands/admin/rotate-key.js.map +1 -0
  256. package/dist/cli/commands/init.d.ts +11 -0
  257. package/dist/cli/commands/init.d.ts.map +1 -0
  258. package/dist/cli/commands/init.js +34 -0
  259. package/dist/cli/commands/init.js.map +1 -0
  260. package/dist/cli/commands/login.d.ts +12 -0
  261. package/dist/cli/commands/login.d.ts.map +1 -0
  262. package/dist/cli/commands/login.js +29 -0
  263. package/dist/cli/commands/login.js.map +1 -0
  264. package/dist/cli/commands/logout.d.ts +8 -0
  265. package/dist/cli/commands/logout.d.ts.map +1 -0
  266. package/dist/cli/commands/logout.js +19 -0
  267. package/dist/cli/commands/logout.js.map +1 -0
  268. package/dist/cli/commands/whoami.d.ts +12 -0
  269. package/dist/cli/commands/whoami.d.ts.map +1 -0
  270. package/dist/cli/commands/whoami.js +24 -0
  271. package/dist/cli/commands/whoami.js.map +1 -0
  272. package/dist/client/Actions.d.ts +101 -0
  273. package/dist/client/Actions.d.ts.map +1 -0
  274. package/dist/client/Actions.js +90 -0
  275. package/dist/client/Actions.js.map +1 -0
  276. package/dist/client/Auth.d.ts +161 -0
  277. package/dist/client/Auth.d.ts.map +1 -0
  278. package/dist/client/Auth.js +113 -0
  279. package/dist/client/Auth.js.map +1 -0
  280. package/dist/client/Authorization.d.ts +29 -0
  281. package/dist/client/Authorization.d.ts.map +1 -0
  282. package/dist/client/Authorization.js +12 -0
  283. package/dist/client/Authorization.js.map +1 -0
  284. package/dist/client/Decorator.d.ts +170 -0
  285. package/dist/client/Decorator.d.ts.map +1 -0
  286. package/dist/client/Decorator.js +227 -0
  287. package/dist/client/Decorator.js.map +1 -0
  288. package/dist/client/Key.d.ts +85 -0
  289. package/dist/client/Key.d.ts.map +1 -0
  290. package/dist/client/Key.js +83 -0
  291. package/dist/client/Key.js.map +1 -0
  292. package/dist/client/Pending.d.ts +39 -0
  293. package/dist/client/Pending.d.ts.map +1 -0
  294. package/dist/client/Pending.js +12 -0
  295. package/dist/client/Pending.js.map +1 -0
  296. package/dist/client/Permissions.d.ts +34 -0
  297. package/dist/client/Permissions.d.ts.map +1 -0
  298. package/dist/client/Permissions.js +16 -0
  299. package/dist/client/Permissions.js.map +1 -0
  300. package/dist/client/Provider.d.ts +16 -0
  301. package/dist/client/Provider.d.ts.map +1 -0
  302. package/dist/client/Provider.js +12 -0
  303. package/dist/client/Provider.js.map +1 -0
  304. package/dist/client/Step.d.ts +21 -0
  305. package/dist/client/Step.d.ts.map +1 -0
  306. package/dist/client/Step.js +16 -0
  307. package/dist/client/Step.js.map +1 -0
  308. package/dist/client/Storage.d.ts +27 -0
  309. package/dist/client/Storage.d.ts.map +1 -0
  310. package/dist/client/Storage.js +16 -0
  311. package/dist/client/Storage.js.map +1 -0
  312. package/dist/client/TempoAccount.d.ts +40 -0
  313. package/dist/client/TempoAccount.d.ts.map +1 -0
  314. package/dist/client/TempoAccount.js +16 -0
  315. package/dist/client/TempoAccount.js.map +1 -0
  316. package/dist/client/Tokens.d.ts +25 -0
  317. package/dist/client/Tokens.d.ts.map +1 -0
  318. package/dist/client/Tokens.js +12 -0
  319. package/dist/client/Tokens.js.map +1 -0
  320. package/dist/client/User.d.ts +21 -0
  321. package/dist/client/User.d.ts.map +1 -0
  322. package/dist/client/User.js +12 -0
  323. package/dist/client/User.js.map +1 -0
  324. package/dist/client/actions/account.d.ts +25 -0
  325. package/dist/client/actions/account.d.ts.map +1 -0
  326. package/dist/client/actions/account.js +34 -0
  327. package/dist/client/actions/account.js.map +1 -0
  328. package/dist/client/actions/device.d.ts +53 -0
  329. package/dist/client/actions/device.d.ts.map +1 -0
  330. package/dist/client/actions/device.js +79 -0
  331. package/dist/client/actions/device.js.map +1 -0
  332. package/dist/client/actions/email.d.ts +84 -0
  333. package/dist/client/actions/email.d.ts.map +1 -0
  334. package/dist/client/actions/email.js +63 -0
  335. package/dist/client/actions/email.js.map +1 -0
  336. package/dist/client/actions/oauth.d.ts +115 -0
  337. package/dist/client/actions/oauth.d.ts.map +1 -0
  338. package/dist/client/actions/oauth.js +105 -0
  339. package/dist/client/actions/oauth.js.map +1 -0
  340. package/dist/client/actions/passkey.d.ts +88 -0
  341. package/dist/client/actions/passkey.d.ts.map +1 -0
  342. package/dist/client/actions/passkey.js +60 -0
  343. package/dist/client/actions/passkey.js.map +1 -0
  344. package/dist/client/actions/provider.d.ts +49 -0
  345. package/dist/client/actions/provider.d.ts.map +1 -0
  346. package/dist/client/actions/provider.js +34 -0
  347. package/dist/client/actions/provider.js.map +1 -0
  348. package/dist/client/actions/realm.d.ts +24 -0
  349. package/dist/client/actions/realm.d.ts.map +1 -0
  350. package/dist/client/actions/realm.js +15 -0
  351. package/dist/client/actions/realm.js.map +1 -0
  352. package/dist/client/actions/redirect.d.ts +153 -0
  353. package/dist/client/actions/redirect.d.ts.map +1 -0
  354. package/dist/client/actions/redirect.js +236 -0
  355. package/dist/client/actions/redirect.js.map +1 -0
  356. package/dist/client/internal/accessKey.d.ts +21 -0
  357. package/dist/client/internal/accessKey.d.ts.map +1 -0
  358. package/dist/client/internal/accessKey.js +38 -0
  359. package/dist/client/internal/accessKey.js.map +1 -0
  360. package/dist/client/internal/account.d.ts +14 -0
  361. package/dist/client/internal/account.d.ts.map +1 -0
  362. package/dist/client/internal/account.js +3 -0
  363. package/dist/client/internal/account.js.map +1 -0
  364. package/dist/client/internal/api.d.ts +106 -0
  365. package/dist/client/internal/api.d.ts.map +1 -0
  366. package/dist/client/internal/api.js +129 -0
  367. package/dist/client/internal/api.js.map +1 -0
  368. package/dist/client/internal/headless.d.ts +33 -0
  369. package/dist/client/internal/headless.d.ts.map +1 -0
  370. package/dist/client/internal/headless.js +46 -0
  371. package/dist/client/internal/headless.js.map +1 -0
  372. package/dist/client/internal/indexedDb.d.ts +9 -0
  373. package/dist/client/internal/indexedDb.d.ts.map +1 -0
  374. package/dist/client/internal/indexedDb.js +32 -0
  375. package/dist/client/internal/indexedDb.js.map +1 -0
  376. package/dist/client/internal/request.d.ts +58 -0
  377. package/dist/client/internal/request.d.ts.map +1 -0
  378. package/dist/client/internal/request.js +45 -0
  379. package/dist/client/internal/request.js.map +1 -0
  380. package/dist/client/internal/store.d.ts +12 -0
  381. package/dist/client/internal/store.d.ts.map +1 -0
  382. package/dist/client/internal/store.js +15 -0
  383. package/dist/client/internal/store.js.map +1 -0
  384. package/dist/client.d.ts +20 -0
  385. package/dist/client.d.ts.map +1 -0
  386. package/dist/client.js +20 -0
  387. package/dist/client.js.map +1 -0
  388. package/dist/index.d.ts +7 -0
  389. package/dist/index.d.ts.map +1 -0
  390. package/dist/index.js +7 -0
  391. package/dist/index.js.map +1 -0
  392. package/dist/internal/Apps.d.ts +3051 -0
  393. package/dist/internal/Apps.d.ts.map +1 -0
  394. package/dist/internal/Apps.js +472 -0
  395. package/dist/internal/Apps.js.map +1 -0
  396. package/dist/internal/Auth.d.ts +4058 -0
  397. package/dist/internal/Auth.d.ts.map +1 -0
  398. package/dist/internal/Auth.js +137 -0
  399. package/dist/internal/Auth.js.map +1 -0
  400. package/dist/internal/Authorize.d.ts +532 -0
  401. package/dist/internal/Authorize.d.ts.map +1 -0
  402. package/dist/internal/Authorize.js +326 -0
  403. package/dist/internal/Authorize.js.map +1 -0
  404. package/dist/internal/Device.d.ts +371 -0
  405. package/dist/internal/Device.d.ts.map +1 -0
  406. package/dist/internal/Device.js +271 -0
  407. package/dist/internal/Device.js.map +1 -0
  408. package/dist/internal/Env.d.ts +57 -0
  409. package/dist/internal/Env.d.ts.map +1 -0
  410. package/dist/internal/Env.js +2 -0
  411. package/dist/internal/Env.js.map +1 -0
  412. package/dist/internal/ErrorResponse.d.ts +609 -0
  413. package/dist/internal/ErrorResponse.d.ts.map +1 -0
  414. package/dist/internal/ErrorResponse.js +679 -0
  415. package/dist/internal/ErrorResponse.js.map +1 -0
  416. package/dist/internal/Id.d.ts +10 -0
  417. package/dist/internal/Id.d.ts.map +1 -0
  418. package/dist/internal/Id.js +34 -0
  419. package/dist/internal/Id.js.map +1 -0
  420. package/dist/internal/KeyAuthorization.d.ts +1456 -0
  421. package/dist/internal/KeyAuthorization.d.ts.map +1 -0
  422. package/dist/internal/KeyAuthorization.js +1030 -0
  423. package/dist/internal/KeyAuthorization.js.map +1 -0
  424. package/dist/internal/Limits.d.ts +65 -0
  425. package/dist/internal/Limits.d.ts.map +1 -0
  426. package/dist/internal/Limits.js +35 -0
  427. package/dist/internal/Limits.js.map +1 -0
  428. package/dist/internal/Log.d.ts +49 -0
  429. package/dist/internal/Log.d.ts.map +1 -0
  430. package/dist/internal/Log.js +101 -0
  431. package/dist/internal/Log.js.map +1 -0
  432. package/dist/internal/LogLine.d.ts +33 -0
  433. package/dist/internal/LogLine.d.ts.map +1 -0
  434. package/dist/internal/LogLine.js +56 -0
  435. package/dist/internal/LogLine.js.map +1 -0
  436. package/dist/internal/Migrations.d.ts +19 -0
  437. package/dist/internal/Migrations.d.ts.map +1 -0
  438. package/dist/internal/Migrations.js +57 -0
  439. package/dist/internal/Migrations.js.map +1 -0
  440. package/dist/internal/Owner.d.ts +146 -0
  441. package/dist/internal/Owner.d.ts.map +1 -0
  442. package/dist/internal/Owner.js +65 -0
  443. package/dist/internal/Owner.js.map +1 -0
  444. package/dist/internal/Passkey.d.ts +528 -0
  445. package/dist/internal/Passkey.d.ts.map +1 -0
  446. package/dist/internal/Passkey.js +658 -0
  447. package/dist/internal/Passkey.js.map +1 -0
  448. package/dist/internal/PendingKey.d.ts +49 -0
  449. package/dist/internal/PendingKey.d.ts.map +1 -0
  450. package/dist/internal/PendingKey.js +58 -0
  451. package/dist/internal/PendingKey.js.map +1 -0
  452. package/dist/internal/Privy.d.ts +105 -0
  453. package/dist/internal/Privy.d.ts.map +1 -0
  454. package/dist/internal/Privy.js +224 -0
  455. package/dist/internal/Privy.js.map +1 -0
  456. package/dist/internal/RateLimit.d.ts +190 -0
  457. package/dist/internal/RateLimit.d.ts.map +1 -0
  458. package/dist/internal/RateLimit.js +148 -0
  459. package/dist/internal/RateLimit.js.map +1 -0
  460. package/dist/internal/Realm.d.ts +281 -0
  461. package/dist/internal/Realm.d.ts.map +1 -0
  462. package/dist/internal/Realm.js +477 -0
  463. package/dist/internal/Realm.js.map +1 -0
  464. package/dist/internal/RequestId.d.ts +16 -0
  465. package/dist/internal/RequestId.d.ts.map +1 -0
  466. package/dist/internal/RequestId.js +78 -0
  467. package/dist/internal/RequestId.js.map +1 -0
  468. package/dist/internal/SigningKey.d.ts +115 -0
  469. package/dist/internal/SigningKey.d.ts.map +1 -0
  470. package/dist/internal/SigningKey.js +197 -0
  471. package/dist/internal/SigningKey.js.map +1 -0
  472. package/dist/internal/TestInbox.d.ts +42 -0
  473. package/dist/internal/TestInbox.d.ts.map +1 -0
  474. package/dist/internal/TestInbox.js +20 -0
  475. package/dist/internal/TestInbox.js.map +1 -0
  476. package/dist/internal/Timing.d.ts +51 -0
  477. package/dist/internal/Timing.d.ts.map +1 -0
  478. package/dist/internal/Timing.js +103 -0
  479. package/dist/internal/Timing.js.map +1 -0
  480. package/dist/internal/Validation.d.ts +52 -0
  481. package/dist/internal/Validation.d.ts.map +1 -0
  482. package/dist/internal/Validation.js +22 -0
  483. package/dist/internal/Validation.js.map +1 -0
  484. package/dist/internal/Wallet.d.ts +37 -0
  485. package/dist/internal/Wallet.d.ts.map +1 -0
  486. package/dist/internal/Wallet.js +43 -0
  487. package/dist/internal/Wallet.js.map +1 -0
  488. package/dist/worker.d.ts +12 -0
  489. package/dist/worker.d.ts.map +1 -0
  490. package/dist/worker.js +12 -0
  491. package/dist/worker.js.map +1 -0
  492. package/package.json +79 -3
  493. package/src/Api.ts +151 -0
  494. package/src/App.ts +56 -0
  495. package/src/api/account.ts +311 -0
  496. package/src/api/authenticate.ts +1290 -0
  497. package/src/api/authorize.ts +1030 -0
  498. package/src/api/device.ts +874 -0
  499. package/src/api/health.ts +72 -0
  500. package/src/api/lib/AccountStep.ts +335 -0
  501. package/src/api/lib/Auth.ts +134 -0
  502. package/src/api/lib/Consent.ts +339 -0
  503. package/src/api/lib/Cors.ts +107 -0
  504. package/src/api/lib/Database.ts +10 -0
  505. package/src/api/lib/DeviceRequest.ts +265 -0
  506. package/src/api/lib/FirstAccount.ts +90 -0
  507. package/src/api/lib/KeySigner.ts +393 -0
  508. package/src/api/lib/PasskeyLink.ts +162 -0
  509. package/src/api/lib/Session.ts +34 -0
  510. package/src/api/lib/SignInConsent.ts +316 -0
  511. package/src/api/oauth.ts +1282 -0
  512. package/src/api/provider.ts +441 -0
  513. package/src/app/components/Button.tsx +128 -0
  514. package/src/app/components/CodeInput.tsx +186 -0
  515. package/src/app/components/ErrorMessage.tsx +66 -0
  516. package/src/app/components/Grant.tsx +323 -0
  517. package/src/app/components/Input.tsx +48 -0
  518. package/src/app/components/Tooltip.tsx +45 -0
  519. package/src/app/components/icons/BRLA.png +0 -0
  520. package/src/app/components/icons/BRZ.svg +1 -0
  521. package/src/app/components/icons/CHFAU.png +0 -0
  522. package/src/app/components/icons/DLUSD.png +0 -0
  523. package/src/app/components/icons/EURAU.svg +1 -0
  524. package/src/app/components/icons/EURC.e.svg +1 -0
  525. package/src/app/components/icons/GBPA.svg +4 -0
  526. package/src/app/components/icons/GUSD.svg +1 -0
  527. package/src/app/components/icons/MACH.svg +4 -0
  528. package/src/app/components/icons/OUSD.svg +5 -0
  529. package/src/app/components/icons/PRIME.svg +14 -0
  530. package/src/app/components/icons/SBC.svg +1 -0
  531. package/src/app/components/icons/SEKAU.svg +5 -0
  532. package/src/app/components/icons/USD1.svg +30 -0
  533. package/src/app/components/icons/USDB.svg +11 -0
  534. package/src/app/components/icons/USDC.e.svg +1 -0
  535. package/src/app/components/icons/USDT0.svg +1 -0
  536. package/src/app/components/icons/USDY.svg +16 -0
  537. package/src/app/components/icons/USDe.svg +1 -0
  538. package/src/app/components/icons/YLDS.svg +3 -0
  539. package/src/app/components/icons/alphaUSD.svg +1 -0
  540. package/src/app/components/icons/betaUSD.svg +1 -0
  541. package/src/app/components/icons/cUSD.svg +1 -0
  542. package/src/app/components/icons/cbBTC.svg +1 -0
  543. package/src/app/components/icons/frxUSD.svg +1 -0
  544. package/src/app/components/icons/goUSD.svg +5 -0
  545. package/src/app/components/icons/iUSD.svg +1 -0
  546. package/src/app/components/icons/pathUSD.svg +25 -0
  547. package/src/app/components/icons/rUSD.svg +1 -0
  548. package/src/app/components/icons/reUSD.svg +1 -0
  549. package/src/app/components/icons/sUSDe.svg +1 -0
  550. package/src/app/components/icons/siUSD.svg +1 -0
  551. package/src/app/components/icons/stcUSD.svg +1 -0
  552. package/src/app/components/icons/syrupUSDC.svg +5 -0
  553. package/src/app/components/icons/thetaUSD.svg +1 -0
  554. package/src/app/components/icons/wYLDS.svg +10 -0
  555. package/src/app/components/icons/wsrUSD.svg +1 -0
  556. package/src/app/components/logos/OUSD.dark.svg +17 -0
  557. package/src/app/components/logos/OUSD.light.svg +17 -0
  558. package/src/app/crons/cleanup.ts +42 -0
  559. package/src/app/db/auth.ts +416 -0
  560. package/src/app/db/migrations/0000_better_auth.sql +53 -0
  561. package/src/app/db/migrations/0001_oauth_provider.sql +162 -0
  562. package/src/app/db/migrations/0002_device_code.sql +17 -0
  563. package/src/app/db/migrations/0003_realms.sql +27 -0
  564. package/src/app/db/migrations/0004_default_realm.sql +2 -0
  565. package/src/app/db/migrations/0005_passkeys.sql +30 -0
  566. package/src/app/db/migrations/0006_first_accounts.sql +9 -0
  567. package/src/app/db/migrations/0007_pending_keys.sql +13 -0
  568. package/src/app/db/migrations/0008_secp256k1_owners.sql +18 -0
  569. package/src/app/db/migrations/0009_device_requests.sql +8 -0
  570. package/src/app/db/migrations/0010_device_keys.sql +4 -0
  571. package/src/app/db/migrations/meta/0000_snapshot.json +362 -0
  572. package/src/app/db/migrations/meta/0001_snapshot.json +1487 -0
  573. package/src/app/db/migrations/meta/0002_snapshot.json +1603 -0
  574. package/src/app/db/migrations/meta/0003_snapshot.json +1760 -0
  575. package/src/app/db/migrations/meta/0004_snapshot.json +1760 -0
  576. package/src/app/db/migrations/meta/0005_snapshot.json +1911 -0
  577. package/src/app/db/migrations/meta/0006_snapshot.json +1967 -0
  578. package/src/app/db/migrations/meta/0007_snapshot.json +2047 -0
  579. package/src/app/db/migrations/meta/0008_snapshot.json +2157 -0
  580. package/src/app/db/migrations/meta/0009_snapshot.json +2207 -0
  581. package/src/app/db/migrations/meta/0010_snapshot.json +2231 -0
  582. package/src/app/db/migrations/meta/_journal.json +83 -0
  583. package/src/app/db/schema.ts +218 -0
  584. package/src/app/env.ts +49 -0
  585. package/src/app/lib/Client.ts +82 -0
  586. package/src/app/lib/Loader.ts +24 -0
  587. package/src/app/package.json +8 -0
  588. package/src/app/routeTree.gen.ts +198 -0
  589. package/src/app/router.tsx +48 -0
  590. package/src/app/routes/[_].flows.tsx +3001 -0
  591. package/src/app/routes/__root.tsx +91 -0
  592. package/src/app/routes/authorize.tsx +197 -0
  593. package/src/app/routes/choose-account.tsx +111 -0
  594. package/src/app/routes/deposit.tsx +105 -0
  595. package/src/app/routes/device.tsx +227 -0
  596. package/src/app/routes/index.tsx +115 -0
  597. package/src/app/routes/login.tsx +506 -0
  598. package/src/app/screens/Account.tsx +347 -0
  599. package/src/app/screens/Approval.tsx +276 -0
  600. package/src/app/screens/ChooseAccount.tsx +240 -0
  601. package/src/app/screens/Deposit.tsx +762 -0
  602. package/src/app/screens/DeviceApproval.tsx +480 -0
  603. package/src/app/screens/SignIn.tsx +362 -0
  604. package/src/app/screens/chains/base.svg +3 -0
  605. package/src/app/screens/chains/ethereum.svg +11 -0
  606. package/src/app/screens/chains/solana.svg +4 -0
  607. package/src/app/screens/chains/tempo.svg +4 -0
  608. package/src/app/server.ts +204 -0
  609. package/src/app/vite.config.ts +95 -0
  610. package/src/app/void.config.ts +29 -0
  611. package/src/app/zyzz.config.ts +274 -0
  612. package/src/cli/Admin.ts +73 -0
  613. package/src/cli/Apps.ts +29 -0
  614. package/src/cli/Cli.ts +42 -0
  615. package/src/cli/Project.ts +117 -0
  616. package/src/cli/Realms.ts +50 -0
  617. package/src/cli/Session.ts +239 -0
  618. package/src/cli/User.ts +45 -0
  619. package/src/cli/V1.ts +57 -0
  620. package/src/cli/bin.ts +44 -0
  621. package/src/cli/commands/admin/apps/create.ts +101 -0
  622. package/src/cli/commands/admin/apps/delete.ts +38 -0
  623. package/src/cli/commands/admin/apps/index.ts +15 -0
  624. package/src/cli/commands/admin/apps/list.ts +25 -0
  625. package/src/cli/commands/admin/apps/rotate-secret.ts +47 -0
  626. package/src/cli/commands/admin/apps/update.ts +86 -0
  627. package/src/cli/commands/admin/index.ts +14 -0
  628. package/src/cli/commands/admin/migrate.ts +16 -0
  629. package/src/cli/commands/admin/realms/add.ts +40 -0
  630. package/src/cli/commands/admin/realms/index.ts +14 -0
  631. package/src/cli/commands/admin/realms/list.ts +38 -0
  632. package/src/cli/commands/admin/realms/passkeys/index.ts +15 -0
  633. package/src/cli/commands/admin/realms/passkeys/set.ts +44 -0
  634. package/src/cli/commands/admin/realms/privy/index.ts +14 -0
  635. package/src/cli/commands/admin/realms/privy/set.ts +69 -0
  636. package/src/cli/commands/admin/realms/remove.ts +33 -0
  637. package/src/cli/commands/admin/realms/secp256k1/disable.ts +40 -0
  638. package/src/cli/commands/admin/realms/secp256k1/enable.ts +40 -0
  639. package/src/cli/commands/admin/realms/secp256k1/index.ts +19 -0
  640. package/src/cli/commands/admin/realms/set.ts +46 -0
  641. package/src/cli/commands/admin/rotate-key.ts +47 -0
  642. package/src/cli/commands/init.ts +42 -0
  643. package/src/cli/commands/login.ts +32 -0
  644. package/src/cli/commands/logout.ts +19 -0
  645. package/src/cli/commands/whoami.ts +23 -0
  646. package/src/client/Actions.ts +168 -0
  647. package/src/client/Auth.ts +285 -0
  648. package/src/client/Authorization.ts +34 -0
  649. package/src/client/Decorator.ts +410 -0
  650. package/src/client/Key.ts +140 -0
  651. package/src/client/Pending.ts +46 -0
  652. package/src/client/Permissions.ts +39 -0
  653. package/src/client/Provider.ts +18 -0
  654. package/src/client/Step.ts +24 -0
  655. package/src/client/Storage.ts +29 -0
  656. package/src/client/TempoAccount.ts +42 -0
  657. package/src/client/Tokens.ts +27 -0
  658. package/src/client/User.ts +23 -0
  659. package/src/client/actions/account.ts +57 -0
  660. package/src/client/actions/device.ts +151 -0
  661. package/src/client/actions/email.ts +141 -0
  662. package/src/client/actions/oauth.ts +182 -0
  663. package/src/client/actions/passkey.ts +141 -0
  664. package/src/client/actions/provider.ts +70 -0
  665. package/src/client/actions/realm.ts +36 -0
  666. package/src/client/actions/redirect.ts +408 -0
  667. package/src/client/internal/accessKey.ts +54 -0
  668. package/src/client/internal/account.ts +15 -0
  669. package/src/client/internal/api.ts +224 -0
  670. package/src/client/internal/headless.ts +77 -0
  671. package/src/client/internal/indexedDb.ts +44 -0
  672. package/src/client/internal/request.ts +71 -0
  673. package/src/client/internal/store.ts +20 -0
  674. package/src/client.ts +19 -0
  675. package/src/index.ts +6 -0
  676. package/src/internal/Apps.ts +718 -0
  677. package/src/internal/Auth.ts +203 -0
  678. package/src/internal/Authorize.ts +424 -0
  679. package/src/internal/Balance.ts +168 -0
  680. package/src/internal/BodyLimit.ts +36 -0
  681. package/src/internal/Chain.ts +16 -0
  682. package/src/internal/Device.ts +469 -0
  683. package/src/internal/Env.ts +58 -0
  684. package/src/internal/ErrorResponse.ts +854 -0
  685. package/src/internal/Id.ts +41 -0
  686. package/src/internal/KeyAuthorization.ts +1339 -0
  687. package/src/internal/Limits.ts +39 -0
  688. package/src/internal/Log.ts +178 -0
  689. package/src/internal/LogLine.ts +87 -0
  690. package/src/internal/Logout.ts +336 -0
  691. package/src/internal/Migrations.ts +86 -0
  692. package/src/internal/OpenApi.ts +300 -0
  693. package/src/internal/Owner.ts +211 -0
  694. package/src/internal/Passkey.ts +1052 -0
  695. package/src/internal/PendingKey.ts +104 -0
  696. package/src/internal/Privy.ts +402 -0
  697. package/src/internal/Provider.ts +125 -0
  698. package/src/internal/RateLimit.ts +259 -0
  699. package/src/internal/Realm.ts +768 -0
  700. package/src/internal/RequestId.ts +118 -0
  701. package/src/internal/SignInGrant.ts +168 -0
  702. package/src/internal/SigningKey.ts +286 -0
  703. package/src/internal/TempoAccount.ts +342 -0
  704. package/src/internal/TestInbox.ts +51 -0
  705. package/src/internal/Timing.ts +158 -0
  706. package/src/internal/Validation.ts +52 -0
  707. package/src/internal/Wallet.ts +62 -0
  708. package/src/internal/owners/Passkey.ts +72 -0
  709. package/src/internal/owners/Privy.ts +81 -0
  710. package/src/internal/owners/Secp256k1.ts +143 -0
  711. package/src/types/app.d.ts +19 -0
  712. package/src/worker.ts +11 -0
@@ -0,0 +1,762 @@
1
+ /**
2
+ * Renders the deposit screen: the list of crypto networks a Tempo Account receives deposits on,
3
+ * and the receive screen with the account's address and QR code for one network.
4
+ * @module
5
+ */
6
+ import { Select } from '@base-ui/react/select'
7
+ import { Link } from '@tanstack/react-router'
8
+ import { Cuer } from 'cuer'
9
+ import { type ReactNode, useState } from 'react'
10
+ import ArrowLeft from '~icons/lucide/arrow-left'
11
+ import Check from '~icons/lucide/check'
12
+ import ChevronDown from '~icons/lucide/chevron-down'
13
+ import ChevronRight from '~icons/lucide/chevron-right'
14
+ import Copy from '~icons/lucide/copy'
15
+ import Apple from '~icons/simple-icons/apple'
16
+ import { Button } from '../components/Button.js'
17
+ import { ErrorMessage } from '../components/ErrorMessage.js'
18
+ import pathUsd from '../components/icons/pathUSD.svg?url'
19
+ import usdc from '../components/icons/USDC.e.svg?url'
20
+ import usdt from '../components/icons/USDT0.svg?url'
21
+ import { Tooltip } from '../components/Tooltip.js'
22
+ import { style, variants } from '../zyzz.config.js'
23
+ import base from './chains/base.svg?url'
24
+ import ethereum from './chains/ethereum.svg?url'
25
+ import solana from './chains/solana.svg?url'
26
+ import tempo from './chains/tempo.svg?url'
27
+
28
+ /** A network that deposits arrive on. Only Tempo receives them so far. */
29
+ type Network = {
30
+ /** The tags the list shows, which name the network's main assets. */
31
+ assets: readonly string[]
32
+ /** Whether the screen accepts deposits on the network. */
33
+ available: boolean
34
+ /** The URL of the network's logo. */
35
+ icon: string
36
+ /** The network's ID. */
37
+ id: 'base' | 'ethereum' | 'solana' | 'tempo'
38
+ /** The network's display name. */
39
+ name: string
40
+ }
41
+
42
+ // Base and Ethereum share the account's address format, but a transfer there does not reach Tempo,
43
+ // so their receive screens stay unavailable until deposits bridge.
44
+ const networks: readonly Network[] = [
45
+ {
46
+ // The verified symbols, so a sender picks the exact token Tempo accepts.
47
+ assets: ['USDC.e', 'USDT0', 'pathUSD'],
48
+ available: true,
49
+ icon: tempo,
50
+ id: 'tempo',
51
+ name: 'Tempo',
52
+ },
53
+ {
54
+ assets: ['USDC', 'ETH', 'WETH', '+3'],
55
+ available: false,
56
+ icon: base,
57
+ id: 'base',
58
+ name: 'Base',
59
+ },
60
+ {
61
+ assets: ['USDC', 'ETH', 'USDT', '+2'],
62
+ available: false,
63
+ icon: ethereum,
64
+ id: 'ethereum',
65
+ name: 'Ethereum',
66
+ },
67
+ {
68
+ assets: ['USDC', 'SOL'],
69
+ available: false,
70
+ icon: solana,
71
+ id: 'solana',
72
+ name: 'Solana',
73
+ },
74
+ ]
75
+
76
+ /** The stablecoins a deposit on Tempo accepts. */
77
+ const stablecoins = [
78
+ { icon: usdc, symbol: 'USDC.e' },
79
+ { icon: usdt, symbol: 'USDT0' },
80
+ { icon: pathUsd, symbol: 'pathUSD' },
81
+ ] as const
82
+
83
+ /**
84
+ * The deposit screen. Without `method` it lists the networks. With `method: 'tempo'` it shows the
85
+ * account's address as a QR code and as text, with a copy control.
86
+ */
87
+ export function Deposit(props: Deposit.Props): ReactNode {
88
+ const Subtitle = props.heading === 'h4' ? 'h5' : 'h2'
89
+
90
+ if (props.method === 'tempo')
91
+ return (
92
+ <div {...styles.column()}>
93
+ <div {...styles.intro()}>
94
+ <Header
95
+ back={
96
+ <Link
97
+ {...styles.back()}
98
+ aria-label="Back"
99
+ {...(props.address
100
+ ? { search: { address: props.address }, to: '/deposit' }
101
+ : { to: '/' })}
102
+ >
103
+ <ArrowLeft {...styles.backIcon()} aria-hidden />
104
+ </Link>
105
+ }
106
+ heading={props.heading}
107
+ title="Receive funds"
108
+ />
109
+ <p {...styles.description()}>
110
+ Send <strong>supported stablecoins</strong> to this address.
111
+ </p>
112
+ </div>
113
+ {props.address ? (
114
+ <Receive address={props.address} />
115
+ ) : (
116
+ <ErrorMessage>{props.error}</ErrorMessage>
117
+ )}
118
+ </div>
119
+ )
120
+
121
+ return (
122
+ <div {...styles.column()}>
123
+ <div {...styles.intro()}>
124
+ <Header
125
+ back={
126
+ <Link {...styles.back()} aria-label="Back" to="/">
127
+ <ArrowLeft {...styles.backIcon()} aria-hidden />
128
+ </Link>
129
+ }
130
+ heading={props.heading}
131
+ title="Deposit"
132
+ />
133
+ <p {...styles.description()}>
134
+ Choose an option below to send stablecoins to your wallet.
135
+ </p>
136
+ </div>
137
+ {props.address ? (
138
+ <>
139
+ <section {...styles.section()}>
140
+ <Subtitle {...styles.sectionTitle()}>Crypto</Subtitle>
141
+ <ul {...styles.list()} role="list">
142
+ {networks.map((network) => (
143
+ <li key={network.id}>
144
+ <MethodRow
145
+ address={network.available ? props.address : undefined}
146
+ assets={network.assets}
147
+ icon={<img {...styles.logo()} alt="" src={network.icon} />}
148
+ name={network.name}
149
+ />
150
+ </li>
151
+ ))}
152
+ </ul>
153
+ </section>
154
+ <section {...styles.section()}>
155
+ <Subtitle {...styles.sectionTitle()}>Cash</Subtitle>
156
+ <ul {...styles.list()} role="list">
157
+ <li>
158
+ {/* The mark follows the text color, so it is black in light mode and white in dark mode. */}
159
+ <MethodRow
160
+ assets={['Coinbase']}
161
+ icon={<Apple {...styles.apple()} aria-hidden />}
162
+ name="Apple Pay"
163
+ />
164
+ </li>
165
+ </ul>
166
+ </section>
167
+ </>
168
+ ) : (
169
+ <ErrorMessage>{props.error}</ErrorMessage>
170
+ )}
171
+ </div>
172
+ )
173
+ }
174
+
175
+ export declare namespace Deposit {
176
+ type Props = {
177
+ /** The account that receives the deposit, or none when the address is not one of the user's. */
178
+ address?: `0x${string}` | undefined
179
+ /** Why the screen shows no address, such as an address that is not one of the user's. */
180
+ error?: string | undefined
181
+ /** The level of the screen's title: `h1` by default, or `h4` on the flows canvas, below the canvas's own headings. */
182
+ heading?: 'h1' | 'h4' | undefined
183
+ /** The method the screen shows, or none for the list of networks. */
184
+ method?: 'tempo' | undefined
185
+ }
186
+ }
187
+
188
+ /** The screen's title, with a link back. */
189
+ function Header(props: Header.Props): ReactNode {
190
+ const Title = props.heading ?? 'h1'
191
+ return (
192
+ <header {...styles.header()}>
193
+ {props.back}
194
+ <Title {...styles.title()}>{props.title}</Title>
195
+ </header>
196
+ )
197
+ }
198
+
199
+ declare namespace Header {
200
+ type Props = {
201
+ /** The link back, which sits at the start of the title row. */
202
+ back: ReactNode
203
+ /** The level of the title: `h1` by default, or `h4` on the flows canvas. */
204
+ heading?: 'h1' | 'h4' | undefined
205
+ /** The screen's heading. */
206
+ title: string
207
+ }
208
+ }
209
+
210
+ /** One deposit method: a link when it is available, or a dimmed row marked as coming soon. */
211
+ function MethodRow(props: MethodRow.Props): ReactNode {
212
+ const { address } = props
213
+ const content = (
214
+ <>
215
+ <span {...styles.methodIcon()}>{props.icon}</span>
216
+ <span {...styles.networkBody()}>
217
+ <span {...styles.networkName()}>{props.name}</span>
218
+ <span {...styles.tags()}>
219
+ {props.assets.map((asset) => (
220
+ <span {...styles.tag()} key={asset}>
221
+ {asset}
222
+ </span>
223
+ ))}
224
+ </span>
225
+ </span>
226
+ {address ? (
227
+ <ChevronRight {...styles.chevron()} aria-hidden />
228
+ ) : (
229
+ <span {...styles.soon()}>Coming soon</span>
230
+ )}
231
+ </>
232
+ )
233
+
234
+ // Only Tempo is available, so an available row opens its receive screen.
235
+ if (address)
236
+ return (
237
+ <Link
238
+ {...styles.network({ available: true })}
239
+ search={{ address, method: 'tempo' }}
240
+ to="/deposit"
241
+ >
242
+ {content}
243
+ </Link>
244
+ )
245
+
246
+ return (
247
+ <div {...styles.network({ available: false })} aria-disabled>
248
+ {content}
249
+ </div>
250
+ )
251
+ }
252
+
253
+ declare namespace MethodRow {
254
+ type Props = {
255
+ /** The account the receive screen opens for, or none when the method is unavailable. */
256
+ address?: `0x${string}` | undefined
257
+ /** The tags that name the method's assets or provider. */
258
+ assets: readonly string[]
259
+ /** The method's logo. */
260
+ icon: ReactNode
261
+ /** The method's name. */
262
+ name: string
263
+ }
264
+ }
265
+
266
+ /**
267
+ * The account's address as a QR code and as text, a network picker, the accepted stablecoins, and
268
+ * the controls that copy the address.
269
+ */
270
+ function Receive(props: Receive.Props): ReactNode {
271
+ // The control that copied shows the confirmation, so the other keeps its label.
272
+ const [status, setStatus] = useState<
273
+ 'button' | 'failed' | 'icon' | undefined
274
+ >()
275
+
276
+ function copy(source: 'button' | 'icon') {
277
+ // Both outcomes set the status, so the promise cannot reject. The `then` also catches a browser
278
+ // without the Clipboard API, which throws on the property read.
279
+ void Promise.resolve()
280
+ .then(() => navigator.clipboard.writeText(props.address))
281
+ .then(
282
+ () => {
283
+ setStatus(source)
284
+ setTimeout(() => setStatus(undefined), 2000)
285
+ },
286
+ () => setStatus('failed'),
287
+ )
288
+ }
289
+
290
+ return (
291
+ <>
292
+ <div {...styles.card()}>
293
+ <span {...styles.cardHeader()}>
294
+ <span {...styles.label()}>Deposit address</span>
295
+ <button
296
+ {...styles.copy()}
297
+ aria-label={status === 'icon' ? 'Address copied' : 'Copy address'}
298
+ onClick={() => copy('icon')}
299
+ type="button"
300
+ >
301
+ {status === 'icon' ? (
302
+ <Check {...styles.icon()} aria-hidden />
303
+ ) : (
304
+ <Copy {...styles.icon()} aria-hidden />
305
+ )}
306
+ </button>
307
+ </span>
308
+ <div {...styles.qr()}>
309
+ <Cuer arena={tempo} value={props.address} />
310
+ </div>
311
+ <code
312
+ {...styles.address()}
313
+ data-testid="deposit-address"
314
+ title={props.address}
315
+ >
316
+ {props.address}
317
+ </code>
318
+ </div>
319
+
320
+ <div {...styles.fields()}>
321
+ {/* Only Tempo is selectable, so the picker previews the networks that come later. */}
322
+ <Select.Root value="tempo">
323
+ <div {...styles.field()}>
324
+ <Select.Label {...styles.label()}>Network</Select.Label>
325
+ <Select.Trigger {...styles.trigger()}>
326
+ <Select.Value>
327
+ {() => (
328
+ <span {...styles.fieldValue()}>
329
+ <img {...styles.fieldLogo()} alt="" src={tempo} />
330
+ Tempo
331
+ </span>
332
+ )}
333
+ </Select.Value>
334
+ <Select.Icon {...styles.triggerIcon()}>
335
+ <ChevronDown {...styles.icon()} aria-hidden />
336
+ </Select.Icon>
337
+ </Select.Trigger>
338
+ </div>
339
+ <Select.Portal>
340
+ <Select.Positioner
341
+ align="end"
342
+ alignItemWithTrigger={false}
343
+ sideOffset={8}
344
+ >
345
+ <Select.Popup {...styles.popup()}>
346
+ <Select.List>
347
+ {networks.map((network) => (
348
+ <Select.Item
349
+ {...styles.option()}
350
+ disabled={!network.available}
351
+ key={network.id}
352
+ value={network.id}
353
+ >
354
+ <img {...styles.fieldLogo()} alt="" src={network.icon} />
355
+ <Select.ItemText>{network.name}</Select.ItemText>
356
+ {network.available ? (
357
+ <Select.ItemIndicator {...styles.indicator()}>
358
+ <Check {...styles.icon()} aria-hidden />
359
+ </Select.ItemIndicator>
360
+ ) : (
361
+ <span {...styles.soon()}>Coming soon</span>
362
+ )}
363
+ </Select.Item>
364
+ ))}
365
+ </Select.List>
366
+ </Select.Popup>
367
+ </Select.Positioner>
368
+ </Select.Portal>
369
+ </Select.Root>
370
+
371
+ <div {...styles.field()}>
372
+ <span {...styles.label()}>Supported stablecoins</span>
373
+ <span {...styles.coins()}>
374
+ {stablecoins.map((coin) => (
375
+ <Tooltip key={coin.symbol} label={coin.symbol}>
376
+ <span {...styles.coin()} tabIndex={0}>
377
+ <img
378
+ {...styles.coinLogo()}
379
+ alt={coin.symbol}
380
+ height={20}
381
+ src={coin.icon}
382
+ width={20}
383
+ />
384
+ </span>
385
+ </Tooltip>
386
+ ))}
387
+ </span>
388
+ </div>
389
+ </div>
390
+
391
+ <p {...styles.warning()} role="note">
392
+ Only send <strong>supported stablecoins</strong> on{' '}
393
+ <strong>Tempo</strong>. Sending other tokens or using a different
394
+ network may result in permanent loss.
395
+ </p>
396
+
397
+ <div {...styles.actions()}>
398
+ <Button onClick={() => copy('button')}>
399
+ {status === 'button' ? 'Copied' : 'Copy address'}
400
+ </Button>
401
+ <Button to="/" variant="secondary">
402
+ Done
403
+ </Button>
404
+ </div>
405
+ <p {...styles.status()} aria-live="polite" role="status">
406
+ {(() => {
407
+ if (status === 'failed')
408
+ return 'The address could not be copied. Select it and copy it manually.'
409
+ if (status) return 'Address copied.'
410
+ return undefined
411
+ })()}
412
+ </p>
413
+ </>
414
+ )
415
+ }
416
+
417
+ declare namespace Receive {
418
+ type Props = {
419
+ /** The address that receives the deposit. */
420
+ address: `0x${string}`
421
+ }
422
+ }
423
+
424
+ namespace styles {
425
+ // The two buttons share the row equally.
426
+ export const actions = style({
427
+ display: 'flex',
428
+ gap: 3,
429
+ '& > *': { flex: 1, minWidth: 0 },
430
+ })
431
+
432
+ // One line down to phone width. A narrower screen elides the end, and the QR code and copy control keep it whole.
433
+ export const address = style({
434
+ color: 'gray.900',
435
+ overflow: 'hidden',
436
+ textAlign: 'center',
437
+ textOverflow: 'ellipsis',
438
+ typography: 'label.12.mono',
439
+ whiteSpace: 'nowrap',
440
+ })
441
+
442
+ export const apple = style({ color: 'foreground', height: 7, width: 7 })
443
+
444
+ // Sits at the start of the title row, and its arrow hangs past the column edge. A phone's gutter
445
+ // fits only a short hang.
446
+ export const back = style({
447
+ alignItems: 'center',
448
+ borderRadius: 'full',
449
+ bottom: 0,
450
+ color: 'foreground',
451
+ display: 'flex',
452
+ height: 10,
453
+ justifyContent: 'center',
454
+ left: 'outdent',
455
+ marginBlock: 'auto',
456
+ outline: 'none',
457
+ position: 'absolute',
458
+ top: 0,
459
+ width: 10,
460
+ ':focus-visible': {
461
+ outline: '2px solid',
462
+ outlineColor: 'blue.700',
463
+ outlineOffset: '2px',
464
+ },
465
+ ':hover': { backgroundColor: 'grayAlpha.200' },
466
+ // From this width, the gutter beside the column fits the wide hang.
467
+ '@media (min-width: 32rem)': { left: 'outdentWide' },
468
+ })
469
+
470
+ export const backIcon = style({ height: 6, width: 6 })
471
+
472
+ export const card = style({
473
+ backgroundColor: 'background.surface',
474
+ border: '1px solid',
475
+ borderColor: 'gray.400',
476
+ borderRadius: 'lg',
477
+ display: 'grid',
478
+ gap: 4,
479
+ padding: 3,
480
+ })
481
+
482
+ export const cardHeader = style({
483
+ alignItems: 'center',
484
+ display: 'flex',
485
+ justifyContent: 'space-between',
486
+ })
487
+
488
+ export const chevron = style({
489
+ color: 'gray.900',
490
+ flexShrink: 0,
491
+ height: 4,
492
+ marginLeft: 'auto',
493
+ width: 4,
494
+ })
495
+
496
+ export const coin = style({
497
+ borderRadius: 'full',
498
+ outline: '2px solid',
499
+ outlineColor: 'background.surface',
500
+ ':focus-visible': { outlineColor: 'blue.700' },
501
+ '@media (prefers-reduced-motion: no-preference)': {
502
+ transitionDuration: '150ms',
503
+ transitionProperty: 'margin',
504
+ transitionTimingFunction: 'in-out',
505
+ },
506
+ })
507
+
508
+ export const coinLogo = style({
509
+ borderRadius: 'full',
510
+ display: 'block',
511
+ height: 5,
512
+ width: 5,
513
+ })
514
+
515
+ // The coins overlap, and spread apart while hovered so each one can show its tooltip.
516
+ export const coins = style({
517
+ display: 'flex',
518
+ flexShrink: 0,
519
+ '& > span + span': { marginInlineStart: 'overlap' },
520
+ '&:hover > span + span': { marginInlineStart: 1 },
521
+ })
522
+
523
+ export const column = style({
524
+ display: 'grid',
525
+ gap: 6,
526
+ maxWidth: 'sm',
527
+ width: 'full',
528
+ })
529
+
530
+ // The pseudo-element bleeds past the icon, so the touch target is larger than what shows.
531
+ export const copy = style({
532
+ backgroundColor: 'transparent',
533
+ border: 'none',
534
+ color: 'gray.900',
535
+ cursor: 'pointer',
536
+ display: 'flex',
537
+ flexShrink: 0,
538
+ outline: 'none',
539
+ padding: 0,
540
+ position: 'relative',
541
+ '&::before': {
542
+ content: '""',
543
+ inset: 'bleed',
544
+ position: 'absolute',
545
+ },
546
+ ':focus-visible': {
547
+ outline: '2px solid',
548
+ outlineColor: 'blue.700',
549
+ outlineOffset: '2px',
550
+ },
551
+ ':hover': { color: 'foreground' },
552
+ })
553
+
554
+ export const description = style({
555
+ color: 'gray.900',
556
+ textAlign: 'center',
557
+ textWrap: 'balance',
558
+ typography: 'copy.14',
559
+ '& strong': { color: 'foreground', fontWeight: 'medium' },
560
+ })
561
+
562
+ export const field = style({
563
+ alignItems: 'center',
564
+ display: 'flex',
565
+ gap: 4,
566
+ justifyContent: 'space-between',
567
+ minHeight: 12,
568
+ paddingInline: 4,
569
+ })
570
+
571
+ export const fieldLogo = style({ borderRadius: 'full', height: 5, width: 5 })
572
+
573
+ // Select renders a hidden input between the rows, so the divider selects any later row.
574
+ export const fields = style({
575
+ backgroundColor: 'background.surface',
576
+ border: '1px solid',
577
+ borderColor: 'gray.400',
578
+ borderRadius: 'lg',
579
+ display: 'grid',
580
+ '& > div ~ div': { borderTop: '1px solid', borderTopColor: 'gray.400' },
581
+ })
582
+
583
+ export const fieldValue = style({
584
+ alignItems: 'center',
585
+ display: 'flex',
586
+ gap: 2,
587
+ typography: 'label.14',
588
+ })
589
+
590
+ export const header = style({
591
+ display: 'flex',
592
+ justifyContent: 'center',
593
+ position: 'relative',
594
+ })
595
+
596
+ export const icon = style({ height: 4, width: 4 })
597
+
598
+ export const indicator = style({ display: 'flex', marginLeft: 'auto' })
599
+
600
+ export const intro = style({ display: 'grid', gap: 2 })
601
+
602
+ export const label = style({ color: 'gray.900', typography: 'label.14' })
603
+
604
+ export const list = style({
605
+ display: 'grid',
606
+ gap: 1,
607
+ listStyle: 'none',
608
+ margin: 0,
609
+ padding: 0,
610
+ })
611
+
612
+ export const logo = style({
613
+ borderRadius: 'full',
614
+ display: 'block',
615
+ height: 9,
616
+ width: 9,
617
+ })
618
+
619
+ export const methodIcon = style({
620
+ alignItems: 'center',
621
+ display: 'flex',
622
+ flexShrink: 0,
623
+ height: 9,
624
+ justifyContent: 'center',
625
+ width: 9,
626
+ })
627
+
628
+ export const network = variants({
629
+ base: {
630
+ alignItems: 'center',
631
+ borderRadius: 'lg',
632
+ color: 'foreground',
633
+ display: 'flex',
634
+ gap: 3,
635
+ outline: 'none',
636
+ padding: 2,
637
+ textDecoration: 'none',
638
+ },
639
+ variants: {
640
+ available: {
641
+ false: { opacity: 0.5 },
642
+ true: {
643
+ ':focus-visible': {
644
+ outline: '2px solid',
645
+ outlineColor: 'blue.700',
646
+ },
647
+ ':hover': { backgroundColor: 'grayAlpha.200' },
648
+ },
649
+ },
650
+ },
651
+ })
652
+
653
+ export const networkBody = style({ display: 'grid', gap: 1, minWidth: 0 })
654
+
655
+ export const networkName = style({
656
+ fontWeight: 'medium',
657
+ typography: 'label.16',
658
+ })
659
+
660
+ export const option = style({
661
+ alignItems: 'center',
662
+ borderRadius: 'md',
663
+ cursor: 'default',
664
+ display: 'flex',
665
+ gap: 2,
666
+ outline: 'none',
667
+ paddingBlock: 2,
668
+ paddingInline: 2,
669
+ typography: 'label.14',
670
+ userSelect: 'none',
671
+ '&[data-disabled]': { opacity: 0.5 },
672
+ '&[data-highlighted]': { backgroundColor: 'grayAlpha.200' },
673
+ })
674
+
675
+ export const popup = style({
676
+ backgroundColor: 'background.surface',
677
+ border: '1px solid',
678
+ borderColor: 'gray.400',
679
+ borderRadius: 'lg',
680
+ boxShadow: 'lg',
681
+ minWidth: 56,
682
+ outline: 'none',
683
+ padding: 1,
684
+ })
685
+
686
+ // Scanners read dark modules on a light ground with a quiet zone, so the code keeps them in dark mode.
687
+ export const qr = style({
688
+ backgroundColor: 'white',
689
+ borderRadius: 'md',
690
+ color: 'black',
691
+ justifySelf: 'center',
692
+ padding: 2,
693
+ width: 44,
694
+ })
695
+
696
+ export const section = style({ display: 'grid', gap: 2 })
697
+
698
+ export const sectionTitle = style({ typography: 'heading.20' })
699
+
700
+ export const soon = style({
701
+ color: 'gray.900',
702
+ flexShrink: 0,
703
+ marginLeft: 'auto',
704
+ typography: 'label.12',
705
+ })
706
+
707
+ export const status = style({
708
+ color: 'gray.900',
709
+ textAlign: 'center',
710
+ typography: 'copy.13',
711
+ })
712
+
713
+ export const tag = style({
714
+ backgroundColor: 'gray.200',
715
+ borderRadius: 'sm',
716
+ color: 'gray.900',
717
+ paddingInline: 1,
718
+ typography: 'label.12',
719
+ })
720
+
721
+ export const tags = style({ display: 'flex', flexWrap: 'wrap', gap: 1 })
722
+
723
+ export const title = style({
724
+ letterSpacing: 'title',
725
+ textAlign: 'center',
726
+ typography: 'heading.24',
727
+ })
728
+
729
+ // The negative margin keeps the label in line with the row while the hover fill bleeds outward.
730
+ export const trigger = style({
731
+ alignItems: 'center',
732
+ backgroundColor: 'transparent',
733
+ border: 'none',
734
+ borderRadius: 'md',
735
+ color: 'foreground',
736
+ cursor: 'pointer',
737
+ display: 'flex',
738
+ gap: 2,
739
+ marginRight: 'bleed',
740
+ outline: 'none',
741
+ paddingBlock: 2,
742
+ paddingInline: 3,
743
+ ':focus-visible': {
744
+ outline: '2px solid',
745
+ outlineColor: 'blue.700',
746
+ },
747
+ ':hover': { backgroundColor: 'grayAlpha.200' },
748
+ })
749
+
750
+ export const triggerIcon = style({ color: 'gray.900', display: 'flex' })
751
+
752
+ export const warning = style({
753
+ backgroundColor: 'amber.100',
754
+ border: '1px solid',
755
+ borderColor: 'amber.400',
756
+ borderRadius: 'lg',
757
+ color: 'amber.900',
758
+ padding: 4,
759
+ typography: 'copy.13',
760
+ '& strong': { fontWeight: 'medium' },
761
+ })
762
+ }