@stackframe/stack 2.4.0 → 2.4.1

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 (279) hide show
  1. package/dist/components/card-frame.js +1 -0
  2. package/dist/components/card-frame.js.map +1 -0
  3. package/dist/components/credential-sign-in.js +1 -0
  4. package/dist/components/credential-sign-in.js.map +1 -0
  5. package/dist/components/credential-sign-up.js +1 -0
  6. package/dist/components/credential-sign-up.js.map +1 -0
  7. package/dist/components/forgot-password.js +1 -0
  8. package/dist/components/forgot-password.js.map +1 -0
  9. package/dist/components/form-warning.js +1 -0
  10. package/dist/components/form-warning.js.map +1 -0
  11. package/dist/components/magic-link-sign-in.js +1 -0
  12. package/dist/components/magic-link-sign-in.js.map +1 -0
  13. package/dist/components/message-card.js +1 -0
  14. package/dist/components/message-card.js.map +1 -0
  15. package/dist/components/oauth-button.js +1 -0
  16. package/dist/components/oauth-button.js.map +1 -0
  17. package/dist/components/oauth-group.js +1 -0
  18. package/dist/components/oauth-group.js.map +1 -0
  19. package/dist/components/password-field.js +1 -0
  20. package/dist/components/password-field.js.map +1 -0
  21. package/dist/components/password-reset-inner.js +1 -0
  22. package/dist/components/password-reset-inner.js.map +1 -0
  23. package/dist/components/redirect-message-card.js +9 -14
  24. package/dist/components/redirect-message-card.js.map +1 -0
  25. package/dist/components/separator-with-text.js +1 -0
  26. package/dist/components/separator-with-text.js.map +1 -0
  27. package/dist/components/user-avatar.d.mts +1 -0
  28. package/dist/components/user-avatar.d.ts +1 -0
  29. package/dist/components/user-avatar.js +1 -0
  30. package/dist/components/user-avatar.js.map +1 -0
  31. package/dist/components/user-button.js +1 -0
  32. package/dist/components/user-button.js.map +1 -0
  33. package/dist/components-core/avatar.js +1 -0
  34. package/dist/components-core/avatar.js.map +1 -0
  35. package/dist/components-core/button.js +1 -0
  36. package/dist/components-core/button.js.map +1 -0
  37. package/dist/components-core/card.js +1 -0
  38. package/dist/components-core/card.js.map +1 -0
  39. package/dist/components-core/collapsible.js +1 -0
  40. package/dist/components-core/collapsible.js.map +1 -0
  41. package/dist/components-core/container.js +1 -0
  42. package/dist/components-core/container.js.map +1 -0
  43. package/dist/components-core/dropdown.js +1 -0
  44. package/dist/components-core/dropdown.js.map +1 -0
  45. package/dist/components-core/index.d.mts +4 -4
  46. package/dist/components-core/index.d.ts +4 -4
  47. package/dist/components-core/index.js +1 -0
  48. package/dist/components-core/index.js.map +1 -0
  49. package/dist/components-core/input.js +1 -0
  50. package/dist/components-core/input.js.map +1 -0
  51. package/dist/components-core/label.js +1 -0
  52. package/dist/components-core/label.js.map +1 -0
  53. package/dist/components-core/link.js +1 -0
  54. package/dist/components-core/link.js.map +1 -0
  55. package/dist/components-core/loading-indicator.js +1 -0
  56. package/dist/components-core/loading-indicator.js.map +1 -0
  57. package/dist/components-core/popover.js +1 -0
  58. package/dist/components-core/popover.js.map +1 -0
  59. package/dist/components-core/separator.js +1 -0
  60. package/dist/components-core/separator.js.map +1 -0
  61. package/dist/components-core/skeleton.js +1 -0
  62. package/dist/components-core/skeleton.js.map +1 -0
  63. package/dist/components-core/tabs.js +4 -2
  64. package/dist/components-core/tabs.js.map +1 -0
  65. package/dist/components-core/text.js +1 -0
  66. package/dist/components-core/text.js.map +1 -0
  67. package/dist/components-core-joy/button.js +1 -0
  68. package/dist/components-core-joy/button.js.map +1 -0
  69. package/dist/components-core-joy/input.js +1 -0
  70. package/dist/components-core-joy/input.js.map +1 -0
  71. package/dist/components-core-joy/separator.js +1 -0
  72. package/dist/components-core-joy/separator.js.map +1 -0
  73. package/dist/components-core-joy/tabs.js +1 -0
  74. package/dist/components-core-joy/tabs.js.map +1 -0
  75. package/dist/components-core-joy/text.js +1 -0
  76. package/dist/components-core-joy/text.js.map +1 -0
  77. package/dist/components-page/account-settings.js +1 -0
  78. package/dist/components-page/account-settings.js.map +1 -0
  79. package/dist/components-page/auth-page.js +1 -0
  80. package/dist/components-page/auth-page.js.map +1 -0
  81. package/dist/components-page/email-verification.js +1 -0
  82. package/dist/components-page/email-verification.js.map +1 -0
  83. package/dist/components-page/forgot-password.js +1 -0
  84. package/dist/components-page/forgot-password.js.map +1 -0
  85. package/dist/components-page/magic-link-callback.js +3 -2
  86. package/dist/components-page/magic-link-callback.js.map +1 -0
  87. package/dist/components-page/oauth-callback.js +1 -0
  88. package/dist/components-page/oauth-callback.js.map +1 -0
  89. package/dist/components-page/password-reset.js +1 -0
  90. package/dist/components-page/password-reset.js.map +1 -0
  91. package/dist/components-page/sign-in.js +1 -0
  92. package/dist/components-page/sign-in.js.map +1 -0
  93. package/dist/components-page/sign-out.js +1 -0
  94. package/dist/components-page/sign-out.js.map +1 -0
  95. package/dist/components-page/sign-up.js +1 -0
  96. package/dist/components-page/sign-up.js.map +1 -0
  97. package/dist/components-page/stack-handler.d.mts +1 -0
  98. package/dist/components-page/stack-handler.d.ts +1 -0
  99. package/dist/components-page/stack-handler.js +1 -0
  100. package/dist/components-page/stack-handler.js.map +1 -0
  101. package/dist/esm/components/card-frame.js +1 -0
  102. package/dist/esm/components/card-frame.js.map +1 -0
  103. package/dist/esm/components/credential-sign-in.js +1 -0
  104. package/dist/esm/components/credential-sign-in.js.map +1 -0
  105. package/dist/esm/components/credential-sign-up.js +1 -0
  106. package/dist/esm/components/credential-sign-up.js.map +1 -0
  107. package/dist/esm/components/forgot-password.js +1 -0
  108. package/dist/esm/components/forgot-password.js.map +1 -0
  109. package/dist/esm/components/form-warning.js +1 -0
  110. package/dist/esm/components/form-warning.js.map +1 -0
  111. package/dist/esm/components/magic-link-sign-in.js +1 -0
  112. package/dist/esm/components/magic-link-sign-in.js.map +1 -0
  113. package/dist/esm/components/message-card.js +1 -0
  114. package/dist/esm/components/message-card.js.map +1 -0
  115. package/dist/esm/components/oauth-button.js +1 -0
  116. package/dist/esm/components/oauth-button.js.map +1 -0
  117. package/dist/esm/components/oauth-group.js +1 -0
  118. package/dist/esm/components/oauth-group.js.map +1 -0
  119. package/dist/esm/components/password-field.js +1 -0
  120. package/dist/esm/components/password-field.js.map +1 -0
  121. package/dist/esm/components/password-reset-inner.js +1 -0
  122. package/dist/esm/components/password-reset-inner.js.map +1 -0
  123. package/dist/esm/components/redirect-message-card.js +9 -14
  124. package/dist/esm/components/redirect-message-card.js.map +1 -0
  125. package/dist/esm/components/separator-with-text.js +1 -0
  126. package/dist/esm/components/separator-with-text.js.map +1 -0
  127. package/dist/esm/components/user-avatar.js +1 -0
  128. package/dist/esm/components/user-avatar.js.map +1 -0
  129. package/dist/esm/components/user-button.js +1 -0
  130. package/dist/esm/components/user-button.js.map +1 -0
  131. package/dist/esm/components-core/avatar.js +1 -0
  132. package/dist/esm/components-core/avatar.js.map +1 -0
  133. package/dist/esm/components-core/button.js +1 -0
  134. package/dist/esm/components-core/button.js.map +1 -0
  135. package/dist/esm/components-core/card.js +1 -0
  136. package/dist/esm/components-core/card.js.map +1 -0
  137. package/dist/esm/components-core/collapsible.js +1 -0
  138. package/dist/esm/components-core/collapsible.js.map +1 -0
  139. package/dist/esm/components-core/container.js +1 -0
  140. package/dist/esm/components-core/container.js.map +1 -0
  141. package/dist/esm/components-core/dropdown.js +1 -0
  142. package/dist/esm/components-core/dropdown.js.map +1 -0
  143. package/dist/esm/components-core/index.js +1 -0
  144. package/dist/esm/components-core/index.js.map +1 -0
  145. package/dist/esm/components-core/input.js +1 -0
  146. package/dist/esm/components-core/input.js.map +1 -0
  147. package/dist/esm/components-core/label.js +1 -0
  148. package/dist/esm/components-core/label.js.map +1 -0
  149. package/dist/esm/components-core/link.js +1 -0
  150. package/dist/esm/components-core/link.js.map +1 -0
  151. package/dist/esm/components-core/loading-indicator.js +1 -0
  152. package/dist/esm/components-core/loading-indicator.js.map +1 -0
  153. package/dist/esm/components-core/popover.js +1 -0
  154. package/dist/esm/components-core/popover.js.map +1 -0
  155. package/dist/esm/components-core/separator.js +1 -0
  156. package/dist/esm/components-core/separator.js.map +1 -0
  157. package/dist/esm/components-core/skeleton.js +1 -0
  158. package/dist/esm/components-core/skeleton.js.map +1 -0
  159. package/dist/esm/components-core/tabs.js +4 -2
  160. package/dist/esm/components-core/tabs.js.map +1 -0
  161. package/dist/esm/components-core/text.js +1 -0
  162. package/dist/esm/components-core/text.js.map +1 -0
  163. package/dist/esm/components-core-joy/button.js +1 -0
  164. package/dist/esm/components-core-joy/button.js.map +1 -0
  165. package/dist/esm/components-core-joy/input.js +1 -0
  166. package/dist/esm/components-core-joy/input.js.map +1 -0
  167. package/dist/esm/components-core-joy/separator.js +1 -0
  168. package/dist/esm/components-core-joy/separator.js.map +1 -0
  169. package/dist/esm/components-core-joy/tabs.js +1 -0
  170. package/dist/esm/components-core-joy/tabs.js.map +1 -0
  171. package/dist/esm/components-core-joy/text.js +1 -0
  172. package/dist/esm/components-core-joy/text.js.map +1 -0
  173. package/dist/esm/components-page/account-settings.js +1 -0
  174. package/dist/esm/components-page/account-settings.js.map +1 -0
  175. package/dist/esm/components-page/auth-page.js +1 -0
  176. package/dist/esm/components-page/auth-page.js.map +1 -0
  177. package/dist/esm/components-page/email-verification.js +1 -0
  178. package/dist/esm/components-page/email-verification.js.map +1 -0
  179. package/dist/esm/components-page/forgot-password.js +1 -0
  180. package/dist/esm/components-page/forgot-password.js.map +1 -0
  181. package/dist/esm/components-page/magic-link-callback.js +3 -2
  182. package/dist/esm/components-page/magic-link-callback.js.map +1 -0
  183. package/dist/esm/components-page/oauth-callback.js +1 -0
  184. package/dist/esm/components-page/oauth-callback.js.map +1 -0
  185. package/dist/esm/components-page/password-reset.js +1 -0
  186. package/dist/esm/components-page/password-reset.js.map +1 -0
  187. package/dist/esm/components-page/sign-in.js +1 -0
  188. package/dist/esm/components-page/sign-in.js.map +1 -0
  189. package/dist/esm/components-page/sign-out.js +1 -0
  190. package/dist/esm/components-page/sign-out.js.map +1 -0
  191. package/dist/esm/components-page/sign-up.js +1 -0
  192. package/dist/esm/components-page/sign-up.js.map +1 -0
  193. package/dist/esm/components-page/stack-handler.js +1 -0
  194. package/dist/esm/components-page/stack-handler.js.map +1 -0
  195. package/dist/esm/index.js +1 -0
  196. package/dist/esm/index.js.map +1 -0
  197. package/dist/esm/joy.js +1 -0
  198. package/dist/esm/joy.js.map +1 -0
  199. package/dist/esm/lib/auth.js +1 -0
  200. package/dist/esm/lib/auth.js.map +1 -0
  201. package/dist/esm/lib/cookie.js +2 -1
  202. package/dist/esm/lib/cookie.js.map +1 -0
  203. package/dist/esm/lib/hooks.js +1 -0
  204. package/dist/esm/lib/hooks.js.map +1 -0
  205. package/dist/esm/lib/stack-app.js +287 -5
  206. package/dist/esm/lib/stack-app.js.map +1 -0
  207. package/dist/esm/providers/component-provider.js +1 -0
  208. package/dist/esm/providers/component-provider.js.map +1 -0
  209. package/dist/esm/providers/design-provider.js +1 -0
  210. package/dist/esm/providers/design-provider.js.map +1 -0
  211. package/dist/esm/providers/joy-provider.js +1 -0
  212. package/dist/esm/providers/joy-provider.js.map +1 -0
  213. package/dist/esm/providers/stack-provider-client.js +1 -0
  214. package/dist/esm/providers/stack-provider-client.js.map +1 -0
  215. package/dist/esm/providers/stack-provider.js +1 -0
  216. package/dist/esm/providers/stack-provider.js.map +1 -0
  217. package/dist/esm/providers/styled-components-registry.js +1 -0
  218. package/dist/esm/providers/styled-components-registry.js.map +1 -0
  219. package/dist/esm/providers/theme-provider.js +1 -0
  220. package/dist/esm/providers/theme-provider.js.map +1 -0
  221. package/dist/esm/utils/browser-script.js +1 -0
  222. package/dist/esm/utils/browser-script.js.map +1 -0
  223. package/dist/esm/utils/constants.js +1 -0
  224. package/dist/esm/utils/constants.js.map +1 -0
  225. package/dist/esm/utils/email.js +1 -0
  226. package/dist/esm/utils/email.js.map +1 -0
  227. package/dist/esm/utils/next.js +1 -0
  228. package/dist/esm/utils/next.js.map +1 -0
  229. package/dist/esm/utils/url.js +1 -0
  230. package/dist/esm/utils/url.js.map +1 -0
  231. package/dist/index.d.mts +2 -1
  232. package/dist/index.d.ts +2 -1
  233. package/dist/index.js +1 -0
  234. package/dist/index.js.map +1 -0
  235. package/dist/joy.js +1 -0
  236. package/dist/joy.js.map +1 -0
  237. package/dist/lib/auth.js +1 -0
  238. package/dist/lib/auth.js.map +1 -0
  239. package/dist/lib/cookie.js +5 -4
  240. package/dist/lib/cookie.js.map +1 -0
  241. package/dist/lib/hooks.d.mts +1 -0
  242. package/dist/lib/hooks.d.ts +1 -0
  243. package/dist/lib/hooks.js +1 -0
  244. package/dist/lib/hooks.js.map +1 -0
  245. package/dist/lib/stack-app.d.mts +78 -22
  246. package/dist/lib/stack-app.d.ts +78 -22
  247. package/dist/lib/stack-app.js +287 -5
  248. package/dist/lib/stack-app.js.map +1 -0
  249. package/dist/providers/component-provider.d.mts +6 -6
  250. package/dist/providers/component-provider.d.ts +6 -6
  251. package/dist/providers/component-provider.js +1 -0
  252. package/dist/providers/component-provider.js.map +1 -0
  253. package/dist/providers/design-provider.js +1 -0
  254. package/dist/providers/design-provider.js.map +1 -0
  255. package/dist/providers/joy-provider.js +1 -0
  256. package/dist/providers/joy-provider.js.map +1 -0
  257. package/dist/providers/stack-provider-client.d.mts +1 -0
  258. package/dist/providers/stack-provider-client.d.ts +1 -0
  259. package/dist/providers/stack-provider-client.js +1 -0
  260. package/dist/providers/stack-provider-client.js.map +1 -0
  261. package/dist/providers/stack-provider.d.mts +1 -0
  262. package/dist/providers/stack-provider.d.ts +1 -0
  263. package/dist/providers/stack-provider.js +1 -0
  264. package/dist/providers/stack-provider.js.map +1 -0
  265. package/dist/providers/styled-components-registry.js +1 -0
  266. package/dist/providers/styled-components-registry.js.map +1 -0
  267. package/dist/providers/theme-provider.js +1 -0
  268. package/dist/providers/theme-provider.js.map +1 -0
  269. package/dist/utils/browser-script.js +1 -0
  270. package/dist/utils/browser-script.js.map +1 -0
  271. package/dist/utils/constants.js +1 -0
  272. package/dist/utils/constants.js.map +1 -0
  273. package/dist/utils/email.js +1 -0
  274. package/dist/utils/email.js.map +1 -0
  275. package/dist/utils/next.js +1 -0
  276. package/dist/utils/next.js.map +1 -0
  277. package/dist/utils/url.js +1 -0
  278. package/dist/utils/url.js.map +1 -0
  279. package/package.json +3 -3
