@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
@@ -1,11 +1,9 @@
1
1
  "use client";
2
2
  "use strict";
3
3
  "use client";
4
- var __create = Object.create;
5
4
  var __defProp = Object.defineProperty;
6
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
8
- var __getProtoOf = Object.getPrototypeOf;
9
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
10
8
  var __export = (target, all) => {
11
9
  for (var name in all)
@@ -19,56 +17,31 @@ var __copyProps = (to, from, except, desc) => {
19
17
  }
20
18
  return to;
21
19
  };
22
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
- // If the importer is in node compatibility mode or this is not an ESM
24
- // file that has been converted to a CommonJS file using a Babel-
25
- // compatible transform (i.e. "__esModule" has not been set), then set
26
- // "default" to the CommonJS "module.exports" for node compatibility.
27
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
- mod
29
- ));
30
20
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
31
21
 
32
22
  // src/components/user-button.tsx
33
23
  var user_button_exports = {};
34
24
  __export(user_button_exports, {
35
- default: () => UserButton
25
+ UserButton: () => UserButton
36
26
  });
37
27
  module.exports = __toCommonJS(user_button_exports);
38
- var import_react = __toESM(require("react"));
28
+ var import_react = require("react");
39
29
  var import__ = require("..");
40
30
  var import_promises = require("@stackframe/stack-shared/dist/utils/promises");
41
- var import_user_avatar = __toESM(require("./user-avatar"));
31
+ var import_user_avatar = require("./elements/user-avatar");
42
32
  var import_navigation = require("next/navigation");
43
- var import_objects = require("@stackframe/stack-shared/dist/utils/objects");
44
- var import_styled_components = __toESM(require("styled-components"));
45
33
  var import_lucide_react = require("lucide-react");
34
+ var import_stack_ui = require("@stackframe/stack-ui");
46
35
  var import_jsx_runtime = require("react/jsx-runtime");
47
- var icons = (0, import_objects.typedFromEntries)((0, import_objects.typedEntries)({
48
- CircleUser: import_lucide_react.CircleUser,
49
- UserPlus: import_lucide_react.UserPlus,
50
- SunMoon: import_lucide_react.SunMoon,
51
- LogIn: import_lucide_react.LogIn,
52
- LogOut: import_lucide_react.LogOut
53
- }).map(([key, value]) => {
54
- const styledComponent = (0, import_styled_components.default)(value)`
55
- height: 1rem;
56
- width: 1rem;
57
- `;
58
- return [
59
- key,
60
- import_react.default.createElement(styledComponent, { size: 20 })
61
- ];
62
- }));
63
36
  function Item(props) {
64
37
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
65
- import__.DropdownMenuItem,
38
+ import_stack_ui.DropdownMenuItem,
66
39
  {
67
40
  onClick: () => (0, import_promises.runAsynchronouslyWithAlert)(props.onClick),
68
- style: { display: "flex", gap: "0.5rem", alignItems: "center" },
41
+ className: "flex gap-2 items-center",
69
42
  children: [
70
43
  props.icon,
71
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.Text, { children: props.text })
44
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { children: props.text })
72
45
  ]
73
46
  }
74
47
  );
@@ -77,7 +50,7 @@ function UserButton(props) {
77
50
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
78
51
  import_react.Suspense,
79
52
  {
80
- fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UserButtonInnerInner, { ...props, user: null }) }),
53
+ fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UserButtonInnerInner, { ...props, user: null }) }),
81
54
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UserButtonInner, { ...props })
82
55
  }
83
56
  );
@@ -90,36 +63,32 @@ function UserButtonInnerInner(props) {
90
63
  const user = props.user;
91
64
  const app = (0, import__.useStackApp)();
92
65
  const router = (0, import_navigation.useRouter)();
93
- const textStyles = {
94
- textOverflow: "ellipsis",
95
- whiteSpace: "nowrap",
96
- overflow: "hidden",
97
- margin: 0
98
- };
99
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import__.DropdownMenu, { children: [
100
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.DropdownMenuTrigger, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", gap: "0.5rem", alignItems: "center" }, children: [
101
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_user_avatar.default, { user }),
102
- user && props.showUserInfo && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", flexDirection: "column", justifyContent: "center" }, children: [
103
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.Text, { style: textStyles, children: user.displayName }),
104
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.Text, { style: { ...textStyles, fontWeight: 400 }, variant: "secondary", size: "sm", children: user.primaryEmail })
66
+ const iconProps = { size: 20, className: "h-4 w-4" };
67
+ const textClasses = "text-ellipsis whitespace-nowrap overflow-hidden";
68
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_stack_ui.DropdownMenu, { children: [
69
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.DropdownMenuTrigger, { className: "outline-none stack-scope", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex gap-2 items-center", children: [
70
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_user_avatar.UserAvatar, { user }),
71
+ user && props.showUserInfo && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col justify-center", children: [
72
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { className: textClasses, children: user.displayName }),
73
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { className: textClasses, variant: "secondary", type: "label", children: user.primaryEmail })
105
74
  ] })
106
75
  ] }) }),
107
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import__.DropdownMenuContent, { style: { zIndex: 1500 }, children: [
108
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.DropdownMenuLabel, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", gap: "0.5rem", alignItems: "center" }, children: [
109
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_user_avatar.default, { user }),
76
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_stack_ui.DropdownMenuContent, { className: "stack-scope", children: [
77
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.DropdownMenuLabel, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex gap-2 items-center", children: [
78
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_user_avatar.UserAvatar, { user }),
110
79
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
111
- user && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.Text, { children: user.displayName }),
112
- user && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.Text, { variant: "secondary", size: "sm", style: { fontWeight: 400 }, children: user.primaryEmail }),
113
- !user && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.Text, { children: "Not signed in" })
80
+ user && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { children: user.displayName }),
81
+ user && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { variant: "secondary", type: "label", children: user.primaryEmail }),
82
+ !user && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { children: "Not signed in" })
114
83
  ] })
115
84
  ] }) }),
116
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.DropdownMenuSeparator, {}),
85
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.DropdownMenuSeparator, {}),
117
86
  user && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
118
87
  Item,
