@stackframe/stack 2.3.4 → 2.3.7

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 (262) hide show
  1. package/README.md +2 -2
  2. package/dist/components/card-frame.d.mts +9 -0
  3. package/dist/components/card-frame.d.ts +8 -5
  4. package/dist/components/card-frame.js +58 -23
  5. package/dist/components/credential-sign-in.d.mts +5 -0
  6. package/dist/components/credential-sign-in.d.ts +5 -1
  7. package/dist/components/credential-sign-in.js +109 -41
  8. package/dist/components/credential-sign-up.d.mts +5 -0
  9. package/dist/components/credential-sign-up.d.ts +5 -1
  10. package/dist/components/credential-sign-up.js +140 -62
  11. package/dist/components/forgot-password.d.mts +7 -0
  12. package/dist/components/forgot-password.d.ts +6 -2
  13. package/dist/components/forgot-password.js +83 -26
  14. package/dist/components/form-warning.d.mts +7 -0
  15. package/dist/components/form-warning.d.ts +6 -2
  16. package/dist/components/form-warning.js +34 -8
  17. package/dist/components/magic-link-sign-in.d.mts +5 -0
  18. package/dist/components/magic-link-sign-in.d.ts +5 -1
  19. package/dist/components/magic-link-sign-in.js +89 -31
  20. package/dist/components/message-card.d.mts +10 -0
  21. package/dist/components/message-card.d.ts +8 -4
  22. package/dist/components/message-card.js +45 -6
  23. package/dist/components/oauth-button.d.mts +8 -0
  24. package/dist/components/oauth-button.d.ts +6 -2
  25. package/dist/components/oauth-button.js +142 -63
  26. package/dist/components/oauth-group.d.mts +7 -0
  27. package/dist/components/oauth-group.d.ts +6 -2
  28. package/dist/components/oauth-group.js +46 -8
  29. package/dist/components/password-field.d.mts +5 -0
  30. package/dist/components/password-field.d.ts +5 -3
  31. package/dist/components/password-field.js +111 -41
  32. package/dist/components/password-reset-inner.d.mts +8 -0
  33. package/dist/components/password-reset-inner.d.ts +6 -2
  34. package/dist/components/password-reset-inner.js +120 -58
  35. package/dist/components/redirect-message-card.d.mts +8 -0
  36. package/dist/components/redirect-message-card.d.ts +6 -2
  37. package/dist/components/redirect-message-card.js +110 -58
  38. package/dist/components/separator-with-text.d.mts +7 -0
  39. package/dist/components/separator-with-text.d.ts +6 -2
  40. package/dist/components/separator-with-text.js +35 -5
  41. package/dist/components/user-avatar.d.mts +13 -0
  42. package/dist/components/user-avatar.d.ts +12 -2
  43. package/dist/components/user-avatar.js +34 -8
  44. package/dist/components/user-button.d.mts +15 -0
  45. package/dist/components/user-button.d.ts +14 -3
  46. package/dist/components/user-button.js +160 -24
  47. package/dist/components-core/avatar.d.mts +8 -0
  48. package/dist/components-core/avatar.d.ts +7 -5
  49. package/dist/components-core/avatar.js +73 -18
  50. package/dist/components-core/button.d.mts +12 -0
  51. package/dist/components-core/button.d.ts +8 -6
  52. package/dist/components-core/button.js +177 -113
  53. package/dist/components-core/card.d.mts +8 -0
  54. package/dist/components-core/card.d.ts +4 -2
  55. package/dist/components-core/card.js +73 -22
  56. package/dist/components-core/collapsible.d.mts +8 -0
  57. package/dist/components-core/collapsible.d.ts +8 -6
  58. package/dist/components-core/collapsible.js +48 -5
  59. package/dist/components-core/container.d.mts +8 -0
  60. package/dist/components-core/container.d.ts +5 -3
  61. package/dist/components-core/container.js +61 -11
  62. package/dist/components-core/dropdown.d.mts +15 -0
  63. package/dist/components-core/dropdown.d.ts +10 -8
  64. package/dist/components-core/dropdown.js +108 -36
  65. package/dist/components-core/index.d.mts +59 -0
  66. package/dist/components-core/index.d.ts +52 -38
  67. package/dist/components-core/index.js +144 -45
  68. package/dist/components-core/input.d.mts +6 -0
  69. package/dist/components-core/input.d.ts +5 -3
  70. package/dist/components-core/input.js +97 -28
  71. package/dist/components-core/label.d.mts +6 -0
  72. package/dist/components-core/label.d.ts +5 -3
  73. package/dist/components-core/label.js +65 -15
  74. package/dist/components-core/link.d.mts +10 -0
  75. package/dist/components-core/link.d.ts +7 -6
  76. package/dist/components-core/link.js +72 -18
  77. package/dist/components-core/loading-indicator.d.mts +13 -0
  78. package/dist/components-core/loading-indicator.d.ts +11 -4
  79. package/dist/components-core/loading-indicator.js +46 -6
  80. package/dist/components-core/popover.d.mts +8 -0
  81. package/dist/components-core/popover.d.ts +8 -6
  82. package/dist/components-core/popover.js +72 -16
  83. package/dist/components-core/separator.d.mts +6 -0
  84. package/dist/components-core/separator.d.ts +5 -3
  85. package/dist/components-core/separator.js +66 -16
  86. package/dist/components-core/skeleton.d.mts +7 -0
  87. package/dist/components-core/skeleton.d.ts +7 -0
  88. package/dist/components-core/skeleton.js +86 -0
  89. package/dist/components-core/tabs.d.mts +9 -0
  90. package/dist/components-core/tabs.d.ts +8 -6
  91. package/dist/components-core/tabs.js +87 -20
  92. package/dist/components-core/text.d.mts +10 -0
  93. package/dist/components-core/text.d.ts +5 -3
  94. package/dist/components-core/text.js +95 -40
  95. package/dist/components-core-joy/button.d.mts +6 -0
  96. package/dist/components-core-joy/button.d.ts +6 -2
  97. package/dist/components-core-joy/button.js +86 -28
  98. package/dist/components-core-joy/input.d.mts +5 -0
  99. package/dist/components-core-joy/input.d.ts +5 -2
  100. package/dist/components-core-joy/input.js +51 -6
  101. package/dist/components-core-joy/separator.d.mts +6 -0
  102. package/dist/components-core-joy/separator.d.ts +6 -2
  103. package/dist/components-core-joy/separator.js +50 -6
  104. package/dist/components-core-joy/tabs.d.mts +9 -0
  105. package/dist/components-core-joy/tabs.d.ts +9 -5
  106. package/dist/components-core-joy/tabs.js +62 -16
  107. package/dist/components-core-joy/text.d.mts +9 -0
  108. package/dist/components-core-joy/text.d.ts +6 -3
  109. package/dist/components-core-joy/text.js +68 -28
  110. package/dist/components-page/account-settings.d.mts +7 -0
  111. package/dist/components-page/account-settings.d.ts +6 -2
  112. package/dist/components-page/account-settings.js +213 -81
  113. package/dist/components-page/auth-page.d.mts +8 -0
  114. package/dist/components-page/auth-page.d.ts +6 -2
  115. package/dist/components-page/auth-page.js +79 -19
  116. package/dist/components-page/email-verification.d.mts +8 -0
  117. package/dist/components-page/email-verification.d.ts +6 -2
  118. package/dist/components-page/email-verification.js +65 -28
  119. package/dist/components-page/forgot-password.d.mts +7 -0
  120. package/dist/components-page/forgot-password.d.ts +6 -2
  121. package/dist/components-page/forgot-password.js +64 -20
  122. package/dist/components-page/magic-link-callback.d.mts +8 -0
  123. package/dist/components-page/magic-link-callback.d.ts +6 -2
  124. package/dist/components-page/magic-link-callback.js +72 -34
  125. package/dist/components-page/oauth-callback.d.mts +5 -0
  126. package/dist/components-page/oauth-callback.d.ts +5 -1
  127. package/dist/components-page/oauth-callback.js +52 -16
  128. package/dist/components-page/password-reset.d.mts +8 -0
  129. package/dist/components-page/password-reset.d.ts +6 -2
  130. package/dist/components-page/password-reset.js +70 -34
  131. package/dist/components-page/sign-in.d.mts +7 -0
  132. package/dist/components-page/sign-in.d.ts +6 -2
  133. package/dist/components-page/sign-in.js +41 -5
  134. package/dist/components-page/sign-out.d.mts +5 -0
  135. package/dist/components-page/sign-out.d.ts +5 -1
  136. package/dist/components-page/sign-out.js +47 -11
  137. package/dist/components-page/sign-up.d.mts +7 -0
  138. package/dist/components-page/sign-up.d.ts +6 -2
  139. package/dist/components-page/sign-up.js +41 -5
  140. package/dist/components-page/stack-handler.d.mts +16 -0
  141. package/dist/components-page/stack-handler.d.ts +11 -3
  142. package/dist/components-page/stack-handler.js +102 -64
  143. package/dist/esm/components/card-frame.js +39 -0
  144. package/dist/esm/components/credential-sign-in.js +82 -0
  145. package/dist/esm/components/credential-sign-up.js +114 -0
  146. package/dist/esm/components/forgot-password.js +55 -0
  147. package/dist/esm/components/form-warning.js +15 -0
  148. package/dist/esm/components/magic-link-sign-in.js +61 -0
  149. package/dist/esm/components/message-card.js +16 -0
  150. package/dist/esm/components/oauth-button.js +124 -0
  151. package/dist/esm/components/oauth-group.js +17 -0
  152. package/dist/esm/components/password-field.js +82 -0
  153. package/dist/esm/components/password-reset-inner.js +93 -0
  154. package/dist/esm/components/redirect-message-card.js +83 -0
  155. package/dist/esm/components/separator-with-text.js +16 -0
  156. package/dist/esm/components/user-avatar.js +14 -0
  157. package/dist/esm/components/user-button.js +133 -0
  158. package/dist/esm/components-core/avatar.js +56 -0
  159. package/dist/esm/components-core/button.js +165 -0
  160. package/dist/esm/components-core/card.js +51 -0
  161. package/dist/esm/components-core/collapsible.js +13 -0
  162. package/dist/esm/components-core/container.js +35 -0
  163. package/dist/esm/components-core/dropdown.js +106 -0
  164. package/dist/esm/components-core/index.js +93 -0
  165. package/dist/esm/components-core/input.js +80 -0
  166. package/dist/esm/components-core/label.js +38 -0
  167. package/dist/esm/components-core/link.js +38 -0
  168. package/dist/esm/components-core/loading-indicator.js +27 -0
  169. package/dist/esm/components-core/popover.js +43 -0
  170. package/dist/esm/components-core/separator.js +36 -0
  171. package/dist/esm/components-core/skeleton.js +52 -0
  172. package/dist/esm/components-core/tabs.js +79 -0
  173. package/dist/esm/components-core/text.js +63 -0
  174. package/dist/esm/components-core-joy/button.js +53 -0
  175. package/dist/esm/components-core-joy/input.js +18 -0
  176. package/dist/esm/components-core-joy/separator.js +17 -0
  177. package/dist/esm/components-core-joy/tabs.js +29 -0
  178. package/dist/esm/components-core-joy/text.js +35 -0
  179. package/dist/esm/components-page/account-settings.js +197 -0
  180. package/dist/esm/components-page/auth-page.js +50 -0
  181. package/dist/esm/components-page/email-verification.js +36 -0
  182. package/dist/esm/components-page/forgot-password.js +35 -0
  183. package/dist/esm/components-page/magic-link-callback.js +43 -0
  184. package/dist/esm/components-page/oauth-callback.js +23 -0
  185. package/dist/esm/components-page/password-reset.js +42 -0
  186. package/dist/esm/components-page/sign-in.js +12 -0
  187. package/dist/esm/components-page/sign-out.js +18 -0
  188. package/dist/esm/components-page/sign-up.js +12 -0
  189. package/dist/esm/components-page/stack-handler.js +75 -0
  190. package/dist/esm/index.js +47 -0
  191. package/dist/esm/joy.js +5 -0
  192. package/dist/esm/lib/auth.js +62 -0
  193. package/dist/esm/lib/cookie.js +185 -0
  194. package/dist/esm/lib/hooks.js +29 -0
  195. package/dist/esm/lib/stack-app.js +940 -0
  196. package/dist/esm/providers/component-provider.js +76 -0
  197. package/dist/esm/providers/design-provider.js +36 -0
  198. package/dist/esm/providers/joy-provider.js +35 -0
  199. package/dist/esm/providers/stack-provider-client.js +31 -0
  200. package/dist/esm/providers/stack-provider.js +21 -0
  201. package/dist/esm/providers/styled-components-registry.js +24 -0
  202. package/dist/esm/providers/theme-provider.js +22 -0
  203. package/dist/esm/utils/browser-script.js +25 -0
  204. package/dist/esm/utils/constants.js +34 -0
  205. package/dist/esm/utils/email.js +10 -0
  206. package/dist/esm/utils/next.js +7 -0
  207. package/dist/esm/utils/url.js +21 -0
  208. package/dist/index.d.mts +37 -0
  209. package/dist/index.d.ts +37 -22
  210. package/dist/index.js +106 -21
  211. package/dist/joy.d.mts +16 -0
  212. package/dist/joy.d.ts +16 -1
  213. package/dist/joy.js +30 -1
  214. package/dist/lib/auth.d.mts +11 -0
  215. package/dist/lib/auth.d.ts +8 -4
  216. package/dist/lib/auth.js +83 -57
  217. package/dist/lib/cookie.d.mts +14 -0
  218. package/dist/lib/cookie.d.ts +8 -6
  219. package/dist/lib/cookie.js +217 -45
  220. package/dist/lib/hooks.d.mts +35 -0
  221. package/dist/lib/hooks.d.ts +14 -8
  222. package/dist/lib/hooks.js +53 -28
  223. package/dist/lib/stack-app.d.mts +227 -0
  224. package/dist/lib/stack-app.d.ts +45 -44
  225. package/dist/lib/stack-app.js +937 -861
  226. package/dist/providers/component-provider.d.mts +113 -0
  227. package/dist/providers/component-provider.d.ts +97 -73
  228. package/dist/providers/component-provider.js +92 -56
  229. package/dist/providers/design-provider.d.mts +34 -0
  230. package/dist/providers/design-provider.d.ts +16 -21
  231. package/dist/providers/design-provider.js +57 -64
  232. package/dist/providers/joy-provider.d.mts +36 -0
  233. package/dist/providers/joy-provider.d.ts +30 -14
  234. package/dist/providers/joy-provider.js +58 -30
  235. package/dist/providers/stack-provider-client.d.mts +20 -0
  236. package/dist/providers/stack-provider-client.d.ts +18 -7
  237. package/dist/providers/stack-provider-client.js +65 -12
  238. package/dist/providers/stack-provider.d.mts +14 -0
  239. package/dist/providers/stack-provider.d.ts +13 -5
  240. package/dist/providers/stack-provider.js +41 -5
  241. package/dist/providers/styled-components-registry.d.mts +8 -0
  242. package/dist/providers/styled-components-registry.d.ts +8 -4
  243. package/dist/providers/styled-components-registry.js +43 -17
  244. package/dist/providers/theme-provider.d.mts +22 -0
  245. package/dist/providers/theme-provider.d.ts +21 -9
  246. package/dist/providers/theme-provider.js +55 -19
  247. package/dist/utils/browser-script.d.mts +5 -0
  248. package/dist/utils/browser-script.d.ts +5 -0
  249. package/dist/utils/browser-script.js +50 -0
  250. package/dist/utils/constants.d.mts +48 -0
  251. package/dist/utils/constants.d.ts +11 -9
  252. package/dist/utils/constants.js +66 -21
  253. package/dist/utils/email.d.mts +3 -0
  254. package/dist/utils/email.d.ts +3 -1
  255. package/dist/utils/email.js +44 -6
  256. package/dist/utils/next.d.mts +3 -0
  257. package/dist/utils/next.d.ts +3 -1
  258. package/dist/utils/next.js +31 -3
  259. package/dist/utils/url.d.mts +4 -0
  260. package/dist/utils/url.d.ts +4 -2
  261. package/dist/utils/url.js +44 -13
  262. package/package.json +20 -11