@@ -15,44 +15,42 @@ function RedirectMessageCard({
15
15
  const stackApp = useStackApp();
16
16
  const router = useRouter();
17
17
  let title;
18
- let primaryUrl;
19
- let secondaryUrl = null;
18
+ let primaryAction;
20
19
  let message = null;
21
20
  let primaryButton;
22
21
  let secondaryButton = null;
23
22
  switch (type) {
24
23
  case "signedIn": {
25
24
  title = "You are already signed in";
26
- primaryUrl = stackApp.urls.home;
27
- secondaryUrl = stackApp.urls.signOut;
25
+ primaryAction = () => stackApp.redirectToAfterSignOut();
28
26
  primaryButton = "Go to Home";
29
27
  secondaryButton = "Sign Out";
30
28
  break;
31
29
  }
32
30
  case "signedOut": {
33
31
  title = "You are not currently signed in.";
34
- primaryUrl = stackApp.urls.home;
32
+ primaryAction = () => stackApp.redirectToSignIn();
35
33
  primaryButton = "Go to Home";
36
34
  break;
37
35
  }
38
36
  case "emailSent": {
39
37
  title = "Email sent!";
40
38
  message = "Please check your inbox. Make sure to check your spam folder.";
41
- primaryUrl = stackApp.urls.home;
39
+ primaryAction = () => neverResolve();
42
40
  primaryButton = "Go to Home";
43
41
  break;
44
42
  }
45
43
  case "passwordReset": {
46
44
  title = "Password reset successfully!";
47
45
  message = "Your password has been reset. You can now sign in with your new password.";
48
- primaryUrl = stackApp.urls.signIn;
46
+ primaryAction = () => stackApp.redirectToSignIn();
49
47
  primaryButton = "Go to Sign In";
50
48
  break;
51
49
  }
52
50
  case "emailVerified": {
53
51
  title = "Email verified!";
54
52
  message = "Your have successfully verified your email.";
55
- primaryUrl = stackApp.urls.home;
53
+ primaryAction = () => stackApp.redirectToSignIn();
56
54
  primaryButton = "Go to Home";
57
55
  break;
58
56
  }
@@ -65,19 +63,16 @@ function RedirectMessageCard({
65
63
  {
66
64
  variant: "secondary",
67
65
  onClick: async () => {
68
- router.push(stackApp.urls.signOut.toString());
69
- await neverResolve();
66
+ await stackApp.redirectToSignOut();
70
67
  },
71
68
  children: secondaryButton
72
69
  }
73
70
  ),
74
- /* @__PURE__ */ jsx(Button, { onClick: async () => {
75
- router.push(primaryUrl.toString());
76
- await neverResolve();
77
- }, children: primaryButton })
71
+ /* @__PURE__ */ jsx(Button, { onClick: primaryAction, children: primaryButton })
78
72
  ] })
79
73
  ] });
80
74
  }
81
75
  export {
82
76
  RedirectMessageCard as default
83
77
  };