119
88
  {
120
89
  text: "Account settings",
121
90
  onClick: () => router.push(app.urls.accountSettings),
122
- icon: icons.CircleUser
91
+ icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.CircleUser, { ...iconProps })
123
92
  }
124
93
  ),
125
94
  !user && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -127,7 +96,7 @@ function UserButtonInnerInner(props) {
127
96
  {
128
97
  text: "Sign in",
129
98
  onClick: () => router.push(app.urls.signIn),
130
- icon: icons.LogIn
99
+ icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.LogIn, { ...iconProps })
131
100
  }
132
101
  ),
133
102
  !user && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -135,7 +104,7 @@ function UserButtonInnerInner(props) {
135
104
  {
136
105
  text: "Sign up",
137
106
  onClick: () => router.push(app.urls.signUp),
138
- icon: icons.UserPlus
107
+ icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.UserPlus, { ...iconProps })
139
108
  }
140
109
  ),
141
110
  user && props.extraItems && props.extraItems.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Item, { ...item }, index)),
@@ -144,7 +113,7 @@ function UserButtonInnerInner(props) {
144
113
  {
145
114
  text: "Toggle theme",
146
115
  onClick: props.colorModeToggle,
147
- icon: icons.SunMoon
116
+ icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.SunMoon, { ...iconProps })
148
117
  }
149
118
  ),
150
119
  user && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -152,10 +121,14 @@ function UserButtonInnerInner(props) {
152
121
  {
153
122
  text: "Sign out",
154
123
  onClick: () => user.signOut(),
155
- icon: icons.LogOut
124
+ icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.LogOut, { ...iconProps })
156
125
  }
157
126
  )
158
127
  ] })
159
128
  ] });
160
129
  }
130
+ // Annotate the CommonJS export names for ESM import in node:
131
+ 0 && (module.exports = {
132
+ UserButton
133
+ });
161
134
  //# sourceMappingURL=user-button.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/user-button.tsx"],"sourcesContent":["'use client';\nimport React, { Suspense } from \"react\";\nimport {\n useUser,\n Text,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n useStackApp,\n Skeleton,\n CurrentUser,\n} from \"..\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport UserAvatar from \"./user-avatar\";\nimport { useRouter } from \"next/navigation\";\nimport { typedEntries, typedFromEntries } from \"@stackframe/stack-shared/dist/utils/objects\";\nimport styled from \"styled-components\";\nimport { CircleUser, LogIn, SunMoon, UserPlus, LogOut } from \"lucide-react\";\n\nconst icons = typedFromEntries(typedEntries({\n CircleUser,\n UserPlus,\n SunMoon,\n LogIn,\n LogOut,\n} as const).map(([key, value]) => {\n const styledComponent = styled(value)`\n height: 1rem;\n width: 1rem;\n `;\n return [\n key,\n React.createElement(styledComponent, { size: 20 })\n ];\n}));\n\nfunction Item(props: { text: string, icon: React.ReactNode, onClick: () => void | Promise<void> }) {\n return (\n <DropdownMenuItem \n onClick={() => runAsynchronouslyWithAlert(props.onClick)}\n style={{ display: 'flex', gap: '0.5rem', alignItems: 'center' }}\n >\n {props.icon}\n <Text>{props.text}</Text>\n </DropdownMenuItem>\n );\n}\n\ntype UserButtonProps = {\n showUserInfo?: boolean,\n colorModeToggle?: () => void | Promise<void>,\n extraItems?: {\n text: string,\n icon: React.ReactNode,\n onClick: () => void | Promise<void>,\n }[],\n};\n\nexport default function UserButton(props: UserButtonProps) {\n return (\n <Suspense\n fallback={\n <Skeleton>\n <UserButtonInnerInner {...props} user={null} />\n </Skeleton>\n }\n >\n <UserButtonInner {...props} />\n </Suspense>\n );\n}\n\nfunction UserButtonInner(props: UserButtonProps) {\n const user = useUser();\n return <UserButtonInnerInner {...props} user={user} />;\n}\n\n\nfunction UserButtonInnerInner(props: UserButtonProps & { user: CurrentUser | null }) {\n const user = props.user;\n const app = useStackApp();\n const router = useRouter();\n\n const textStyles = {\n textOverflow: 'ellipsis', \n whiteSpace: 'nowrap', \n overflow: 'hidden',\n margin: 0,\n };\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger>\n <div style={{ display: 'flex', gap: '0.5rem', alignItems: 'center' }}>\n <UserAvatar user={user} />\n {user && props.showUserInfo && <div style={{ display: 'flex', flexDirection: 'column', justifyContent: 'center' }}>\n <Text style={textStyles}>{user.displayName}</Text>\n <Text style={{ ...textStyles, fontWeight: 400 }} variant=\"secondary\" size=\"sm\">{user.primaryEmail}</Text>\n </div>}\n </div>\n </DropdownMenuTrigger>\n <DropdownMenuContent style={{ zIndex: 1500 }}>\n <DropdownMenuLabel>\n <div style={{ display: 'flex', gap: '0.5rem', alignItems: 'center' }}>\n <UserAvatar user={user} />\n <div>\n {user && <Text>{user.displayName}</Text>}\n {user && <Text variant=\"secondary\" size=\"sm\" style={{ fontWeight: 400 }}>{user.primaryEmail}</Text>}\n {!user && <Text>Not signed in</Text>}\n </div>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n {user && <Item \n text=\"Account settings\" \n onClick={() => router.push(app.urls.accountSettings)}\n icon={icons.CircleUser}\n />}\n {!user && <Item\n text=\"Sign in\"\n onClick={() => router.push(app.urls.signIn)}\n icon={icons.LogIn}\n />}\n {!user && <Item\n text=\"Sign up\"\n onClick={() => router.push(app.urls.signUp)}\n icon={icons.UserPlus}\n />}\n {user && props.extraItems && props.extraItems.map((item, index) => (\n <Item key={index} {...item} />\n ))}\n {props.colorModeToggle && (\n <Item \n text=\"Toggle theme\" \n onClick={props.colorModeToggle} \n icon={icons.SunMoon}\n />\n )}\n {user && <Item \n text=\"Sign out\" \n onClick={() => user.signOut()} \n icon={icons.LogOut}\n />}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"mappings":"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","names":["styled","React","UserAvatar"]}
