@stackframe/stack 2.4.28 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/components/credential-sign-in-form.d.mts +5 -0
  3. package/dist/components/credential-sign-in-form.d.ts +5 -0
  4. package/dist/components/{credential-sign-in.js → credential-sign-in-form.js} +33 -23
  5. package/dist/components/credential-sign-in-form.js.map +1 -0
  6. package/dist/components/credential-sign-up-form.d.mts +5 -0
  7. package/dist/components/credential-sign-up-form.d.ts +5 -0
  8. package/dist/components/{credential-sign-up.js → credential-sign-up-form.js} +34 -24
  9. package/dist/components/credential-sign-up-form.js.map +1 -0
  10. package/dist/components/{form-warning.d.mts → elements/form-warning.d.mts} +1 -1
  11. package/dist/components/{form-warning.d.ts → elements/form-warning.d.ts} +1 -1
  12. package/dist/components/{form-warning.js → elements/form-warning.js} +7 -4
  13. package/dist/components/elements/form-warning.js.map +1 -0
  14. package/dist/components/{maybe-full-page.d.mts → elements/maybe-full-page.d.mts} +3 -3
  15. package/dist/components/{maybe-full-page.d.ts → elements/maybe-full-page.d.ts} +3 -3
  16. package/dist/components/{maybe-full-page.js → elements/maybe-full-page.js} +11 -10
  17. package/dist/components/elements/maybe-full-page.js.map +1 -0
  18. package/dist/components/{separator-with-text.d.mts → elements/separator-with-text.d.mts} +1 -1
  19. package/dist/components/{separator-with-text.d.ts → elements/separator-with-text.d.ts} +1 -1
  20. package/dist/components/{separator-with-text.js → elements/separator-with-text.js} +11 -7
  21. package/dist/components/elements/separator-with-text.js.map +1 -0
  22. package/dist/components/elements/ssr-layout-effect.d.mts +7 -0
  23. package/dist/components/elements/ssr-layout-effect.d.ts +7 -0
  24. package/dist/{joy.js → components/elements/ssr-layout-effect.js} +17 -8
  25. package/dist/components/elements/ssr-layout-effect.js.map +1 -0
  26. package/dist/components/{user-avatar.d.mts → elements/user-avatar.d.mts} +2 -2
  27. package/dist/components/{user-avatar.d.ts → elements/user-avatar.d.ts} +2 -2
  28. package/dist/components/elements/user-avatar.js +40 -0
  29. package/dist/components/elements/user-avatar.js.map +1 -0
  30. package/dist/components/{forgot-password.d.mts → forgot-password-form.d.mts} +2 -2
  31. package/dist/components/{forgot-password.d.ts → forgot-password-form.d.ts} +2 -2
  32. package/dist/components/{forgot-password.js → forgot-password-form.js} +28 -24
  33. package/dist/components/forgot-password-form.js.map +1 -0
  34. package/dist/components/magic-link-sign-in-form.d.mts +5 -0
  35. package/dist/components/magic-link-sign-in-form.d.ts +5 -0
  36. package/dist/components/{magic-link-sign-in.js → magic-link-sign-in-form.js} +30 -20
  37. package/dist/components/magic-link-sign-in-form.js.map +1 -0
  38. package/dist/components/message-cards/known-error-message-card.d.mts +1 -1
  39. package/dist/components/message-cards/known-error-message-card.d.ts +1 -1
  40. package/dist/components/message-cards/known-error-message-card.js +10 -16
  41. package/dist/components/message-cards/known-error-message-card.js.map +1 -1
  42. package/dist/components/message-cards/message-card.d.mts +3 -3
  43. package/dist/components/message-cards/message-card.d.ts +3 -3
  44. package/dist/components/message-cards/message-card.js +11 -17
  45. package/dist/components/message-cards/message-card.js.map +1 -1
  46. package/dist/components/message-cards/predefined-message-card.d.mts +1 -1
  47. package/dist/components/message-cards/predefined-message-card.d.ts +1 -1
  48. package/dist/components/message-cards/predefined-message-card.js +9 -15
  49. package/dist/components/message-cards/predefined-message-card.js.map +1 -1
  50. package/dist/components/{oauth-group.d.mts → oauth-button-group.d.mts} +2 -2
  51. package/dist/components/{oauth-group.d.ts → oauth-button-group.d.ts} +2 -2
  52. package/dist/components/oauth-button-group.js +43 -0
  53. package/dist/components/oauth-button-group.js.map +1 -0
  54. package/dist/components/oauth-button.d.mts +1 -1
  55. package/dist/components/oauth-button.d.ts +1 -1
  56. package/dist/components/oauth-button.js +40 -7
  57. package/dist/components/oauth-button.js.map +1 -1
  58. package/dist/components/{password-reset-inner.d.mts → password-reset-form.d.mts} +2 -2
  59. package/dist/components/{password-reset-inner.d.ts → password-reset-form.d.ts} +2 -2
  60. package/dist/components/{password-reset-inner.js → password-reset-form.js} +35 -30
  61. package/dist/components/password-reset-form.js.map +1 -0
  62. package/dist/components/selected-team-switcher.d.mts +12 -2
  63. package/dist/components/selected-team-switcher.d.ts +12 -2
  64. package/dist/components/selected-team-switcher.js +43 -35
  65. package/dist/components/selected-team-switcher.js.map +1 -1
  66. package/dist/components/user-button.d.mts +3 -3
  67. package/dist/components/user-button.d.ts +3 -3
  68. package/dist/components/user-button.js +32 -59
  69. package/dist/components/user-button.js.map +1 -1
  70. package/dist/components-page/account-settings.d.mts +1 -1
  71. package/dist/components-page/account-settings.d.ts +1 -1
  72. package/dist/components-page/account-settings.js +39 -45
  73. package/dist/components-page/account-settings.js.map +1 -1
  74. package/dist/components-page/auth-page.d.mts +1 -1
  75. package/dist/components-page/auth-page.d.ts +1 -1
  76. package/dist/components-page/auth-page.js +31 -36
  77. package/dist/components-page/auth-page.js.map +1 -1
  78. package/dist/components-page/email-verification.d.mts +1 -1
  79. package/dist/components-page/email-verification.d.ts +1 -1
  80. package/dist/components-page/email-verification.js +10 -16
  81. package/dist/components-page/email-verification.js.map +1 -1
  82. package/dist/components-page/error-page.d.mts +1 -1
  83. package/dist/components-page/error-page.d.ts +1 -1
  84. package/dist/components-page/error-page.js +15 -20
  85. package/dist/components-page/error-page.js.map +1 -1
  86. package/dist/components-page/forgot-password.d.mts +1 -1
  87. package/dist/components-page/forgot-password.d.ts +1 -1
  88. package/dist/components-page/forgot-password.js +17 -23
  89. package/dist/components-page/forgot-password.js.map +1 -1
  90. package/dist/components-page/magic-link-callback.d.mts +1 -1
  91. package/dist/components-page/magic-link-callback.d.ts +1 -1
  92. package/dist/components-page/magic-link-callback.js +11 -17
  93. package/dist/components-page/magic-link-callback.js.map +1 -1
  94. package/dist/components-page/oauth-callback.d.mts +1 -1
  95. package/dist/components-page/oauth-callback.d.ts +1 -1
  96. package/dist/components-page/oauth-callback.js +10 -16
  97. package/dist/components-page/oauth-callback.js.map +1 -1
  98. package/dist/components-page/password-reset.d.mts +1 -1
  99. package/dist/components-page/password-reset.d.ts +1 -1
  100. package/dist/components-page/password-reset.js +12 -8
  101. package/dist/components-page/password-reset.js.map +1 -1
  102. package/dist/components-page/sign-in.d.mts +1 -1
  103. package/dist/components-page/sign-in.d.ts +1 -1
  104. package/dist/components-page/sign-in.js +7 -13
  105. package/dist/components-page/sign-in.js.map +1 -1
  106. package/dist/components-page/sign-out.d.mts +1 -1
  107. package/dist/components-page/sign-out.d.ts +1 -1
  108. package/dist/components-page/sign-out.js +7 -13
  109. package/dist/components-page/sign-out.js.map +1 -1
  110. package/dist/components-page/sign-up.d.mts +1 -1
  111. package/dist/components-page/sign-up.d.ts +1 -1
  112. package/dist/components-page/sign-up.js +7 -13
  113. package/dist/components-page/sign-up.js.map +1 -1
  114. package/dist/components-page/stack-handler.js +22 -32
  115. package/dist/components-page/stack-handler.js.map +1 -1
  116. package/dist/esm/components/{credential-sign-in.js → credential-sign-in-form.js} +23 -17
  117. package/dist/esm/components/credential-sign-in-form.js.map +1 -0
  118. package/dist/esm/components/{credential-sign-up.js → credential-sign-up-form.js} +23 -17
  119. package/dist/esm/components/credential-sign-up-form.js.map +1 -0
  120. package/dist/esm/components/elements/form-warning.js +15 -0
  121. package/dist/esm/components/elements/form-warning.js.map +1 -0
  122. package/dist/esm/components/{maybe-full-page.js → elements/maybe-full-page.js} +7 -10
  123. package/dist/esm/components/elements/maybe-full-page.js.map +1 -0
  124. package/dist/esm/components/elements/separator-with-text.js +17 -0
  125. package/dist/esm/components/elements/separator-with-text.js.map +1 -0
  126. package/dist/esm/components/elements/ssr-layout-effect.js +16 -0
  127. package/dist/esm/components/elements/ssr-layout-effect.js.map +1 -0
  128. package/dist/esm/components/elements/user-avatar.js +15 -0
  129. package/dist/esm/components/elements/user-avatar.js.map +1 -0
  130. package/dist/esm/components/{forgot-password.js → forgot-password-form.js} +19 -19
  131. package/dist/esm/components/forgot-password-form.js.map +1 -0
  132. package/dist/esm/components/{magic-link-sign-in.js → magic-link-sign-in-form.js} +21 -15
  133. package/dist/esm/components/magic-link-sign-in-form.js.map +1 -0
  134. package/dist/esm/components/message-cards/known-error-message-card.js +5 -5
  135. package/dist/esm/components/message-cards/known-error-message-card.js.map +1 -1
  136. package/dist/esm/components/message-cards/message-card.js +4 -4
  137. package/dist/esm/components/message-cards/message-card.js.map +1 -1
  138. package/dist/esm/components/message-cards/predefined-message-card.js +4 -4
  139. package/dist/esm/components/message-cards/predefined-message-card.js.map +1 -1
  140. package/dist/esm/components/oauth-button-group.js +19 -0
  141. package/dist/esm/components/oauth-button-group.js.map +1 -0
  142. package/dist/esm/components/oauth-button.js +26 -7
  143. package/dist/esm/components/oauth-button.js.map +1 -1
  144. package/dist/esm/components/{password-reset-inner.js → password-reset-form.js} +28 -23
  145. package/dist/esm/components/password-reset-form.js.map +1 -0
  146. package/dist/esm/components/selected-team-switcher.js +50 -45
  147. package/dist/esm/components/selected-team-switcher.js.map +1 -1
  148. package/dist/esm/components/user-button.js +23 -52
  149. package/dist/esm/components/user-button.js.map +1 -1
  150. package/dist/esm/components-page/account-settings.js +29 -29
  151. package/dist/esm/components-page/account-settings.js.map +1 -1
  152. package/dist/esm/components-page/auth-page.js +25 -24
  153. package/dist/esm/components-page/auth-page.js.map +1 -1
  154. package/dist/esm/components-page/email-verification.js +3 -3
  155. package/dist/esm/components-page/email-verification.js.map +1 -1
  156. package/dist/esm/components-page/error-page.js +8 -7
  157. package/dist/esm/components-page/error-page.js.map +1 -1
  158. package/dist/esm/components-page/forgot-password.js +10 -10
  159. package/dist/esm/components-page/forgot-password.js.map +1 -1
  160. package/dist/esm/components-page/magic-link-callback.js +3 -3
  161. package/dist/esm/components-page/magic-link-callback.js.map +1 -1
  162. package/dist/esm/components-page/oauth-callback.js +5 -5
  163. package/dist/esm/components-page/oauth-callback.js.map +1 -1
  164. package/dist/esm/components-page/password-reset.js +8 -8
  165. package/dist/esm/components-page/password-reset.js.map +1 -1
  166. package/dist/esm/components-page/sign-in.js +2 -2
  167. package/dist/esm/components-page/sign-in.js.map +1 -1
  168. package/dist/esm/components-page/sign-out.js +3 -3
  169. package/dist/esm/components-page/sign-out.js.map +1 -1
  170. package/dist/esm/components-page/sign-up.js +2 -2
  171. package/dist/esm/components-page/sign-up.js.map +1 -1
  172. package/dist/esm/components-page/stack-handler.js +11 -11
  173. package/dist/esm/components-page/stack-handler.js.map +1 -1
  174. package/dist/esm/generated/global-css.js +6 -0
  175. package/dist/esm/generated/global-css.js.map +1 -0
  176. package/dist/esm/index.js +33 -40
  177. package/dist/esm/index.js.map +1 -1
  178. package/dist/esm/lib/stack-app.js +3 -6
  179. package/dist/esm/lib/stack-app.js.map +1 -1
  180. package/dist/esm/providers/theme-provider.js +43 -4
  181. package/dist/esm/providers/theme-provider.js.map +1 -1
  182. package/dist/esm/utils/browser-script.js +2 -1
  183. package/dist/esm/utils/browser-script.js.map +1 -1
  184. package/dist/esm/utils/constants.js +43 -12
  185. package/dist/esm/utils/constants.js.map +1 -1
  186. package/dist/generated/global-css.d.mts +3 -0
  187. package/dist/generated/global-css.d.ts +3 -0
  188. package/dist/generated/global-css.js +31 -0
  189. package/dist/generated/global-css.js.map +1 -0
  190. package/dist/index.d.mts +16 -30
  191. package/dist/index.d.ts +16 -30
  192. package/dist/index.js +33 -45
  193. package/dist/index.js.map +1 -1
  194. package/dist/lib/stack-app.js +3 -6
  195. package/dist/lib/stack-app.js.map +1 -1
  196. package/dist/providers/stack-provider-client.d.mts +3 -3
  197. package/dist/providers/stack-provider-client.d.ts +3 -3
  198. package/dist/providers/stack-provider.d.mts +2 -2
  199. package/dist/providers/stack-provider.d.ts +2 -2
  200. package/dist/providers/styled-components-registry.d.mts +2 -2
  201. package/dist/providers/styled-components-registry.d.ts +2 -2
  202. package/dist/providers/theme-provider.d.mts +34 -17
  203. package/dist/providers/theme-provider.d.ts +34 -17
  204. package/dist/providers/theme-provider.js +43 -4
  205. package/dist/providers/theme-provider.js.map +1 -1
  206. package/dist/utils/browser-script.js +2 -1
  207. package/dist/utils/browser-script.js.map +1 -1
  208. package/dist/utils/constants.d.mts +43 -12
  209. package/dist/utils/constants.d.ts +43 -12
  210. package/dist/utils/constants.js +44 -13
  211. package/dist/utils/constants.js.map +1 -1
  212. package/package.json +25 -32
  213. package/dist/components/credential-sign-in.d.mts +0 -5
  214. package/dist/components/credential-sign-in.d.ts +0 -5
  215. package/dist/components/credential-sign-in.js.map +0 -1
  216. package/dist/components/credential-sign-up.d.mts +0 -5
  217. package/dist/components/credential-sign-up.d.ts +0 -5
  218. package/dist/components/credential-sign-up.js.map +0 -1
  219. package/dist/components/forgot-password.js.map +0 -1
  220. package/dist/components/form-warning.js.map +0 -1
  221. package/dist/components/magic-link-sign-in.d.mts +0 -5
  222. package/dist/components/magic-link-sign-in.d.ts +0 -5
  223. package/dist/components/magic-link-sign-in.js.map +0 -1
  224. package/dist/components/maybe-full-page.js.map +0 -1
  225. package/dist/components/oauth-group.js +0 -49
  226. package/dist/components/oauth-group.js.map +0 -1
  227. package/dist/components/password-field.d.mts +0 -5
  228. package/dist/components/password-field.d.ts +0 -5
  229. package/dist/components/password-field.js +0 -111
  230. package/dist/components/password-field.js.map +0 -1
  231. package/dist/components/password-reset-inner.js.map +0 -1
  232. package/dist/components/separator-with-text.js.map +0 -1
  233. package/dist/components/user-avatar.js +0 -56
  234. package/dist/components/user-avatar.js.map +0 -1
  235. package/dist/components-core/avatar.d.mts +0 -8
  236. package/dist/components-core/avatar.d.ts +0 -8
  237. package/dist/components-core/avatar.js +0 -94
  238. package/dist/components-core/avatar.js.map +0 -1
  239. package/dist/components-core/button.d.mts +0 -13
  240. package/dist/components-core/button.d.ts +0 -13
  241. package/dist/components-core/button.js +0 -217
  242. package/dist/components-core/button.js.map +0 -1
  243. package/dist/components-core/card.d.mts +0 -8
  244. package/dist/components-core/card.d.ts +0 -8
  245. package/dist/components-core/card.js +0 -89
  246. package/dist/components-core/card.js.map +0 -1
  247. package/dist/components-core/collapsible.d.mts +0 -8
  248. package/dist/components-core/collapsible.d.ts +0 -8
  249. package/dist/components-core/collapsible.js +0 -50
  250. package/dist/components-core/collapsible.js.map +0 -1
  251. package/dist/components-core/container.d.mts +0 -8
  252. package/dist/components-core/container.d.ts +0 -8
  253. package/dist/components-core/container.js +0 -70
  254. package/dist/components-core/container.js.map +0 -1
  255. package/dist/components-core/dropdown.d.mts +0 -15
  256. package/dist/components-core/dropdown.d.ts +0 -15
  257. package/dist/components-core/dropdown.js +0 -149
  258. package/dist/components-core/dropdown.js.map +0 -1
  259. package/dist/components-core/index.d.mts +0 -59
  260. package/dist/components-core/index.d.ts +0 -59
  261. package/dist/components-core/index.js +0 -148
  262. package/dist/components-core/index.js.map +0 -1
  263. package/dist/components-core/input.d.mts +0 -6
  264. package/dist/components-core/input.d.ts +0 -6
  265. package/dist/components-core/input.js +0 -119
  266. package/dist/components-core/input.js.map +0 -1
  267. package/dist/components-core/label.d.mts +0 -6
  268. package/dist/components-core/label.d.ts +0 -6
  269. package/dist/components-core/label.js +0 -72
  270. package/dist/components-core/label.js.map +0 -1
  271. package/dist/components-core/link.d.mts +0 -10
  272. package/dist/components-core/link.d.ts +0 -10
  273. package/dist/components-core/link.js +0 -73
  274. package/dist/components-core/link.js.map +0 -1
  275. package/dist/components-core/popover.d.mts +0 -8
  276. package/dist/components-core/popover.d.ts +0 -8
  277. package/dist/components-core/popover.js +0 -81
  278. package/dist/components-core/popover.js.map +0 -1
  279. package/dist/components-core/separator.d.mts +0 -6
  280. package/dist/components-core/separator.d.ts +0 -6
  281. package/dist/components-core/separator.js +0 -71
  282. package/dist/components-core/separator.js.map +0 -1
  283. package/dist/components-core/skeleton.d.mts +0 -7
  284. package/dist/components-core/skeleton.d.ts +0 -7
  285. package/dist/components-core/skeleton.js +0 -87
  286. package/dist/components-core/skeleton.js.map +0 -1
  287. package/dist/components-core/tabs.d.mts +0 -9
  288. package/dist/components-core/tabs.d.ts +0 -9
  289. package/dist/components-core/tabs.js +0 -124
  290. package/dist/components-core/tabs.js.map +0 -1
  291. package/dist/components-core/text.d.mts +0 -10
  292. package/dist/components-core/text.d.ts +0 -10
  293. package/dist/components-core/text.js +0 -98
  294. package/dist/components-core/text.js.map +0 -1
  295. package/dist/components-core-joy/button.d.mts +0 -6
  296. package/dist/components-core-joy/button.d.ts +0 -6
  297. package/dist/components-core-joy/button.js +0 -88
  298. package/dist/components-core-joy/button.js.map +0 -1
  299. package/dist/components-core-joy/input.d.mts +0 -5
  300. package/dist/components-core-joy/input.d.ts +0 -5
  301. package/dist/components-core-joy/input.js +0 -53
  302. package/dist/components-core-joy/input.js.map +0 -1
  303. package/dist/components-core-joy/separator.d.mts +0 -6
  304. package/dist/components-core-joy/separator.d.ts +0 -6
  305. package/dist/components-core-joy/separator.js +0 -52
  306. package/dist/components-core-joy/separator.js.map +0 -1
  307. package/dist/components-core-joy/tabs.d.mts +0 -9
  308. package/dist/components-core-joy/tabs.d.ts +0 -9
  309. package/dist/components-core-joy/tabs.js +0 -67
  310. package/dist/components-core-joy/tabs.js.map +0 -1
  311. package/dist/components-core-joy/text.d.mts +0 -9
  312. package/dist/components-core-joy/text.d.ts +0 -9
  313. package/dist/components-core-joy/text.js +0 -70
  314. package/dist/components-core-joy/text.js.map +0 -1
  315. package/dist/esm/components/credential-sign-in.js.map +0 -1
  316. package/dist/esm/components/credential-sign-up.js.map +0 -1
  317. package/dist/esm/components/forgot-password.js.map +0 -1
  318. package/dist/esm/components/form-warning.js +0 -16
  319. package/dist/esm/components/form-warning.js.map +0 -1
  320. package/dist/esm/components/magic-link-sign-in.js.map +0 -1
  321. package/dist/esm/components/maybe-full-page.js.map +0 -1
  322. package/dist/esm/components/oauth-group.js +0 -19
  323. package/dist/esm/components/oauth-group.js.map +0 -1
  324. package/dist/esm/components/password-field.js +0 -81
  325. package/dist/esm/components/password-field.js.map +0 -1
  326. package/dist/esm/components/password-reset-inner.js.map +0 -1
  327. package/dist/esm/components/separator-with-text.js +0 -17
  328. package/dist/esm/components/separator-with-text.js.map +0 -1
  329. package/dist/esm/components/user-avatar.js +0 -25
  330. package/dist/esm/components/user-avatar.js.map +0 -1
  331. package/dist/esm/components-core/avatar.js +0 -57
  332. package/dist/esm/components-core/avatar.js.map +0 -1
  333. package/dist/esm/components-core/button.js +0 -183
  334. package/dist/esm/components-core/button.js.map +0 -1
  335. package/dist/esm/components-core/card.js +0 -52
  336. package/dist/esm/components-core/card.js.map +0 -1
  337. package/dist/esm/components-core/collapsible.js +0 -14
  338. package/dist/esm/components-core/collapsible.js.map +0 -1
  339. package/dist/esm/components-core/container.js +0 -36
  340. package/dist/esm/components-core/container.js.map +0 -1
  341. package/dist/esm/components-core/dropdown.js +0 -110
  342. package/dist/esm/components-core/dropdown.js.map +0 -1
  343. package/dist/esm/components-core/index.js +0 -94
  344. package/dist/esm/components-core/index.js.map +0 -1
  345. package/dist/esm/components-core/input.js +0 -85
  346. package/dist/esm/components-core/input.js.map +0 -1
  347. package/dist/esm/components-core/label.js +0 -38
  348. package/dist/esm/components-core/label.js.map +0 -1
  349. package/dist/esm/components-core/link.js +0 -39
  350. package/dist/esm/components-core/link.js.map +0 -1
  351. package/dist/esm/components-core/popover.js +0 -44
  352. package/dist/esm/components-core/popover.js.map +0 -1
  353. package/dist/esm/components-core/separator.js +0 -37
  354. package/dist/esm/components-core/separator.js.map +0 -1
  355. package/dist/esm/components-core/skeleton.js +0 -53
  356. package/dist/esm/components-core/skeleton.js.map +0 -1
  357. package/dist/esm/components-core/tabs.js +0 -86
  358. package/dist/esm/components-core/tabs.js.map +0 -1
  359. package/dist/esm/components-core/text.js +0 -64
  360. package/dist/esm/components-core/text.js.map +0 -1
  361. package/dist/esm/components-core-joy/button.js +0 -54
  362. package/dist/esm/components-core-joy/button.js.map +0 -1
  363. package/dist/esm/components-core-joy/input.js +0 -19
  364. package/dist/esm/components-core-joy/input.js.map +0 -1
  365. package/dist/esm/components-core-joy/separator.js +0 -18
  366. package/dist/esm/components-core-joy/separator.js.map +0 -1
  367. package/dist/esm/components-core-joy/tabs.js +0 -30
  368. package/dist/esm/components-core-joy/tabs.js.map +0 -1
  369. package/dist/esm/components-core-joy/text.js +0 -36
  370. package/dist/esm/components-core-joy/text.js.map +0 -1
  371. package/dist/esm/joy.js +0 -6
  372. package/dist/esm/joy.js.map +0 -1
  373. package/dist/esm/providers/component-provider.js +0 -77
  374. package/dist/esm/providers/component-provider.js.map +0 -1
  375. package/dist/esm/providers/design-provider.js +0 -37
  376. package/dist/esm/providers/design-provider.js.map +0 -1
  377. package/dist/esm/providers/joy-provider.js +0 -36
  378. package/dist/esm/providers/joy-provider.js.map +0 -1
  379. package/dist/joy.d.mts +0 -16
  380. package/dist/joy.d.ts +0 -16
  381. package/dist/joy.js.map +0 -1
  382. package/dist/providers/component-provider.d.mts +0 -113
  383. package/dist/providers/component-provider.d.ts +0 -113
  384. package/dist/providers/component-provider.js +0 -96
  385. package/dist/providers/component-provider.js.map +0 -1
  386. package/dist/providers/design-provider.d.mts +0 -34
  387. package/dist/providers/design-provider.d.ts +0 -34
  388. package/dist/providers/design-provider.js +0 -62
  389. package/dist/providers/design-provider.js.map +0 -1
  390. package/dist/providers/joy-provider.d.mts +0 -36
  391. package/dist/providers/joy-provider.d.ts +0 -36
  392. package/dist/providers/joy-provider.js +0 -61
  393. package/dist/providers/joy-provider.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/credential-sign-up-form.tsx"],"sourcesContent":["'use client';\n\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport * as yup from \"yup\";\nimport { FormWarningText } from \"./elements/form-warning\";\nimport { useStackApp } from \"..\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { getPasswordError } from \"@stackframe/stack-shared/dist/helpers/password\";\nimport { Button, Input, Label, PasswordInput } from \"@stackframe/stack-ui\";\nimport { useState } from \"react\";\n\nconst schema = yup.object().shape({\n email: yup.string().email('Please enter a valid email').required('Please enter your email'),\n password: yup.string().required('Please enter your password').test({\n name: 'is-valid-password',\n test: (value, ctx) => {\n const error = getPasswordError(value);\n if (error) {\n return ctx.createError({ message: error.message });\n } else {\n return true;\n }\n }\n }),\n passwordRepeat: yup.string().nullable().oneOf([yup.ref('password'), null], 'Passwords do not match').required('Please repeat your password')\n});\n\nexport function CredentialSignUpForm() {\n const { register, handleSubmit, setError, formState: { errors }, clearErrors } = useForm({\n resolver: yupResolver(schema)\n });\n const app = useStackApp();\n const [loading, setLoading] = useState(false);\n\n const onSubmit = async (data: yup.InferType<typeof schema>) => {\n setLoading(true);\n try {\n const { email, password } = data;\n const error = await app.signUpWithCredential({ email, password });\n setError('email', { type: 'manual', message: error?.message });\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <form \n className=\"flex flex-col items-stretch stack-scope\"\n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n <Label htmlFor=\"email\" className=\"mb-1\">Email</Label>\n <Input\n id=\"email\"\n type=\"email\"\n {...register('email')}\n />\n <FormWarningText text={errors.email?.message?.toString()} />\n\n <Label htmlFor=\"password\" className=\"mt-4 mb-1\">Password</Label>\n <PasswordInput\n id=\"password\"\n {...register('password')}\n onChange={(e) => {\n clearErrors('password');\n clearErrors('passwordRepeat');\n }}\n />\n <FormWarningText text={errors.password?.message?.toString()} />\n \n <Label htmlFor=\"repeat-password\" className=\"mt-4 mb-1\">Repeat Password</Label>\n <PasswordInput\n id=\"repeat-password\"\n {...register('passwordRepeat')}\n onChange={(e) => {\n clearErrors('password');\n clearErrors('passwordRepeat');\n }}\n />\n <FormWarningText text={errors.passwordRepeat?.message?.toString()} />\n \n <Button type=\"submit\" className=\"mt-6\">\n Sign Up\n </Button>\n </form>\n );\n}\n"],"mappings":";;;AAEA,SAAS,eAAe;AACxB,SAAS,mBAAmB;AAC5B,YAAY,SAAS;AACrB,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAC5B,SAAS,kCAAkC;AAC3C,SAAS,wBAAwB;AACjC,SAAS,QAAQ,OAAO,OAAO,qBAAqB;AACpD,SAAS,gBAAgB;AAqCrB,SAKE,KALF;AAnCJ,IAAM,SAAa,WAAO,EAAE,MAAM;AAAA,EAChC,OAAW,WAAO,EAAE,MAAM,4BAA4B,EAAE,SAAS,yBAAyB;AAAA,EAC1F,UAAc,WAAO,EAAE,SAAS,4BAA4B,EAAE,KAAK;AAAA,IACjE,MAAM;AAAA,IACN,MAAM,CAAC,OAAO,QAAQ;AACpB,YAAM,QAAQ,iBAAiB,KAAK;AACpC,UAAI,OAAO;AACT,eAAO,IAAI,YAAY,EAAE,SAAS,MAAM,QAAQ,CAAC;AAAA,MACnD,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AAAA,EACD,gBAAoB,WAAO,EAAE,SAAS,EAAE,MAAM,CAAK,QAAI,UAAU,GAAG,IAAI,GAAG,wBAAwB,EAAE,SAAS,6BAA6B;AAC7I,CAAC;AAEM,SAAS,uBAAuB;AACrC,QAAM,EAAE,UAAU,cAAc,UAAU,WAAW,EAAE,OAAO,GAAG,YAAY,IAAI,QAAQ;AAAA,IACvF,UAAU,YAAY,MAAM;AAAA,EAC9B,CAAC;AACD,QAAM,MAAM,YAAY;AACxB,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAE5C,QAAM,WAAW,OAAO,SAAuC;AAC7D,eAAW,IAAI;AACf,QAAI;AACF,YAAM,EAAE,OAAO,SAAS,IAAI;AAC5B,YAAM,QAAQ,MAAM,IAAI,qBAAqB,EAAE,OAAO,SAAS,CAAC;AAClE,eAAS,SAAS,EAAE,MAAM,UAAU,SAAS,OAAO,QAAQ,CAAC;AAAA,IAC7D,UAAE;AACA,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,UAAU,OAAK,2BAA2B,aAAa,QAAQ,EAAE,CAAC,CAAC;AAAA,MACnE,YAAU;AAAA,MAEV;AAAA,4BAAC,SAAM,SAAQ,SAAQ,WAAU,QAAO,mBAAK;AAAA,QAC7C;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,MAAK;AAAA,YACJ,GAAG,SAAS,OAAO;AAAA;AAAA,QACtB;AAAA,QACA,oBAAC,mBAAgB,MAAM,OAAO,OAAO,SAAS,SAAS,GAAG;AAAA,QAE1D,oBAAC,SAAM,SAAQ,YAAW,WAAU,aAAY,sBAAQ;AAAA,QACxD;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACF,GAAG,SAAS,UAAU;AAAA,YACvB,UAAU,CAAC,MAAM;AACf,0BAAY,UAAU;AACtB,0BAAY,gBAAgB;AAAA,YAC9B;AAAA;AAAA,QACF;AAAA,QACA,oBAAC,mBAAgB,MAAM,OAAO,UAAU,SAAS,SAAS,GAAG;AAAA,QAE7D,oBAAC,SAAM,SAAQ,mBAAkB,WAAU,aAAY,6BAAe;AAAA,QACtE;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACF,GAAG,SAAS,gBAAgB;AAAA,YAC7B,UAAU,CAAC,MAAM;AACf,0BAAY,UAAU;AACtB,0BAAY,gBAAgB;AAAA,YAC9B;AAAA;AAAA,QACF;AAAA,QACA,oBAAC,mBAAgB,MAAM,OAAO,gBAAgB,SAAS,SAAS,GAAG;AAAA,QAEnE,oBAAC,UAAO,MAAK,UAAS,WAAU,QAAO,qBAEvC;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ "use client";