78
+ //# sourceMappingURL=redirect-message-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/redirect-message-card.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRouter } from \"next/navigation\";\nimport { useStackApp } from \"..\";\nimport MessageCard from \"./message-card\";\nimport { Text, Button } from \"../components-core\";\nimport { neverResolve, wait } from \"@stackframe/stack-shared/dist/utils/promises\";\n\nexport default function RedirectMessageCard({ \n type,\n fullPage=false,\n}: { \n type: 'signedIn' | 'signedOut' | 'emailSent' | 'passwordReset' | 'emailVerified',\n fullPage?: boolean, \n}) {\n const stackApp = useStackApp();\n const router = useRouter();\n\n let title: string;\n let primaryAction: () => Promise<void>;\n let message: string | null = null;\n let primaryButton: string;\n let secondaryButton: string | null = null;\n switch (type) {\n case 'signedIn': {\n title = \"You are already signed in\";\n primaryAction = () => stackApp.redirectToAfterSignOut();\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 = () => neverResolve();\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 }\n\n return (\n <MessageCard title={title} fullPage={fullPage}>\n {message && <Text>{message}</Text>}\n\n <div style={{ display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'center', gap: '16px', marginTop: 20 }}>\n {secondaryButton && (\n <Button\n variant=\"secondary\"\n onClick={async () => {\n await stackApp.redirectToSignOut();\n }}\n >\n {secondaryButton}\n </Button>\n )}\n \n <Button onClick={primaryAction}>\n {primaryButton}\n </Button>\n </div>\n </MessageCard>\n );\n}\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,OAAO,iBAAiB;AACxB,SAAS,MAAM,cAAc;AAC7B,SAAS,oBAA0B;AAwDjB,cAEZ,YAFY;AAtDH,SAAR,oBAAqC;AAAA,EAC1C;AAAA,EACA,WAAS;AACX,GAGG;AACD,QAAM,WAAW,YAAY;AAC7B,QAAM,SAAS,UAAU;AAEzB,MAAI;AACJ,MAAI;AACJ,MAAI,UAAyB;AAC7B,MAAI;AACJ,MAAI,kBAAiC;AACrC,UAAQ,MAAM;AAAA,IACZ,KAAK,YAAY;AACf,cAAQ;AACR,sBAAgB,MAAM,SAAS,uBAAuB;AACtD,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,aAAa;AACnC,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,EACF;AAEA,SACE,qBAAC,eAAY,OAAc,UACxB;AAAA,eAAW,oBAAC,QAAM,mBAAQ;AAAA,IAE3B,qBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,OAAO,YAAY,UAAU,gBAAgB,UAAU,KAAK,QAAQ,WAAW,GAAG,GAC7H;AAAA,yBACC;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,SAAS,YAAY;AACnB,kBAAM,SAAS,kBAAkB;AAAA,UACnC;AAAA,UAEC;AAAA;AAAA,MACH;AAAA,MAGF,oBAAC,UAAO,SAAS,eACd,yBACH;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
@@ -14,3 +14,4 @@ function SeparatorWithText({ text }) {
14
14
  export {
15
15
  SeparatorWithText as default
16
16
  };
17
+ //# sourceMappingURL=separator-with-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/separator-with-text.tsx"],"sourcesContent":["'use client';\n\nimport { Separator, Text } from \"../components-core\";\n\nexport default function SeparatorWithText({ text }: { text: string }) {\n return (\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', marginTop: '1.5rem', marginBottom: '1.5rem' }}>\n <div style={{ flex: 1 }}>\n <Separator />\n </div>\n <Text style={{ padding: '0 16px' }} variant=\"secondary\" size='sm'>{text}</Text>\n <div style={{ flex: 1 }}>\n <Separator />\n </div>\n </div>\n );\n}\n"],"mappings":";;;AAEA,SAAS,WAAW,YAAY;AAI5B,SAEI,KAFJ;AAFW,SAAR,kBAAmC,EAAE,KAAK,GAAqB;AACpE,SACE,qBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,gBAAgB,UAAU,WAAW,UAAU,cAAc,SAAS,GACzH;AAAA,wBAAC,SAAI,OAAO,EAAE,MAAM,EAAE,GACpB,8BAAC,aAAU,GACb;AAAA,IACA,oBAAC,QAAK,OAAO,EAAE,SAAS,SAAS,GAAG,SAAQ,aAAY,MAAK,MAAM,gBAAK;AAAA,IACxE,oBAAC,SAAI,OAAO,EAAE,MAAM,EAAE,GACpB,8BAAC,aAAU,GACb;AAAA,KACF;AAEJ;","names":[]}
@@ -12,3 +12,4 @@ function UserAvatar(props) {
12
12
  export {
13
13
  UserAvatar as default
14
14
  };
15
+ //# sourceMappingURL=user-avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/user-avatar.tsx"],"sourcesContent":["import { RxPerson } from \"react-icons/rx\";\nimport { Avatar, AvatarFallback, AvatarImage, Text } from \"..\";\nimport { User } from \"../lib/stack-app\";\n\nexport default function UserAvatar(props: { size?: number, user: User | null }) {\n const user = props.user;\n return (\n <Avatar style={{ height: props.size, width: props.size }}>\n <AvatarImage src={user?.profileImageUrl || ''} />\n <AvatarFallback>\n {user ? \n <Text style={{ fontWeight: 500 }}>\n {(user?.displayName || user?.primaryEmail)?.slice(0, 2).toUpperCase()}\n </Text> :\n <RxPerson size={props.size} />}\n </AvatarFallback>\n </Avatar>\n );\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,QAAQ,gBAAgB,aAAa,YAAY;AAMtD,SACE,KADF;AAHW,SAAR,WAA4B,OAA6C;AAC9E,QAAM,OAAO,MAAM;AACnB,SACE,qBAAC,UAAO,OAAO,EAAE,QAAQ,MAAM,MAAM,OAAO,MAAM,KAAK,GACrD;AAAA,wBAAC,eAAY,KAAK,MAAM,mBAAmB,IAAI;AAAA,IAC/C,oBAAC,kBACE,iBACC,oBAAC,QAAK,OAAO,EAAE,YAAY,IAAI,GAC3B,iBAAM,eAAe,MAAM,eAAe,MAAM,GAAG,CAAC,EAAE,YAAY,GACtE,IACA,oBAAC,YAAS,MAAM,MAAM,MAAM,GAChC;AAAA,KACF;AAEJ;","names":[]}
@@ -131,3 +131,4 @@ function UserButtonInnerInner(props) {
131
131
  export {
132
132
  UserButton as default
133
133
  };
134
+ //# sourceMappingURL=user-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/user-button.tsx"],"sourcesContent":["'use client';\nimport React, { Suspense } from \"react\";\nimport { useUser, Text, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, DropdownMenuLabel, DropdownMenuSeparator, useStackApp, useDesign, Avatar, AvatarImage, AvatarFallback, Button, Skeleton, CurrentUser } from \"..\";\nimport { RxPerson, RxEnter, RxHalf2, RxFilePlus, RxPencil2 } from \"react-icons/rx\";\nimport { runAsynchronously } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { SECONDARY_FONT_COLORS } from \"../utils/constants\";\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\";\n\nconst icons = typedFromEntries(typedEntries({\n RxPencil2,\n RxPerson,\n RxEnter,\n RxHalf2,\n RxFilePlus\n} as const).map(([key, value]) => {\n const styledComponent = styled(value)`\n color: ${SECONDARY_FONT_COLORS.light};\n\n html[data-theme='dark'] & {\n color: ${SECONDARY_FONT_COLORS.dark};\n }\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={() => runAsynchronously(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 };\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 variant=\"secondary\">Not signed in</Text>}\n </div>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n {user && <Item \n text=\"Account settings\" \n onClick={() => runAsynchronously(router.push(app.urls.accountSettings))}\n icon={icons.RxPerson}\n />}\n {!user && <Item\n text=\"Sign in\"\n onClick={() => runAsynchronously(router.push(app.urls.signIn))}\n icon={icons.RxPerson}\n />}\n {!user && <Item\n text=\"Sign up\"\n onClick={() => runAsynchronously(router.push(app.urls.signUp))}\n icon={icons.RxPencil2}\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.RxHalf2}\n />\n )}\n {user && <Item \n text=\"Sign out\" \n onClick={() => user.signOut()} \n icon={icons.RxEnter}\n />}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"mappings":";;;AACA,OAAO,SAAS,gBAAgB;AAChC,SAAS,SAAS,MAAM,cAAc,qBAAqB,kBAAkB,qBAAqB,mBAAmB,uBAAuB,aAAqE,gBAA6B;AAC9O,SAAS,UAAU,SAAS,SAAS,YAAY,iBAAiB;AAClE,SAAS,yBAAyB;AAClC,SAAS,6BAA6B;AACtC,OAAO,gBAAgB;AACvB,SAAS,iBAAiB;AAC1B,SAAS,cAAc,wBAAwB;AAC/C,OAAO,YAAY;AAwBf,SAKE,KALF;AAtBJ,IAAM,QAAQ,iBAAiB,aAAa;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAU,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AAChC,QAAM,kBAAkB,OAAO,KAAK;AAAA,aACzB,sBAAsB,KAAK;AAAA;AAAA;AAAA,eAGzB,sBAAsB,IAAI;AAAA;AAAA;AAGvC,SAAO;AAAA,IACL;AAAA,IACA,MAAM,cAAc,iBAAiB,EAAE,MAAM,GAAG,CAAC;AAAA,EACnD;AACF,CAAC,CAAC;AAEF,SAAS,KAAK,OAAqF;AACjG,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,MAAM,kBAAkB,MAAM,OAAO;AAAA,MAC9C,OAAO,EAAE,SAAS,QAAQ,KAAK,UAAU,YAAY,SAAS;AAAA,MAE7D;AAAA,cAAM;AAAA,QACP,oBAAC,QAAM,gBAAM,MAAK;AAAA;AAAA;AAAA,EACpB;AAEJ;AAYe,SAAR,WAA4B,OAAwB;AACzD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,UACE,oBAAC,YACC,8BAAC,wBAAsB,GAAG,OAAO,MAAM,MAAM,GAC/C;AAAA,MAGF,8BAAC,mBAAiB,GAAG,OAAO;AAAA;AAAA,EAC9B;AAEJ;AAEA,SAAS,gBAAgB,OAAwB;AAC/C,QAAM,OAAO,QAAQ;AACrB,SAAO,oBAAC,wBAAsB,GAAG,OAAO,MAAY;AACtD;AAGA,SAAS,qBAAqB,OAAuD;AACnF,QAAM,OAAO,MAAM;AACnB,QAAM,MAAM,YAAY;AACxB,QAAM,SAAS,UAAU;AAEzB,QAAM,aAAa;AAAA,IACjB,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAEA,SACE,qBAAC,gBACC;AAAA,wBAAC,uBACC,+BAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,UAAU,YAAY,SAAS,GACjE;AAAA,0BAAC,cAAW,MAAY;AAAA,MACvB,QAAQ,MAAM,gBAAgB,qBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,gBAAgB,SAAS,GAC9G;AAAA,4BAAC,QAAK,OAAO,YAAa,eAAK,aAAY;AAAA,QAC3C,oBAAC,QAAK,OAAO,EAAE,GAAG,YAAY,YAAY,IAAI,GAAG,SAAQ,aAAY,MAAK,MAAM,eAAK,cAAa;AAAA,SACpG;AAAA,OACF,GACF;AAAA,IACA,qBAAC,uBAAoB,OAAO,EAAE,QAAQ,KAAK,GACzC;AAAA,0BAAC,qBACC,+BAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,UAAU,YAAY,SAAS,GACjE;AAAA,4BAAC,cAAW,MAAY;AAAA,QACxB,qBAAC,SACE;AAAA,kBAAQ,oBAAC,QAAM,eAAK,aAAY;AAAA,UAChC,QAAQ,oBAAC,QAAK,SAAQ,aAAY,MAAK,MAAK,OAAO,EAAE,YAAY,IAAI,GAAI,eAAK,cAAa;AAAA,UAC3F,CAAC,QAAQ,oBAAC,QAAK,SAAQ,aAAY,2BAAa;AAAA,WACnD;AAAA,SACF,GACF;AAAA,MACA,oBAAC,yBAAsB;AAAA,MACtB,QAAQ;AAAA,QAAC;AAAA;AAAA,UACR,MAAK;AAAA,UACL,SAAS,MAAM,kBAAkB,OAAO,KAAK,IAAI,KAAK,eAAe,CAAC;AAAA,UACtE,MAAM,MAAM;AAAA;AAAA,MACd;AAAA,MACC,CAAC,QAAQ;AAAA,QAAC;AAAA;AAAA,UACT,MAAK;AAAA,UACL,SAAS,MAAM,kBAAkB,OAAO,KAAK,IAAI,KAAK,MAAM,CAAC;AAAA,UAC7D,MAAM,MAAM;AAAA;AAAA,MACd;AAAA,MACC,CAAC,QAAQ;AAAA,QAAC;AAAA;AAAA,UACT,MAAK;AAAA,UACL,SAAS,MAAM,kBAAkB,OAAO,KAAK,IAAI,KAAK,MAAM,CAAC;AAAA,UAC7D,MAAM,MAAM;AAAA;AAAA,MACd;AAAA,MACC,QAAQ,MAAM,cAAc,MAAM,WAAW,IAAI,CAAC,MAAM,UACvD,oBAAC,QAAkB,GAAG,QAAX,KAAiB,CAC7B;AAAA,MACA,MAAM,mBACL;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,MAAM;AAAA,UACf,MAAM,MAAM;AAAA;AAAA,MACd;AAAA,MAED,QAAQ;AAAA,QAAC;AAAA;AAAA,UACR,MAAK;AAAA,UACL,SAAS,MAAM,KAAK,QAAQ;AAAA,UAC5B,MAAM,MAAM;AAAA;AAAA,MACd;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
@@ -54,3 +54,4 @@ export {
54
54
  AvatarFallback,
55
55
  AvatarImage
56
56
  };
57
+ //# sourceMappingURL=avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/avatar.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\nimport styled from 'styled-components';\nimport { useDesign } from '..';\nimport { ColorPalette } from '../providers/design-provider';\n\nconst StyledAvatar = styled(AvatarPrimitive.Root)`\n position: relative;\n display: flex;\n height: 2rem;\n width: 2rem;\n flex-shrink: 0;\n overflow: hidden;\n border-radius: 9999px;\n`;\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <StyledAvatar ref={ref} className={className} {...props} />\n));\nAvatar.displayName = 'Avatar';\n\nconst StyledAvatarImage = styled(AvatarPrimitive.Image)`\n aspect-ratio: 1 / 1;\n height: 100%;\n width: 100%;\n`;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <StyledAvatarImage ref={ref} className={className} {...props} />\n));\nAvatarImage.displayName = 'AvatarImage';\n\nconst StyledAvatarFallback = styled(AvatarPrimitive.Fallback)<{\n $colors: ColorPalette,\n}>`\n display: flex;\n height: 100%;\n width: 100%;\n align-items: center;\n justify-content: center;\n border-radius: 9999px;\n \n background-color: ${({ $colors }) => $colors.light.secondaryColor};\n\n html[data-theme='dark'] & {\n background-color: ${({ $colors }) => $colors.dark.secondaryColor};\n }\n`;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => {\n const { colors } = useDesign();\n return <StyledAvatarFallback \n ref={ref} \n className={className} \n $colors={colors}\n {...props} \n />;\n});\nAvatarFallback.displayName = 'AvatarFallback';\n\nexport { Avatar, AvatarImage, AvatarFallback };\n"],"mappings":";AAAA,YAAY,WAAW;AACvB,YAAY,qBAAqB;AACjC,OAAO,YAAY;AACnB,SAAS,iBAAiB;AAiBxB;AAdF,IAAM,eAAe,OAAuB,oBAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUhD,IAAM,SAAe,iBAGnB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oBAAC,gBAAa,KAAU,WAAuB,GAAG,OAAO,CAC1D;AACD,OAAO,cAAc;AAErB,IAAM,oBAAoB,OAAuB,qBAAK;AAAA;AAAA;AAAA;AAAA;AAMtD,IAAM,cAAoB,iBAGxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oBAAC,qBAAkB,KAAU,WAAuB,GAAG,OAAO,CAC/D;AACD,YAAY,cAAc;AAE1B,IAAM,uBAAuB,OAAuB,wBAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAUtC,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,cAAc;AAAA;AAAA;AAAA,wBAG3C,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,cAAc;AAAA;AAAA;AAIpE,IAAM,iBAAuB,iBAG3B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,SAAO;AAAA,IAAC;AAAA;AAAA,MACN;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACR,GAAG;AAAA;AAAA,EACN;AACF,CAAC;AACD,eAAe,cAAc;","names":[]}
@@ -163,3 +163,4 @@ Button.displayName = "Button";
163
163
  export {
164
164
  Button
165
165
  };
166
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/button.tsx"],"sourcesContent":["'use client';\n\nimport React, { useMemo } from \"react\";\nimport { useDesign } from \"../providers/design-provider\";\nimport Color from 'color';\nimport styled from 'styled-components';\nimport { BORDER_RADIUS, FONT_FAMILY, FONT_SIZES } from \"../utils/constants\";\nimport LoadingIndicator from \"./loading-indicator\";\n\nfunction getColors({\n propsColor, \n colors, \n variant, \n}: {\n propsColor?: string, \n colors: { primaryColor: string, secondaryColor: string, backgroundColor: string },\n variant: 'primary' | 'secondary' | 'warning',\n}): { \n bgColor: string, \n hoverBgColor: string,\n activeBgColor: string,\n textColor: string,\n} {\n let bgColor;\n switch (variant) {\n case 'primary': {\n bgColor = colors.primaryColor;\n break;\n }\n case 'secondary': {\n bgColor = colors.secondaryColor;\n break;\n }\n case 'warning': {\n bgColor = '#ff4500';\n break;\n }\n }\n if (propsColor) {\n bgColor = propsColor;\n }\n\n const c = Color(bgColor);\n const pc = Color(colors.primaryColor);\n\n const changeColor = (value: number) => {\n return c.hsl(c.hue(), c.saturationl(), c.lightness() + value).toString();\n };\n \n const getAlpha = (alpha: number) => {\n return Color(\n pc.isDark() ? 'white' : 'black'\n ).alpha(alpha).toString();\n };\n\n if (c.alpha() === 0) {\n return {\n bgColor: 'transparent',\n hoverBgColor: getAlpha(0.1),\n activeBgColor: getAlpha(0.2),\n textColor: colors.primaryColor,\n };\n } else if (c.isLight()) {\n return {\n bgColor,\n hoverBgColor: changeColor(-10),\n activeBgColor: changeColor(-20),\n textColor: 'black',\n };\n } else {\n return {\n bgColor,\n hoverBgColor: changeColor(10),\n activeBgColor: changeColor(20),\n textColor: 'white',\n };\n }\n}\n\nexport type ButtonProps = {\n variant?: 'primary' | 'secondary' | 'warning',\n color?: string,\n size?: 'sm' | 'md' | 'lg',\n loading?: boolean,\n onClick?: (() => void) | (() => Promise<void>),\n} & Omit<React.HTMLProps<HTMLButtonElement>, 'size' | 'type' | 'onClick'>\n\ntype ButtonColors = {\n bgColor: string, \n hoverBgColor: string,\n activeBgColor: string,\n textColor: string,\n}\n\nconst StyledButton = styled.button<{\n $size: 'sm' | 'md' | 'lg',\n $loading: boolean,\n $colors: {\n dark: ButtonColors,\n light: ButtonColors,\n },\n}>`\n border: 0;\n border-radius: ${BORDER_RADIUS};\n padding: ${props => {\n switch (props.$size) {\n case 'sm': { return '0rem 0.75rem'; }\n case 'md': { return '0rem 1rem'; }\n case 'lg': { return '0rem 2rem'; }\n }\n }};\n height: ${props => {\n switch (props.$size) {\n case 'sm': { return '2rem'; }\n case 'md': { return '2.5rem'; }\n case 'lg': { return '3rem'; }\n }\n }};\n font-family: ${FONT_FAMILY};\n font-size: ${FONT_SIZES.md};\n opacity: ${props => props.disabled ? 0.5 : 1};\n transition: background-color 0.2s;\n cursor: pointer;\n position: relative;\n &:disabled {\n cursor: auto;\n opacity: 0.5;\n }\n\n background-color: ${props => props.$colors.light.bgColor};\n color: ${props => props.$colors.light.textColor};\n &:not([disabled]) {\n &:active,&:hover:active {\n background-color: ${props => props.$colors.light.activeBgColor};\n }\n &:hover {\n background-color: ${props => props.$colors.light.hoverBgColor};\n }\n }\n\n html[data-theme='dark'] & {\n background-color: ${props => props.$colors.dark.bgColor};\n color: ${props => props.$colors.dark.textColor};\n &:not([disabled]) {\n &:active,&:hover:active {\n background-color: ${props => props.$colors.dark.activeBgColor};\n }\n &:hover {\n background-color: ${props => props.$colors.dark.hoverBgColor};\n }\n }\n }\n`;\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({\n variant='primary',\n size='md',\n loading=false,\n ...props\n }, ref) => {\n const { colors } = useDesign();\n\n const { dark, light } = useMemo(() => {\n return {\n dark: getColors({ propsColor: props.color, colors: colors.dark, variant }),\n light: getColors({ propsColor: props.color, colors: colors.light, variant }),\n };\n }, [props.color, colors, variant]);\n\n return (\n <StyledButton\n ref={ref}\n $size={size}\n $loading={loading}\n $colors={{ dark, light }}\n {...props}\n >\n <div style={{ position: 'absolute', top: '50%', left: '50%', transform: 'translate(-50%, -50%)', visibility: loading ? 'visible' : 'hidden' }}>\n <LoadingIndicator color={{ light: light.textColor, dark: dark.textColor }}/>\n </div>\n <div style={{ visibility: loading ? 'hidden' : 'visible' }}>\n {props.children}\n </div>\n </StyledButton>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport {\n Button,\n};\n"],"mappings":"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","names":[]}
@@ -49,3 +49,4 @@ export {
49
49
  CardFooter,
50
50
  CardHeader
51
51
  };
52
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/card.tsx"],"sourcesContent":["'use client';\n\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { useDesign } from \"..\";\nimport { ColorPalette } from \"../providers/design-provider\";\n\nconst StyledCard = styled.div<{ \n $colors: ColorPalette,\n}>`\n border-radius: 0.5rem;\n box-shadow: 0 1px 2px 0 rgba(0,0,0,0.05);\n padding: 1.5rem;\n\n border: 1px solid ${props => props.$colors.light.neutralColor};\n background-color: ${props => props.$colors.light.backgroundColor};\n\n html[data-theme='dark'] & {\n border-color: ${props => props.$colors.dark.neutralColor};\n background-color: ${props => props.$colors.dark.backgroundColor};\n }\n`;\n\nconst StyledCardHeader = styled.div`\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n margin-bottom: 1.5rem;\n`;\n\nconst StyledCardContent = styled.div`\n`;\n\nconst StyledCardFooter = styled.div`\n display: flex;\n align-items: center;\n margin-top: 1.5rem;\n`;\n\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => {\n const { colors } = useDesign();\n return <StyledCard ref={ref} {...props} $colors={colors} />;\n});\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <StyledCardHeader ref={ref} {...props} />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <StyledCardContent ref={ref} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <StyledCardFooter ref={ref} {...props} />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport { \n Card, \n CardHeader, \n CardFooter, \n CardContent,\n};\n"],"mappings":";;;AAEA,YAAY,WAAW;AACvB,OAAO,YAAY;AACnB,SAAS,iBAAiB;AAqCjB;AAlCT,IAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,sBAOJ,WAAS,MAAM,QAAQ,MAAM,YAAY;AAAA,sBACzC,WAAS,MAAM,QAAQ,MAAM,eAAe;AAAA;AAAA;AAAA,oBAG9C,WAAS,MAAM,QAAQ,KAAK,YAAY;AAAA,wBACpC,WAAS,MAAM,QAAQ,KAAK,eAAe;AAAA;AAAA;AAInE,IAAM,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOhC,IAAM,oBAAoB,OAAO;AAAA;AAGjC,IAAM,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAMhC,IAAM,OAAa,iBAAiE,CAAC,OAAO,QAAQ;AAClG,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,SAAO,oBAAC,cAAW,KAAW,GAAG,OAAO,SAAS,QAAQ;AAC3D,CAAC;AACD,KAAK,cAAc;AAEnB,IAAM,aAAmB,iBAAiE,CAAC,OAAO,QAChG,oBAAC,oBAAiB,KAAW,GAAG,OAAO,CACxC;AACD,WAAW,cAAc;AAEzB,IAAM,cAAoB,iBAAiE,CAAC,OAAO,QACjG,oBAAC,qBAAkB,KAAW,GAAG,OAAO,CACzC;AACD,YAAY,cAAc;AAE1B,IAAM,aAAmB,iBAAiE,CAAC,OAAO,QAChG,oBAAC,oBAAiB,KAAW,GAAG,OAAO,CACxC;AACD,WAAW,cAAc;","names":[]}
@@ -11,3 +11,4 @@ export {
11
11
  CollapsibleContent2 as CollapsibleContent,
12
12
  CollapsibleTrigger2 as CollapsibleTrigger
13
13
  };