1
+ {"version":3,"sources":["../../src/components/user-button.tsx"],"sourcesContent":["'use client';\n\nimport React, { Suspense } from \"react\";\nimport {\n useUser,\n useStackApp,\n CurrentUser,\n} from \"..\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { UserAvatar } from \"./elements/user-avatar\";\nimport { useRouter } from \"next/navigation\";\nimport { CircleUser, LogIn, SunMoon, UserPlus, LogOut } from \"lucide-react\";\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, Skeleton, Typography } from \"@stackframe/stack-ui\";\n\nfunction Item(props: { text: string, icon: React.ReactNode, onClick: () => void | Promise<void> }) {\n return (\n <DropdownMenuItem \n onClick={() => runAsynchronouslyWithAlert(props.onClick)}\n className=\"flex gap-2 items-center\"\n >\n {props.icon}\n <Typography>{props.text}</Typography>\n </DropdownMenuItem>\n );\n}\n\ntype UserButtonProps = {\n showUserInfo?: boolean,\n colorModeToggle?: () => void | Promise<void>,\n extraItems?: {\n text: string,\n icon: React.ReactNode,\n onClick: () => void | Promise<void>,\n }[],\n};\n\nexport function UserButton(props: UserButtonProps) {\n return (\n <Suspense\n fallback={\n <Skeleton>\n <UserButtonInnerInner {...props} user={null} />\n </Skeleton>\n }\n >\n <UserButtonInner {...props} />\n </Suspense>\n );\n}\n\nfunction UserButtonInner(props: UserButtonProps) {\n const user = useUser();\n return <UserButtonInnerInner {...props} user={user} />;\n}\n\n\nfunction UserButtonInnerInner(props: UserButtonProps & { user: CurrentUser | null }) {\n const user = props.user;\n const app = useStackApp();\n const router = useRouter();\n \n const iconProps = { size: 20, className: 'h-4 w-4' };\n const textClasses = 'text-ellipsis whitespace-nowrap overflow-hidden';\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger className=\"outline-none stack-scope\">\n <div className=\"flex gap-2 items-center\">\n <UserAvatar user={user} />\n {user && props.showUserInfo && \n <div className=\"flex flex-col justify-center\">\n <Typography className={textClasses}>{user.displayName}</Typography>\n <Typography className={textClasses} variant=\"secondary\" type='label'>{user.primaryEmail}</Typography>\n </div>\n }\n </div>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"stack-scope\">\n <DropdownMenuLabel>\n <div className=\"flex gap-2 items-center\">\n <UserAvatar user={user} />\n <div>\n {user && <Typography>{user.displayName}</Typography>}\n {user && <Typography variant=\"secondary\" type='label'>{user.primaryEmail}</Typography>}\n {!user && <Typography>Not signed in</Typography>}\n </div>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n {user && <Item \n text=\"Account settings\" \n onClick={() => router.push(app.urls.accountSettings)}\n icon={<CircleUser {...iconProps} />}\n />}\n {!user && <Item\n text=\"Sign in\"\n onClick={() => router.push(app.urls.signIn)}\n icon={<LogIn {...iconProps} />}\n />}\n {!user && <Item\n text=\"Sign up\"\n onClick={() => router.push(app.urls.signUp)}\n icon={<UserPlus {...iconProps}/> }\n />}\n {user && props.extraItems && props.extraItems.map((item, index) => (\n <Item key={index} {...item} />\n ))}\n {props.colorModeToggle && (\n <Item \n text=\"Toggle theme\" \n onClick={props.colorModeToggle} \n icon={<SunMoon {...iconProps} />}\n />\n )}\n {user && <Item \n text=\"Sign out\" \n onClick={() => user.signOut()} \n icon={<LogOut {...iconProps} />}\n />}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAgC;AAChC,eAIO;AACP,sBAA2C;AAC3C,yBAA2B;AAC3B,wBAA0B;AAC1B,0BAA6D;AAC7D,sBAAyJ;AAIrJ;AAFJ,SAAS,KAAK,OAAqF;AACjG,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,UAAM,4CAA2B,MAAM,OAAO;AAAA,MACvD,WAAU;AAAA,MAET;AAAA,cAAM;AAAA,QACP,4CAAC,8BAAY,gBAAM,MAAK;AAAA;AAAA;AAAA,EAC1B;AAEJ;AAYO,SAAS,WAAW,OAAwB;AACjD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,UACE,4CAAC,4BACC,sDAAC,wBAAsB,GAAG,OAAO,MAAM,MAAM,GAC/C;AAAA,MAGF,sDAAC,mBAAiB,GAAG,OAAO;AAAA;AAAA,EAC9B;AAEJ;AAEA,SAAS,gBAAgB,OAAwB;AAC/C,QAAM,WAAO,kBAAQ;AACrB,SAAO,4CAAC,wBAAsB,GAAG,OAAO,MAAY;AACtD;AAGA,SAAS,qBAAqB,OAAuD;AACnF,QAAM,OAAO,MAAM;AACnB,QAAM,UAAM,sBAAY;AACxB,QAAM,aAAS,6BAAU;AAEzB,QAAM,YAAY,EAAE,MAAM,IAAI,WAAW,UAAU;AACnD,QAAM,cAAc;AAEpB,SACE,6CAAC,gCACC;AAAA,gDAAC,uCAAoB,WAAU,4BAC7B,uDAAC,SAAI,WAAU,2BACb;AAAA,kDAAC,iCAAW,MAAY;AAAA,MACvB,QAAQ,MAAM,gBACb,6CAAC,SAAI,WAAU,gCACb;AAAA,oDAAC,8BAAW,WAAW,aAAc,eAAK,aAAY;AAAA,QACtD,4CAAC,8BAAW,WAAW,aAAa,SAAQ,aAAY,MAAK,SAAS,eAAK,cAAa;AAAA,SAC1F;AAAA,OAEJ,GACF;AAAA,IACA,6CAAC,uCAAoB,WAAU,eAC7B;AAAA,kDAAC,qCACC,uDAAC,SAAI,WAAU,2BACb;AAAA,oDAAC,iCAAW,MAAY;AAAA,QACxB,6CAAC,SACE;AAAA,kBAAQ,4CAAC,8BAAY,eAAK,aAAY;AAAA,UACtC,QAAQ,4CAAC,8BAAW,SAAQ,aAAY,MAAK,SAAS,eAAK,cAAa;AAAA,UACxE,CAAC,QAAQ,4CAAC,8BAAW,2BAAa;AAAA,WACrC;AAAA,SACF,GACF;AAAA,MACA,4CAAC,yCAAsB;AAAA,MACtB,QAAQ;AAAA,QAAC;AAAA;AAAA,UACR,MAAK;AAAA,UACL,SAAS,MAAM,OAAO,KAAK,IAAI,KAAK,eAAe;AAAA,UACnD,MAAM,4CAAC,kCAAY,GAAG,WAAW;AAAA;AAAA,MACnC;AAAA,MACC,CAAC,QAAQ;AAAA,QAAC;AAAA;AAAA,UACT,MAAK;AAAA,UACL,SAAS,MAAM,OAAO,KAAK,IAAI,KAAK,MAAM;AAAA,UAC1C,MAAM,4CAAC,6BAAO,GAAG,WAAW;AAAA;AAAA,MAC9B;AAAA,MACC,CAAC,QAAQ;AAAA,QAAC;AAAA;AAAA,UACT,MAAK;AAAA,UACL,SAAS,MAAM,OAAO,KAAK,IAAI,KAAK,MAAM;AAAA,UAC1C,MAAM,4CAAC,gCAAU,GAAG,WAAU;AAAA;AAAA,MAChC;AAAA,MACC,QAAQ,MAAM,cAAc,MAAM,WAAW,IAAI,CAAC,MAAM,UACvD,4CAAC,QAAkB,GAAG,QAAX,KAAiB,CAC7B;AAAA,MACA,MAAM,mBACL;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,MAAM;AAAA,UACf,MAAM,4CAAC,+BAAS,GAAG,WAAW;AAAA;AAAA,MAChC;AAAA,MAED,QAAQ;AAAA,QAAC;AAAA;AAAA,UACR,MAAK;AAAA,UACL,SAAS,MAAM,KAAK,QAAQ;AAAA,UAC5B,MAAM,4CAAC,8BAAQ,GAAG,WAAW;AAAA;AAAA,MAC/B;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
@@ -4,4 +4,4 @@ declare function AccountSettings({ fullPage }: {
4
4
  fullPage?: boolean;
5
5
  }): react_jsx_runtime.JSX.Element;
6
6
 
7
- export { AccountSettings as default };
7
+ export { AccountSettings };
@@ -4,4 +4,4 @@ declare function AccountSettings({ fullPage }: {
4
4
  fullPage?: boolean;
5
5
  }): react_jsx_runtime.JSX.Element;
6
6
 
7
- export { AccountSettings as default };
7
+ export { AccountSettings };
@@ -1,11 +1,9 @@
1
1
  "use client";
2
2
  "use strict";
3
3
  "use client";
4
- var __create = Object.create;
5
4
  var __defProp = Object.defineProperty;
6
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
8
- var __getProtoOf = Object.getPrototypeOf;
9
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
10
8
  var __export = (target, all) => {
11
9
  for (var name in all)
@@ -19,39 +17,31 @@ var __copyProps = (to, from, except, desc) => {
19
17
  }
20
18
  return to;
21
19
  };
22
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
- // If the importer is in node compatibility mode or this is not an ESM
24
- // file that has been converted to a CommonJS file using a Babel-
25
- // compatible transform (i.e. "__esModule" has not been set), then set
26
- // "default" to the CommonJS "module.exports" for node compatibility.
27
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
- mod
29
- ));
30
20
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
31
21
 