3
+
4
+ // src/components/elements/form-warning.tsx
5
+ import { jsx } from "react/jsx-runtime";
6
+ function FormWarningText({ text }) {
7
+ if (!text) {
8
+ return null;
9
+ }
10
+ return /* @__PURE__ */ jsx("div", { className: "text-red-500 text-sm mt-1", children: text });
11
+ }
12
+ export {
13
+ FormWarningText
14
+ };
15
+ //# sourceMappingURL=form-warning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/elements/form-warning.tsx"],"sourcesContent":["'use client';\n\nexport function FormWarningText({ text }: { text?: string }) {\n if (!text) {\n return null;\n }\n return (\n <div className=\"text-red-500 text-sm mt-1\">\n {text}\n </div>\n );\n}\n"],"mappings":";;;AAOI;AALG,SAAS,gBAAgB,EAAE,KAAK,GAAsB;AAC3D,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AACA,SACE,oBAAC,SAAI,WAAU,6BACZ,gBACH;AAEJ;","names":[]}
@@ -1,9 +1,10 @@
1
1
  "use client";
2
2
  "use client";
3
3
 
4
- // src/components/maybe-full-page.tsx
5
- import { Container } from "../components-core";
6
- import { useEffect, useId } from "react";
4
+ // src/components/elements/maybe-full-page.tsx
5
+ import { Container } from "@stackframe/stack-ui";
6
+ import { useId } from "react";
7
+ import { SsrScript } from "./ssr-layout-effect";
7
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
9
  function MaybeFullPage({
9
10
  children,
@@ -20,9 +21,6 @@ function MaybeFullPage({
20
21
  const offset = el.getBoundingClientRect().top + document.documentElement.scrollTop;
21
22
  el.style.minHeight = \`calc(100vh - \${offset}px)\`;
22
23
  })(${JSON.stringify([id])})`;
23
- useEffect(() => {
24
- (0, eval)(scriptString);
25
- }, []);
26
24
  if (fullPage) {
27
25
  return /* @__PURE__ */ jsxs(Fragment, { children: [
28
26
  /* @__PURE__ */ jsx(
@@ -37,18 +35,17 @@ function MaybeFullPage({
37
35
  alignItems: "center",
38
36
  justifyContent: "center"
39
37
  },
38
+ className: "stack-scope",
40
39
  children: /* @__PURE__ */ jsx(Container, { size: 380, style: { padding: "1rem 1rem" }, children })
41
40
  }
42
41
  ),
43
- /* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: {
44
- __html: scriptString
45
- } })
42
+ /* @__PURE__ */ jsx(SsrScript, { script: scriptString })
46
43
  ] });
47
44
  } else {
48
45
  return /* @__PURE__ */ jsx(Fragment, { children });
49
46
  }
50
47
  }
51
48
  export {
52
- MaybeFullPage as default
49
+ MaybeFullPage
53
50
  };
54
51
  //# sourceMappingURL=maybe-full-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/elements/maybe-full-page.tsx"],"sourcesContent":["\"use client\";\n\nimport { Container } from \"@stackframe/stack-ui\";\nimport React, { useId } from \"react\";\nimport { SsrScript } from \"./ssr-layout-effect\";\n\nexport function MaybeFullPage({ \n children, \n fullPage=true\n}: { \n children: React.ReactNode, \n fullPage?: boolean, \n}) {\n const uniqueId = useId();\n const id = `stack-card-frame-${uniqueId}`;\n\n const scriptString = `(([id]) => {\n const el = document.getElementById(id);\n if (!el) {\n // component is not full page\n return;\n }\n const offset = el.getBoundingClientRect().top + document.documentElement.scrollTop;\n el.style.minHeight = \\`calc(100vh - \\${offset}px)\\`;\n })(${JSON.stringify([id])})`;\n\n if (fullPage) {\n return (\n <>\n <div \n id={id}\n suppressHydrationWarning\n style={{ \n minHeight: '100vh',\n alignSelf: 'stretch',\n display: 'flex', \n alignItems: 'center', \n justifyContent: 'center',\n }}\n className=\"stack-scope\"\n >\n <Container size={380} style={{ padding: '1rem 1rem' }}>\n {children}\n </Container>\n </div>\n <SsrScript script={scriptString} />\n </>\n );\n } else {\n return <>\n {children}\n </>;\n }\n \n}\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B,SAAgB,aAAa;AAC7B,SAAS,iBAAiB;AAwBpB,mBAaI,KAbJ;AAtBC,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,WAAS;AACX,GAGG;AACD,QAAM,WAAW,MAAM;AACvB,QAAM,KAAK,oBAAoB,QAAQ;AAEvC,QAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAQhB,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;AAEzB,MAAI,UAAU;AACZ,WACE,iCACE;AAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,0BAAwB;AAAA,UACxB,OAAO;AAAA,YACL,WAAW;AAAA,YACX,WAAW;AAAA,YACX,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,gBAAgB;AAAA,UAClB;AAAA,UACA,WAAU;AAAA,UAEV,8BAAC,aAAU,MAAM,KAAK,OAAO,EAAE,SAAS,YAAY,GACjD,UACH;AAAA;AAAA,MACF;AAAA,MACA,oBAAC,aAAU,QAAQ,cAAc;AAAA,OACnC;AAAA,EAEJ,OAAO;AACL,WAAO,gCACJ,UACH;AAAA,EACF;AAEF;","names":[]}
@@ -0,0 +1,17 @@
1
+ "use client";
2
+ "use client";
3
+
4
+ // src/components/elements/separator-with-text.tsx
5
+ import { Separator } from "@stackframe/stack-ui";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ function SeparatorWithText({ text }) {
8
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center my-6 stack-scope", children: [
9
+ /* @__PURE__ */ jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsx(Separator, {}) }),
10
+ /* @__PURE__ */ jsx("div", { className: "mx-2 text-sm text-zinc-500", children: text }),
11
+ /* @__PURE__ */ jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsx(Separator, {}) })
12
+ ] });
13
+ }
14
+ export {
15
+ SeparatorWithText
16
+ };
17
+ //# sourceMappingURL=separator-with-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/elements/separator-with-text.tsx"],"sourcesContent":["'use client';\n\nimport { Separator } from \"@stackframe/stack-ui\";\n\nexport function SeparatorWithText({ text }: { text: string }) {\n return (\n <div className=\"flex items-center justify-center my-6 stack-scope\">\n <div className=\"flex-1\">\n <Separator />\n </div>\n <div className=\"mx-2 text-sm text-zinc-500\">{text}</div>\n <div className=\"flex-1\">\n <Separator />\n </div>\n </div>\n );\n}\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAItB,SAEI,KAFJ;AAFG,SAAS,kBAAkB,EAAE,KAAK,GAAqB;AAC5D,SACE,qBAAC,SAAI,WAAU,qDACb;AAAA,wBAAC,SAAI,WAAU,UACb,8BAAC,aAAU,GACb;AAAA,IACA,oBAAC,SAAI,WAAU,8BAA8B,gBAAK;AAAA,IAClD,oBAAC,SAAI,WAAU,UACb,8BAAC,aAAU,GACb;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ "use client";
3
+
4
+ // src/components/elements/ssr-layout-effect.tsx
5
+ import { useLayoutEffect } from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+ function SsrScript(props) {
8
+ useLayoutEffect(() => {
9
+ (0, eval)(props.script);
10
+ }, []);
11
+ return /* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: { __html: props.script } });
12
+ }
13
+ export {
14
+ SsrScript
15
+ };
16
+ //# sourceMappingURL=ssr-layout-effect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/elements/ssr-layout-effect.tsx"],"sourcesContent":["\"use client\";\nimport { useLayoutEffect } from \"react\";\n\nexport function SsrScript(props: { script: string }) {\n useLayoutEffect(() => {\n // TODO fix workaround: React has a bug where it doesn't run the script on the first CSR render if SSR has been skipped due to suspense\n // As a workaround, we run the script in the <script> tag again after the first render\n // Note that we do an indirect eval as described here: https://esbuild.github.io/content-types/#direct-eval\n (0, eval)(props.script);\n }, []);\n\n return <script dangerouslySetInnerHTML={{ __html: props.script }} />;\n}\n"],"mappings":";;;AACA,SAAS,uBAAuB;AAUvB;AARF,SAAS,UAAU,OAA2B;AACnD,kBAAgB,MAAM;AAIpB,KAAC,GAAG,MAAM,MAAM,MAAM;AAAA,EACxB,GAAG,CAAC,CAAC;AAEL,SAAO,oBAAC,YAAO,yBAAyB,EAAE,QAAQ,MAAM,OAAO,GAAG;AACpE;","names":[]}
@@ -0,0 +1,15 @@
1
+ // src/components/elements/user-avatar.tsx
2
+ import { UserRound } from "lucide-react";
3
+ import { Avatar, AvatarFallback, AvatarImage } from "@stackframe/stack-ui";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ function UserAvatar(props) {
6
+ const user = props.user;
7
+ return /* @__PURE__ */ jsxs(Avatar, { style: { height: props.size || "34px", width: props.size || "34px" }, children: [
8
+ /* @__PURE__ */ jsx(AvatarImage, { src: user?.profileImageUrl || "" }),
9
+ /* @__PURE__ */ jsx(AvatarFallback, { children: user ? /* @__PURE__ */ jsx("div", { className: "font-medium", children: (user.displayName || user.primaryEmail)?.slice(0, 2).toUpperCase() }) : /* @__PURE__ */ jsx(UserRound, { className: "h-5 w-5 text-zinc-500" }) })
10
+ ] });
11
+ }
12
+ export {
13
+ UserAvatar
14
+ };
15
+ //# sourceMappingURL=user-avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/elements/user-avatar.tsx"],"sourcesContent":["import { UserRound } from \"lucide-react\";\nimport { User } from \"../../lib/stack-app\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"@stackframe/stack-ui\";\n\nexport function UserAvatar(props: { size?: number, user: User | null }) {\n const user = props.user;\n return (\n <Avatar style={{ height: props.size || '34px', width: props.size || '34px' }}>\n <AvatarImage src={user?.profileImageUrl || ''} />\n <AvatarFallback>\n {user ? \n <div className='font-medium'>\n {(user.displayName || user.primaryEmail)?.slice(0, 2).toUpperCase()}\n </div> :\n <UserRound className=\"h-5 w-5 text-zinc-500\" />}\n </AvatarFallback>\n </Avatar>\n );\n}\n"],"mappings":";AAAA,SAAS,iBAAiB;AAE1B,SAAS,QAAQ,gBAAgB,mBAAmB;AAKhD,SACE,KADF;AAHG,SAAS,WAAW,OAA6C;AACtE,QAAM,OAAO,MAAM;AACnB,SACE,qBAAC,UAAO,OAAO,EAAE,QAAQ,MAAM,QAAQ,QAAQ,OAAO,MAAM,QAAQ,OAAO,GACzE;AAAA,wBAAC,eAAY,KAAK,MAAM,mBAAmB,IAAI;AAAA,IAC/C,oBAAC,kBACE,iBACC,oBAAC,SAAI,WAAU,eACX,gBAAK,eAAe,KAAK,eAAe,MAAM,GAAG,CAAC,EAAE,YAAY,GACpE,IACA,oBAAC,aAAU,WAAU,yBAAwB,GACjD;AAAA,KACF;AAEJ;","names":[]}
@@ -1,36 +1,43 @@
1
1
  "use client";