14
+ //# sourceMappingURL=collapsible.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/collapsible.tsx"],"sourcesContent":["\"use client\";\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nconst Collapsible = CollapsiblePrimitive.Root;\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n"],"mappings":";;;AAEA,YAAY,0BAA0B;AAEtC,IAAM,cAAmC;AACzC,IAAMA,sBAA0C;AAChD,IAAMC,sBAA0C;","names":["CollapsibleTrigger","CollapsibleContent"]}
@@ -33,3 +33,4 @@ function Container({
33
33
  export {
34
34
  Container
35
35
  };
36
+ //# sourceMappingURL=container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/container.tsx"],"sourcesContent":["'use client';\n\nimport { useDesign } from \"../providers/design-provider\";\nimport styled from 'styled-components';\n\ntype ContainerProps = {\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number,\n} & Omit<React.HTMLProps<HTMLDivElement>, 'size'>\n\nconst OuterContainer = styled.div`\n display: flex;\n justify-content: center;\n width: 100%;\n`;\n\nconst InnerContainer = styled.div<{ $breakpoint: number }>`\n width: 100%;\n @media (min-width: ${props => props.$breakpoint}px) {\n width: ${props => props.$breakpoint}px;\n }\n`;\n\nexport function Container({\n size='md',\n ...props\n} : ContainerProps) {\n const { breakpoints } = useDesign();\n return (\n <OuterContainer>\n <InnerContainer\n $breakpoint={typeof size === 'number' ? size : breakpoints[size]}\n {...props}\n >\n {props.children}\n </InnerContainer>\n </OuterContainer>\n );\n}"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B,OAAO,YAAY;AA0Bb;AApBN,IAAM,iBAAiB,OAAO;AAAA;AAAA;AAAA;AAAA;AAM9B,IAAM,iBAAiB,OAAO;AAAA;AAAA,uBAEP,WAAS,MAAM,WAAW;AAAA,aACpC,WAAS,MAAM,WAAW;AAAA;AAAA;AAIhC,SAAS,UAAU;AAAA,EACxB,OAAK;AAAA,EACL,GAAG;AACL,GAAoB;AAClB,QAAM,EAAE,YAAY,IAAI,UAAU;AAClC,SACE,oBAAC,kBACC;AAAA,IAAC;AAAA;AAAA,MACC,aAAa,OAAO,SAAS,WAAW,OAAO,YAAY,IAAI;AAAA,MAC9D,GAAG;AAAA,MAEH,gBAAM;AAAA;AAAA,EACT,GACF;AAEJ;","names":[]}
@@ -104,3 +104,4 @@ export {
104
104
  DropdownMenuSeparator,
105
105
  DropdownMenuTrigger
106
106
  };
107
+ //# sourceMappingURL=dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/dropdown.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styled from 'styled-components';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { useDesign } from '..';\nimport { SELECTED_BACKGROUND_COLORS } from '../utils/constants';\nimport { ColorPalette } from '../providers/design-provider';\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst StyledTrigger = styled(DropdownMenuPrimitive.Trigger)`\n all: unset;\n &:focus {\n outline: none;\n box-shadow: 0;\n }\n`;\n\nconst DropdownMenuTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <StyledTrigger ref={ref} {...props} />\n));\n\nconst StyledContent = styled(DropdownMenuPrimitive.Content)<{\n $colors: ColorPalette,\n}>`\n z-index: 50;\n min-width: 8rem;\n overflow: hidden;\n border-radius: 4px;\n padding: 0.25rem;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n\n border: 1px solid ${({ $colors }) => $colors.light.neutralColor};\n background: ${({ $colors }) => $colors.light.backgroundColor};\n\n html[data-theme='dark'] & {\n border-color: ${({ $colors }) => $colors.dark.neutralColor};\n background: ${({ $colors }) => $colors.dark.backgroundColor};\n }\n`;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => {\n const { colors } = useDesign();\n return (\n <DropdownMenuPrimitive.Portal>\n <StyledContent \n $colors={colors}\n sideOffset={sideOffset} \n ref={ref} \n {...props} \n />\n </DropdownMenuPrimitive.Portal>\n );\n});\nDropdownMenuContent.displayName = 'DropdownMenuContent';\n\nconst StyledItem = styled(DropdownMenuPrimitive.Item)<{ \n $inset?: boolean,\n}>`\n display: flex;\n cursor: default;\n align-items: center;\n border-radius: 4px;\n padding: 0.375rem 0.5rem;\n font-size: 0.875rem;\n outline: none;\n transition: color 0.2s ease;\n &:focus {\n background-color: var(--accent);\n color: var(--accent-foreground);\n }\n ${({ $inset }) => $inset && 'padding-left: 2rem;'}\n\n &:hover {\n background-color: ${SELECTED_BACKGROUND_COLORS.light};\n }\n\n html[data-theme='dark'] & {\n &:hover {\n background-color: ${SELECTED_BACKGROUND_COLORS.dark};\n }\n }\n`;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean,\n }\n>(({ className, inset, ...props }, ref) => {\n return <StyledItem ref={ref} {...props} $inset={inset} />;\n});\nDropdownMenuItem.displayName = 'DropdownMenuItem';\n\nconst StyledLabel = styled(DropdownMenuPrimitive.Label)<{ inset?: boolean }>`\n padding: 0.375rem 0.5rem;\n font-size: 0.875rem;\n ${({ inset }) => inset && 'padding-left: 2rem;'}\n`;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean,\n }\n>(({ className, inset, ...props }, ref) => (\n <StyledLabel ref={ref} {...props} inset={inset} />\n));\nDropdownMenuLabel.displayName = 'DropdownMenuLabel';\n\nconst StyledSeparator = styled(DropdownMenuPrimitive.Separator)<{\n $colors: ColorPalette,\n}>`\n margin: 0.25rem -0.25rem;\n height: 1px;\n background-color: ${({ $colors }) => $colors.light.neutralColor};\n\n html[data-theme='dark'] & {\n background-color: ${({ $colors }) => $colors.dark.neutralColor};\n }\n`;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => {\n const { colors } = useDesign();\n return <StyledSeparator ref={ref} {...props} $colors={colors} />;\n});\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator';\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n};\n"],"mappings":";;;AAEA,YAAY,WAAW;AACvB,OAAO,YAAY;AACnB,YAAY,2BAA2B;AACvC,SAAS,iBAAiB;AAC1B,SAAS,kCAAkC;AAiBzC;AAdF,IAAM,eAAqC;AAE3C,IAAM,gBAAgB,OAA6B,6BAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ1D,IAAM,sBAA4B,iBAGhC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oBAAC,iBAAc,KAAW,GAAG,OAAO,CACrC;AAED,IAAM,gBAAgB,OAA6B,6BAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAUpC,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,YAAY;AAAA,gBACjD,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,eAAe;AAAA;AAAA;AAAA,oBAG1C,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,YAAY;AAAA,kBAC5C,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,eAAe;AAAA;AAAA;AAI/D,IAAM,sBAA4B,iBAGhC,CAAC,EAAE,WAAW,aAAa,GAAG,GAAG,MAAM,GAAG,QAAQ;AAClD,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,SACE,oBAAuB,8BAAtB,EACC;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ,CAAC;AACD,oBAAoB,cAAc;AAElC,IAAM,aAAa,OAA6B,0BAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAehD,CAAC,EAAE,OAAO,MAAM,UAAU,qBAAqB;AAAA;AAAA;AAAA,wBAG3B,2BAA2B,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,0BAK9B,2BAA2B,IAAI;AAAA;AAAA;AAAA;AAKzD,IAAM,mBAAyB,iBAK7B,CAAC,EAAE,WAAW,OAAO,GAAG,MAAM,GAAG,QAAQ;AACzC,SAAO,oBAAC,cAAW,KAAW,GAAG,OAAO,QAAQ,OAAO;AACzD,CAAC;AACD,iBAAiB,cAAc;AAE/B,IAAM,cAAc,OAA6B,2BAAK;AAAA;AAAA;AAAA,IAGlD,CAAC,EAAE,MAAM,MAAM,SAAS,qBAAqB;AAAA;AAGjD,IAAM,oBAA0B,iBAK9B,CAAC,EAAE,WAAW,OAAO,GAAG,MAAM,GAAG,QACjC,oBAAC,eAAY,KAAW,GAAG,OAAO,OAAc,CACjD;AACD,kBAAkB,cAAc;AAEhC,IAAM,kBAAkB,OAA6B,+BAAS;AAAA;AAAA;AAAA,sBAKxC,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,YAAY;AAAA;AAAA;AAAA,wBAGzC,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,YAAY;AAAA;AAAA;AAIlE,IAAM,wBAA8B,iBAGlC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,SAAO,oBAAC,mBAAgB,KAAW,GAAG,OAAO,SAAS,QAAQ;AAChE,CAAC;AACD,sBAAsB,cAAc;","names":[]}
@@ -91,3 +91,4 @@ export {
91
91
  TabsTrigger,
92
92
  Text
93
93
  };
94
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/index.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { forwardRef } from 'react';\nimport { Components, useComponents } from '../providers/component-provider';\nimport type { Button as StaticButton } from './button';\nimport { useAsyncCallbackWithLoggedError } from '@stackframe/stack-shared/dist/hooks/use-async-callback';\n\nexport const Button = forwardRef<\n HTMLButtonElement, \n React.ComponentProps<typeof StaticButton>\n>((props, ref) => {\n const { Button } = useComponents();\n const [onClick, onClickLoading] = useAsyncCallbackWithLoggedError(async () => {\n return await props.onClick?.();\n }, [props.onClick]);\n\n return <Button\n {...props}\n onClick={props.onClick && onClick}\n loading={props.loading || onClickLoading}\n disabled={props.disabled || onClickLoading}\n ref={ref}\n />;\n});\n\nfunction createDynamicComponent<T extends keyof typeof Components>(\n component: T\n): React.ForwardRefExoticComponent<\n React.PropsWithoutRef<React.ComponentProps<typeof Components[T]>> & \n React.RefAttributes<React.ElementRef<typeof Components[T]>>\n> {\n return forwardRef<\n React.ElementRef<typeof Components[T]>,\n React.ComponentProps<typeof Components[T]>\n >((props, ref) => {\n const Component = useComponents()[component] as any;\n return <Component {...props} ref={ref} />;\n });\n};\n\nexport const Input = createDynamicComponent('Input');\nexport const Container = createDynamicComponent('Container');\nexport const Separator = createDynamicComponent('Separator');\nexport const Label = createDynamicComponent('Label');\nexport const Link = createDynamicComponent('Link');\nexport const Text = createDynamicComponent('Text');\nexport const Popover = createDynamicComponent('Popover');\nexport const PopoverTrigger = createDynamicComponent('PopoverTrigger');\nexport const PopoverContent = createDynamicComponent('PopoverContent');\nexport const DropdownMenu = createDynamicComponent('DropdownMenu');\nexport const DropdownMenuTrigger = createDynamicComponent('DropdownMenuTrigger');\nexport const DropdownMenuContent = createDynamicComponent('DropdownMenuContent');\nexport const DropdownMenuItem = createDynamicComponent('DropdownMenuItem');\nexport const DropdownMenuLabel = createDynamicComponent('DropdownMenuLabel');\nexport const DropdownMenuSeparator = createDynamicComponent('DropdownMenuSeparator');\nexport const Avatar = createDynamicComponent('Avatar');\nexport const AvatarFallback = createDynamicComponent('AvatarFallback');\nexport const AvatarImage = createDynamicComponent('AvatarImage');\nexport const Collapsible = createDynamicComponent('Collapsible');\nexport const CollapsibleTrigger = createDynamicComponent('CollapsibleTrigger');\nexport const CollapsibleContent = createDynamicComponent('CollapsibleContent');\nexport const Card = createDynamicComponent('Card');\nexport const CardHeader = createDynamicComponent('CardHeader');\nexport const CardContent = createDynamicComponent('CardContent');\nexport const CardFooter = createDynamicComponent('CardFooter');\nexport const Tabs = createDynamicComponent('Tabs');\nexport const TabsList = createDynamicComponent('TabsList');\nexport const TabsContent = createDynamicComponent('TabsContent');\nexport const TabsTrigger = createDynamicComponent('TabsTrigger');\nexport const Skeleton = createDynamicComponent('Skeleton');\n"],"mappings":";;;AAGA,SAAS,kBAAkB;AAC3B,SAAqB,qBAAqB;AAE1C,SAAS,uCAAuC;AAWvC;AATF,IAAM,SAAS,WAGpB,CAAC,OAAO,QAAQ;AAChB,QAAM,EAAE,QAAAA,QAAO,IAAI,cAAc;AACjC,QAAM,CAAC,SAAS,cAAc,IAAI,gCAAgC,YAAY;AAC5E,WAAO,MAAM,MAAM,UAAU;AAAA,EAC/B,GAAG,CAAC,MAAM,OAAO,CAAC;AAElB,SAAO;AAAA,IAACA;AAAA,IAAA;AAAA,MACL,GAAG;AAAA,MACJ,SAAS,MAAM,WAAW;AAAA,MAC1B,SAAS,MAAM,WAAW;AAAA,MAC1B,UAAU,MAAM,YAAY;AAAA,MAC5B;AAAA;AAAA,EACF;AACF,CAAC;AAED,SAAS,uBACP,WAIA;AACA,SAAO,WAGL,CAAC,OAAO,QAAQ;AAChB,UAAM,YAAY,cAAc,EAAE,SAAS;AAC3C,WAAO,oBAAC,aAAW,GAAG,OAAO,KAAU;AAAA,EACzC,CAAC;AACH;AAEO,IAAM,QAAQ,uBAAuB,OAAO;AAC5C,IAAM,YAAY,uBAAuB,WAAW;AACpD,IAAM,YAAY,uBAAuB,WAAW;AACpD,IAAM,QAAQ,uBAAuB,OAAO;AAC5C,IAAM,OAAO,uBAAuB,MAAM;AAC1C,IAAM,OAAO,uBAAuB,MAAM;AAC1C,IAAM,UAAU,uBAAuB,SAAS;AAChD,IAAM,iBAAiB,uBAAuB,gBAAgB;AAC9D,IAAM,iBAAiB,uBAAuB,gBAAgB;AAC9D,IAAM,eAAe,uBAAuB,cAAc;AAC1D,IAAM,sBAAsB,uBAAuB,qBAAqB;AACxE,IAAM,sBAAsB,uBAAuB,qBAAqB;AACxE,IAAM,mBAAmB,uBAAuB,kBAAkB;AAClE,IAAM,oBAAoB,uBAAuB,mBAAmB;AACpE,IAAM,wBAAwB,uBAAuB,uBAAuB;AAC5E,IAAM,SAAS,uBAAuB,QAAQ;AAC9C,IAAM,iBAAiB,uBAAuB,gBAAgB;AAC9D,IAAM,cAAc,uBAAuB,aAAa;AACxD,IAAM,cAAc,uBAAuB,aAAa;AACxD,IAAM,qBAAqB,uBAAuB,oBAAoB;AACtE,IAAM,qBAAqB,uBAAuB,oBAAoB;AACtE,IAAM,OAAO,uBAAuB,MAAM;AAC1C,IAAM,aAAa,uBAAuB,YAAY;AACtD,IAAM,cAAc,uBAAuB,aAAa;AACxD,IAAM,aAAa,uBAAuB,YAAY;AACtD,IAAM,OAAO,uBAAuB,MAAM;AAC1C,IAAM,WAAW,uBAAuB,UAAU;AAClD,IAAM,cAAc,uBAAuB,aAAa;AACxD,IAAM,cAAc,uBAAuB,aAAa;AACxD,IAAM,WAAW,uBAAuB,UAAU;","names":["Button"]}
@@ -78,3 +78,4 @@ Input.displayName = "Input";
78
78
  export {
79
79
  Input
80
80
  };
81
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/input.tsx"],"sourcesContent":["'use client';\n\nimport React from \"react\";\nimport { ColorPalette, useDesign } from \"../providers/design-provider\";\nimport styled from 'styled-components';\nimport { BORDER_RADIUS, FONT_FAMILY, FONT_SIZES, PRIMARY_FONT_COLORS, SECONDARY_FONT_COLORS } from \"../utils/constants\";\n\ntype InputProps = React.InputHTMLAttributes<HTMLInputElement> & Pick<React.HTMLProps<HTMLInputElement>, 'ref'>\n\n\nconst StyledInput = styled.input<{\n $colors: ColorPalette,\n}>`\n font-family: ${FONT_FAMILY};\n font-size: ${FONT_SIZES.md};\n height: 2.5rem;\n border-radius: ${BORDER_RADIUS};\n background-color: transparent;\n border: 1px solid;\n padding: 0rem 1rem;\n &:disabled {\n cursor: auto;\n opacity: 0.5;\n }\n &[type=file]::file-selector-button{\n border: none;\n background-color: transparent;\n height: 2.5rem;\n margin-right: 0.5rem;\n padding: 0;\n }\n\n border-color: ${props => props.$colors.light.neutralColor};\n color: ${PRIMARY_FONT_COLORS.light};\n &::placeholder {\n color: ${SECONDARY_FONT_COLORS.light};\n }\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px ${props => props.$colors.light.primaryColor};\n }\n &[type=file] {\n color: ${SECONDARY_FONT_COLORS.light};\n }\n &[type=file]::file-selector-button{\n color: ${PRIMARY_FONT_COLORS.light};\n }\n\n html[data-theme='dark'] & {\n border-color: ${props => props.$colors.dark.neutralColor};\n color: ${PRIMARY_FONT_COLORS.dark};\n &::placeholder {\n color: ${SECONDARY_FONT_COLORS.dark};\n }\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px ${props => props.$colors.dark.primaryColor};\n }\n &[type=file] {\n color: ${SECONDARY_FONT_COLORS.dark};\n }\n &[type=file]::file-selector-button{\n color: ${PRIMARY_FONT_COLORS.dark};\n }\n }\n`;\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (props, ref) => {\n const { colors } = useDesign();\n return (\n <StyledInput\n ref={ref}\n $colors={colors}\n {...props}\n />\n );\n }\n);\nInput.displayName = 'Input';\n\nexport { Input };"],"mappings":";;;AAEA,OAAO,WAAW;AAClB,SAAuB,iBAAiB;AACxC,OAAO,YAAY;AACnB,SAAS,eAAe,aAAa,YAAY,qBAAqB,6BAA6B;AAkE7F;AA7DN,IAAM,cAAc,OAAO;AAAA,iBAGV,WAAW;AAAA,eACb,WAAW,EAAE;AAAA;AAAA,mBAET,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAgBd,WAAS,MAAM,QAAQ,MAAM,YAAY;AAAA,WAChD,oBAAoB,KAAK;AAAA;AAAA,aAEvB,sBAAsB,KAAK;AAAA;AAAA;AAAA;AAAA,4BAIZ,WAAS,MAAM,QAAQ,MAAM,YAAY;AAAA;AAAA;AAAA,aAGxD,sBAAsB,KAAK;AAAA;AAAA;AAAA,aAG3B,oBAAoB,KAAK;AAAA;AAAA;AAAA;AAAA,oBAIlB,WAAS,MAAM,QAAQ,KAAK,YAAY;AAAA,aAC/C,oBAAoB,IAAI;AAAA;AAAA,eAEtB,sBAAsB,IAAI;AAAA;AAAA;AAAA;AAAA,8BAIX,WAAS,MAAM,QAAQ,KAAK,YAAY;AAAA;AAAA;AAAA,eAGvD,sBAAsB,IAAI;AAAA;AAAA;AAAA,eAG1B,oBAAoB,IAAI;AAAA;AAAA;AAAA;AAKvC,IAAM,QAAQ,MAAM;AAAA,EAClB,CAAC,OAAO,QAAQ;AACd,UAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,SAAS;AAAA,QACR,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AACA,MAAM,cAAc;","names":[]}
@@ -36,3 +36,4 @@ Label.displayName = LabelPrimitive.Root.displayName;
36
36
  export {
37
37
  Label
38
38
  };