32
22
  // src/components-page/account-settings.tsx
33
23
  var account_settings_exports = {};
34
24
  __export(account_settings_exports, {
35
- default: () => AccountSettings
25
+ AccountSettings: () => AccountSettings
36
26
  });
37
27
  module.exports = __toCommonJS(account_settings_exports);
38
28
  var import__ = require("..");
39
- var import_predefined_message_card = __toESM(require("../components/message-cards/predefined-message-card"));
40
- var import_components_core = require("../components-core");
41
- var import_user_avatar = __toESM(require("../components/user-avatar"));
29
+ var import_predefined_message_card = require("../components/message-cards/predefined-message-card");
30
+ var import_user_avatar = require("../components/elements/user-avatar");
42
31
  var import_react = require("react");
43
- var import_form_warning = __toESM(require("../components/form-warning"));
32
+ var import_form_warning = require("../components/elements/form-warning");
44
33
  var import_password = require("@stackframe/stack-shared/dist/helpers/password");
34
+ var import_stack_ui = require("@stackframe/stack-ui");
45
35
  var import_jsx_runtime = require("react/jsx-runtime");
46
36
  function SettingSection(props) {
47
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.Card, { children: [
48
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.CardHeader, { children: [
49
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { as: "h3", style: { fontWeight: 500 }, children: props.title }),
50
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { variant: "secondary", size: "sm", children: props.desc })
51
- ] }),
52
- props.children && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.CardContent, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "1rem" }, children: props.children }) }),
53
- props.buttonText && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.CardFooter, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { display: "flex", justifyContent: "flex-end", width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
54
- import_components_core.Button,
37
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_stack_ui.Card, { children: [
38
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.CardHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
39
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { type: "h4", children: props.title }),
40
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { type: "label", variant: "secondary", children: props.desc })
41
+ ] }) }),
42
+ props.children && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.CardContent, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex flex-col gap-4", children: props.children }) }),
43
+ props.buttonText && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.CardFooter, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex justify-end w-full", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
44
+ import_stack_ui.Button,
55
45
  {
56
46
  disabled: props.buttonDisabled,
57
47
  onClick: props.onButtonClick,
@@ -77,17 +67,17 @@ function ProfileSection() {
77
67
  setChanged(false);
78
68
  },
79
69
  children: [
80
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", gap: "1rem", alignItems: "center" }, children: [
81
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_user_avatar.default, { user, size: 50 }),
82
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", flexDirection: "column" }, children: [
83
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { children: user?.displayName }),
84
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { variant: "secondary", size: "sm", children: user?.primaryEmail })
70
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex gap-4 items-center", children: [
71
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_user_avatar.UserAvatar, { user, size: 50 }),
72
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col", children: [
73
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { children: user?.displayName }),
74
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { variant: "secondary", type: "label", children: user?.primaryEmail })
85
75
  ] })
