@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
@@ -1,3 +1,7 @@
1
- export default function OAuthGroup({ type, }: {
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function OAuthGroup({ type, }: {
2
4
  type: 'signin' | 'signup';
3
- }): import("react/jsx-runtime").JSX.Element;
5
+ }): react_jsx_runtime.JSX.Element;
6
+
7
+ export { OAuthGroup as default };
@@ -1,9 +1,47 @@
1
- 'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { useStackApp } from "../lib/hooks";
4
- import OAuthButton from "./oauth-button";
5
- export default function OAuthGroup({ type, }) {
6
- const stackApp = useStackApp();
7
- const project = stackApp.useProject();
8
- return (_jsx("div", { style: { gap: '16px', display: 'flex', flexDirection: 'column', alignItems: 'stretch' }, children: project.oauthProviders.filter(p => p.enabled).map(p => (_jsx(OAuthButton, { provider: p.id, type: type }, p.id))) }));
1
+ "use client";
2
+ "use strict";
3
+ "use client";
4
+ var __create = Object.create;
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __export = (target, all) => {
11
+ for (var name in all)
12
+ __defProp(target, name, { get: all[name], enumerable: true });
13
+ };
14
+ var __copyProps = (to, from, except, desc) => {
15
+ if (from && typeof from === "object" || typeof from === "function") {
16
+ for (let key of __getOwnPropNames(from))
17
+ if (!__hasOwnProp.call(to, key) && key !== except)
18
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
+ mod
29
+ ));
30
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
31
+
32
+ // src/components/oauth-group.tsx
33
+ var oauth_group_exports = {};
34
+ __export(oauth_group_exports, {
35
+ default: () => OAuthGroup
36
+ });
37
+ module.exports = __toCommonJS(oauth_group_exports);
38
+ var import_hooks = require("../lib/hooks");
39
+ var import_oauth_button = __toESM(require("./oauth-button"));
40
+ var import_jsx_runtime = require("react/jsx-runtime");
41
+ function OAuthGroup({
42
+ type
43
+ }) {
44
+ const stackApp = (0, import_hooks.useStackApp)();
45
+ const project = stackApp.useProject();
46
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { gap: "16px", display: "flex", flexDirection: "column", alignItems: "stretch" }, children: project.oauthProviders.filter((p) => p.enabled).map((p) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_oauth_button.default, { provider: p.id, type }, p.id)) });
9
47
  }
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+
3
+ declare const PasswordField: React.ForwardRefExoticComponent<React.InputHTMLAttributes<HTMLInputElement> & React.RefAttributes<HTMLInputElement>>;
4
+
5
+ export { PasswordField as default };
@@ -1,3 +1,5 @@
1
- /// <reference types="react" />
2
- declare const PasswordField: import("react").ForwardRefExoticComponent<import("react").InputHTMLAttributes<HTMLInputElement> & import("react").RefAttributes<HTMLInputElement>>;
3
- export default PasswordField;
1
+ import * as React from 'react';
2
+
3
+ declare const PasswordField: React.ForwardRefExoticComponent<React.InputHTMLAttributes<HTMLInputElement> & React.RefAttributes<HTMLInputElement>>;
4
+
5
+ export { PasswordField as default };
@@ -1,42 +1,112 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Input } from "../components-core";
4
- import { forwardRef, useRef, useState } from 'react';
5
- import { HiEye, HiEyeOff } from 'react-icons/hi';
6
- import { useDesign } from "..";
7
- const PasswordField = forwardRef(({ id, name, ...props }, ref) => {
8
- const [isOpen, setIsOpen] = useState(false);
9
- const { colors } = useDesign();
10
- const inputRef = useRef(null);
11
- const mergeRef = (node) => {
12
- if (ref) {
13
- if (typeof ref === 'function') {
14
- ref(node);
15
- }
16
- else {
17
- ref.current = node;
18
- }
19
- }
20
- inputRef.current = node;
21
- };
22
- const onClickReveal = () => {
23
- setIsOpen(!isOpen);
24
- const currentInput = inputRef.current;
25
- if (currentInput) {
26
- currentInput.focus({ preventScroll: true });
27
- }
28
- };
29
- return (_jsxs("div", { style: { position: 'relative', display: 'flex' }, children: [_jsx(Input, { id: id, ref: mergeRef, name: name, type: isOpen ? 'text' : 'password', autoComplete: "current-password", required: true, style: { flex: 1 }, ...props }), _jsx("button", { tabIndex: -1, type: "button", style: {
30
- position: 'absolute',
31
- backgroundColor: 'transparent',
32
- border: 'none',
33
- top: 0,
34
- right: 0,
35
- bottom: 0,
36
- display: 'flex',
37
- alignItems: 'center',
38
- paddingRight: '12px'
39
- }, onClick: onClickReveal, "aria-label": isOpen ? 'Mask password' : 'Reveal password', children: isOpen ? _jsx(HiEyeOff, { color: colors.secondaryColor }) : _jsx(HiEye, { color: colors.secondaryColor }) })] }));
1
+ "use client";
2
+ "use strict";
3
+ "use client";
4
+ var __create = Object.create;
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __export = (target, all) => {
11
+ for (var name in all)
12
+ __defProp(target, name, { get: all[name], enumerable: true });
13
+ };
14
+ var __copyProps = (to, from, except, desc) => {
15
+ if (from && typeof from === "object" || typeof from === "function") {
16
+ for (let key of __getOwnPropNames(from))
17
+ if (!__hasOwnProp.call(to, key) && key !== except)
18
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
+ mod
29
+ ));
30
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
31
+
32
+ // src/components/password-field.tsx
33
+ var password_field_exports = {};
34
+ __export(password_field_exports, {
35
+ default: () => password_field_default
40
36
  });
41
- PasswordField.displayName = 'PasswordField';
42
- export default PasswordField;
37
+ module.exports = __toCommonJS(password_field_exports);
38
+ var import_components_core = require("../components-core");
39
+ var import_react = require("react");
40
+ var import_hi = require("react-icons/hi");
41
+ var import__ = require("..");
42
+ var import_styled_components = __toESM(require("styled-components"));
43
+ var import_jsx_runtime = require("react/jsx-runtime");
44
+ var getIconStyle = (colors) => `
45
+ color: ${colors.light.secondaryColor};
46
+
47
+ html[data-theme='dark'] & {
48
+ color: ${colors.dark.secondaryColor};
49
+ }
50
+ `;
51
+ var StyledEyeOff = (0, import_styled_components.default)(import_hi.HiEyeOff)`${(props) => getIconStyle(props.colors)}`;
52
+ var StyledEye = (0, import_styled_components.default)(import_hi.HiEye)`${(props) => getIconStyle(props.colors)}`;
53
+ var PasswordField = (0, import_react.forwardRef)(({ id, name, ...props }, ref) => {
54
+ const [isOpen, setIsOpen] = (0, import_react.useState)(false);
55
+ const { colors } = (0, import__.useDesign)();
56
+ const inputRef = (0, import_react.useRef)(null);
57
+ const mergeRef = (node) => {
58
+ if (ref) {
59
+ if (typeof ref === "function") {
60
+ ref(node);
61
+ } else {
62
+ ref.current = node;
63
+ }
64
+ }
65
+ inputRef.current = node;
66
+ };
67
+ const onClickReveal = () => {
68
+ setIsOpen(!isOpen);
69
+ const currentInput = inputRef.current;
70
+ if (currentInput) {
71
+ currentInput.focus({ preventScroll: true });
72
+ }
73
+ };
74
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { position: "relative", display: "flex" }, children: [
75
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
76
+ import_components_core.Input,
77
+ {
78
+ id,
79
+ ref: mergeRef,
80
+ name,
81
+ type: isOpen ? "text" : "password",
82
+ autoComplete: "current-password",
83
+ required: true,
84
+ style: { flex: 1 },
85
+ ...props
86
+ }
87
+ ),
88
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
89
+ "button",
90
+ {
91
+ tabIndex: -1,
92
+ type: "button",
93
+ style: {
94
+ position: "absolute",
95
+ backgroundColor: "transparent",
96
+ border: "none",
97
+ top: 0,
98
+ right: 0,
99
+ bottom: 0,
100
+ display: "flex",
101
+ alignItems: "center",
102
+ paddingRight: "12px"
103
+ },
104
+ onClick: onClickReveal,
105
+ "aria-label": isOpen ? "Mask password" : "Reveal password",
106
+ children: isOpen ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StyledEyeOff, { colors }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StyledEye, { colors })
107
+ }
108
+ )
109
+ ] });
110
+ });
111
+ PasswordField.displayName = "PasswordField";
112
+ var password_field_default = PasswordField;
@@ -0,0 +1,8 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function PasswordResetInner({ code, fullPage }: {
4
+ code: string;
5
+ fullPage?: boolean;
6
+ }): react_jsx_runtime.JSX.Element;
7
+
8
+ export { PasswordResetInner as default };
@@ -1,4 +1,8 @@
1
- export default function PasswordResetInner({ code, fullPage }: {
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function PasswordResetInner({ code, fullPage }: {
2
4
  code: string;
3
5
  fullPage?: boolean;
4
- }): import("react/jsx-runtime").JSX.Element;
6
+ }): react_jsx_runtime.JSX.Element;
7
+
8
+ export { PasswordResetInner as default };
@@ -1,61 +1,123 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useState } from "react";
4
- import { getPasswordError } from "@stackframe/stack-shared/dist/helpers/password";
5
- import { useStackApp } from "..";
6
- import PasswordField from "./password-field";
7
- import FormWarningText from "./form-warning";
8
- import RedirectMessageCard from "./redirect-message-card";
9
- import MessageCard from "./message-card";
10
- import CardFrame from "./card-frame";
11
- import { Button, Label, Text } from "../components-core";
12
- export default function PasswordResetInner({ code, fullPage = false }) {
13
- const [password, setPassword] = useState('');
14
- const [passwordError, setPasswordError] = useState('');
15
- const [passwordRepeat, setPasswordRepeat] = useState('');
16
- const [passwordRepeatError, setPasswordRepeatError] = useState('');
17
- const [finished, setFinished] = useState(false);
18
- const [resetError, setResetError] = useState(false);
19
- const stackApp = useStackApp();
20
- const onSubmit = async () => {
21
- if (!password) {
22
- setPasswordError('Please enter your password');
23
- return;
24
- }
25
- if (!passwordRepeat) {
26
- setPasswordRepeatError('Please repeat your password');
27
- return;
28
- }
29
- if (password !== passwordRepeat) {
30
- setPasswordRepeatError('Passwords do not match');
31
- return;
32
- }
33
- const passwordError = getPasswordError(password);
34
- if (passwordError) {
35
- setPasswordError(passwordError.message);
36
- return;
37
- }
38
- const errorCode = await stackApp.resetPassword({ password, code });
39
- // this should not happen, the outer component should verify the code before rendering this component
40
- if (errorCode) {
41
- setResetError(true);
42
- return;
43
- }
44
- setFinished(true);
45
- };
46
- if (finished) {
47
- return _jsx(RedirectMessageCard, { type: 'passwordReset', fullPage: fullPage });
1
+ "use client";
2
+ "use strict";
3
+ "use client";
4
+ var __create = Object.create;
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __export = (target, all) => {
11
+ for (var name in all)
12
+ __defProp(target, name, { get: all[name], enumerable: true });
13
+ };
14
+ var __copyProps = (to, from, except, desc) => {
15
+ if (from && typeof from === "object" || typeof from === "function") {
16
+ for (let key of __getOwnPropNames(from))
17
+ if (!__hasOwnProp.call(to, key) && key !== except)
18
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
+ mod
29
+ ));
30
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
31
+
32
+ // src/components/password-reset-inner.tsx
33
+ var password_reset_inner_exports = {};
34
+ __export(password_reset_inner_exports, {
35
+ default: () => PasswordResetInner
36
+ });
37
+ module.exports = __toCommonJS(password_reset_inner_exports);
38
+ var import_react = require("react");
39
+ var import_password = require("@stackframe/stack-shared/dist/helpers/password");
40
+ var import__ = require("..");
41
+ var import_password_field = __toESM(require("./password-field"));
42
+ var import_form_warning = __toESM(require("./form-warning"));
43
+ var import_redirect_message_card = __toESM(require("./redirect-message-card"));
44
+ var import_message_card = __toESM(require("./message-card"));
45
+ var import_card_frame = __toESM(require("./card-frame"));
46
+ var import_components_core = require("../components-core");
47
+ var import_jsx_runtime = require("react/jsx-runtime");
48
+ function PasswordResetInner({ code, fullPage = false }) {
49
+ const [password, setPassword] = (0, import_react.useState)("");
50
+ const [passwordError, setPasswordError] = (0, import_react.useState)("");
51
+ const [passwordRepeat, setPasswordRepeat] = (0, import_react.useState)("");
52
+ const [passwordRepeatError, setPasswordRepeatError] = (0, import_react.useState)("");
53
+ const [finished, setFinished] = (0, import_react.useState)(false);
54
+ const [resetError, setResetError] = (0, import_react.useState)(false);
55
+ const stackApp = (0, import__.useStackApp)();
56
+ const onSubmit = async () => {
57
+ if (!password) {
58
+ setPasswordError("Please enter your password");
59
+ return;
48
60
  }
49
- if (resetError) {
50
- return (_jsx(MessageCard, { title: "Failed to reset password", fullPage: fullPage, children: _jsx(Text, { children: "Failed to reset password. Please request a new password reset link" }) }));
61
+ if (!passwordRepeat) {
62
+ setPasswordRepeatError("Please repeat your password");
63
+ return;
51
64
  }
52
- return (_jsxs(CardFrame, { fullPage: fullPage, children: [_jsx("div", { style: { textAlign: 'center', marginBottom: '1.5rem' }, children: _jsx(Text, { size: "xl", as: 'h2', children: "Reset Your Password" }) }), _jsxs("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'stretch' }, children: [_jsx(Label, { htmlFor: "password", children: "New Password" }), _jsx(PasswordField, { id: "password", name: "password", value: password, onChange: (e) => {
53
- setPassword(e.target.value);
54
- setPasswordError('');
55
- setPasswordRepeatError('');
56
- } }), _jsx(FormWarningText, { text: passwordError }), _jsx(Label, { htmlFor: "repeat-password", style: { marginTop: "1rem" }, children: "Repeat New Password" }), _jsx(PasswordField, { id: "repeat-password", name: "repeat-password", value: passwordRepeat, onChange: (e) => {
57
- setPasswordRepeat(e.target.value);
58
- setPasswordError('');
59
- setPasswordRepeatError('');
60
- } }), _jsx(FormWarningText, { text: passwordRepeatError }), _jsx(Button, { style: { marginTop: '1.5rem' }, onClick: () => onSubmit(), children: "Reset Password" })] })] }));
65
+ if (password !== passwordRepeat) {
66
+ setPasswordRepeatError("Passwords do not match");
67
+ return;
68
+ }
69
+ const passwordError2 = (0, import_password.getPasswordError)(password);
70
+ if (passwordError2) {
71
+ setPasswordError(passwordError2.message);
72
+ return;
73
+ }
74
+ const errorCode = await stackApp.resetPassword({ password, code });
75
+ if (errorCode) {
76
+ setResetError(true);
77
+ return;
78
+ }
79
+ setFinished(true);
80
+ };
81
+ if (finished) {
82
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_redirect_message_card.default, { type: "passwordReset", fullPage });
83
+ }
84
+ if (resetError) {
85
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_message_card.default, { title: "Failed to reset password", fullPage, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { children: "Failed to reset password. Please request a new password reset link" }) });
86
+ }
87
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_card_frame.default, { fullPage, children: [
88
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { textAlign: "center", marginBottom: "1.5rem" }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { size: "xl", as: "h2", children: "Reset Your Password" }) }),
89
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", flexDirection: "column", alignItems: "stretch" }, children: [
90
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Label, { htmlFor: "password", children: "New Password" }),
91
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
92
+ import_password_field.default,
93
+ {
94
+ id: "password",
95
+ name: "password",
96
+ value: password,
97
+ onChange: (e) => {
98
+ setPassword(e.target.value);
99
+ setPasswordError("");
100
+ setPasswordRepeatError("");
101
+ }
102
+ }
103
+ ),
104
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_form_warning.default, { text: passwordError }),
105
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Label, { htmlFor: "repeat-password", style: { marginTop: "1rem" }, children: "Repeat New Password" }),
106
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
107
+ import_password_field.default,
108
+ {
109
+ id: "repeat-password",
110
+ name: "repeat-password",
111
+ value: passwordRepeat,
112
+ onChange: (e) => {
113
+ setPasswordRepeat(e.target.value);
114
+ setPasswordError("");
115
+ setPasswordRepeatError("");
116
+ }
117
+ }
118
+ ),
119
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_form_warning.default, { text: passwordRepeatError }),
120
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Button, { style: { marginTop: "1.5rem" }, onClick: () => onSubmit(), children: "Reset Password" })
121
+ ] })
122
+ ] });
61
123
  }
@@ -0,0 +1,8 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function RedirectMessageCard({ type, fullPage, }: {
4
+ type: 'signedIn' | 'signedOut' | 'emailSent' | 'passwordReset' | 'emailVerified';
5
+ fullPage?: boolean;
6
+ }): react_jsx_runtime.JSX.Element;
7
+
8
+ export { RedirectMessageCard as default };
@@ -1,4 +1,8 @@
1
- export default function RedirectMessageCard({ type, fullPage, }: {
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function RedirectMessageCard({ type, fullPage, }: {
2
4
  type: 'signedIn' | 'signedOut' | 'emailSent' | 'passwordReset' | 'emailVerified';
3
5
  fullPage?: boolean;
4
- }): import("react/jsx-runtime").JSX.Element;
6
+ }): react_jsx_runtime.JSX.Element;
7
+
8
+ export { RedirectMessageCard as default };