39
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/label.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport styled from 'styled-components';\nimport { FONT_FAMILY, FONT_SIZES, SECONDARY_FONT_COLORS } from \"../utils/constants\";\nimport { useDesign } from \"../providers/design-provider\";\n\nconst Primitive = styled(LabelPrimitive.Root)`\n font-size: ${FONT_SIZES.sm};\n line-height: 1;\n font-weight: 500;\n font-family: ${FONT_FAMILY};\n display: block;\n margin-bottom: 0.5rem;\n\n color: ${SECONDARY_FONT_COLORS.light};\n\n html[data-theme='dark'] & {\n color: ${SECONDARY_FONT_COLORS.dark};\n }\n`;\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(\n (props, ref) => {\n return <Primitive\n ref={ref}\n {...props}\n />;\n }\n);\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n"],"mappings":";;;AAEA,OAAO,WAAW;AAClB,YAAY,oBAAoB;AAChC,OAAO,YAAY;AACnB,SAAS,aAAa,YAAY,6BAA6B;AAuBpD;AApBX,IAAM,YAAY,OAAsB,mBAAI;AAAA,eAC7B,WAAW,EAAE;AAAA;AAAA;AAAA,iBAGX,WAAW;AAAA;AAAA;AAAA;AAAA,WAIjB,sBAAsB,KAAK;AAAA;AAAA;AAAA,aAGzB,sBAAsB,IAAI;AAAA;AAAA;AAIvC,IAAM,QAAQ,MAAM;AAAA,EAIlB,CAAC,OAAO,QAAQ;AACd,WAAO;AAAA,MAAC;AAAA;AAAA,QACN;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EACF;AACF;AACA,MAAM,cAA6B,oBAAK;","names":[]}
@@ -36,3 +36,4 @@ var Link = React.forwardRef(({ size = "md", href, ...props }, ref) => {
36
36
  export {
37
37
  Link
38
38
  };
39
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/link.tsx"],"sourcesContent":["'use client';\n\nimport NextLink from \"next/link\";\nimport { FONT_FAMILY, FONT_SIZES, LINE_HEIGHTS, LINK_COLORS } from \"../utils/constants\";\nimport { Url } from \"url\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\ntype LinkProps = {\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl',\n href: Url | string,\n} & Omit<React.HTMLProps<HTMLLinkElement>, 'size' | 'href'>\n\nconst StyledNextLink = styled(NextLink)<{ \n $size: 'xs' | 'sm' | 'md' | 'lg' | 'xl',\n}>`\n font-size: ${props => FONT_SIZES[props.$size]};\n line-height: ${props => LINE_HEIGHTS[props.$size]};\n font-weight: 500;\n font-family: ${FONT_FAMILY};\n text-decoration: underline;\n margin: 0;\n padding: 0;\n\n color: ${LINK_COLORS.light};\n\n html[data-theme='dark'] & {\n color: ${LINK_COLORS.dark};\n }\n`;\n\nexport const Link = React.forwardRef<\n React.ElementRef<typeof StyledNextLink>,\n LinkProps\n>(({ size='md', href, ...props }, ref) => {\n return (\n <StyledNextLink\n $size={size}\n href={href}\n style={props.style}\n children={props.children}\n />\n );\n});"],"mappings":";;;AAEA,OAAO,cAAc;AACrB,SAAS,aAAa,YAAY,cAAc,mBAAmB;AAEnE,OAAO,WAAW;AAClB,OAAO,YAAY;AA8Bf;AAvBJ,IAAM,iBAAiB,OAAO,QAAQ;AAAA,eAGvB,WAAS,WAAW,MAAM,KAAK,CAAC;AAAA,iBAC9B,WAAS,aAAa,MAAM,KAAK,CAAC;AAAA;AAAA,iBAElC,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,WAKjB,YAAY,KAAK;AAAA;AAAA;AAAA,aAGf,YAAY,IAAI;AAAA;AAAA;AAItB,IAAM,OAAO,MAAM,WAGxB,CAAC,EAAE,OAAK,MAAM,MAAM,GAAG,MAAM,GAAG,QAAQ;AACxC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP;AAAA,MACA,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AAAA;AAAA,EAClB;AAEJ,CAAC;","names":[]}
@@ -25,3 +25,4 @@ var loading_indicator_default = LoadingIndicator;
25
25
  export {
26
26
  loading_indicator_default as default
27
27
  };