86
76
  ] }),
87
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", flexDirection: "column" }, children: [
88
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Label, { htmlFor: "display-name", children: "Display Name" }),
77
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col", children: [
78
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Label, { htmlFor: "display-name", className: "mb-1", children: "Display Name" }),
89
79
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
90
- import_components_core.Input,
80
+ import_stack_ui.Input,
91
81
  {
92
82
  id: "display-name",
93
83
  value: userInfo.displayName,
@@ -116,7 +106,7 @@ function EmailVerificationSection() {
116
106
  await user?.sendVerificationEmail();
117
107
  setEmailSent(true);
118
108
  },
119
- children: user?.primaryEmailVerified ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { variant: "success", children: "Your email has been verified" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { variant: "warning", children: "Your email has not been verified" })
109
+ children: user?.primaryEmailVerified ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { variant: "success", children: "Your email has been verified" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { variant: "destructive", children: "Your email has not been verified" })
120
110
  }
121
111
  );
122
112
  }
@@ -157,10 +147,10 @@ function PasswordSection() {
157
147
  }
158
148
  },
159
149
  children: [
160
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", flexDirection: "column" }, children: [
161
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Label, { htmlFor: "old-password", children: "Old Password" }),
150
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col", children: [
151
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Label, { htmlFor: "old-password", className: "mb-1", children: "Old Password" }),
162
152
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
163
- import__.PasswordField,
153
+ import_stack_ui.PasswordInput,
164
154
  {
165
155
  id: "old-password",
166
156
  value: oldPassword,
@@ -170,12 +160,12 @@ function PasswordSection() {
170
160
  }
171
161
  }
172
162
  ),
173
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_form_warning.default, { text: oldPasswordError })
163
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_form_warning.FormWarningText, { text: oldPasswordError })
174
164
  ] }),
175
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", flexDirection: "column" }, children: [
176
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Label, { htmlFor: "new-password", children: "New Password" }),
165
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col", children: [
166
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Label, { htmlFor: "new-password", className: "mb-1", children: "New Password" }),
177
167
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
178
- import__.PasswordField,
168
+ import_stack_ui.PasswordInput,
179
169
  {
180
170
  id: "new-password",
181
171
  value: newPassword,
@@ -185,7 +175,7 @@ function PasswordSection() {
185
175
  }
186
176
  }
187
177
  ),
188
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_form_warning.default, { text: newPasswordError })
178
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_form_warning.FormWarningText, { text: newPasswordError })
189
179
  ] })
190
180
  ]
191
181
  }
@@ -207,12 +197,12 @@ function SignOutSection() {
207
197
  function AccountSettings({ fullPage = false }) {
208
198
  const user = (0, import__.useUser)();
209
199
  if (!user) {
210
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_predefined_message_card.default, { type: "signedOut", fullPage });
200
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_predefined_message_card.PredefinedMessageCard, { type: "signedOut", fullPage });
211
201
  }
212
- const inner = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { padding: fullPage ? "1rem" : 0, display: "flex", flexDirection: "column", gap: "1rem" }, children: [
202
+ const inner = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: (0, import_stack_ui.cn)(fullPage ? "p-4" : "", "flex flex-col gap-4"), children: [
213
203
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
214
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { size: "xl", as: "h1", style: { fontWeight: "600" }, children: "Account Settings" }),
215
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { variant: "secondary", size: "sm", children: "Manage your account" })
204
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { type: "h2", children: "Account Settings" }),
205
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { variant: "secondary", type: "label", children: "Manage your account" })
216
206
  ] }),
217
207
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProfileSection, {}),
218
208
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EmailVerificationSection, {}),
@@ -220,9 +210,13 @@ function AccountSettings({ fullPage = false }) {
220
210
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SignOutSection, {})
221
211
  ] });
222
212
  if (fullPage) {
223
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Container, { size: "sm", children: inner });
213
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Container, { size: 600, className: "stack-scope", children: inner });
224
214
  } else {
225
215
  return inner;
226
216
  }
227
217
  }