2
2
  "use client";
3
3
 
4
- // src/components/forgot-password.tsx
4
+ // src/components/forgot-password-form.tsx
5
5
  import { useForm } from "react-hook-form";
6
6
  import { yupResolver } from "@hookform/resolvers/yup";
7
7
  import * as yup from "yup";
8
- import FormWarningText from "./form-warning";
8
+ import { FormWarningText } from "./elements/form-warning";
9
9
  import { useStackApp } from "..";
10
- import { Button, Input, Label } from "../components-core";
11
10
  import { runAsynchronouslyWithAlert } from "@stackframe/stack-shared/dist/utils/promises";
11
+ import { Button, Input, Label } from "@stackframe/stack-ui";
12
+ import { useState } from "react";
12
13
  import { jsx, jsxs } from "react/jsx-runtime";
13
14
  var schema = yup.object().shape({
14
15
  email: yup.string().email("Please enter a valid email").required("Please enter your email")
15
16
  });
16
- function ForgotPassword({ onSent }) {
17
+ function ForgotPasswordForm({ onSent }) {
17
18
  const { register, handleSubmit, formState: { errors }, clearErrors } = useForm({
18
19
  resolver: yupResolver(schema)
19
20
  });
20
21
  const stackApp = useStackApp();
22
+ const [loading, setLoading] = useState(false);
21
23
  const onSubmit = async (data) => {
22
- const { email } = data;
23
- await stackApp.sendForgotPasswordEmail(email);
24
- onSent?.();
24
+ setLoading(true);
25
+ try {
26
+ const { email } = data;
27
+ await stackApp.sendForgotPasswordEmail(email);
28
+ onSent?.();
29
+ } finally {
30
+ setLoading(false);
31
+ }
25
32
  };
26
33
  return /* @__PURE__ */ jsxs(
27
34
  "form",
28
35
  {
29
- style: { display: "flex", flexDirection: "column", alignItems: "stretch" },
36
+ className: "flex flex-col items-stretch stack-scope",
30
37
  onSubmit: (e) => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e)),
31
38
  noValidate: true,
32
39
  children: [
33
- /* @__PURE__ */ jsx(Label, { htmlFor: "email", children: "Your Email" }),
40
+ /* @__PURE__ */ jsx(Label, { htmlFor: "email", className: "mb-1", children: "Your Email" }),
34
41
  /* @__PURE__ */ jsx(
35
42
  Input,
36
43
  {
@@ -41,19 +48,12 @@ function ForgotPassword({ onSent }) {
41
48
  }
42
49
  ),
43
50
  /* @__PURE__ */ jsx(FormWarningText, { text: errors.email?.message?.toString() }),
44
- /* @__PURE__ */ jsx(
45
- Button,
46
- {
47
- type: "submit",
48
- style: { marginTop: "1.5rem" },
49
- children: "Send Email"
50
- }
51
- )
51
+ /* @__PURE__ */ jsx(Button, { type: "submit", className: "mt-6", loading, children: "Send Email" })
52
52
  ]
53
53
  }
54
54
  );
55
55
  }