28
+ //# sourceMappingURL=loading-indicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/loading-indicator.tsx"],"sourcesContent":["import styled, { keyframes } from 'styled-components';\n\nconst l7 = keyframes`\n 33% { background-size: calc(100%/3) 0%, calc(100%/3) 100%, calc(100%/3) 100%; }\n 50% { background-size: calc(100%/3) 100%, calc(100%/3) 0%, calc(100%/3) 100%; }\n 66% { background-size: calc(100%/3) 100%, calc(100%/3) 100%, calc(100%/3) 0%; }\n`;\n\nconst LoadingIndicator = styled.div<{ color: { light: string, dark: string }, size?: number }>`\n width: ${props => props.size || 36}px;\n aspect-ratio: 4;\n background: \n var(--_g) 0% 50%, \n var(--_g) 50% 50%, \n var(--_g) 100% 50%;\n background-size: calc(100%/3) 100%;\n animation: ${l7} 1s infinite linear;\n\n --_g: no-repeat radial-gradient(circle closest-side, ${props => props.color.light} 90%, #0000);\n\n html[data-theme='dark'] & {\n --_g: no-repeat radial-gradient(circle closest-side, ${props => props.color.dark} 90%, #0000);\n }\n`;\nexport default LoadingIndicator;"],"mappings":";AAAA,OAAO,UAAU,iBAAiB;AAElC,IAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAMX,IAAM,mBAAmB,OAAO;AAAA,WACrB,WAAS,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAOrB,EAAE;AAAA;AAAA,yDAEwC,WAAS,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA,2DAGxB,WAAS,MAAM,MAAM,IAAI;AAAA;AAAA;AAGpF,IAAO,4BAAQ;","names":[]}
@@ -41,3 +41,4 @@ export {
41
41
  PopoverContent,
42
42
  PopoverTrigger
43
43
  };
44
+ //# sourceMappingURL=popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/popover.tsx"],"sourcesContent":["import React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport styled, { css } from 'styled-components';\nimport { useDesign } from '..';\nimport { ColorPalette } from '../providers/design-provider';\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst StyledContent = styled(PopoverPrimitive.Content)<{\n $colors: ColorPalette,\n}>`\n z-index: 50;\n width: 18rem;\n border-radius: 0.375rem;\n padding: 1rem;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);\n outline: none;\n\n border: 1px solid ${({ $colors }) => $colors.light.neutralColor};\n background-color: ${({ $colors }) => $colors.light.backgroundColor};\n\n html[data-theme='dark'] & {\n border-color: ${({ $colors }) => $colors.dark.neutralColor};\n background-color: ${({ $colors }) => $colors.dark.backgroundColor};\n }\n`;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ align = 'center', sideOffset = 4, ...props }, ref) => {\n const { colors } = useDesign();\n return (\n <PopoverPrimitive.Portal>\n <StyledContent\n $colors={colors}\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n});\nPopoverContent.displayName = 'PopoverContent';\n\nexport { Popover, PopoverTrigger, PopoverContent };\n"],"mappings":";AAAA,OAAO,WAAW;AAClB,YAAY,sBAAsB;AAClC,OAAO,YAAqB;AAC5B,SAAS,iBAAiB;AAiCpB;AA9BN,IAAM,UAA2B;AAEjC,IAAM,iBAAkC;AAExC,IAAM,gBAAgB,OAAwB,wBAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAU/B,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,YAAY;AAAA,sBAC3C,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,eAAe;AAAA;AAAA;AAAA,oBAGhD,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,YAAY;AAAA,wBACtC,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,eAAe;AAAA;AAAA;AAIrE,IAAM,iBAAiB,MAAM,WAG3B,CAAC,EAAE,QAAQ,UAAU,aAAa,GAAG,GAAG,MAAM,GAAG,QAAQ;AACzD,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,SACE,oBAAkB,yBAAjB,EACC;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ,CAAC;AACD,eAAe,cAAc;","names":[]}
@@ -34,3 +34,4 @@ Separator.displayName = "Separator";
34
34
  export {
35
35
  Separator
36
36
  };
37
+ //# sourceMappingURL=separator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/separator.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\nimport styled from 'styled-components';\nimport { useDesign } from '..';\nimport { ColorPalette } from '../providers/design-provider';\n\nconst StyledSeparator = styled(SeparatorPrimitive.Root)<{ \n $orientation: string,\n $color: ColorPalette,\n}>`\n flex-shrink: 0;\n ${(props) =>\n props.$orientation === 'horizontal'\n ? 'height: 1px; width: 100%;'\n : 'height: 100%; width: 1px;'}\n \n background-color: ${props => props.$color.light.neutralColor};\n\n html[data-theme='dark'] & {\n background-color: ${props => props.$color.dark.neutralColor};\n }\n`;\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ orientation = 'horizontal', decorative = true, ...props }, ref) => {\n const { colors } = useDesign();\n\n return <StyledSeparator\n ref={ref}\n decorative={decorative}\n $orientation={orientation}\n $color={colors}\n {...props}\n />;\n});\n\nSeparator.displayName = 'Separator';\n\nexport { Separator };\n"],"mappings":";;;AAEA,OAAO,WAAW;AAClB,YAAY,wBAAwB;AACpC,OAAO,YAAY;AACnB,SAAS,iBAAiB;AA0BjB;AAvBT,IAAM,kBAAkB,OAA0B,uBAAI;AAAA;AAAA,IAKlD,CAAC,UACD,MAAM,iBAAiB,eACnB,8BACA,2BAA2B;AAAA;AAAA,sBAEb,WAAS,MAAM,OAAO,MAAM,YAAY;AAAA;AAAA;AAAA,wBAGtC,WAAS,MAAM,OAAO,KAAK,YAAY;AAAA;AAAA;AAI/D,IAAM,YAAY,MAAM,WAGtB,CAAC,EAAE,cAAc,cAAc,aAAa,MAAM,GAAG,MAAM,GAAG,QAAQ;AACtE,QAAM,EAAE,OAAO,IAAI,UAAU;AAE7B,SAAO;AAAA,IAAC;AAAA;AAAA,MACN;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd,QAAQ;AAAA,MACP,GAAG;AAAA;AAAA,EACN;AACF,CAAC;AAED,UAAU,cAAc;","names":[]}
@@ -50,3 +50,4 @@ Skeleton.displayName = "Skeleton";
50
50
  export {
51
51
  Skeleton
52
52
  };
53
+ //# sourceMappingURL=skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/skeleton.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport styled, { keyframes } from 'styled-components';\n\nconst getFilterString = (brightness1: number, brightness2: number) => {\n return `\n 0% {\n filter: grayscale(1) contrast(0) brightness(0) invert(1) brightness(${brightness1});\n }\n 100% {\n filter: grayscale(1) contrast(0) brightness(0) invert(1) brightness(${brightness2});\n }\n `;\n};\n\nconst animationLight = keyframes`${getFilterString(0.8, 0.9)}`;\nconst animationDark = keyframes`${getFilterString(0.2, 0.1)}`;\n\nconst Primitive = styled(\"span\")`\n &[data-stack-state=\"activated\"], &[data-stack-state=\"activated\"] * {\n pointer-events: none !important;\n -webkit-user-select: none !important;\n -moz-user-select: none !important;\n user-select: none !important;\n cursor: default !important;\n }\n\n &[data-stack-state=\"activated\"] {\n animation: ${animationLight} 1s infinite alternate-reverse !important;\n }\n\n html[data-theme='dark'] &[data-stack-state=\"activated\"] {\n animation: ${animationDark} 1s infinite alternate-reverse !important;\n }\n`;\n\nconst Skeleton = React.forwardRef<\n React.ElementRef<\"span\">,\n React.ComponentPropsWithoutRef<\"span\"> & { deactivated?: boolean }\n>(\n (props, ref) => {\n return <Primitive\n ref={ref}\n data-stack-state={props.deactivated ? \"deactivated\" : \"activated\"}\n {...props}\n />;\n }\n);\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton };\n"],"mappings":";;;AAEA,OAAO,WAAW;AAClB,OAAO,UAAU,iBAAiB;AAuCvB;AArCX,IAAM,kBAAkB,CAAC,aAAqB,gBAAwB;AACpE,SAAO;AAAA;AAAA,4EAEmE,WAAW;AAAA;AAAA;AAAA,4EAGX,WAAW;AAAA;AAAA;AAGvF;AAEA,IAAM,iBAAiB,YAAY,gBAAgB,KAAK,GAAG,CAAC;AAC5D,IAAM,gBAAgB,YAAY,gBAAgB,KAAK,GAAG,CAAC;AAE3D,IAAM,YAAY,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAUd,cAAc;AAAA;AAAA;AAAA;AAAA,iBAId,aAAa;AAAA;AAAA;AAI9B,IAAM,WAAW,MAAM;AAAA,EAIrB,CAAC,OAAO,QAAQ;AACd,WAAO;AAAA,MAAC;AAAA;AAAA,QACN;AAAA,QACA,oBAAkB,MAAM,cAAc,gBAAgB;AAAA,QACrD,GAAG;AAAA;AAAA,IACN;AAAA,EACF;AACF;AACA,SAAS,cAAc;","names":[]}
@@ -28,7 +28,8 @@ var TabsList = React.forwardRef((props, ref) => {
28
28
  }
29
29
  );
30
30
  });
31
- var StayledTabsTrigger = styled(TabsPrimitive.Trigger)`
31
+ var StyledTabsTrigger = styled(TabsPrimitive.Trigger)`
32
+ all: unset;
32
33
  display: flex;
33
34
  flex-grow: 1;
34
35
  align-items: center;