218
+ // Annotate the CommonJS export names for ESM import in node:
219
+ 0 && (module.exports = {
220
+ AccountSettings
221
+ });
228
222
  //# sourceMappingURL=account-settings.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components-page/account-settings.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { PasswordField, useUser } from '..';\nimport PredefinedMessageCard from '../components/message-cards/predefined-message-card';\nimport { Text, Label, Input, Button, Card, CardHeader, CardContent, CardFooter, Container } from \"../components-core\";\nimport UserAvatar from '../components/user-avatar';\nimport { useState } from 'react';\nimport FormWarningText from '../components/form-warning';\nimport { getPasswordError } from '@stackframe/stack-shared/dist/helpers/password';\n\nfunction SettingSection(props: {\n title: string, \n desc: string, \n buttonText?: string, \n buttonDisabled?: boolean,\n onButtonClick?: React.ComponentProps<typeof Button>[\"onClick\"],\n buttonVariant?: 'primary' | 'secondary',\n children?: React.ReactNode, \n}) {\n return (\n <Card>\n <CardHeader>\n <Text as='h3' style={{ fontWeight: 500 }}>{props.title}</Text>\n <Text variant='secondary' size='sm'>{props.desc}</Text>\n </CardHeader>\n {props.children && <CardContent>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n {props.children}\n </div>\n </CardContent>}\n {props.buttonText && <CardFooter>\n <div style={{ display: 'flex', justifyContent: 'flex-end', width: '100%' }}>\n <Button\n disabled={props.buttonDisabled}\n onClick={props.onButtonClick}\n variant={props.buttonVariant}\n >\n {props.buttonText}\n </Button>\n </div>\n </CardFooter>}\n </Card>\n );\n}\n\nfunction ProfileSection() {\n const user = useUser();\n const [userInfo, setUserInfo] = useState<{ displayName: string }>({ displayName: user?.displayName || '' });\n const [changed, setChanged] = useState(false);\n\n return (\n <SettingSection\n title='Profile'\n desc='Your profile information'\n buttonDisabled={!changed}\n buttonText='Save'\n onButtonClick={async () => {\n await user?.update(userInfo);\n setChanged(false);\n }}\n >\n <div style={{ display: 'flex', gap: '1rem', alignItems: 'center' }}>\n <UserAvatar user={user} size={50}/>\n <div style={{ display: 'flex', flexDirection: 'column' }}>\n <Text>{user?.displayName}</Text>\n <Text variant='secondary' size='sm'>{user?.primaryEmail}</Text>\n </div>\n </div>\n\n <div style={{ display: 'flex', flexDirection: 'column' }}>\n <Label htmlFor='display-name'>Display Name</Label>\n <Input\n id='display-name'\n value={userInfo.displayName}\n onChange={(e) => {\n setUserInfo((i) => ({...i, displayName: e.target.value }));\n setChanged(true);\n }}\n />\n </div>\n </SettingSection>\n );\n}\n\nfunction EmailVerificationSection() {\n const user = useUser();\n const [emailSent, setEmailSent] = useState(false);\n\n return (\n <SettingSection\n title='Email Verification'\n desc='We want to make sure that you own the email address.'\n buttonDisabled={emailSent}\n buttonText={\n !user?.primaryEmailVerified ? \n emailSent ? \n 'Email sent!' : \n 'Send Email'\n : undefined\n }\n onButtonClick={async () => {\n await user?.sendVerificationEmail();\n setEmailSent(true);\n }}\n >\n {user?.primaryEmailVerified ? \n <Text variant='success'>Your email has been verified</Text> : \n <Text variant='warning'>Your email has not been verified</Text>}\n </SettingSection>\n );\n}\n\nfunction PasswordSection() {\n const user = useUser();\n const [oldPassword, setOldPassword] = useState<string>('');\n const [oldPasswordError, setOldPasswordError] = useState<string>('');\n const [newPassword, setNewPassword] = useState<string>('');\n const [newPasswordError, setNewPasswordError] = useState<string>('');\n\n if (!user?.hasPassword) {\n return null;\n }\n\n return (\n <SettingSection\n title='Password'\n desc='Change your password here.'\n buttonDisabled={!oldPassword || !newPassword}\n buttonText='Save'\n onButtonClick={async () => {\n if (oldPassword && newPassword) {\n const errorMessage = getPasswordError(newPassword);\n if (errorMessage) {\n setNewPasswordError(errorMessage.message);\n } else {\n const errorCode = await user.updatePassword({ oldPassword, newPassword });\n if (errorCode) {\n setOldPasswordError('Incorrect password');\n } else {\n setOldPassword('');\n setNewPassword('');\n }\n }\n } else if (oldPassword && !newPassword) {\n setNewPasswordError('Please enter a new password');\n } else if (newPassword && !oldPassword) {\n setOldPasswordError('Please enter your old password');\n }\n }}\n >\n <div style={{ display: 'flex', flexDirection: 'column' }}>\n <Label htmlFor='old-password'>Old Password</Label>\n <PasswordField\n id='old-password' \n value={oldPassword} \n onChange={(e) => {\n setOldPassword(e.target.value);\n setOldPasswordError('');\n }}\n />\n <FormWarningText text={oldPasswordError} />\n </div>\n <div style={{ display: 'flex', flexDirection: 'column' }}>\n <Label htmlFor='new-password'>New Password</Label>\n <PasswordField\n id='new-password' \n value={newPassword} \n onChange={(e) => {\n setNewPassword(e.target.value);\n setNewPasswordError('');\n }}\n />\n <FormWarningText text={newPasswordError} />\n </div>\n </SettingSection>\n );\n}\n\nfunction SignOutSection() {\n const user = useUser();\n return (\n <SettingSection\n title='Sign out'\n desc='Sign out of your account on this device.'\n buttonVariant='secondary'\n buttonText='Sign Out'\n onButtonClick={() => user?.signOut()}\n >\n </SettingSection>\n );\n}\n\nexport default function AccountSettings({ fullPage=false }: { fullPage?: boolean }) {\n const user = useUser();\n if (!user) {\n return <PredefinedMessageCard type='signedOut' fullPage={fullPage} />;\n }\n\n const inner = (\n <div style={{ padding: fullPage ? '1rem' : 0, display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n <div>\n <Text size=\"xl\" as='h1' style={{ fontWeight: '600' }}>Account Settings</Text>\n <Text variant='secondary' size='sm'>Manage your account</Text>\n </div>\n \n <ProfileSection />\n <EmailVerificationSection />\n <PasswordSection />\n <SignOutSection />\n </div>\n );\n\n if (fullPage) {\n return (\n <Container size='sm'>\n {inner}\n </Container>\n );\n } else {\n return inner;\n }\n}\n"],"mappings":"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","names":["UserAvatar","FormWarningText","PredefinedMessageCard"]}