@@ -0,0 +1,76 @@
1
+ "use client";
2
+ "use client";
3
+
4
+ // src/providers/component-provider.tsx
5
+ import { createContext, useContext } from "react";
6
+ import { Button } from "../components-core/button";
7
+ import { Container } from "../components-core/container";
8
+ import { Separator } from "../components-core/separator";
9
+ import { Input } from "../components-core/input";
10
+ import { Link } from "../components-core/link";
11
+ import { Label } from "../components-core/label";
12
+ import { Text } from "../components-core/text";
13
+ import { Card, CardHeader, CardContent, CardFooter } from "../components-core/card";
14
+ import { Popover, PopoverTrigger, PopoverContent } from "../components-core/popover";
15
+ import {
16
+ DropdownMenu,
17
+ DropdownMenuTrigger,
18
+ DropdownMenuContent,
19
+ DropdownMenuItem,
20
+ DropdownMenuLabel,
21
+ DropdownMenuSeparator
22
+ } from "../components-core/dropdown";
23
+ import { Avatar, AvatarFallback, AvatarImage } from "../components-core/avatar";
24
+ import { Collapsible, CollapsibleTrigger, CollapsibleContent } from "../components-core/collapsible";
25
+ import { Tabs, TabsList, TabsContent, TabsTrigger } from "../components-core/tabs";
26
+ import { Skeleton } from "../components-core/skeleton";
27
+ import { jsx } from "react/jsx-runtime";
28
+ var Components = {
29
+ Input,
30
+ Button,
31
+ Container,
32
+ Separator,
33
+ Label,
34
+ Link,
35
+ Text,
36
+ Popover,
37
+ PopoverTrigger,
38
+ PopoverContent,
39
+ DropdownMenu,
40
+ DropdownMenuTrigger,
41
+ DropdownMenuContent,
42
+ DropdownMenuItem,
43
+ DropdownMenuLabel,
44
+ DropdownMenuSeparator,
45
+ Avatar,
46
+ AvatarFallback,
47
+ AvatarImage,
48
+ Collapsible,
49
+ CollapsibleTrigger,
50
+ CollapsibleContent,
51
+ Card,
52
+ CardHeader,
53
+ CardContent,
54
+ CardFooter,
55
+ Tabs,
56
+ TabsList,
57
+ TabsContent,
58
+ TabsTrigger,
59
+ Skeleton
60
+ };
61
+ var ComponentContext = createContext(void 0);
62
+ function useComponents() {
63
+ const context = useContext(ComponentContext);
64
+ if (!context) {
65
+ throw new Error("Stack UI components must be used within a StackTheme");
66
+ }
67
+ return context;
68
+ }
69
+ function StackComponentProvider(props) {
70
+ return /* @__PURE__ */ jsx(ComponentContext.Provider, { value: { ...Components, ...props.components }, children: props.children });
71
+ }
72
+ export {
73
+ Components,
74
+ StackComponentProvider,
75
+ useComponents
76
+ };
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ "use client";
3
+
4
+ // src/providers/design-provider.tsx
5
+ import { createContext, useContext } from "react";
6
+ import { DEFAULT_COLORS } from "../utils/constants";
7
+ import { jsx } from "react/jsx-runtime";
8
+ var DesignContext = createContext(void 0);
9
+ var defaultBreakpoints = {
10
+ xs: 400,
11
+ sm: 600,
12
+ md: 900,
13
+ lg: 1200,
14
+ xl: 1536
15
+ };
16
+ function StackDesignProvider(props) {
17
+ const designValue = {
18
+ colors: {
19
+ dark: { ...DEFAULT_COLORS.dark, ...props.colors?.dark },
20
+ light: { ...DEFAULT_COLORS.light, ...props.colors?.light }
21
+ },
22
+ breakpoints: { ...defaultBreakpoints, ...props.breakpoints }
23
+ };
24
+ return /* @__PURE__ */ jsx(DesignContext.Provider, { value: designValue, children: props.children });
25
+ }
26
+ function useDesign() {
27
+ const context = useContext(DesignContext);
28
+ if (!context) {
29
+ throw new Error("useDesign must be used within a StackTheme");
30
+ }
31
+ return context;
32
+ }
33
+ export {
34
+ StackDesignProvider,
35
+ useDesign
36
+ };
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ "use client";
3
+
4
+ // src/providers/joy-provider.tsx
5
+ import { StackTheme } from "./theme-provider";
6
+ import { Button } from "../components-core-joy/button";
7
+ import { Input } from "../components-core-joy/input";
8
+ import { Text } from "../components-core-joy/text";
9
+ import { Separator } from "../components-core-joy/separator";
10
+ import { Tabs, TabsList, TabsTrigger, TabsContent } from "../components-core-joy/tabs";
11
+ import { jsx } from "react/jsx-runtime";
12
+ var defaultComponents = {
13
+ Button,
14
+ Input,
15
+ Text,
16
+ Separator,
17
+ Tabs,
18
+ TabsList,
19
+ TabsTrigger,
20
+ TabsContent
21
+ };
22
+ function StackJoyTheme(props) {
23
+ const mergedTheme = {
24
+ components: {
25
+ ...defaultComponents,
26
+ ...props.theme?.components
27
+ },
28
+ ...props.theme
29
+ };
30
+ return /* @__PURE__ */ jsx(StackTheme, { theme: mergedTheme, children: props.children });
31
+ }
32
+ export {
33
+ StackJoyTheme,
34
+ defaultComponents
35
+ };
@@ -0,0 +1,31 @@
1
+ "use client";
2
+ "use client";
3
+
4
+ // src/providers/stack-provider-client.tsx
5
+ import { useEffect } from "react";
6
+ import { StackClientApp, stackAppInternalsSymbol } from "../lib/stack-app";
7
+ import React from "react";
8
+ import { useStackApp } from "..";
9
+ import { jsx } from "react/jsx-runtime";
10
+ var StackContext = React.createContext(null);
11
+ function StackProviderClient(props) {
12
+ const appJson = props.appJson;
13
+ const app = StackClientApp[stackAppInternalsSymbol].fromClientJson(appJson);
14
+ if (process.env.NODE_ENV === "development") {
15
+ globalThis.stackApp = app;
16
+ }
17
+ return /* @__PURE__ */ jsx(StackContext.Provider, { value: { app }, children: props.children });
18
+ }
19
+ function UserSetter(props) {
20
+ const app = useStackApp();
21
+ useEffect(() => {
22
+ const promise = (async () => await props.userJsonPromise)();
23
+ app[stackAppInternalsSymbol].setCurrentUser(promise);
24
+ }, []);
25
+ return null;
26
+ }
27
+ export {
28
+ StackContext,
29
+ StackProviderClient,
30
+ UserSetter
31
+ };
@@ -0,0 +1,21 @@
1
+ // src/providers/stack-provider.tsx
2
+ import { Suspense } from "react";
3
+ import { stackAppInternalsSymbol } from "../lib/stack-app";
4
+ import { StackProviderClient, UserSetter } from "./stack-provider-client";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ function StackProvider({
7
+ children,
8
+ app
9
+ }) {
10
+ return /* @__PURE__ */ jsxs(StackProviderClient, { appJson: app[stackAppInternalsSymbol].toClientJson(), children: [
11
+ /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(UserFetcher, { app }) }),
12
+ children
13
+ ] });
14
+ }
15
+ function UserFetcher(props) {
16
+ const userPromise = props.app.getUser().then((user) => user?.toJson() ?? null);
17
+ return /* @__PURE__ */ jsx(UserSetter, { userJsonPromise: userPromise });
18
+ }
19
+ export {
20
+ StackProvider as default
21
+ };
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ "use client";
3
+
4
+ // src/providers/styled-components-registry.tsx
5
+ import { useState } from "react";
6
+ import { useServerInsertedHTML } from "next/navigation";
7
+ import { ServerStyleSheet, StyleSheetManager } from "styled-components";
8
+ import { Fragment, jsx } from "react/jsx-runtime";
9
+ function StyledComponentsRegistry({
10
+ children
11
+ }) {
12
+ const [styledComponentsStyleSheet] = useState(() => new ServerStyleSheet());
13
+ useServerInsertedHTML(() => {
14
+ const styles = styledComponentsStyleSheet.getStyleElement();
15
+ styledComponentsStyleSheet.instance.clearTag();
16
+ return /* @__PURE__ */ jsx(Fragment, { children: styles });
17
+ });
18
+ if (typeof window !== "undefined")
19
+ return /* @__PURE__ */ jsx(Fragment, { children });
20
+ return /* @__PURE__ */ jsx(StyleSheetManager, { sheet: styledComponentsStyleSheet.instance, children });
21
+ }
22
+ export {
23
+ StyledComponentsRegistry as default
24
+ };
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ "use client";
3
+
4
+ // src/providers/theme-provider.tsx
5
+ import { StackDesignProvider } from "./design-provider";
6
+ import { StackComponentProvider } from "./component-provider";
7
+ import StyledComponentsRegistry from "./styled-components-registry";
8
+ import { BrowserScript } from "../utils/browser-script";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ function StackTheme({
11
+ theme,
12
+ children
13
+ }) {
14
+ const componentProps = { components: theme?.components };
15
+ return /* @__PURE__ */ jsxs(StyledComponentsRegistry, { children: [
16
+ /* @__PURE__ */ jsx(BrowserScript, {}),
17
+ /* @__PURE__ */ jsx(StackDesignProvider, { ...theme, children: /* @__PURE__ */ jsx(StackComponentProvider, { ...componentProps, children }) })
18
+ ] });
19
+ }
20
+ export {
21
+ StackTheme
22
+ };
@@ -0,0 +1,25 @@
1
+ // src/utils/browser-script.tsx
2
+ import { jsx } from "react/jsx-runtime";
3
+ var script = () => {
4
+ const observer = new MutationObserver((mutations) => {
5
+ mutations.forEach((mutation) => {
6
+ if (mutation.attributeName === "data-joy-color-scheme") {
7
+ const joyColorScheme = document.documentElement.getAttribute("data-joy-color-scheme");
8
+ if (!joyColorScheme) {
9
+ return;
10
+ }
11
+ document.documentElement.setAttribute("data-theme", joyColorScheme);
12
+ }
13
+ });
14
+ });
15
+ observer.observe(document.documentElement, {
16
+ attributes: true,
17
+ attributeFilter: ["data-joy-color-scheme"]
18
+ });
19
+ };
20
+ function BrowserScript() {
21
+ return /* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: { __html: `(${script.toString()})()` } });
22
+ }
23
+ export {
24
+ BrowserScript
25
+ };
@@ -0,0 +1,34 @@
1
+ // src/utils/constants.tsx
2
+ var FONT_SIZES = { "xs": "0.75rem", "sm": "0.875rem", "md": "1rem", "lg": "1.25rem", "xl": "1.5rem" };
3
+ var LINE_HEIGHTS = { "xs": "1rem", "sm": "1.25rem", "md": "1.5rem", "lg": "1.75rem", "xl": "2rem" };
4
+ var FONT_FAMILY = 'ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"';
5
+ var PRIMARY_FONT_COLORS = { "dark": "white", "light": "black" };
6
+ var SECONDARY_FONT_COLORS = { "dark": "#a8a8a8", "light": "#737373" };
7
+ var SELECTED_BACKGROUND_COLORS = { "dark": "rgba(255, 255, 255, 0.1)", "light": "rgba(0, 0, 0, 0.04)" };
8
+ var LINK_COLORS = { "dark": "#fff", "light": "#000" };
9
+ var BORDER_RADIUS = "0.375rem";
10
+ var DEFAULT_COLORS = {
11
+ dark: {
12
+ primaryColor: "#570df8",
13
+ secondaryColor: "#404040",
14
+ backgroundColor: "black",
15
+ neutralColor: "#27272a"
16
+ },
17
+ light: {
18
+ primaryColor: "#570df8",
19
+ secondaryColor: "#e0e0e0",
20
+ backgroundColor: "white",
21
+ neutralColor: "#e4e4e7"
22
+ }
23
+ };
24
+ export {
25
+ BORDER_RADIUS,
26
+ DEFAULT_COLORS,
27
+ FONT_FAMILY,
28
+ FONT_SIZES,
29
+ LINE_HEIGHTS,
30
+ LINK_COLORS,
31
+ PRIMARY_FONT_COLORS,
32
+ SECONDARY_FONT_COLORS,
33
+ SELECTED_BACKGROUND_COLORS
34
+ };
@@ -0,0 +1,10 @@
1
+ // src/utils/email.tsx
2
+ import * as yup from "yup";
3
+ function validateEmail(email) {
4
+ if (typeof email !== "string")
5
+ throw new Error("Email must be a string");
6
+ return yup.string().email().isValidSync(email);
7
+ }
8
+ export {
9
+ validateEmail
10
+ };
@@ -0,0 +1,7 @@
1
+ // src/utils/next.tsx
2
+ function isClient() {
3
+ return typeof window !== "undefined";
4
+ }
5
+ export {
6
+ isClient
7
+ };
@@ -0,0 +1,21 @@
1
+ // src/utils/url.tsx
2
+ function autoRedirect() {
3
+ const url = new URL(window.location.href);
4
+ const redirectUrl = url.searchParams.get("auto-redirect-url");
5
+ if (redirectUrl) {
6
+ const urlObject = new URL(redirectUrl);
7
+ if (urlObject.origin !== window.location.origin) {
8
+ throw new Error("auto-redirect-url is not same origin (" + urlObject.origin + " !== " + window.location.origin + ")");
9
+ }
10
+ url.searchParams.delete("auto-redirect-url");
11
+ window.location.replace(urlObject.href);
12
+ }
13
+ }
14
+ function constructRedirectUrl(redirectUrl) {
15
+ const url = redirectUrl ? new URL(redirectUrl, window.location.href) : new URL(window.location.href);
16
+ return url.href.split("#")[0];
17
+ }
18
+ export {
19
+ autoRedirect,
20
+ constructRedirectUrl
21
+ };
@@ -0,0 +1,37 @@
1
+ export { default as StackProvider } from './providers/stack-provider.mjs';
2
+ export { useStackApp, useUser } from './lib/hooks.mjs';
3
+ export { ApiKeySet, ApiKeySetFirstView, CurrentUser, Project, ServerUser, StackAdminApp, StackClientApp, StackServerApp } from './lib/stack-app.mjs';
4
+ export { default as StackHandler } from './components-page/stack-handler.mjs';
5
+ export { default as SignIn } from './components-page/sign-in.mjs';
6
+ export { default as SignUp } from './components-page/sign-up.mjs';
7
+ export { default as EmailVerification } from './components-page/email-verification.mjs';
8
+ export { default as PasswordReset } from './components-page/password-reset.mjs';
9
+ export { default as ForgotPassword } from './components-page/forgot-password.mjs';
10
+ export { default as MessageCard } from './components/message-card.mjs';
11
+ export { default as CredentialSignIn } from './components/credential-sign-in.mjs';
12
+ export { default as CredentialSignUp } from './components/credential-sign-up.mjs';
13
+ export { default as OAuthButton } from './components/oauth-button.mjs';
14
+ export { default as OAuthGroup } from './components/oauth-group.mjs';
15
+ export { default as PasswordField } from './components/password-field.mjs';
16
+ export { default as UserButton } from './components/user-button.mjs';
17
+ export { default as AccountSettings } from './components-page/account-settings.mjs';
18
+ export { ColorPalette, useDesign } from './providers/design-provider.mjs';
19
+ export { useComponents } from './providers/component-provider.mjs';
20
+ export { StackTheme, ThemeConfig } from './providers/theme-provider.mjs';
21
+ export { Avatar, AvatarFallback, AvatarImage, Button, Card, CardContent, CardFooter, CardHeader, Collapsible, CollapsibleContent, CollapsibleTrigger, Container, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, Input, Label, Link, Popover, PopoverContent, PopoverTrigger, Separator, Skeleton, Tabs, TabsContent, TabsList, TabsTrigger, Text } from './components-core/index.mjs';
22
+ import 'react/jsx-runtime';
23
+ import 'react';
24
+ import '@stackframe/stack-shared';
25
+ import '@stackframe/stack-shared/dist/interface/clientInterface';
26
+ import '@stackframe/stack-shared/dist/utils/json';
27
+ import '@stackframe/stack-shared/dist/interface/adminInterface';
28
+ import '@radix-ui/react-tabs';
29
+ import '@radix-ui/react-collapsible';
30
+ import '@radix-ui/react-avatar';
31
+ import '@radix-ui/react-dropdown-menu';
32
+ import '@radix-ui/react-popover';
33
+ import 'url';
34
+ import '@radix-ui/react-label';
35
+ import '@radix-ui/react-separator';
36
+ import './components-core/button.mjs';
37
+ import './components-core/container.mjs';
package/dist/index.d.ts CHANGED
@@ -1,22 +1,37 @@
1
- export { default as StackProvider } from "./providers/stack-provider";
2
- export { useUser, useStackApp } from "./lib/hooks";
3
- export { StackClientApp, StackServerApp, StackAdminApp } from "./lib/stack-app";
4
- export { default as StackHandler } from "./components-page/stack-handler";
5
- export { default as SignIn } from "./components-page/sign-in";
6
- export { default as SignUp } from "./components-page/sign-up";
7
- export { default as EmailVerification } from "./components-page/email-verification";
8
- export { default as PasswordReset } from "./components-page/password-reset";
9
- export { default as ForgotPassword } from "./components-page/forgot-password";
10
- export { default as MessageCard } from "./components/message-card";
11
- export { default as CredentialSignIn } from "./components/credential-sign-in";
12
- export { default as CredentialSignUp } from "./components/credential-sign-up";
13
- export { default as OAuthButton } from "./components/oauth-button";
14
- export { default as OAuthGroup } from "./components/oauth-group";
15
- export { default as PasswordField } from "./components/password-field";
16
- export { default as UserButton } from "./components/user-button";
17
- export { default as AccountSettings } from "./components-page/account-settings";
18
- export { useDesign } from './providers/design-provider';
19
- export { useComponents } from './providers/component-provider';
20
- export { StackTheme, ThemeConfig } from './providers/theme-provider';
21
- export { CurrentUser, Project, ServerUser, ApiKeySetFirstView, ApiKeySet } from './lib/stack-app';
22
- export * from './components-core';
1
+ export { default as StackProvider } from './providers/stack-provider.js';
2
+ export { useStackApp, useUser } from './lib/hooks.js';
3
+ export { ApiKeySet, ApiKeySetFirstView, CurrentUser, Project, ServerUser, StackAdminApp, StackClientApp, StackServerApp } from './lib/stack-app.js';
4
+ export { default as StackHandler } from './components-page/stack-handler.js';
5
+ export { default as SignIn } from './components-page/sign-in.js';
6
+ export { default as SignUp } from './components-page/sign-up.js';
7
+ export { default as EmailVerification } from './components-page/email-verification.js';
8
+ export { default as PasswordReset } from './components-page/password-reset.js';
9
+ export { default as ForgotPassword } from './components-page/forgot-password.js';
10
+ export { default as MessageCard } from './components/message-card.js';
11
+ export { default as CredentialSignIn } from './components/credential-sign-in.js';
12
+ export { default as CredentialSignUp } from './components/credential-sign-up.js';
13
+ export { default as OAuthButton } from './components/oauth-button.js';
14
+ export { default as OAuthGroup } from './components/oauth-group.js';
15
+ export { default as PasswordField } from './components/password-field.js';
16
+ export { default as UserButton } from './components/user-button.js';
17
+ export { default as AccountSettings } from './components-page/account-settings.js';
18
+ export { ColorPalette, useDesign } from './providers/design-provider.js';
19
+ export { useComponents } from './providers/component-provider.js';
20
+ export { StackTheme, ThemeConfig } from './providers/theme-provider.js';
21
+ export { Avatar, AvatarFallback, AvatarImage, Button, Card, CardContent, CardFooter, CardHeader, Collapsible, CollapsibleContent, CollapsibleTrigger, Container, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, Input, Label, Link, Popover, PopoverContent, PopoverTrigger, Separator, Skeleton, Tabs, TabsContent, TabsList, TabsTrigger, Text } from './components-core/index.js';
22
+ import 'react/jsx-runtime';
23
+ import 'react';
24
+ import '@stackframe/stack-shared';
25
+ import '@stackframe/stack-shared/dist/interface/clientInterface';
26
+ import '@stackframe/stack-shared/dist/utils/json';
27
+ import '@stackframe/stack-shared/dist/interface/adminInterface';
28
+ import '@radix-ui/react-tabs';
29
+ import '@radix-ui/react-collapsible';
30
+ import '@radix-ui/react-avatar';
31
+ import '@radix-ui/react-dropdown-menu';
32
+ import '@radix-ui/react-popover';
33
+ import 'url';
34
+ import '@radix-ui/react-label';
35
+ import '@radix-ui/react-separator';
36
+ import './components-core/button.js';
37
+ import './components-core/container.js';
package/dist/index.js CHANGED
@@ -1,21 +1,106 @@
1
- export { default as StackProvider } from "./providers/stack-provider";
2
- export { useUser, useStackApp } from "./lib/hooks";
3
- export { StackClientApp, StackServerApp, StackAdminApp } from "./lib/stack-app";
4
- export { default as StackHandler } from "./components-page/stack-handler";
5
- export { default as SignIn } from "./components-page/sign-in";
6
- export { default as SignUp } from "./components-page/sign-up";
7
- export { default as EmailVerification } from "./components-page/email-verification";
8
- export { default as PasswordReset } from "./components-page/password-reset";
9
- export { default as ForgotPassword } from "./components-page/forgot-password";
10
- export { default as MessageCard } from "./components/message-card";
11
- export { default as CredentialSignIn } from "./components/credential-sign-in";
12
- export { default as CredentialSignUp } from "./components/credential-sign-up";
13
- export { default as OAuthButton } from "./components/oauth-button";
14
- export { default as OAuthGroup } from "./components/oauth-group";
15
- export { default as PasswordField } from "./components/password-field";
16
- export { default as UserButton } from "./components/user-button";
17
- export { default as AccountSettings } from "./components-page/account-settings";
18
- export { useDesign } from './providers/design-provider';
19
- export { useComponents } from './providers/component-provider';
20
- export { StackTheme } from './providers/theme-provider';
21
- export * from './components-core';
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+
31
+ // src/index.tsx
32
+ var src_exports = {};
33
+ __export(src_exports, {
34
+ AccountSettings: () => import_account_settings.default,
35
+ CredentialSignIn: () => import_credential_sign_in.default,
36
+ CredentialSignUp: () => import_credential_sign_up.default,
37
+ EmailVerification: () => import_email_verification.default,
38
+ ForgotPassword: () => import_forgot_password.default,
39
+ MessageCard: () => import_message_card.default,
40
+ OAuthButton: () => import_oauth_button.default,
41
+ OAuthGroup: () => import_oauth_group.default,
42
+ PasswordField: () => import_password_field.default,
43
+ PasswordReset: () => import_password_reset.default,
44
+ SignIn: () => import_sign_in.default,
45
+ SignUp: () => import_sign_up.default,
46
+ StackAdminApp: () => import_stack_app.StackAdminApp,
47
+ StackClientApp: () => import_stack_app.StackClientApp,
48
+ StackHandler: () => import_stack_handler.default,
49
+ StackProvider: () => import_stack_provider.default,
50
+ StackServerApp: () => import_stack_app.StackServerApp,
51
+ StackTheme: () => import_theme_provider.StackTheme,
52
+ UserButton: () => import_user_button.default,
53
+ useComponents: () => import_component_provider.useComponents,
54
+ useDesign: () => import_design_provider.useDesign,
55
+ useStackApp: () => import_hooks.useStackApp,
56
+ useUser: () => import_hooks.useUser
57
+ });
58
+ module.exports = __toCommonJS(src_exports);
59
+ var import_stack_provider = __toESM(require("./providers/stack-provider"));
60
+ var import_hooks = require("./lib/hooks");
61
+ var import_stack_app = require("./lib/stack-app");
62
+ var import_stack_handler = __toESM(require("./components-page/stack-handler"));
63
+ var import_sign_in = __toESM(require("./components-page/sign-in"));
64
+ var import_sign_up = __toESM(require("./components-page/sign-up"));
65
+ var import_email_verification = __toESM(require("./components-page/email-verification"));
66
+ var import_password_reset = __toESM(require("./components-page/password-reset"));
67
+ var import_forgot_password = __toESM(require("./components-page/forgot-password"));
68
+ var import_message_card = __toESM(require("./components/message-card"));
69
+ var import_credential_sign_in = __toESM(require("./components/credential-sign-in"));
70
+ var import_credential_sign_up = __toESM(require("./components/credential-sign-up"));
71
+ var import_oauth_button = __toESM(require("./components/oauth-button"));
72
+ var import_oauth_group = __toESM(require("./components/oauth-group"));
73
+ var import_password_field = __toESM(require("./components/password-field"));
74
+ var import_user_button = __toESM(require("./components/user-button"));
75
+ var import_account_settings = __toESM(require("./components-page/account-settings"));
76
+ var import_design_provider = require("./providers/design-provider");
77
+ var import_component_provider = require("./providers/component-provider");
78
+ var import_theme_provider = require("./providers/theme-provider");
79
+ __reExport(src_exports, require("./components-core"), module.exports);
80
+ // Annotate the CommonJS export names for ESM import in node:
81
+ 0 && (module.exports = {
82
+ AccountSettings,
83
+ CredentialSignIn,
84
+ CredentialSignUp,
85
+ EmailVerification,
86
+ ForgotPassword,
87
+ MessageCard,
88
+ OAuthButton,
89
+ OAuthGroup,
90
+ PasswordField,
91
+ PasswordReset,
92
+ SignIn,
93
+ SignUp,
94
+ StackAdminApp,
95
+ StackClientApp,
96
+ StackHandler,
97
+ StackProvider,
98
+ StackServerApp,
99
+ StackTheme,
100
+ UserButton,
101
+ useComponents,
102
+ useDesign,
103
+ useStackApp,
104
+ useUser,
105
+ ...require("./components-core")
106
+ });
package/dist/joy.d.mts ADDED
@@ -0,0 +1,16 @@
1
+ export { StackJoyTheme } from './providers/joy-provider.mjs';
2
+ import 'react/jsx-runtime';
3
+ import '@radix-ui/react-tabs';
4
+ import '@radix-ui/react-separator';
5
+ import 'react';
6
+ import './components-core/button.mjs';
7
+ import './providers/theme-provider.mjs';
8
+ import './providers/design-provider.mjs';
9
+ import './providers/component-provider.mjs';
10
+ import '@radix-ui/react-collapsible';
11
+ import '@radix-ui/react-avatar';
12
+ import '@radix-ui/react-dropdown-menu';
13
+ import '@radix-ui/react-popover';
14
+ import 'url';
15
+ import '@radix-ui/react-label';
16
+ import './components-core/container.mjs';
package/dist/joy.d.ts CHANGED
@@ -1 +1,16 @@
1
- export { StackJoyTheme } from './providers/joy-provider';
1
+ export { StackJoyTheme } from './providers/joy-provider.js';
2
+ import 'react/jsx-runtime';
3
+ import '@radix-ui/react-tabs';
4
+ import '@radix-ui/react-separator';
5
+ import 'react';
6
+ import './components-core/button.js';
7
+ import './providers/theme-provider.js';
8
+ import './providers/design-provider.js';
9
+ import './providers/component-provider.js';
10
+ import '@radix-ui/react-collapsible';
11
+ import '@radix-ui/react-avatar';
12
+ import '@radix-ui/react-dropdown-menu';
13
+ import '@radix-ui/react-popover';
14
+ import 'url';
15
+ import '@radix-ui/react-label';
16
+ import './components-core/container.js';