56
56
  export {
57
- ForgotPassword as default
57
+ ForgotPasswordForm
58
58
  };
59
- //# sourceMappingURL=forgot-password.js.map
59
+ //# sourceMappingURL=forgot-password-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/forgot-password-form.tsx"],"sourcesContent":["'use client';\n\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport * as yup from \"yup\";\nimport { FormWarningText } from \"./elements/form-warning\";\nimport { useStackApp } from \"..\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Button, Input, Label } from \"@stackframe/stack-ui\";\nimport { useState } from \"react\";\n\nconst schema = yup.object().shape({\n email: yup.string().email('Please enter a valid email').required('Please enter your email')\n});\n\nexport function ForgotPasswordForm({ onSent }: { onSent?: () => void }) {\n const { register, handleSubmit, formState: { errors }, clearErrors } = useForm({\n resolver: yupResolver(schema)\n });\n const stackApp = useStackApp();\n const [loading, setLoading] = useState(false);\n\n const onSubmit = async (data: yup.InferType<typeof schema>) => {\n setLoading(true);\n try {\n const { email } = data;\n await stackApp.sendForgotPasswordEmail(email);\n onSent?.();\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <form\n className=\"flex flex-col items-stretch stack-scope\" \n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n <Label htmlFor=\"email\" className=\"mb-1\">Your Email</Label>\n <Input\n id=\"email\"\n type=\"email\"\n {...register('email')}\n onChange={() => clearErrors('email')}\n />\n <FormWarningText text={errors.email?.message?.toString()} />\n\n <Button type=\"submit\" className=\"mt-6\" loading={loading}>\n Send Email\n </Button>\n </form>\n );\n}\n"],"mappings":";;;AAEA,SAAS,eAAe;AACxB,SAAS,mBAAmB;AAC5B,YAAY,SAAS;AACrB,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAC5B,SAAS,kCAAkC;AAC3C,SAAS,QAAQ,OAAO,aAAa;AACrC,SAAS,gBAAgB;AAyBrB,SAKE,KALF;AAvBJ,IAAM,SAAa,WAAO,EAAE,MAAM;AAAA,EAChC,OAAW,WAAO,EAAE,MAAM,4BAA4B,EAAE,SAAS,yBAAyB;AAC5F,CAAC;AAEM,SAAS,mBAAmB,EAAE,OAAO,GAA4B;AACtE,QAAM,EAAE,UAAU,cAAc,WAAW,EAAE,OAAO,GAAG,YAAY,IAAI,QAAQ;AAAA,IAC7E,UAAU,YAAY,MAAM;AAAA,EAC9B,CAAC;AACD,QAAM,WAAW,YAAY;AAC7B,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAE5C,QAAM,WAAW,OAAO,SAAuC;AAC7D,eAAW,IAAI;AACf,QAAI;AACF,YAAM,EAAE,MAAM,IAAI;AAClB,YAAM,SAAS,wBAAwB,KAAK;AAC9C,eAAS;AAAA,IACT,UAAE;AACA,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,UAAU,OAAK,2BAA2B,aAAa,QAAQ,EAAE,CAAC,CAAC;AAAA,MACnE,YAAU;AAAA,MAEV;AAAA,4BAAC,SAAM,SAAQ,SAAQ,WAAU,QAAO,wBAAU;AAAA,QAClD;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,MAAK;AAAA,YACJ,GAAG,SAAS,OAAO;AAAA,YACpB,UAAU,MAAM,YAAY,OAAO;AAAA;AAAA,QACrC;AAAA,QACA,oBAAC,mBAAgB,MAAM,OAAO,OAAO,SAAS,SAAS,GAAG;AAAA,QAE1D,oBAAC,UAAO,MAAK,UAAS,WAAU,QAAO,SAAkB,wBAEzD;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -1,42 +1,48 @@
1
1
  "use client";