1
+ {"version":3,"sources":["../../src/components-page/account-settings.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { useUser } from '..';\nimport { PredefinedMessageCard } from '../components/message-cards/predefined-message-card';\nimport { UserAvatar } from '../components/elements/user-avatar';\nimport { useState } from 'react';\nimport { FormWarningText } from '../components/elements/form-warning';\nimport { getPasswordError } from '@stackframe/stack-shared/dist/helpers/password';\nimport { Button, Card, CardContent, CardFooter, CardHeader, Container, Input, Label, PasswordInput, Typography, cn } from '@stackframe/stack-ui';\n\nfunction SettingSection(props: {\n title: string, \n desc: string, \n buttonText?: string, \n buttonDisabled?: boolean,\n onButtonClick?: React.ComponentProps<typeof Button>[\"onClick\"],\n buttonVariant?: 'default' | 'secondary',\n children?: React.ReactNode, \n}) {\n return (\n <Card>\n <CardHeader>\n <div>\n <Typography type='h4'>{props.title}</Typography>\n <Typography type='label' variant='secondary'>{props.desc}</Typography>\n </div>\n </CardHeader>\n {props.children && <CardContent>\n <div className='flex flex-col gap-4'>\n {props.children}\n </div>\n </CardContent>}\n {props.buttonText && <CardFooter>\n <div className='flex justify-end w-full'>\n <Button\n disabled={props.buttonDisabled}\n onClick={props.onButtonClick}\n variant={props.buttonVariant}\n >\n {props.buttonText}\n </Button>\n </div>\n </CardFooter>}\n </Card>\n );\n}\n\nfunction ProfileSection() {\n const user = useUser();\n const [userInfo, setUserInfo] = useState<{ displayName: string }>({ displayName: user?.displayName || '' });\n const [changed, setChanged] = useState(false);\n\n return (\n <SettingSection\n title='Profile'\n desc='Your profile information'\n buttonDisabled={!changed}\n buttonText='Save'\n onButtonClick={async () => {\n await user?.update(userInfo);\n setChanged(false);\n }}\n >\n <div className='flex gap-4 items-center'>\n <UserAvatar user={user} size={50}/>\n <div className='flex flex-col'>\n <Typography>{user?.displayName}</Typography>\n <Typography variant='secondary' type='label'>{user?.primaryEmail}</Typography>\n </div>\n </div>\n\n <div className='flex flex-col'>\n <Label htmlFor='display-name' className='mb-1'>Display Name</Label>\n <Input\n id='display-name'\n value={userInfo.displayName}\n onChange={(e) => {\n setUserInfo((i) => ({...i, displayName: e.target.value }));\n setChanged(true);\n }}\n />\n </div>\n </SettingSection>\n );\n}\n\nfunction EmailVerificationSection() {\n const user = useUser();\n const [emailSent, setEmailSent] = useState(false);\n\n return (\n <SettingSection\n title='Email Verification'\n desc='We want to make sure that you own the email address.'\n buttonDisabled={emailSent}\n buttonText={\n !user?.primaryEmailVerified ? \n emailSent ? \n 'Email sent!' : \n 'Send Email'\n : undefined\n }\n onButtonClick={async () => {\n await user?.sendVerificationEmail();\n setEmailSent(true);\n }}\n >\n {user?.primaryEmailVerified ? \n <Typography variant='success'>Your email has been verified</Typography> :\n <Typography variant='destructive'>Your email has not been verified</Typography>}\n </SettingSection>\n );\n}\n\nfunction PasswordSection() {\n const user = useUser();\n const [oldPassword, setOldPassword] = useState<string>('');\n const [oldPasswordError, setOldPasswordError] = useState<string>('');\n const [newPassword, setNewPassword] = useState<string>('');\n const [newPasswordError, setNewPasswordError] = useState<string>('');\n\n if (!user?.hasPassword) {\n return null;\n }\n\n return (\n <SettingSection\n title='Password'\n desc='Change your password here.'\n buttonDisabled={!oldPassword || !newPassword}\n buttonText='Save'\n onButtonClick={async () => {\n if (oldPassword && newPassword) {\n const errorMessage = getPasswordError(newPassword);\n if (errorMessage) {\n setNewPasswordError(errorMessage.message);\n } else {\n const errorCode = await user.updatePassword({ oldPassword, newPassword });\n if (errorCode) {\n setOldPasswordError('Incorrect password');\n } else {\n setOldPassword('');\n setNewPassword('');\n }\n }\n } else if (oldPassword && !newPassword) {\n setNewPasswordError('Please enter a new password');\n } else if (newPassword && !oldPassword) {\n setOldPasswordError('Please enter your old password');\n }\n }}\n >\n <div className='flex flex-col'>\n <Label htmlFor='old-password' className='mb-1'>Old Password</Label>\n <PasswordInput\n id='old-password' \n value={oldPassword} \n onChange={(e) => {\n setOldPassword(e.target.value);\n setOldPasswordError('');\n }}\n />\n <FormWarningText text={oldPasswordError} />\n </div>\n <div className='flex flex-col'>\n <Label htmlFor='new-password' className='mb-1'>New Password</Label>\n <PasswordInput\n id='new-password' \n value={newPassword} \n onChange={(e) => {\n setNewPassword(e.target.value);\n setNewPasswordError('');\n }}\n />\n <FormWarningText text={newPasswordError} />\n </div>\n </SettingSection>\n );\n}\n\nfunction SignOutSection() {\n const user = useUser();\n return (\n <SettingSection\n title='Sign out'\n desc='Sign out of your account on this device.'\n buttonVariant='secondary'\n buttonText='Sign Out'\n onButtonClick={() => user?.signOut()}\n >\n </SettingSection>\n );\n}\n\nexport function AccountSettings({ fullPage=false }: { fullPage?: boolean }) {\n const user = useUser();\n if (!user) {\n return <PredefinedMessageCard type='signedOut' fullPage={fullPage} />;\n }\n\n const inner = (\n <div className={cn(fullPage ? 'p-4' : '', 'flex flex-col gap-4')}>\n <div>\n <Typography type='h2'>Account Settings</Typography>\n <Typography variant='secondary' type='label'>Manage your account</Typography>\n </div>\n \n <ProfileSection />\n <EmailVerificationSection />\n <PasswordSection />\n <SignOutSection />\n </div>\n );\n\n if (fullPage) {\n return (\n <Container size={600} className='stack-scope'>\n {inner}\n </Container>\n );\n } else {\n return inner;\n }\n}\n"],"mappings":"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","names":[]}
@@ -7,4 +7,4 @@ declare function AuthPage({ fullPage, type, mockProject, }: {
7
7
  mockProject?: ClientProjectJson;
8
8
  }): react_jsx_runtime.JSX.Element;
9
9
 
10
- export { AuthPage as default };
10
+ export { AuthPage };
@@ -7,4 +7,4 @@ declare function AuthPage({ fullPage, type, mockProject, }: {
7
7
  mockProject?: ClientProjectJson;
8
8
  }): react_jsx_runtime.JSX.Element;
9
9
 
10
- export { AuthPage as default };
10
+ export { AuthPage };
@@ -1,11 +1,9 @@
1
1
  "use client";
2
2
  "use strict";
3
3
  "use client";
4
- var __create = Object.create;
5
4
  var __defProp = Object.defineProperty;
6
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
8
- var __getProtoOf = Object.getPrototypeOf;
9
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
10
8
  var __export = (target, all) => {
11
9
  for (var name in all)
@@ -19,30 +17,23 @@ var __copyProps = (to, from, except, desc) => {
19
17
  }
20
18
  return to;
21
19
  };