@@ -57,7 +58,7 @@ var StayledTabsTrigger = styled(TabsPrimitive.Trigger)`
57
58
  var TabsTrigger = React.forwardRef((props, ref) => {
58
59
  const { colors } = useDesign();
59
60
  return /* @__PURE__ */ jsx(
60
- StayledTabsTrigger,
61
+ StyledTabsTrigger,
61
62
  {
62
63
  $colors: colors,
63
64
  ...props,
@@ -77,3 +78,4 @@ export {
77
78
  TabsList,
78
79
  TabsTrigger
79
80
  };
81
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/tabs.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport styled from 'styled-components';\nimport { useDesign } from '..';\nimport { ColorPalette } from '../providers/design-provider';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst StyledTabsList = styled(TabsPrimitive.List)`\n display: flex;\n height: 2.5rem\n align-items: center;\n justify-content: center;\n border-radius: 0.375rem;\n padding: 0.25rem;\n\n background-color: rgb(244, 244, 245);\n\n html[data-theme='dark'] & {\n background-color: rgb(39, 39, 42);\n }\n`;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentProps<typeof TabsPrimitive.List>\n>((props, ref) => {\n return <StyledTabsList\n {...props} \n ref={ref} \n />;\n});\n\nconst StyledTabsTrigger = styled(TabsPrimitive.Trigger)<{\n $colors: ColorPalette,\n}>`\n all: unset;\n display: flex;\n flex-grow: 1;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n border-radius: 0.25rem;\n padding: 0.25rem 0.5rem;\n transition: all;\n outline: none;\n\n &:disabled {\n pointer-events: none;\n opacity: 0.5;\n }\n\n &[data-state='active'] {\n background-color: ${({ $colors }) => $colors.light.backgroundColor};\n }\n\n html[data-theme='dark'] & {\n &[data-state='active'] {\n background-color: ${({ $colors }) => $colors.dark.backgroundColor};\n }\n }\n`;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentProps<typeof TabsPrimitive.Trigger>\n>((props, ref) => {\n const { colors } = useDesign();\n return <StyledTabsTrigger \n $colors={colors}\n {...props} \n ref={ref} \n />;\n});\n\nconst StyledTabsContent = styled(TabsPrimitive.Content)`\n margin-top: 1.5rem;\n`;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentProps<typeof TabsPrimitive.Content>\n>((props, ref) => {\n return <StyledTabsContent {...props} ref={ref} />;\n});\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"],"mappings":";AAAA,YAAY,WAAW;AACvB,YAAY,mBAAmB;AAC/B,OAAO,YAAY;AACnB,SAAS,iBAAiB;AAwBjB;AArBT,IAAM,OAAqB;AAE3B,IAAM,iBAAiB,OAAqB,kBAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAehD,IAAM,WAAiB,iBAGrB,CAAC,OAAO,QAAQ;AAChB,SAAO;AAAA,IAAC;AAAA;AAAA,MACL,GAAG;AAAA,MACJ;AAAA;AAAA,EACF;AACF,CAAC;AAED,IAAM,oBAAoB,OAAqB,qBAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAoB9B,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,0BAK5C,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,eAAe;AAAA;AAAA;AAAA;AAKvE,IAAM,cAAoB,iBAGxB,CAAC,OAAO,QAAQ;AAChB,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,SAAO;AAAA,IAAC;AAAA;AAAA,MACN,SAAS;AAAA,MACR,GAAG;AAAA,MACJ;AAAA;AAAA,EACF;AACF,CAAC;AAED,IAAM,oBAAoB,OAAqB,qBAAO;AAAA;AAAA;AAItD,IAAM,cAAoB,iBAGxB,CAAC,OAAO,QAAQ;AAChB,SAAO,oBAAC,qBAAmB,GAAG,OAAO,KAAU;AACjD,CAAC;","names":[]}
@@ -61,3 +61,4 @@ Text.displayName = "Text";
61
61
  export {
62
62
  Text
63
63
  };
64
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core/text.tsx"],"sourcesContent":["'use client';\n\nimport React from \"react\";\nimport { createElement } from \"react\";\nimport { FONT_FAMILY, FONT_SIZES, LINE_HEIGHTS, PRIMARY_FONT_COLORS, SECONDARY_FONT_COLORS } from \"../utils/constants\";\nimport styled from \"styled-components\";\nimport { typedFromEntries } from \"@stackframe/stack-shared/dist/utils/objects\";\n\nconst components = ['p', 'h6', 'h5', 'h4', 'h3', 'h2', 'h1'] as const;\nconst StyledComponents = typedFromEntries(components.map((component) => {\n return [\n component,\n styled(component)<{\n $size: 'xs' | 'sm' | 'md' | 'lg' | 'xl',\n $textColor: { light: string, dark: string },\n }>`\n font-family: ${FONT_FAMILY};\n font-size: ${props => FONT_SIZES[props.$size]};\n line-height: ${props => LINE_HEIGHTS[props.$size]};\n margin: 0;\n padding: 0;\n color: ${props => props.$textColor.light};\n \n html[data-theme='dark'] & {\n color: ${props => props.$textColor.dark};\n }\n `\n ] as const;\n}));\n\n\ntype TextProps = {\n variant?: 'primary' | 'secondary' | 'warning' | 'success',\n as?: 'p' | 'h6'| 'h5' | 'h4' | 'h3' | 'h2' | 'h1',\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl',\n} & Omit<React.HTMLProps<HTMLParagraphElement>, 'size'>\n\nconst Text = React.forwardRef<HTMLParagraphElement, TextProps>(({\n variant='primary',\n size='md',\n as='p',\n ...props\n} : TextProps, ref) => {\n let textColor: { light: string, dark: string };\n switch (variant) {\n case 'primary': {\n textColor = PRIMARY_FONT_COLORS;\n break;\n }\n case 'secondary': {\n textColor = SECONDARY_FONT_COLORS;\n break;\n }\n case 'warning': {\n textColor = { light: '#b33b1d', dark: '#ff7b5c' };\n break;\n }\n case 'success': {\n textColor = { light: '#3da63d', dark: '#3da63d' };\n break;\n }\n }\n return createElement(StyledComponents[as], {\n $size: size,\n $textColor: textColor,\n ...props,\n ref,\n });\n});\n\nText.displayName = 'Text';\n\nexport { Text };"],"mappings":";;;AAEA,OAAO,WAAW;AAClB,SAAS,qBAAqB;AAC9B,SAAS,aAAa,YAAY,cAAc,qBAAqB,6BAA6B;AAClG,OAAO,YAAY;AACnB,SAAS,wBAAwB;AAEjC,IAAM,aAAa,CAAC,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAC3D,IAAM,mBAAmB,iBAAiB,WAAW,IAAI,CAAC,cAAc;AACtE,SAAO;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AAAA,qBAIC,WAAW;AAAA,mBACb,WAAS,WAAW,MAAM,KAAK,CAAC;AAAA,qBAC9B,WAAS,aAAa,MAAM,KAAK,CAAC;AAAA;AAAA;AAAA,eAGxC,WAAS,MAAM,WAAW,KAAK;AAAA;AAAA;AAAA,iBAG7B,WAAS,MAAM,WAAW,IAAI;AAAA;AAAA;AAAA,EAG7C;AACF,CAAC,CAAC;AASF,IAAM,OAAO,MAAM,WAA4C,CAAC;AAAA,EAC9D,UAAQ;AAAA,EACR,OAAK;AAAA,EACL,KAAG;AAAA,EACH,GAAG;AACL,GAAe,QAAQ;AACrB,MAAI;AACJ,UAAQ,SAAS;AAAA,IACf,KAAK,WAAW;AACd,kBAAY;AACZ;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,kBAAY;AACZ;AAAA,IACF;AAAA,IACA,KAAK,WAAW;AACd,kBAAY,EAAE,OAAO,WAAW,MAAM,UAAU;AAChD;AAAA,IACF;AAAA,IACA,KAAK,WAAW;AACd,kBAAY,EAAE,OAAO,WAAW,MAAM,UAAU;AAChD;AAAA,IACF;AAAA,EACF;AACA,SAAO,cAAc,iBAAiB,EAAE,GAAG;AAAA,IACzC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACH,CAAC;AAED,KAAK,cAAc;","names":[]}
@@ -51,3 +51,4 @@ var Button = React.forwardRef(({
51
51
  export {
52
52
  Button
53
53
  };
54
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core-joy/button.tsx"],"sourcesContent":["'use client';\n\nimport React from \"react\";\nimport { Button as DefaultButton } from \"../components-core\";\nimport { Button as JoyButton } from '@mui/joy';\nimport Color from \"color\";\n\nexport const Button = React.forwardRef<\n React.ElementRef<typeof DefaultButton>,\n React.ComponentProps<typeof DefaultButton>\n>(({\n variant = \"primary\",\n color,\n size = \"md\",\n loading = false,\n ...props\n}, ref) => {\n const muiVariant: \"primary\" | \"neutral\" | \"danger\" = ({\n primary: \"primary\",\n secondary: \"neutral\",\n warning: \"danger\",\n } as const)[variant] || \"primary\";\n\n const { children, action, ref: _, ...validProps } = props;\n const c = Color(color);\n const changeColor = (value: number) => {\n return c.hsl(\n c.hue(), \n c.saturationl(), \n c.lightness() + (c.isDark() ? value : -value)\n ).toString();\n };\n\n return <JoyButton\n color={muiVariant}\n sx={color ? {\n backgroundColor: color,\n color: c.isDark() ? 'white' : 'black',\n '&:hover': {\n backgroundColor: changeColor(10)\n },\n '&:active': {\n backgroundColor: changeColor(20)\n },\n } : {}}\n size={size}\n loading={loading}\n {...validProps}\n >\n {children}\n </JoyButton>;\n});\n"],"mappings":";;;AAEA,OAAO,WAAW;AAElB,SAAS,UAAU,iBAAiB;AACpC,OAAO,WAAW;AA4BT;AA1BF,IAAM,SAAS,MAAM,WAG1B,CAAC;AAAA,EACD,UAAU;AAAA,EACV;AAAA,EACA,OAAO;AAAA,EACP,UAAU;AAAA,EACV,GAAG;AACL,GAAG,QAAQ;AACT,QAAM,aAAgD;AAAA,IACpD,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,EACX,EAAY,OAAO,KAAK;AAExB,QAAM,EAAE,UAAU,QAAQ,KAAK,GAAG,GAAG,WAAW,IAAI;AACpD,QAAM,IAAI,MAAM,KAAK;AACrB,QAAM,cAAc,CAAC,UAAkB;AACrC,WAAO,EAAE;AAAA,MACP,EAAE,IAAI;AAAA,MACN,EAAE,YAAY;AAAA,MACd,EAAE,UAAU,KAAK,EAAE,OAAO,IAAI,QAAQ,CAAC;AAAA,IACzC,EAAE,SAAS;AAAA,EACb;AAEA,SAAO;AAAA,IAAC;AAAA;AAAA,MACN,OAAO;AAAA,MACP,IAAI,QAAQ;AAAA,QACV,iBAAiB;AAAA,QACjB,OAAO,EAAE,OAAO,IAAI,UAAU;AAAA,QAC9B,WAAW;AAAA,UACT,iBAAiB,YAAY,EAAE;AAAA,QACjC;AAAA,QACA,YAAY;AAAA,UACV,iBAAiB,YAAY,EAAE;AAAA,QACjC;AAAA,MACF,IAAI,CAAC;AAAA,MACL;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AACF,CAAC;","names":[]}
@@ -16,3 +16,4 @@ var Input = React.forwardRef(({
16
16
  export {
17
17
  Input
18
18
  };
19
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core-joy/input.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { Input as DefaultInput } from \"../components-core\";\nimport { Input as JoyInput } from '@mui/joy';\n\nexport const Input = React.forwardRef<\n React.ElementRef<typeof DefaultInput>,\n React.ComponentProps<typeof DefaultInput>\n>(({\n color,\n size,\n ref: _,\n ...validProps\n}, ref) => {\n return <JoyInput {...validProps}/>;\n});"],"mappings":";;;AAEA,OAAO,WAAW;AAElB,SAAS,SAAS,gBAAgB;AAWzB;AATF,IAAM,QAAQ,MAAM,WAGzB,CAAC;AAAA,EACD;AAAA,EACA;AAAA,EACA,KAAK;AAAA,EACL,GAAG;AACL,GAAG,QAAQ;AACT,SAAO,oBAAC,YAAU,GAAG,YAAW;AAClC,CAAC;","names":[]}
@@ -15,3 +15,4 @@ var Separator = React.forwardRef(({
15
15
  export {
16
16
  Separator
17
17
  };
18
+ //# sourceMappingURL=separator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core-joy/separator.tsx"],"sourcesContent":["'use client';\n\nimport React from \"react\";\nimport { Separator as DefaultDevider } from \"../components-core\";\nimport { Divider as JoySeparator } from '@mui/joy';\n\nexport const Separator = React.forwardRef<\n React.ElementRef<typeof DefaultDevider>,\n React.ComponentProps<typeof DefaultDevider>\n>(({\n orientation,\n ref: _,\n ...validProps\n}, ref) => {\n return <JoySeparator {...validProps} orientation={orientation} />;\n});"],"mappings":";;;AAEA,OAAO,WAAW;AAElB,SAAS,WAAW,oBAAoB;AAU/B;AARF,IAAM,YAAY,MAAM,WAG7B,CAAC;AAAA,EACD;AAAA,EACA,KAAK;AAAA,EACL,GAAG;AACL,GAAG,QAAQ;AACT,SAAO,oBAAC,gBAAc,GAAG,YAAY,aAA0B;AACjE,CAAC;","names":[]}
@@ -27,3 +27,4 @@ export {
27
27
  TabsList,
28
28
  TabsTrigger
29
29
  };
30
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core-joy/tabs.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { Tabs as DefaultTabs, TabsList as DefaultTabsList, TabsTrigger as DefaultTabsTrigger, TabsContent as DefaultTabsContent } from \"../components-core\";\nimport { Tabs as JoyTabs, TabList as JoyTabsList, Tab as JoyTabsTrigger, TabPanel as JoyTabssContent } from '@mui/joy';\n\nexport const Tabs = React.forwardRef<\n React.ElementRef<typeof DefaultTabs>,\n React.ComponentProps<typeof DefaultTabs>\n>((props, ref) => {\n const { color, onChange, ref: _, ...validProps } = props; // TODO: add onChange\n return <JoyTabs ref={ref} sx={{ bgcolor: \"transparent\" }} {...validProps}/>;\n});\n\nexport const TabsList = React.forwardRef<\n React.ElementRef<typeof DefaultTabsList>,\n React.ComponentProps<typeof DefaultTabsList>\n>((props, ref) => {\n const { color, ref: _, ...validProps } = props;\n return <JoyTabsList ref={ref} {...validProps}/>;\n});\n\nexport const TabsTrigger = React.forwardRef<\n React.ElementRef<typeof DefaultTabsTrigger>,\n React.ComponentProps<typeof DefaultTabsTrigger>\n>((props, ref) => {\n const { style, color, onChange, ref: _, ...validProps } = props; // TODO: add onChange\n return <JoyTabsTrigger ref={ref} {...validProps} style={{ flexGrow: 1, ...style }}/>;\n});\n\nexport const TabsContent = React.forwardRef<\n React.ElementRef<typeof DefaultTabsContent>,\n React.ComponentProps<typeof DefaultTabsContent>\n>((props, ref) => {\n const { color, ref: _, ...validProps } = props;\n return <JoyTabssContent ref={ref} {...validProps}/>;\n});\n"],"mappings":";;;AAEA,OAAO,WAAW;AAElB,SAAS,QAAQ,SAAS,WAAW,aAAa,OAAO,gBAAgB,YAAY,uBAAuB;AAOnG;AALF,IAAM,OAAO,MAAM,WAGxB,CAAC,OAAO,QAAQ;AAChB,QAAM,EAAE,OAAO,UAAU,KAAK,GAAG,GAAG,WAAW,IAAI;AACnD,SAAO,oBAAC,WAAQ,KAAU,IAAI,EAAE,SAAS,cAAc,GAAI,GAAG,YAAW;AAC3E,CAAC;AAEM,IAAM,WAAW,MAAM,WAG5B,CAAC,OAAO,QAAQ;AAChB,QAAM,EAAE,OAAO,KAAK,GAAG,GAAG,WAAW,IAAI;AACzC,SAAO,oBAAC,eAAY,KAAW,GAAG,YAAW;AAC/C,CAAC;AAEM,IAAM,cAAc,MAAM,WAG/B,CAAC,OAAO,QAAQ;AAChB,QAAM,EAAE,OAAO,OAAO,UAAU,KAAK,GAAG,GAAG,WAAW,IAAI;AAC1D,SAAO,oBAAC,kBAAe,KAAW,GAAG,YAAY,OAAO,EAAE,UAAU,GAAG,GAAG,MAAM,GAAE;AACpF,CAAC;AAEM,IAAM,cAAc,MAAM,WAG/B,CAAC,OAAO,QAAQ;AAChB,QAAM,EAAE,OAAO,KAAK,GAAG,GAAG,WAAW,IAAI;AACzC,SAAO,oBAAC,mBAAgB,KAAW,GAAG,YAAW;AACnD,CAAC;","names":[]}
@@ -33,3 +33,4 @@ var Text = React.forwardRef((props, ref) => {
33
33
  export {
34
34
  Text
35
35
  };
36
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-core-joy/text.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { Text as DefaultText } from \"../components-core\";\nimport { Typography as JoyText } from '@mui/joy';\n\nexport const Text = React.forwardRef<\n React.ElementRef<typeof DefaultText>,\n React.ComponentProps<typeof DefaultText>\n>((props, ref) => {\n const { color, size, as, variant, ref: _, ...validProps } = props;\n const muiLevel = ({\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h4',\n h6: 'h4',\n p: ({\n xl: 'body-lg',\n lg: 'body-lg',\n md: 'body-md',\n sm: 'body-sm',\n xs: 'body-xs'\n } as const)[size || 'md']\n } as const)[as || 'p'];\n const muiColor = ({\n primary: undefined,\n secondary: 'neutral',\n success: 'success',\n warning: 'danger',\n } as const)[variant || 'primary'];\n\n return <JoyText level={muiLevel} color={muiColor} {...validProps}/>;\n});"],"mappings":";;;AAEA,OAAO,WAAW;AAElB,SAAS,cAAc,eAAe;AA6B7B;AA3BF,IAAM,OAAO,MAAM,WAGxB,CAAC,OAAO,QAAQ;AAChB,QAAM,EAAE,OAAO,MAAM,IAAI,SAAS,KAAK,GAAG,GAAG,WAAW,IAAI;AAC5D,QAAM,WAAY;AAAA,IAChB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,GAAI;AAAA,MACF,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN,EAAY,QAAQ,IAAI;AAAA,EAC1B,EAAY,MAAM,GAAG;AACrB,QAAM,WAAY;AAAA,IAChB,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX,EAAY,WAAW,SAAS;AAEhC,SAAO,oBAAC,WAAQ,OAAO,UAAU,OAAO,UAAW,GAAG,YAAW;AACnE,CAAC;","names":[]}
@@ -195,3 +195,4 @@ function AccountSettings({ fullPage = false }) {
195
195
  export {
196
196
  AccountSettings as default
197
197
  };
198
+ //# sourceMappingURL=account-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-page/account-settings.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { PasswordField, useUser } from '..';\nimport RedirectMessageCard from '../components/redirect-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 size='xl' as='h2'>{props.title}</Text>\n <Text variant='secondary'>{props.desc}</Text>\n </CardHeader>\n {props.children && <CardContent>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1.5rem' }}>\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={60}/>\n <div style={{ display: 'flex', flexDirection: 'column' }}>\n <Text size='lg'>{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 <RedirectMessageCard type='signedOut' fullPage={fullPage} />;\n }\n\n const inner = (\n <div style={{ padding: fullPage ? '1rem' : 0, display: 'flex', flexDirection: 'column', gap: '1.5rem' }}>\n <div>\n <Text size=\"xl\" as='h2' style={{ marginBottom: '0.5rem', fontWeight: '700' }}>Account Settings</Text>\n <Text variant='secondary'>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":[]}
@@ -48,3 +48,4 @@ function AuthPage({
48
48
  export {
49
49
  AuthPage as default
50
50
  };
51
+ //# sourceMappingURL=auth-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-page/auth-page.tsx"],"sourcesContent":["'use client';\n\nimport CredentialSignIn from '../components/credential-sign-in';\nimport SeparatorWithText from '../components/separator-with-text';\nimport OAuthGroup from '../components/oauth-group';\nimport CardFrame from '../components/card-frame';\nimport { useUser, useStackApp, CredentialSignUp } from '..';\nimport RedirectMessageCard from '../components/redirect-message-card';\nimport { Link, Tabs, TabsContent, TabsList, TabsTrigger, Text } from \"../components-core\";\nimport MagicLinkSignIn from '../components/magic-link-sign-in';\n\nexport default function AuthPage({ \n fullPage=false,\n type\n}: { \n fullPage?: boolean, \n type: 'sign-in' | 'sign-up',\n}) {\n const stackApp = useStackApp();\n const user = useUser();\n const project = stackApp.useProject();\n\n if (user) {\n return <RedirectMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n const enableSeparator = (project.credentialEnabled || project.magicLinkEnabled) && project.oauthProviders.filter(p => p.enabled).length > 0;\n\n return (\n <CardFrame fullPage={fullPage}>\n <div style={{ textAlign: 'center', marginBottom: '1.5rem' }}>\n <Text size=\"xl\" as='h2'>{type === 'sign-in' ? 'Sign in to your account' : 'Create a new account'}</Text>\n {type === 'sign-in' ? (\n <Text>\n {\"Don't have an account? \"}\n <Link href={stackApp.urls.signUp}>\n Sign up\n </Link>\n </Text>\n ) : (\n <Text>\n {\"Already have an account? \"}\n <Link href={stackApp.urls.signIn}>\n Sign in\n </Link>\n </Text>\n )}\n </div>\n <OAuthGroup type='signin'/>\n {enableSeparator && <SeparatorWithText text={'Or continue with'} />}\n {project.credentialEnabled && project.magicLinkEnabled ? (\n <Tabs defaultValue='magic-link'>\n <TabsList>\n <TabsTrigger value='magic-link'>Magic Link</TabsTrigger>\n <TabsTrigger value='password'>Password</TabsTrigger>\n </TabsList>\n <TabsContent value='magic-link'>\n <MagicLinkSignIn/>\n </TabsContent>\n <TabsContent value='password'>\n {type === 'sign-up' ? <CredentialSignUp/> : <CredentialSignIn/>}\n </TabsContent>\n </Tabs>\n ) : project.credentialEnabled ? (\n type === 'sign-up' ? <CredentialSignUp/> : <CredentialSignIn/>\n ) : project.magicLinkEnabled ? (\n <MagicLinkSignIn/>\n ) : null}\n </CardFrame>\n );\n}\n"],"mappings":";;;AAEA,OAAO,sBAAsB;AAC7B,OAAO,uBAAuB;AAC9B,OAAO,gBAAgB;AACvB,OAAO,eAAe;AACtB,SAAS,SAAS,aAAa,wBAAwB;AACvD,OAAO,yBAAyB;AAChC,SAAS,MAAM,MAAM,aAAa,UAAU,aAAa,YAAY;AACrE,OAAO,qBAAqB;AAcjB,cAUD,YAVC;AAZI,SAAR,SAA0B;AAAA,EAC/B,WAAS;AAAA,EACT;AACF,GAGG;AACD,QAAM,WAAW,YAAY;AAC7B,QAAM,OAAO,QAAQ;AACrB,QAAM,UAAU,SAAS,WAAW;AAEpC,MAAI,MAAM;AACR,WAAO,oBAAC,uBAAoB,MAAK,YAAW,UAAoB;AAAA,EAClE;AAEA,QAAM,mBAAmB,QAAQ,qBAAqB,QAAQ,qBAAqB,QAAQ,eAAe,OAAO,OAAK,EAAE,OAAO,EAAE,SAAS;AAE1I,SACE,qBAAC,aAAU,UACT;AAAA,yBAAC,SAAI,OAAO,EAAE,WAAW,UAAU,cAAc,SAAS,GACxD;AAAA,0BAAC,QAAK,MAAK,MAAK,IAAG,MAAM,mBAAS,YAAY,4BAA4B,wBAAuB;AAAA,MAChG,SAAS,YACR,qBAAC,QACE;AAAA;AAAA,QACD,oBAAC,QAAK,MAAM,SAAS,KAAK,QAAQ,qBAElC;AAAA,SACF,IAEA,qBAAC,QACE;AAAA;AAAA,QACD,oBAAC,QAAK,MAAM,SAAS,KAAK,QAAQ,qBAElC;AAAA,SACF;AAAA,OAEJ;AAAA,IACA,oBAAC,cAAW,MAAK,UAAQ;AAAA,IACxB,mBAAmB,oBAAC,qBAAkB,MAAM,oBAAoB;AAAA,IAChE,QAAQ,qBAAqB,QAAQ,mBACpC,qBAAC,QAAK,cAAa,cACjB;AAAA,2BAAC,YACC;AAAA,4BAAC,eAAY,OAAM,cAAa,wBAAU;AAAA,QAC1C,oBAAC,eAAY,OAAM,YAAW,sBAAQ;AAAA,SACxC;AAAA,MACA,oBAAC,eAAY,OAAM,cACjB,8BAAC,mBAAe,GAClB;AAAA,MACA,oBAAC,eAAY,OAAM,YAChB,mBAAS,YAAY,oBAAC,oBAAgB,IAAK,oBAAC,oBAAgB,GAC/D;AAAA,OACF,IACE,QAAQ,oBACV,SAAS,YAAY,oBAAC,oBAAgB,IAAK,oBAAC,oBAAgB,IAC1D,QAAQ,mBACV,oBAAC,mBAAe,IACd;AAAA,KACN;AAEJ;","names":[]}
@@ -34,3 +34,4 @@ function EmailVerification({
34
34
  export {
35
35
  EmailVerification as default
36
36
  };
37
+ //# sourceMappingURL=email-verification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-page/email-verification.tsx"],"sourcesContent":["'use client';\n\nimport { use } from \"react\";\nimport { useStackApp } from \"..\";\nimport MessageCard from \"../components/message-card\";\nimport RedirectMessageCard from \"../components/redirect-message-card\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\n\nexport default function EmailVerification({ \n searchParams: {\n code = \"\",\n } = {},\n fullPage = false,\n}: { \n searchParams?: Record<string, string>,\n fullPage?: boolean,\n}) {\n const stackApp = useStackApp();\n\n const invalidJsx = (\n <MessageCard title=\"Invalid Verification Link\" fullPage={fullPage}>\n <p>Please check if you have the correct link. If you continue to have issues, please contact support.</p>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Verification Link\" fullPage={fullPage}>\n <p>Your email verification link has expired. Please request a new verification link from your account settings.</p>\n </MessageCard>\n );\n\n if (!code) {\n return invalidJsx;\n }\n\n const error = use(stackApp.verifyEmail(code));\n\n if (error instanceof KnownErrors.EmailVerificationCodeNotFound) {\n return invalidJsx;\n } else if (error instanceof KnownErrors.EmailVerificationCodeExpired) {\n return expiredJsx;\n } else if (error instanceof KnownErrors.EmailVerificationCodeAlreadyUsed) {\n // everything fine, continue\n } else if (error) {\n throw error;\n }\n\n return <RedirectMessageCard type='emailVerified' fullPage={fullPage} />;\n}\n"],"mappings":";;;AAEA,SAAS,WAAW;AACpB,SAAS,mBAAmB;AAC5B,OAAO,iBAAiB;AACxB,OAAO,yBAAyB;AAChC,SAAS,mBAAmB;AAetB;AAbS,SAAR,kBAAmC;AAAA,EACxC,cAAc;AAAA,IACZ,OAAO;AAAA,EACT,IAAI,CAAC;AAAA,EACL,WAAW;AACb,GAGG;AACD,QAAM,WAAW,YAAY;AAE7B,QAAM,aACJ,oBAAC,eAAY,OAAM,6BAA4B,UAC7C,8BAAC,OAAE,gHAAkG,GACvG;AAGF,QAAM,aACJ,oBAAC,eAAY,OAAM,6BAA4B,UAC7C,8BAAC,OAAE,0HAA4G,GACjH;AAGF,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,IAAI,SAAS,YAAY,IAAI,CAAC;AAE5C,MAAI,iBAAiB,YAAY,+BAA+B;AAC9D,WAAO;AAAA,EACT,WAAW,iBAAiB,YAAY,8BAA8B;AACpE,WAAO;AAAA,EACT,WAAW,iBAAiB,YAAY,kCAAkC;AAAA,EAE1E,WAAW,OAAO;AAChB,UAAM;AAAA,EACR;AAEA,SAAO,oBAAC,uBAAoB,MAAK,iBAAgB,UAAoB;AACvE;","names":[]}
@@ -33,3 +33,4 @@ function ForgotPassword({ fullPage = false }) {
33
33
  export {
34
34
  ForgotPassword as default
35
35
  };
36
+ //# sourceMappingURL=forgot-password.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components-page/forgot-password.tsx"],"sourcesContent":["'use client';\n\nimport ForgotPasswordElement from \"../components/forgot-password\";\nimport CardFrame from \"../components/card-frame\";\nimport { useUser, useStackApp } from \"..\";\nimport RedirectMessageCard from \"../components/redirect-message-card\";\nimport { useState } from \"react\";\nimport { Link, Text } from \"../components-core\";\n\n\nexport default function ForgotPassword({ fullPage=false }: { fullPage?: boolean }) {\n const stackApp = useStackApp();\n const user = useUser();\n const [sent, setSent] = useState(false);\n\n if (user) {\n return <RedirectMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n if (sent) {\n return <RedirectMessageCard type='emailSent' fullPage={fullPage} />;\n }\n\n return (\n <CardFrame fullPage={fullPage}>\n <div style={{ textAlign: 'center', marginBottom: '1.5rem' }}>\n <Text size=\"xl\" as='h2'>Reset Your Password</Text>\n <Text>\n {\"Don't need to reset? \"}\n <Link href={stackApp.urls['signUp']}>\n Sign In\n </Link>\n </Text>\n </div>\n <ForgotPasswordElement onSent={() => setSent(true)} />\n </CardFrame>\n );\n};\n"],"mappings":";;;AAEA,OAAO,2BAA2B;AAClC,OAAO,eAAe;AACtB,SAAS,SAAS,mBAAmB;AACrC,OAAO,yBAAyB;AAChC,SAAS,gBAAgB;AACzB,SAAS,MAAM,YAAY;AAShB,cAWH,YAXG;AANI,SAAR,eAAgC,EAAE,WAAS,MAAM,GAA2B;AACjF,QAAM,WAAW,YAAY;AAC7B,QAAM,OAAO,QAAQ;AACrB,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AAEtC,MAAI,MAAM;AACR,WAAO,oBAAC,uBAAoB,MAAK,YAAW,UAAoB;AAAA,EAClE;AAEA,MAAI,MAAM;AACR,WAAO,oBAAC,uBAAoB,MAAK,aAAY,UAAoB;AAAA,EACnE;AAEA,SACE,qBAAC,aAAU,UACT;AAAA,yBAAC,SAAI,OAAO,EAAE,WAAW,UAAU,cAAc,SAAS,GACxD;AAAA,0BAAC,QAAK,MAAK,MAAK,IAAG,MAAK,iCAAmB;AAAA,MAC3C,qBAAC,QACE;AAAA;AAAA,QACD,oBAAC,QAAK,MAAM,SAAS,KAAK,QAAQ,GAAG,qBAErC;AAAA,SACF;AAAA,OACF;AAAA,IACA,oBAAC,yBAAsB,QAAQ,MAAM,QAAQ,IAAI,GAAG;AAAA,KACtD;AAEJ;","names":[]}