2
2
  "use client";
3
3
 
4
- // src/components/magic-link-sign-in.tsx
4
+ // src/components/magic-link-sign-in-form.tsx
5
5
  import { useState } from "react";
6
6
  import { useForm } from "react-hook-form";
7
7
  import { yupResolver } from "@hookform/resolvers/yup";
8
8
  import * as yup from "yup";
9
- import FormWarningText from "./form-warning";
9
+ import { FormWarningText } from "./elements/form-warning";
10
10
  import { useStackApp } from "..";
11
- import { Button, Input, Label } from "../components-core";
12
11
  import { runAsynchronouslyWithAlert } from "@stackframe/stack-shared/dist/utils/promises";
12
+ import { Button, Input, Label } from "@stackframe/stack-ui";
13
13
  import { jsx, jsxs } from "react/jsx-runtime";
14
14
  var schema = yup.object().shape({
15
15
  email: yup.string().email("Please enter a valid email").required("Please enter your email")
16
16
  });
17
- function MagicLinkSignIn() {
17
+ function MagicLinkSignInForm() {
18
18
  const { register, handleSubmit, setError, formState: { errors }, clearErrors } = useForm({
19
19
  resolver: yupResolver(schema)
20
20
  });
21
21
  const [sent, setSent] = useState(false);
22
22
  const app = useStackApp();
23
+ const [loading, setLoading] = useState(false);
23
24
  const onSubmit = async (data) => {
24
- const { email } = data;
25
- const error = await app.sendMagicLinkEmail(email);
26
- if (error) {
27
- setError("email", { type: "manual", message: error.message });
28
- return;
25
+ setLoading(true);
26
+ try {
27
+ const { email } = data;
28
+ const error = await app.sendMagicLinkEmail(email);
29
+ if (error) {
30
+ setError("email", { type: "manual", message: error.message });
31
+ return;
32
+ }
33
+ setSent(true);
34
+ } finally {
35
+ setLoading(false);
29
36
  }
30
- setSent(true);
31
37
  };
32
38
  return /* @__PURE__ */ jsxs(
33
39
  "form",
34
40
  {
35
- style: { display: "flex", flexDirection: "column", alignItems: "stretch" },
41
+ className: "flex flex-col items-stretch stack-scope",
36
42
  onSubmit: (e) => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e)),
37
43
  noValidate: true,
38
44
  children: [
39
- /* @__PURE__ */ jsx(Label, { htmlFor: "email", children: "Email" }),
45
+ /* @__PURE__ */ jsx(Label, { htmlFor: "email", className: "mb-1", children: "Email" }),
40
46
  /* @__PURE__ */ jsx(
41
47
  Input,
42
48
  {
@@ -47,12 +53,12 @@ function MagicLinkSignIn() {
47
53
  }
48
54
  ),
49
55
  /* @__PURE__ */ jsx(FormWarningText, { text: errors.email?.message?.toString() }),
50
- /* @__PURE__ */ jsx(Button, { disabled: sent, style: { marginTop: "1.5rem" }, type: "submit", children: sent ? "Email sent!" : "Send magic link" })
56
+ /* @__PURE__ */ jsx(Button, { disabled: sent, type: "submit", className: "mt-6", loading, children: sent ? "Email sent!" : "Send magic link" })
51
57
  ]
52
58
  }
53
59
  );
54
60
  }
55
61
  export {
56
- MagicLinkSignIn as default
62
+ MagicLinkSignInForm
57
63
  };
58
- //# sourceMappingURL=magic-link-sign-in.js.map
64
+ //# sourceMappingURL=magic-link-sign-in-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/magic-link-sign-in-form.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport * as yup from \"yup\";\nimport { FormWarningText } from \"./elements/form-warning\";\nimport { useStackApp } from \"..\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Button, Input, Label } from \"@stackframe/stack-ui\";\n\nconst schema = yup.object().shape({\n email: yup.string().email('Please enter a valid email').required('Please enter your email')\n});\n\nexport function MagicLinkSignInForm() {\n const { register, handleSubmit, setError, formState: { errors }, clearErrors } = useForm({\n resolver: yupResolver(schema)\n });\n const [sent, setSent] = useState(false);\n const app = useStackApp();\n const [loading, setLoading] = useState(false);\n\n const onSubmit = async (data: yup.InferType<typeof schema>) => {\n setLoading(true);\n try {\n const { email } = data;\n const error = await app.sendMagicLinkEmail(email);\n if (error) {\n setError('email', { type: 'manual', message: error.message });\n return;\n }\n setSent(true);\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <form \n className=\"flex flex-col items-stretch stack-scope\"\n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n <Label htmlFor=\"email\" className=\"mb-1\">Email</Label>\n <Input\n id=\"email\"\n type=\"email\"\n {...register('email')}\n disabled={sent}\n />\n <FormWarningText text={errors.email?.message?.toString()} />\n\n <Button disabled={sent} type=\"submit\" className=\"mt-6\" loading={loading}>\n {sent ? 'Email sent!' : 'Send magic link'}\n </Button>\n </form>\n );\n}\n"],"mappings":";;;AAEA,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,SAAS,mBAAmB;AAC5B,YAAY,SAAS;AACrB,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAC5B,SAAS,kCAAkC;AAC3C,SAAS,QAAQ,OAAO,aAAa;AA8BjC,SAKE,KALF;AA5BJ,IAAM,SAAa,WAAO,EAAE,MAAM;AAAA,EAChC,OAAW,WAAO,EAAE,MAAM,4BAA4B,EAAE,SAAS,yBAAyB;AAC5F,CAAC;AAEM,SAAS,sBAAsB;AACpC,QAAM,EAAE,UAAU,cAAc,UAAU,WAAW,EAAE,OAAO,GAAG,YAAY,IAAI,QAAQ;AAAA,IACvF,UAAU,YAAY,MAAM;AAAA,EAC9B,CAAC;AACD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,MAAM,YAAY;AACxB,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAE5C,QAAM,WAAW,OAAO,SAAuC;AAC7D,eAAW,IAAI;AACf,QAAI;AACF,YAAM,EAAE,MAAM,IAAI;AAClB,YAAM,QAAQ,MAAM,IAAI,mBAAmB,KAAK;AAChD,UAAI,OAAO;AACT,iBAAS,SAAS,EAAE,MAAM,UAAU,SAAS,MAAM,QAAQ,CAAC;AAC5D;AAAA,MACF;AACF,cAAQ,IAAI;AAAA,IACZ,UAAE;AACA,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,UAAU,OAAK,2BAA2B,aAAa,QAAQ,EAAE,CAAC,CAAC;AAAA,MACnE,YAAU;AAAA,MAEV;AAAA,4BAAC,SAAM,SAAQ,SAAQ,WAAU,QAAO,mBAAK;AAAA,QAC7C;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,MAAK;AAAA,YACJ,GAAG,SAAS,OAAO;AAAA,YACpB,UAAU;AAAA;AAAA,QACZ;AAAA,QACA,oBAAC,mBAAgB,MAAM,OAAO,OAAO,SAAS,SAAS,GAAG;AAAA,QAE1D,oBAAC,UAAO,UAAU,MAAM,MAAK,UAAS,WAAU,QAAO,SACpD,iBAAO,gBAAgB,mBAC1B;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -3,8 +3,8 @@
3
3
 
4
4
  // src/components/message-cards/known-error-message-card.tsx
5
5
  import { useStackApp } from "../..";
6
- import MessageCard from "./message-card";
7
- import { Text } from "../../components-core";
6
+ import { Typography } from "@stackframe/stack-ui";
7
+ import { MessageCard } from "./message-card";
8
8
  import { jsxs } from "react/jsx-runtime";
9
9
  function KnownErrorMessageCard({
10
10
  error,
@@ -19,11 +19,11 @@ function KnownErrorMessageCard({
19
19
  primaryButtonText: "Go to Home",
20
20
  primaryAction: () => stackApp.redirectToHome(),
21
21
  children: [
22
- /* @__PURE__ */ jsxs(Text, { children: [
22
+ /* @__PURE__ */ jsxs(Typography, { children: [
23
23
  "Error Code: ",
24
24
  error.errorCode
25
25
  ] }),
26
- /* @__PURE__ */ jsxs(Text, { children: [
26
+ /* @__PURE__ */ jsxs(Typography, { children: [
27
27
  "Error Message: ",
28
28
  error.message
29
29
  ] })
@@ -32,6 +32,6 @@ function KnownErrorMessageCard({
32
32
  );
33
33
  }
34
34
  export {
35
- KnownErrorMessageCard as default
35
+ KnownErrorMessageCard
36
36
  };
37
37
  //# sourceMappingURL=known-error-message-card.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/message-cards/known-error-message-card.tsx"],"sourcesContent":["\"use client\";\n\nimport { useStackApp } from \"../..\";\nimport MessageCard from \"./message-card\";\nimport { Text } from \"../../components-core\";\nimport { KnownError } from \"@stackframe/stack-shared\";\n\nexport default function KnownErrorMessageCard({ \n error,\n fullPage=false,\n}: { \n error: KnownError,\n fullPage?: boolean, \n}) {\n const stackApp = useStackApp();\n\n return (\n <MessageCard \n title={\"An error occurred\"}\n fullPage={fullPage} \n primaryButtonText={\"Go to Home\"}\n primaryAction={() => stackApp.redirectToHome()}\n >\n {<Text>Error Code: {error.errorCode}</Text>}\n {<Text>Error Message: {error.message}</Text>}\n </MessageCard>\n );\n}\n"],"mappings":";;;AAEA,SAAS,mBAAmB;AAC5B,OAAO,iBAAiB;AACxB,SAAS,YAAY;AAmBd;AAhBQ,SAAR,sBAAuC;AAAA,EAC5C;AAAA,EACA,WAAS;AACX,GAGG;AACD,QAAM,WAAW,YAAY;AAE7B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP;AAAA,MACA,mBAAmB;AAAA,MACnB,eAAe,MAAM,SAAS,eAAe;AAAA,MAE5C;AAAA,6BAAC,QAAK;AAAA;AAAA,UAAa,MAAM;AAAA,WAAU;AAAA,QACnC,qBAAC,QAAK;AAAA;AAAA,UAAgB,MAAM;AAAA,WAAQ;AAAA;AAAA;AAAA,EACvC;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/message-cards/known-error-message-card.tsx"],"sourcesContent":["\"use client\";\n\nimport { useStackApp } from \"../..\";\nimport { Typography } from \"@stackframe/stack-ui\";\nimport { MessageCard } from \"./message-card\";\nimport { KnownError } from \"@stackframe/stack-shared\";\n\nexport function KnownErrorMessageCard({ \n error,\n fullPage=false,\n}: { \n error: KnownError,\n fullPage?: boolean, \n}) {\n const stackApp = useStackApp();\n\n return (\n <MessageCard \n title={\"An error occurred\"}\n fullPage={fullPage} \n primaryButtonText={\"Go to Home\"}\n primaryAction={() => stackApp.redirectToHome()}\n >\n {<Typography>Error Code: {error.errorCode}</Typography>}\n {<Typography>Error Message: {error.message}</Typography>}\n </MessageCard>\n );\n}\n"],"mappings":";;;AAEA,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AAmBrB;AAhBA,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA,WAAS;AACX,GAGG;AACD,QAAM,WAAW,YAAY;AAE7B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP;AAAA,MACA,mBAAmB;AAAA,MACnB,eAAe,MAAM,SAAS,eAAe;AAAA,MAE5C;AAAA,6BAAC,cAAW;AAAA;AAAA,UAAa,MAAM;AAAA,WAAU;AAAA,QACzC,qBAAC,cAAW;AAAA;AAAA,UAAgB,MAAM;AAAA,WAAQ;AAAA;AAAA;AAAA,EAC7C;AAEJ;","names":[]}
@@ -2,12 +2,12 @@
2
2
  "use client";
3
3
 
4
4
  // src/components/message-cards/message-card.tsx
5
- import MaybeFullPage from "../maybe-full-page";
6
- import { Button, Text } from "../../components-core";
5
+ import { MaybeFullPage } from "../elements/maybe-full-page";
6
+ import { Button, Typography } from "@stackframe/stack-ui";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  function MessageCard({ fullPage = false, ...props }) {
9
9
  return /* @__PURE__ */ jsx(MaybeFullPage, { fullPage, children: /* @__PURE__ */ jsxs("div", { style: { textAlign: "center" }, children: [
10
- /* @__PURE__ */ jsx(Text, { size: "xl", as: "h2", style: { marginBottom: "24px" }, children: props.title }),
10
+ /* @__PURE__ */ jsx(Typography, { type: "h3", className: "mb-6", children: props.title }),
11
11
  props.children,
12
12
  (props.primaryButtonText || props.secondaryButtonText) && /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "row", alignItems: "center", justifyContent: "center", gap: "16px", marginTop: 20 }, children: [
13
13
  props.secondaryButtonText && /* @__PURE__ */ jsx(Button, { variant: "secondary", onClick: props.secondaryAction, children: props.secondaryButtonText }),
@@ -16,6 +16,6 @@ function MessageCard({ fullPage = false, ...props }) {
16
16
  ] }) });
17
17
  }
18
18
  export {
19
- MessageCard as default
19
+ MessageCard
20
20
  };
21
21
  //# sourceMappingURL=message-card.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/message-cards/message-card.tsx"],"sourcesContent":["'use client';\n\nimport React from \"react\";\nimport MaybeFullPage from \"../maybe-full-page\";\nimport { Button, Text } from \"../../components-core\";\n\nexport default function MessageCard(\n { fullPage=false, ...props }: \n { \n children?: React.ReactNode, \n title: string, \n fullPage?: boolean,\n primaryButtonText?: string,\n primaryAction?: () => Promise<void> | void,\n secondaryButtonText?: string,\n secondaryAction?: () => Promise<void> | void,\n }\n) {\n return (\n <MaybeFullPage fullPage={fullPage}>\n <div style={{ textAlign: 'center' }}>\n <Text size=\"xl\" as='h2' style={{ marginBottom: '24px' }}>{props.title}</Text>\n {props.children}\n {(props.primaryButtonText || props.secondaryButtonText) && (\n <div style={{ display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'center', gap: '16px', marginTop: 20 }}>\n {props.secondaryButtonText && (\n <Button variant=\"secondary\" onClick={props.secondaryAction}>\n {props.secondaryButtonText}\n </Button>\n )}\n {props.primaryButtonText && (\n <Button onClick={props.primaryAction}>\n {props.primaryButtonText}\n </Button>\n )}\n </div>\n )}\n </div>\n </MaybeFullPage>\n );\n}\n"],"mappings":";;;AAGA,OAAO,mBAAmB;AAC1B,SAAS,QAAQ,YAAY;AAiBrB,cAGE,YAHF;AAfO,SAAR,YACL,EAAE,WAAS,OAAO,GAAG,MAAM,GAU3B;AACA,SACE,oBAAC,iBAAc,UACb,+BAAC,SAAI,OAAO,EAAE,WAAW,SAAS,GAChC;AAAA,wBAAC,QAAK,MAAK,MAAK,IAAG,MAAK,OAAO,EAAE,cAAc,OAAO,GAAI,gBAAM,OAAM;AAAA,IACrE,MAAM;AAAA,KACL,MAAM,qBAAqB,MAAM,wBACjC,qBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,OAAO,YAAY,UAAU,gBAAgB,UAAU,KAAK,QAAQ,WAAW,GAAG,GAC7H;AAAA,YAAM,uBACL,oBAAC,UAAO,SAAQ,aAAY,SAAS,MAAM,iBACxC,gBAAM,qBACT;AAAA,MAED,MAAM,qBACL,oBAAC,UAAO,SAAS,MAAM,eACpB,gBAAM,mBACT;AAAA,OAEJ;AAAA,KAEJ,GACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/message-cards/message-card.tsx"],"sourcesContent":["'use client';\n\nimport React from \"react\";\nimport { MaybeFullPage } from \"../elements/maybe-full-page\";\nimport { Button, Typography } from \"@stackframe/stack-ui\";\n\nexport function MessageCard(\n { fullPage=false, ...props }: \n { \n children?: React.ReactNode, \n title: string, \n fullPage?: boolean,\n primaryButtonText?: string,\n primaryAction?: () => Promise<void> | void,\n secondaryButtonText?: string,\n secondaryAction?: () => Promise<void> | void,\n }\n) {\n return (\n <MaybeFullPage fullPage={fullPage}>\n <div style={{ textAlign: 'center' }}>\n <Typography type='h3' className=\"mb-6\">{props.title}</Typography>\n {props.children}\n {(props.primaryButtonText || props.secondaryButtonText) && (\n <div style={{ display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'center', gap: '16px', marginTop: 20 }}>\n {props.secondaryButtonText && (\n <Button variant=\"secondary\" onClick={props.secondaryAction}>\n {props.secondaryButtonText}\n </Button>\n )}\n {props.primaryButtonText && (\n <Button onClick={props.primaryAction}>\n {props.primaryButtonText}\n </Button>\n )}\n </div>\n )}\n </div>\n </MaybeFullPage>\n );\n}\n"],"mappings":";;;AAGA,SAAS,qBAAqB;AAC9B,SAAS,QAAQ,kBAAkB;AAiB3B,cAGE,YAHF;AAfD,SAAS,YACd,EAAE,WAAS,OAAO,GAAG,MAAM,GAU3B;AACA,SACE,oBAAC,iBAAc,UACb,+BAAC,SAAI,OAAO,EAAE,WAAW,SAAS,GAChC;AAAA,wBAAC,cAAW,MAAK,MAAK,WAAU,QAAQ,gBAAM,OAAM;AAAA,IACnD,MAAM;AAAA,KACL,MAAM,qBAAqB,MAAM,wBACjC,qBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,OAAO,YAAY,UAAU,gBAAgB,UAAU,KAAK,QAAQ,WAAW,GAAG,GAC7H;AAAA,YAAM,uBACL,oBAAC,UAAO,SAAQ,aAAY,SAAS,MAAM,iBACxC,gBAAM,qBACT;AAAA,MAED,MAAM,qBACL,oBAAC,UAAO,SAAS,MAAM,eACpB,gBAAM,mBACT;AAAA,OAEJ;AAAA,KAEJ,GACF;AAEJ;","names":[]}
@@ -2,9 +2,9 @@
2
2
  "use client";
3
3
 
4
4
  // src/components/message-cards/predefined-message-card.tsx
5
+ import { Typography } from "@stackframe/stack-ui";
5
6
  import { useStackApp } from "../..";
6
- import MessageCard from "./message-card";
7
- import { Text } from "../../components-core";
7
+ import { MessageCard } from "./message-card";
8
8
  import { jsx } from "react/jsx-runtime";
9
9
  function PredefinedMessageCard({
10
10
  type,
@@ -70,11 +70,11 @@ function PredefinedMessageCard({
70
70
  primaryAction,
71
71
  secondaryButtonText: secondaryButton || void 0,
72
72
  secondaryAction: secondaryAction || void 0,
73
- children: message && /* @__PURE__ */ jsx(Text, { children: message })
73
+ children: message && /* @__PURE__ */ jsx(Typography, { children: message })
74
74
  }
75
75
  );
76
76
  }
77
77
  export {
78
- PredefinedMessageCard as default
78
+ PredefinedMessageCard
79
79
  };
80
80
  //# sourceMappingURL=predefined-message-card.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/message-cards/predefined-message-card.tsx"],"sourcesContent":["\"use client\";\n\nimport { useStackApp } from \"../..\";\nimport MessageCard from \"./message-card\";\nimport { Text } from \"../../components-core\";\n\nexport default function PredefinedMessageCard({ \n type,\n fullPage=false,\n}: { \n type: 'signedIn' | 'signedOut' | 'emailSent' | 'passwordReset' | 'emailVerified' | 'unknownError',\n fullPage?: boolean, \n}) {\n const stackApp = useStackApp();\n\n let title: string;\n let message: string | null = null;\n let primaryButton: string | null = null;\n let secondaryButton: string | null = null;\n let primaryAction: (() => Promise<void> | void) | null = null;\n let secondaryAction: (() => Promise<void> | void) | null = null;\n\n switch (type) {\n case 'signedIn': {\n title = \"You are already signed in\";\n primaryAction = () => stackApp.redirectToAfterSignOut();\n secondaryAction = () => stackApp.redirectToSignOut();\n primaryButton = \"Go to Home\";\n secondaryButton = \"Sign Out\";\n break;\n }\n case 'signedOut': {\n title = \"You are not currently signed in.\";\n primaryAction = () => stackApp.redirectToSignIn();\n primaryButton = \"Go to Home\";\n break;\n }\n case 'emailSent': {\n title = \"Email sent!\";\n message = 'Please check your inbox. Make sure to check your spam folder.';\n primaryAction = () => stackApp.redirectToHome();\n primaryButton = \"Go to Home\";\n break;\n }\n case 'passwordReset': {\n title = \"Password reset successfully!\";\n message = 'Your password has been reset. You can now sign in with your new password.';\n primaryAction = () => stackApp.redirectToSignIn();\n primaryButton = \"Go to Sign In\";\n break;\n }\n case 'emailVerified': {\n title = \"Email verified!\";\n message = 'Your have successfully verified your email.';\n primaryAction = () => stackApp.redirectToSignIn();\n primaryButton = \"Go to Home\";\n break;\n }\n case 'unknownError': {\n title = \"An unknown error occurred\";\n message = 'Please try again and if the problem persists, contact support.';\n primaryAction = () => stackApp.redirectToHome();\n primaryButton = \"Go to Home\";\n break;\n }\n }\n\n return (\n <MessageCard \n title={title} \n fullPage={fullPage} \n primaryButtonText={primaryButton} \n primaryAction={primaryAction} \n secondaryButtonText={secondaryButton || undefined} \n secondaryAction={secondaryAction || undefined}\n >\n {message && <Text>{message}</Text>}\n </MessageCard>\n );\n}\n"],"mappings":";;;AAEA,SAAS,mBAAmB;AAC5B,OAAO,iBAAiB;AACxB,SAAS,YAAY;AAwEH;AAtEH,SAAR,sBAAuC;AAAA,EAC5C;AAAA,EACA,WAAS;AACX,GAGG;AACD,QAAM,WAAW,YAAY;AAE7B,MAAI;AACJ,MAAI,UAAyB;AAC7B,MAAI,gBAA+B;AACnC,MAAI,kBAAiC;AACrC,MAAI,gBAAqD;AACzD,MAAI,kBAAuD;AAE3D,UAAQ,MAAM;AAAA,IACZ,KAAK,YAAY;AACf,cAAQ;AACR,sBAAgB,MAAM,SAAS,uBAAuB;AACtD,wBAAkB,MAAM,SAAS,kBAAkB;AACnD,sBAAgB;AAChB,wBAAkB;AAClB;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,cAAQ;AACR,sBAAgB,MAAM,SAAS,iBAAiB;AAChD,sBAAgB;AAChB;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,cAAQ;AACR,gBAAU;AACV,sBAAgB,MAAM,SAAS,eAAe;AAC9C,sBAAgB;AAChB;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB;AACpB,cAAQ;AACR,gBAAU;AACV,sBAAgB,MAAM,SAAS,iBAAiB;AAChD,sBAAgB;AAChB;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB;AACpB,cAAQ;AACR,gBAAU;AACV,sBAAgB,MAAM,SAAS,iBAAiB;AAChD,sBAAgB;AAChB;AAAA,IACF;AAAA,IACA,KAAK,gBAAgB;AACnB,cAAQ;AACR,gBAAU;AACV,sBAAgB,MAAM,SAAS,eAAe;AAC9C,sBAAgB;AAChB;AAAA,IACF;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,mBAAmB;AAAA,MACnB;AAAA,MACA,qBAAqB,mBAAmB;AAAA,MACxC,iBAAiB,mBAAmB;AAAA,MAEnC,qBAAW,oBAAC,QAAM,mBAAQ;AAAA;AAAA,EAC7B;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/message-cards/predefined-message-card.tsx"],"sourcesContent":["\"use client\";\n\nimport { Typography } from \"@stackframe/stack-ui\";\nimport { useStackApp } from \"../..\";\nimport { MessageCard } from \"./message-card\";\n\nexport function PredefinedMessageCard({ \n type,\n fullPage=false,\n}: { \n type: 'signedIn' | 'signedOut' | 'emailSent' | 'passwordReset' | 'emailVerified' | 'unknownError',\n fullPage?: boolean, \n}) {\n const stackApp = useStackApp();\n\n let title: string;\n let message: string | null = null;\n let primaryButton: string | null = null;\n let secondaryButton: string | null = null;\n let primaryAction: (() => Promise<void> | void) | null = null;\n let secondaryAction: (() => Promise<void> | void) | null = null;\n\n switch (type) {\n case 'signedIn': {\n title = \"You are already signed in\";\n primaryAction = () => stackApp.redirectToAfterSignOut();\n secondaryAction = () => stackApp.redirectToSignOut();\n primaryButton = \"Go to Home\";\n secondaryButton = \"Sign Out\";\n break;\n }\n case 'signedOut': {\n title = \"You are not currently signed in.\";\n primaryAction = () => stackApp.redirectToSignIn();\n primaryButton = \"Go to Home\";\n break;\n }\n case 'emailSent': {\n title = \"Email sent!\";\n message = 'Please check your inbox. Make sure to check your spam folder.';\n primaryAction = () => stackApp.redirectToHome();\n primaryButton = \"Go to Home\";\n break;\n }\n case 'passwordReset': {\n title = \"Password reset successfully!\";\n message = 'Your password has been reset. You can now sign in with your new password.';\n primaryAction = () => stackApp.redirectToSignIn();\n primaryButton = \"Go to Sign In\";\n break;\n }\n case 'emailVerified': {\n title = \"Email verified!\";\n message = 'Your have successfully verified your email.';\n primaryAction = () => stackApp.redirectToSignIn();\n primaryButton = \"Go to Home\";\n break;\n }\n case 'unknownError': {\n title = \"An unknown error occurred\";\n message = 'Please try again and if the problem persists, contact support.';\n primaryAction = () => stackApp.redirectToHome();\n primaryButton = \"Go to Home\";\n break;\n }\n }\n\n return (\n <MessageCard\n title={title} \n fullPage={fullPage} \n primaryButtonText={primaryButton} \n primaryAction={primaryAction} \n secondaryButtonText={secondaryButton || undefined} \n secondaryAction={secondaryAction || undefined}\n >\n {message && <Typography>{message}</Typography>}\n </MessageCard>\n );\n}\n"],"mappings":";;;AAEA,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAwEV;AAtEX,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA,WAAS;AACX,GAGG;AACD,QAAM,WAAW,YAAY;AAE7B,MAAI;AACJ,MAAI,UAAyB;AAC7B,MAAI,gBAA+B;AACnC,MAAI,kBAAiC;AACrC,MAAI,gBAAqD;AACzD,MAAI,kBAAuD;AAE3D,UAAQ,MAAM;AAAA,IACZ,KAAK,YAAY;AACf,cAAQ;AACR,sBAAgB,MAAM,SAAS,uBAAuB;AACtD,wBAAkB,MAAM,SAAS,kBAAkB;AACnD,sBAAgB;AAChB,wBAAkB;AAClB;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,cAAQ;AACR,sBAAgB,MAAM,SAAS,iBAAiB;AAChD,sBAAgB;AAChB;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,cAAQ;AACR,gBAAU;AACV,sBAAgB,MAAM,SAAS,eAAe;AAC9C,sBAAgB;AAChB;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB;AACpB,cAAQ;AACR,gBAAU;AACV,sBAAgB,MAAM,SAAS,iBAAiB;AAChD,sBAAgB;AAChB;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB;AACpB,cAAQ;AACR,gBAAU;AACV,sBAAgB,MAAM,SAAS,iBAAiB;AAChD,sBAAgB;AAChB;AAAA,IACF;AAAA,IACA,KAAK,gBAAgB;AACnB,cAAQ;AACR,gBAAU;AACV,sBAAgB,MAAM,SAAS,eAAe;AAC9C,sBAAgB;AAChB;AAAA,IACF;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,mBAAmB;AAAA,MACnB;AAAA,MACA,qBAAqB,mBAAmB;AAAA,MACxC,iBAAiB,mBAAmB;AAAA,MAEnC,qBAAW,oBAAC,cAAY,mBAAQ;AAAA;AAAA,EACnC;AAEJ;","names":[]}
@@ -0,0 +1,19 @@
1
+ "use client";
2
+ "use client";
3
+
4
+ // src/components/oauth-button-group.tsx
5
+ import { useStackApp } from "../lib/hooks";
6
+ import { OAuthButton } from "./oauth-button";
7
+ import { jsx } from "react/jsx-runtime";
8
+ function OAuthButtonGroup({
9
+ type,
10
+ mockProject
11
+ }) {
12
+ const stackApp = useStackApp();
13
+ const project = mockProject || stackApp.useProject();
14
+ return /* @__PURE__ */ jsx("div", { className: "gap-4 flex flex-col items-stretch stack-scope", children: project.oauthProviders.filter((p) => p.enabled).map((p) => /* @__PURE__ */ jsx(OAuthButton, { provider: p.id, type }, p.id)) });
15
+ }
16
+ export {
17
+ OAuthButtonGroup
18
+ };
19
+ //# sourceMappingURL=oauth-button-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/oauth-button-group.tsx"],"sourcesContent":["'use client';\n\nimport { ClientProjectJson } from \"@stackframe/stack-shared\";\nimport { useStackApp } from \"../lib/hooks\";\nimport { OAuthButton } from \"./oauth-button\";\n\nexport function OAuthButtonGroup({\n type,\n mockProject,\n}: {\n type: 'sign-in' | 'sign-up',\n mockProject?: ClientProjectJson,\n}) {\n const stackApp = useStackApp();\n const project = mockProject || stackApp.useProject();\n\n return (\n <div className='gap-4 flex flex-col items-stretch stack-scope'>\n {project.oauthProviders.filter(p => p.enabled).map(p => (\n <OAuthButton key={p.id} provider={p.id} type={type}/>\n ))}\n </div>\n );\n}\n"],"mappings":";;;AAGA,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAepB;AAbD,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AACF,GAGG;AACD,QAAM,WAAW,YAAY;AAC7B,QAAM,UAAU,eAAe,SAAS,WAAW;AAEnD,SACE,oBAAC,SAAI,WAAU,iDACZ,kBAAQ,eAAe,OAAO,OAAK,EAAE,OAAO,EAAE,IAAI,OACjD,oBAAC,eAAuB,UAAU,EAAE,IAAI,QAAtB,EAAE,EAA+B,CACpD,GACH;AAEJ;","names":[]}
@@ -2,8 +2,10 @@
2
2
  "use client";
3
3
 
4
4
  // src/components/oauth-button.tsx
5
+ import { Button } from "@stackframe/stack-ui";
5
6
  import { useStackApp } from "..";
6
- import { Button } from "../components-core";
7
+ import Color from "color";
8
+ import styled from "styled-components";
7
9
  import { jsx, jsxs } from "react/jsx-runtime";
8
10
  var iconSize = 22;
9
11
  function GoogleIcon({ iconSize: iconSize2 }) {
@@ -33,6 +35,21 @@ function MicrosoftIcon({ iconSize: iconSize2 }) {
33
35
  function SpotifyIcon({ iconSize: iconSize2 }) {
34
36
  return /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: iconSize2, height: iconSize2, viewBox: "0 0 496 512", children: /* @__PURE__ */ jsx("path", { fill: "#ffffff", d: "M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z" }) });
35
37
  }
38
+ var changeColor = (c, value) => {
39
+ if (c.isLight()) {
40
+ value = -value;
41
+ }
42
+ return c.hsl(c.hue(), c.saturationl(), c.lightness() + value).toString();
43
+ };
44
+ var StyledButton = styled(Button)`
45
+ ${(props) => props.$bgColor ? `background-color: ${props.$bgColor} !important;` : ""}
46
+ ${(props) => props.$textColor ? `color: ${props.$textColor} !important;` : ""}
47
+ ${(props) => props.$border ? `border: ${props.$border} !important;` : ""}
48
+
49
+ &:hover {
50
+ ${(props) => props.$hoverBgColor ? `background-color: ${props.$hoverBgColor} !important;` : ""}
51
+ }
52
+ `;
36
53
  function OAuthButton({
37
54
  provider,
38
55
  type
@@ -95,14 +112,16 @@ function OAuthButton({
95
112
  }
96
113
  }
97
114
  return /* @__PURE__ */ jsx(
98
- Button,
115
+ StyledButton,
99
116
  {
100
- color: style.backgroundColor,
101
- style: { border: style.border, height: "2.5rem", color: style.textColor },
102
117
  onClick: () => stackApp.signInWithOAuth(provider),
103
- children: /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", width: "100%", gap: "1rem" }, children: [
118
+ $bgColor: style.backgroundColor,
119
+ $hoverBgColor: changeColor(Color(style.backgroundColor), 10),
120
+ $textColor: style.textColor,
121
+ $border: style.border,
122
+ children: /* @__PURE__ */ jsxs("div", { className: "flex items-center w-full gap-4", children: [
104
123
  style.icon,
105
- /* @__PURE__ */ jsxs("span", { style: { flexGrow: 1 }, children: [
124
+ /* @__PURE__ */ jsxs("span", { className: "flex-1", children: [
106
125
  type === "sign-up" ? "Sign up with " : "Sign in with ",
107
126
  style.name
108
127
  ] })
@@ -111,6 +130,6 @@ function OAuthButton({
111
130
  );
112
131
  }
113
132
  export {
114
- OAuthButton as default
133
+ OAuthButton
115
134
  };
116
135
  //# sourceMappingURL=oauth-button.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/oauth-button.tsx"],"sourcesContent":["'use client';\n\nimport { useStackApp } from '..';\nimport { Button } from \"../components-core\";\n\nconst iconSize = 22;\n\nfunction GoogleIcon({ iconSize } : { iconSize: number} ) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={iconSize} height={iconSize} viewBox=\"0 0 24 24\">\n <path fill=\"#4285F4\" d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"/>\n <path fill=\"#34A853\" d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"/>\n <path fill=\"#FBBC05\" d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\"/>\n <path fill=\"#EA4335\" d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"/>\n <path fill=\"none\" d=\"M1 1h22v22H1z\" />\n </svg>\n );\n}\n\nfunction FacebookIcon({ iconSize } : { iconSize: number} ) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={iconSize} height={iconSize} viewBox=\"0 0 512 512\">\n <path fill='#FFFFFF' d=\"M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256C0 376 82.7 476.8 194.2 504.5V334.2H141.4V256h52.8V222.3c0-87.1 39.4-127.5 125-127.5c16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1c-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H287V510.1C413.8 494.8 512 386.9 512 256h0z\"/>\n </svg>\n );\n}\n\nfunction GitHubIcon({ iconSize } : { iconSize: number} ) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={iconSize} height={iconSize} viewBox=\"0 0 496 512\">\n <path fill='#FFFFFF' d=\"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\"/>\n </svg>\n );\n}\n\nfunction MicrosoftIcon({ iconSize } : { iconSize: number} ) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={iconSize} height={iconSize} viewBox=\"0 0 21 21\">\n <title>{\"MS-SymbolLockup\"}</title>\n <path fill=\"#f25022\" d=\"M1 1h9v9H1z\" />\n <path fill=\"#00a4ef\" d=\"M1 11h9v9H1z\" />\n <path fill=\"#7fba00\" d=\"M11 1h9v9h-9z\" />\n <path fill=\"#ffb900\" d=\"M11 11h9v9h-9z\" />\n </svg>\n );\n}\n\nfunction SpotifyIcon({ iconSize } : { iconSize: number} ) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={iconSize} height={iconSize} viewBox=\"0 0 496 512\">\n <path fill='#ffffff' d=\"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z\"/>\n </svg>\n );\n}\nexport default function OAuthButton({\n provider,\n type,\n}: {\n provider: string,\n type: 'sign-in' | 'sign-up',\n}) {\n const stackApp = useStackApp();\n\n let style : {\n backgroundColor?: string,\n textColor?: string,\n name: string,\n icon: JSX.Element | null,\n border?: string,\n };\n switch (provider) {\n case 'google': {\n style = {\n backgroundColor: '#fff',\n textColor: '#000',\n name: 'Google',\n border: '1px solid #ddd',\n icon: <GoogleIcon iconSize={iconSize} />,\n };\n break;\n }\n case 'github': {\n style = {\n backgroundColor: '#111',\n textColor: '#fff',\n border: '1px solid #333',\n name: 'GitHub',\n icon: <GitHubIcon iconSize={iconSize} />,\n };\n break;\n }\n case 'facebook': {\n style = {\n backgroundColor: '#1877F2',\n textColor: '#fff',\n name: 'Facebook',\n icon: <FacebookIcon iconSize={iconSize} />,\n };\n break;\n }\n case 'microsoft': {\n style = {\n backgroundColor: '#2f2f2f',\n textColor: '#fff',\n name: 'Microsoft',\n icon: <MicrosoftIcon iconSize={iconSize} />,\n };\n break;\n }\n case 'spotify': {\n style = {\n backgroundColor: '#1DB954',\n textColor: '#fff',\n name: 'Spotify',\n icon: <SpotifyIcon iconSize={iconSize} />,\n };\n break;\n }\n default: {\n style = {\n name: provider,\n icon: null\n };\n }\n }\n\n return (\n <Button\n color={style.backgroundColor}\n style={{ border: style.border, height: '2.5rem', color: style.textColor }}\n onClick={() => stackApp.signInWithOAuth(provider)}\n >\n <div style={{ display: 'flex', alignItems: 'center', width: '100%', gap: '1rem' }}>\n {style.icon}\n <span style={{ flexGrow: 1 }}>{type === 'sign-up' ? 'Sign up with ' : 'Sign in with '}{style.name}</span>\n </div>\n </Button>\n );\n}\n"],"mappings":";;;AAEA,SAAS,mBAAmB;AAC5B,SAAS,cAAc;AAMnB,SACE,KADF;AAJJ,IAAM,WAAW;AAEjB,SAAS,WAAW,EAAE,UAAAA,UAAS,GAA0B;AACvD,SACE,qBAAC,SAAI,OAAM,8BAA6B,OAAOA,WAAU,QAAQA,WAAU,SAAQ,aACjF;AAAA,wBAAC,UAAK,MAAK,WAAU,GAAE,2HAAyH;AAAA,IAChJ,oBAAC,UAAK,MAAK,WAAU,GAAE,yIAAuI;AAAA,IAC9J,oBAAC,UAAK,MAAK,WAAU,GAAE,iIAA+H;AAAA,IACtJ,oBAAC,UAAK,MAAK,WAAU,GAAE,uIAAqI;AAAA,IAC5J,oBAAC,UAAK,MAAK,QAAO,GAAE,iBAAgB;AAAA,KACtC;AAEJ;AAEA,SAAS,aAAa,EAAE,UAAAA,UAAS,GAA0B;AACzD,SACE,oBAAC,SAAI,OAAM,8BAA6B,OAAOA,WAAU,QAAQA,WAAU,SAAQ,eACjF,8BAAC,UAAK,MAAK,WAAU,GAAE,gRAA8Q,GACvS;AAEJ;AAEA,SAAS,WAAW,EAAE,UAAAA,UAAS,GAA0B;AACvD,SACE,oBAAC,SAAI,OAAM,8BAA6B,OAAOA,WAAU,QAAQA,WAAU,SAAQ,eACjF,8BAAC,UAAK,MAAK,WAAU,GAAE,syCAAoyC,GAC7zC;AAEJ;AAEA,SAAS,cAAc,EAAE,UAAAA,UAAS,GAA0B;AAC1D,SACE,qBAAC,SAAI,OAAM,8BAA6B,OAAOA,WAAU,QAAQA,WAAU,SAAQ,aACjF;AAAA,wBAAC,WAAO,6BAAkB;AAAA,IAC1B,oBAAC,UAAK,MAAK,WAAU,GAAE,eAAc;AAAA,IACrC,oBAAC,UAAK,MAAK,WAAU,GAAE,gBAAe;AAAA,IACtC,oBAAC,UAAK,MAAK,WAAU,GAAE,iBAAgB;AAAA,IACvC,oBAAC,UAAK,MAAK,WAAU,GAAE,kBAAiB;AAAA,KAC1C;AAEJ;AAEA,SAAS,YAAY,EAAE,UAAAA,UAAS,GAA0B;AACxD,SACE,oBAAC,SAAI,OAAM,8BAA6B,OAAOA,WAAU,QAAQA,WAAU,SAAQ,eACjF,8BAAC,UAAK,MAAK,WAAU,GAAE,yxBAAuxB,GAChzB;AAEJ;AACe,SAAR,YAA6B;AAAA,EAClC;AAAA,EACA;AACF,GAGG;AACD,QAAM,WAAW,YAAY;AAE7B,MAAI;AAOJ,UAAQ,UAAU;AAAA,IAChB,KAAK,UAAU;AACb,cAAQ;AAAA,QACN,iBAAiB;AAAA,QACjB,WAAW;AAAA,QACX,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM,oBAAC,cAAW,UAAoB;AAAA,MACxC;AACA;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,cAAQ;AAAA,QACN,iBAAiB;AAAA,QACjB,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM,oBAAC,cAAW,UAAoB;AAAA,MACxC;AACA;AAAA,IACF;AAAA,IACA,KAAK,YAAY;AACf,cAAQ;AAAA,QACN,iBAAiB;AAAA,QACjB,WAAW;AAAA,QACX,MAAM;AAAA,QACN,MAAM,oBAAC,gBAAa,UAAoB;AAAA,MAC1C;AACA;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,cAAQ;AAAA,QACN,iBAAiB;AAAA,QACjB,WAAW;AAAA,QACX,MAAM;AAAA,QACN,MAAM,oBAAC,iBAAc,UAAoB;AAAA,MAC3C;AACA;AAAA,IACF;AAAA,IACA,KAAK,WAAW;AACd,cAAQ;AAAA,QACN,iBAAiB;AAAA,QACjB,WAAW;AAAA,QACX,MAAM;AAAA,QACN,MAAM,oBAAC,eAAY,UAAoB;AAAA,MACzC;AACA;AAAA,IACF;AAAA,IACA,SAAS;AACP,cAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,MAAM;AAAA,MACb,OAAO,EAAE,QAAQ,MAAM,QAAQ,QAAQ,UAAU,OAAO,MAAM,UAAU;AAAA,MACxE,SAAS,MAAM,SAAS,gBAAgB,QAAQ;AAAA,MAEhD,+BAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,OAAO,QAAQ,KAAK,OAAO,GAC7E;AAAA,cAAM;AAAA,QACP,qBAAC,UAAK,OAAO,EAAE,UAAU,EAAE,GAAI;AAAA,mBAAS,YAAY,kBAAkB;AAAA,UAAiB,MAAM;AAAA,WAAK;AAAA,SACpG;AAAA;AAAA,EACF;AAEJ;","names":["iconSize"]}
1
+ {"version":3,"sources":["../../../src/components/oauth-button.tsx"],"sourcesContent":["'use client';\n\nimport { Button } from '@stackframe/stack-ui';\nimport { useStackApp } from '..';\nimport Color from 'color';\nimport styled from 'styled-components';\n\nconst iconSize = 22;\n\nfunction GoogleIcon({ iconSize } : { iconSize: number} ) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={iconSize} height={iconSize} viewBox=\"0 0 24 24\">\n <path fill=\"#4285F4\" d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"/>\n <path fill=\"#34A853\" d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"/>\n <path fill=\"#FBBC05\" d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\"/>\n <path fill=\"#EA4335\" d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"/>\n <path fill=\"none\" d=\"M1 1h22v22H1z\" />\n </svg>\n );\n}\n\nfunction FacebookIcon({ iconSize } : { iconSize: number} ) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={iconSize} height={iconSize} viewBox=\"0 0 512 512\">\n <path fill='#FFFFFF' d=\"M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256C0 376 82.7 476.8 194.2 504.5V334.2H141.4V256h52.8V222.3c0-87.1 39.4-127.5 125-127.5c16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1c-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H287V510.1C413.8 494.8 512 386.9 512 256h0z\"/>\n </svg>\n );\n}\n\nfunction GitHubIcon({ iconSize } : { iconSize: number} ) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={iconSize} height={iconSize} viewBox=\"0 0 496 512\">\n <path fill='#FFFFFF' d=\"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\"/>\n </svg>\n );\n}\n\nfunction MicrosoftIcon({ iconSize } : { iconSize: number} ) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={iconSize} height={iconSize} viewBox=\"0 0 21 21\">\n <title>{\"MS-SymbolLockup\"}</title>\n <path fill=\"#f25022\" d=\"M1 1h9v9H1z\" />\n <path fill=\"#00a4ef\" d=\"M1 11h9v9H1z\" />\n <path fill=\"#7fba00\" d=\"M11 1h9v9h-9z\" />\n <path fill=\"#ffb900\" d=\"M11 11h9v9h-9z\" />\n </svg>\n );\n}\n\nfunction SpotifyIcon({ iconSize } : { iconSize: number} ) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={iconSize} height={iconSize} viewBox=\"0 0 496 512\">\n <path fill='#ffffff' d=\"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z\"/>\n </svg>\n );\n}\n\nconst changeColor = (c: Color, value: number) => {\n if (c.isLight()) {\n value = -value;\n }\n return c.hsl(c.hue(), c.saturationl(), c.lightness() + value).toString();\n};\n\nconst StyledButton = styled(Button)<{ $bgColor?: string, $hoverBgColor?: string, $textColor?: string, $border?: string }>`\n ${props => props.$bgColor ? `background-color: ${props.$bgColor} !important;` : ''}\n ${props => props.$textColor ? `color: ${props.$textColor} !important;` : ''}\n ${props => props.$border ? `border: ${props.$border} !important;` : ''}\n\n &:hover {\n ${props => props.$hoverBgColor ? `background-color: ${props.$hoverBgColor} !important;` : ''}\n }\n`;\n\nexport function OAuthButton({\n provider,\n type,\n}: {\n provider: string,\n type: 'sign-in' | 'sign-up',\n}) {\n const stackApp = useStackApp();\n\n let style : {\n backgroundColor?: string,\n textColor?: string,\n name: string,\n icon: JSX.Element | null,\n border?: string,\n };\n switch (provider) {\n case 'google': {\n style = {\n backgroundColor: '#fff',\n textColor: '#000',\n name: 'Google',\n border: '1px solid #ddd',\n icon: <GoogleIcon iconSize={iconSize} />,\n };\n break;\n }\n case 'github': {\n style = {\n backgroundColor: '#111',\n textColor: '#fff',\n border: '1px solid #333',\n name: 'GitHub',\n icon: <GitHubIcon iconSize={iconSize} />,\n };\n break;\n }\n case 'facebook': {\n style = {\n backgroundColor: '#1877F2',\n textColor: '#fff',\n name: 'Facebook',\n icon: <FacebookIcon iconSize={iconSize} />,\n };\n break;\n }\n case 'microsoft': {\n style = {\n backgroundColor: '#2f2f2f',\n textColor: '#fff',\n name: 'Microsoft',\n icon: <MicrosoftIcon iconSize={iconSize} />,\n };\n break;\n }\n case 'spotify': {\n style = {\n backgroundColor: '#1DB954',\n textColor: '#fff',\n name: 'Spotify',\n icon: <SpotifyIcon iconSize={iconSize} />,\n };\n break;\n }\n default: {\n style = {\n name: provider,\n icon: null,\n };\n }\n }\n \n return (\n <StyledButton\n onClick={() => stackApp.signInWithOAuth(provider)}\n $bgColor={style.backgroundColor}\n $hoverBgColor={changeColor(Color(style.backgroundColor), 10)}\n $textColor={style.textColor}\n $border={style.border}\n >\n <div className='flex items-center w-full gap-4'>\n {style.icon}\n <span className='flex-1'>\n {type === 'sign-up' ? 'Sign up with ' : 'Sign in with '}{style.name}\n </span>\n </div>\n </StyledButton>\n );\n}\n"],"mappings":"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","names":["iconSize"]}