22
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
- // If the importer is in node compatibility mode or this is not an ESM
24
- // file that has been converted to a CommonJS file using a Babel-
25
- // compatible transform (i.e. "__esModule" has not been set), then set
26
- // "default" to the CommonJS "module.exports" for node compatibility.
27
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
- mod
29
- ));
30
20
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
31
21
 
32
22
  // src/components-page/auth-page.tsx
33
23
  var auth_page_exports = {};
34
24
  __export(auth_page_exports, {
35
- default: () => AuthPage
25
+ AuthPage: () => AuthPage
36
26
  });
37
27
  module.exports = __toCommonJS(auth_page_exports);
38
- var import_credential_sign_in = __toESM(require("../components/credential-sign-in"));
39
- var import_separator_with_text = __toESM(require("../components/separator-with-text"));
40
- var import_oauth_group = __toESM(require("../components/oauth-group"));
41
- var import_maybe_full_page = __toESM(require("../components/maybe-full-page"));
28
+ var import_credential_sign_in_form = require("../components/credential-sign-in-form");
29
+ var import_separator_with_text = require("../components/elements/separator-with-text");
30
+ var import_oauth_button_group = require("../components/oauth-button-group");
31
+ var import_maybe_full_page = require("../components/elements/maybe-full-page");
42
32
  var import__ = require("..");
43
- var import_predefined_message_card = __toESM(require("../components/message-cards/predefined-message-card"));
44
- var import_components_core = require("../components-core");
45
- var import_magic_link_sign_in = __toESM(require("../components/magic-link-sign-in"));
33
+ var import_predefined_message_card = require("../components/message-cards/predefined-message-card");
34
+ var import_magic_link_sign_in_form = require("../components/magic-link-sign-in-form");
35
+ var import_credential_sign_up_form = require("../components/credential-sign-up-form");
36
+ var import_stack_ui = require("@stackframe/stack-ui");
46
37
  var import_jsx_runtime = require("react/jsx-runtime");
47
38
  function AuthPage({
48
39
  fullPage = false,
@@ -54,30 +45,34 @@ function AuthPage({
54
45
  const projectFromHook = stackApp.useProject();
55
46
  const project = mockProject || projectFromHook;
56
47
  if (user && !mockProject) {
57
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_predefined_message_card.default, { type: "signedIn", fullPage });
48
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_predefined_message_card.PredefinedMessageCard, { type: "signedIn", fullPage });
58
49
  }
59
50
  const enableSeparator = (project.credentialEnabled || project.magicLinkEnabled) && project.oauthProviders.filter((p) => p.enabled).length > 0;
60
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_maybe_full_page.default, { fullPage, children: [
61
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { textAlign: "center", marginBottom: "1.5rem" }, children: [
62
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { size: "xl", as: "h2", style: { fontWeight: 500 }, children: type === "sign-in" ? "Sign in to your account" : "Create a new account" }),
63
- type === "sign-in" ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.Text, { children: [
51
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_maybe_full_page.MaybeFullPage, { fullPage, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "stack-scope flex flex-col items-stretch", children: [
52
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "text-center mb-6", children: [
53
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { type: "h2", children: type === "sign-in" ? "Sign in to your account" : "Create a new account" }),
54
+ type === "sign-in" ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_stack_ui.Typography, { children: [
64
55
  "Don't have an account? ",
65
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Link, { href: stackApp.urls.signUp, children: "Sign up" })
66
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.Text, { children: [
56
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.StyledLink, { href: stackApp.urls.signUp, children: "Sign up" })
57
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_stack_ui.Typography, { children: [
67
58
  "Already have an account? ",
68
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Link, { href: stackApp.urls.signIn, children: "Sign in" })
59
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.StyledLink, { href: stackApp.urls.signIn, children: "Sign in" })
69
60
  ] })
70
61
  ] }),
71
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_oauth_group.default, { type, mockProject }),
72
- enableSeparator && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_separator_with_text.default, { text: "Or continue with" }),
73
- project.credentialEnabled && project.magicLinkEnabled ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.Tabs, { defaultValue: "magic-link", children: [
74
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.TabsList, { children: [
75
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.TabsTrigger, { value: "magic-link", children: "Magic Link" }),
76
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.TabsTrigger, { value: "password", children: "Password" })
62
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_oauth_button_group.OAuthButtonGroup, { type, mockProject }),
63
+ enableSeparator && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_separator_with_text.SeparatorWithText, { text: "Or continue with" }),
64
+ project.credentialEnabled && project.magicLinkEnabled ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_stack_ui.Tabs, { defaultValue: "magic-link", children: [
65
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_stack_ui.TabsList, { className: "w-full mb-2", children: [
66
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.TabsTrigger, { value: "magic-link", className: "flex-1", children: "Magic Link" }),
67
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.TabsTrigger, { value: "password", className: "flex-1", children: "Password" })
77
68
  ] }),
78
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.TabsContent, { value: "magic-link", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_magic_link_sign_in.default, {}) }),
79
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.TabsContent, { value: "password", children: type === "sign-up" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.CredentialSignUp, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_credential_sign_in.default, {}) })
80
- ] }) : project.credentialEnabled ? type === "sign-up" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.CredentialSignUp, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_credential_sign_in.default, {}) : project.magicLinkEnabled ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_magic_link_sign_in.default, {}) : null
81
- ] });
69
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.TabsContent, { value: "magic-link", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_magic_link_sign_in_form.MagicLinkSignInForm, {}) }),
70
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.TabsContent, { value: "password", children: type === "sign-up" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_credential_sign_up_form.CredentialSignUpForm, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_credential_sign_in_form.CredentialSignInForm, {}) })
71
+ ] }) : project.credentialEnabled ? type === "sign-up" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_credential_sign_up_form.CredentialSignUpForm, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_credential_sign_in_form.CredentialSignInForm, {}) : project.magicLinkEnabled ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_magic_link_sign_in_form.MagicLinkSignInForm, {}) : null
72
+ ] }) });
82
73
  }
74
+ // Annotate the CommonJS export names for ESM import in node:
75
+ 0 && (module.exports = {
76
+ AuthPage
77
+ });
83
78
  //# sourceMappingURL=auth-page.js.map