@enadhq/enad-react-sdk 0.0.6 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/package.json +70 -18
  2. package/dist/client/cart/components/cart-drawer.d.mts +0 -19
  3. package/dist/client/cart/components/cart-drawer.mjs +0 -180
  4. package/dist/client/cart/components/cart-drawer.mjs.map +0 -1
  5. package/dist/client/cart/components/cart-trigger.d.mts +0 -5
  6. package/dist/client/cart/components/cart-trigger.mjs +0 -18
  7. package/dist/client/cart/components/cart-trigger.mjs.map +0 -1
  8. package/dist/client/cart/constants/session.d.mts +0 -3
  9. package/dist/client/cart/constants/session.mjs +0 -5
  10. package/dist/client/cart/constants/session.mjs.map +0 -1
  11. package/dist/client/cart/contexts/cart.d.mts +0 -27
  12. package/dist/client/cart/contexts/cart.mjs +0 -22
  13. package/dist/client/cart/contexts/cart.mjs.map +0 -1
  14. package/dist/client/cart/hooks/useCart.d.mts +0 -29
  15. package/dist/client/cart/hooks/useCart.mjs +0 -26
  16. package/dist/client/cart/hooks/useCart.mjs.map +0 -1
  17. package/dist/client/cart/hooks/useCartActions.d.mts +0 -26
  18. package/dist/client/cart/hooks/useCartActions.mjs +0 -58
  19. package/dist/client/cart/hooks/useCartActions.mjs.map +0 -1
  20. package/dist/client/cart/queries/addToCartQueryFn.d.mts +0 -10
  21. package/dist/client/cart/queries/addToCartQueryFn.mjs +0 -27
  22. package/dist/client/cart/queries/addToCartQueryFn.mjs.map +0 -1
  23. package/dist/client/cart/queries/getCartQueryFn.d.mts +0 -7
  24. package/dist/client/cart/queries/getCartQueryFn.mjs +0 -34
  25. package/dist/client/cart/queries/getCartQueryFn.mjs.map +0 -1
  26. package/dist/client/cart/queries/removeCartItemQueryFn.d.mts +0 -9
  27. package/dist/client/cart/queries/removeCartItemQueryFn.mjs +0 -24
  28. package/dist/client/cart/queries/removeCartItemQueryFn.mjs.map +0 -1
  29. package/dist/client/cart/queries/updateCartItemQueryFn.d.mts +0 -10
  30. package/dist/client/cart/queries/updateCartItemQueryFn.mjs +0 -27
  31. package/dist/client/cart/queries/updateCartItemQueryFn.mjs.map +0 -1
  32. package/dist/client/cart/types/cart.d.mts +0 -36
  33. package/dist/client/cart/types/cart.mjs +0 -1
  34. package/dist/client/cart/types/cart.mjs.map +0 -1
  35. package/dist/client/cart/utils/session.d.mts +0 -6
  36. package/dist/client/cart/utils/session.mjs +0 -21
  37. package/dist/client/cart/utils/session.mjs.map +0 -1
  38. package/dist/client/cms/storyblok/preview/registerStoryblokBridge.d.mts +0 -6
  39. package/dist/client/cms/storyblok/preview/registerStoryblokBridge.mjs +0 -24
  40. package/dist/client/cms/storyblok/preview/registerStoryblokBridge.mjs.map +0 -1
  41. package/dist/client/cms/storyblok/preview/storyblok-preview-syncer.d.mts +0 -22
  42. package/dist/client/cms/storyblok/preview/storyblok-preview-syncer.mjs +0 -79
  43. package/dist/client/cms/storyblok/preview/storyblok-preview-syncer.mjs.map +0 -1
  44. package/dist/client/global/auth/withAuth.d.mts +0 -6
  45. package/dist/client/global/auth/withAuth.mjs +0 -25
  46. package/dist/client/global/auth/withAuth.mjs.map +0 -1
  47. package/dist/client/global/config/index.d.mts +0 -17
  48. package/dist/client/global/config/index.mjs +0 -34
  49. package/dist/client/global/config/index.mjs.map +0 -1
  50. package/dist/client/global/constants/tags.d.mts +0 -16
  51. package/dist/client/global/constants/tags.mjs +0 -18
  52. package/dist/client/global/constants/tags.mjs.map +0 -1
  53. package/dist/client/global/providers/enad-provider.d.mts +0 -23
  54. package/dist/client/global/providers/enad-provider.mjs +0 -11
  55. package/dist/client/global/providers/enad-provider.mjs.map +0 -1
  56. package/dist/client/search/actions/searchAction.d.mts +0 -5
  57. package/dist/client/search/actions/searchAction.mjs +0 -18
  58. package/dist/client/search/actions/searchAction.mjs.map +0 -1
  59. package/dist/client/search/components/search-bar.d.mts +0 -2
  60. package/dist/client/search/components/search-bar.mjs +0 -1
  61. package/dist/client/search/components/search-bar.mjs.map +0 -1
  62. package/dist/client/search/hooks/useSearch.d.mts +0 -18
  63. package/dist/client/search/hooks/useSearch.mjs +0 -37
  64. package/dist/client/search/hooks/useSearch.mjs.map +0 -1
  65. package/dist/client/user/actions/createResetPasswordLinkAction.d.mts +0 -14
  66. package/dist/client/user/actions/createResetPasswordLinkAction.mjs +0 -30
  67. package/dist/client/user/actions/createResetPasswordLinkAction.mjs.map +0 -1
  68. package/dist/client/user/actions/getUserAction.d.mts +0 -5
  69. package/dist/client/user/actions/getUserAction.mjs +0 -19
  70. package/dist/client/user/actions/getUserAction.mjs.map +0 -1
  71. package/dist/client/user/actions/logInUserAction.d.mts +0 -15
  72. package/dist/client/user/actions/logInUserAction.mjs +0 -34
  73. package/dist/client/user/actions/logInUserAction.mjs.map +0 -1
  74. package/dist/client/user/actions/logoutUserAction.d.mts +0 -3
  75. package/dist/client/user/actions/logoutUserAction.mjs +0 -10
  76. package/dist/client/user/actions/logoutUserAction.mjs.map +0 -1
  77. package/dist/client/user/actions/registerOrganisationAction.d.mts +0 -12
  78. package/dist/client/user/actions/registerOrganisationAction.mjs +0 -18
  79. package/dist/client/user/actions/registerOrganisationAction.mjs.map +0 -1
  80. package/dist/client/user/actions/registerUserAction.d.mts +0 -18
  81. package/dist/client/user/actions/registerUserAction.mjs +0 -42
  82. package/dist/client/user/actions/registerUserAction.mjs.map +0 -1
  83. package/dist/client/user/actions/registerUserWithoutRedirectAction.d.mts +0 -44
  84. package/dist/client/user/actions/registerUserWithoutRedirectAction.mjs +0 -58
  85. package/dist/client/user/actions/registerUserWithoutRedirectAction.mjs.map +0 -1
  86. package/dist/client/user/actions/updatePasswordAction.d.mts +0 -21
  87. package/dist/client/user/actions/updatePasswordAction.mjs +0 -37
  88. package/dist/client/user/actions/updatePasswordAction.mjs.map +0 -1
  89. package/dist/client/user/api/userRoute.d.mts +0 -9
  90. package/dist/client/user/api/userRoute.mjs +0 -65
  91. package/dist/client/user/api/userRoute.mjs.map +0 -1
  92. package/dist/client/user/clients/enad.d.mts +0 -6
  93. package/dist/client/user/clients/enad.mjs +0 -19
  94. package/dist/client/user/clients/enad.mjs.map +0 -1
  95. package/dist/client/user/components/login-form.d.mts +0 -20
  96. package/dist/client/user/components/login-form.mjs +0 -113
  97. package/dist/client/user/components/login-form.mjs.map +0 -1
  98. package/dist/client/user/components/reset-password-form.d.mts +0 -15
  99. package/dist/client/user/components/reset-password-form.mjs +0 -86
  100. package/dist/client/user/components/reset-password-form.mjs.map +0 -1
  101. package/dist/client/user/components/sign-out.d.mts +0 -5
  102. package/dist/client/user/components/sign-out.mjs +0 -23
  103. package/dist/client/user/components/sign-out.mjs.map +0 -1
  104. package/dist/client/user/components/signup-form.d.mts +0 -15
  105. package/dist/client/user/components/signup-form.mjs +0 -155
  106. package/dist/client/user/components/signup-form.mjs.map +0 -1
  107. package/dist/client/user/components/signup-organisation-form.d.mts +0 -20
  108. package/dist/client/user/components/signup-organisation-form.mjs +0 -813
  109. package/dist/client/user/components/signup-organisation-form.mjs.map +0 -1
  110. package/dist/client/user/components/update-password-form.d.mts +0 -11
  111. package/dist/client/user/components/update-password-form.mjs +0 -69
  112. package/dist/client/user/components/update-password-form.mjs.map +0 -1
  113. package/dist/client/user/hooks/index.d.mts +0 -3
  114. package/dist/client/user/hooks/index.mjs +0 -2
  115. package/dist/client/user/hooks/index.mjs.map +0 -1
  116. package/dist/client/user/hooks/useUser.d.mts +0 -16
  117. package/dist/client/user/hooks/useUser.mjs +0 -32
  118. package/dist/client/user/hooks/useUser.mjs.map +0 -1
  119. package/dist/client/user/types/user.d.mts +0 -202
  120. package/dist/client/user/types/user.mjs +0 -1
  121. package/dist/client/user/types/user.mjs.map +0 -1
  122. package/dist/client/user/utils/userCookieService.d.mts +0 -20
  123. package/dist/client/user/utils/userCookieService.mjs +0 -51
  124. package/dist/client/user/utils/userCookieService.mjs.map +0 -1
  125. package/dist/client/wishlist/actions/addItemsToWishlistAction.d.mts +0 -7
  126. package/dist/client/wishlist/actions/addItemsToWishlistAction.mjs +0 -20
  127. package/dist/client/wishlist/actions/addItemsToWishlistAction.mjs.map +0 -1
  128. package/dist/client/wishlist/actions/createOrGetShareTokenAction.d.mts +0 -6
  129. package/dist/client/wishlist/actions/createOrGetShareTokenAction.mjs +0 -20
  130. package/dist/client/wishlist/actions/createOrGetShareTokenAction.mjs.map +0 -1
  131. package/dist/client/wishlist/actions/createWishlistAction.d.mts +0 -6
  132. package/dist/client/wishlist/actions/createWishlistAction.mjs +0 -16
  133. package/dist/client/wishlist/actions/createWishlistAction.mjs.map +0 -1
  134. package/dist/client/wishlist/actions/deleteItemsFromWishlistAction.d.mts +0 -7
  135. package/dist/client/wishlist/actions/deleteItemsFromWishlistAction.mjs +0 -20
  136. package/dist/client/wishlist/actions/deleteItemsFromWishlistAction.mjs.map +0 -1
  137. package/dist/client/wishlist/actions/deleteWishlistAction.d.mts +0 -5
  138. package/dist/client/wishlist/actions/deleteWishlistAction.mjs +0 -16
  139. package/dist/client/wishlist/actions/deleteWishlistAction.mjs.map +0 -1
  140. package/dist/client/wishlist/actions/getSharedWishlistAction.d.mts +0 -6
  141. package/dist/client/wishlist/actions/getSharedWishlistAction.mjs +0 -20
  142. package/dist/client/wishlist/actions/getSharedWishlistAction.mjs.map +0 -1
  143. package/dist/client/wishlist/actions/getSpecificWishlistAction.d.mts +0 -6
  144. package/dist/client/wishlist/actions/getSpecificWishlistAction.mjs +0 -20
  145. package/dist/client/wishlist/actions/getSpecificWishlistAction.mjs.map +0 -1
  146. package/dist/client/wishlist/actions/getUserWishlists.d.mts +0 -7
  147. package/dist/client/wishlist/actions/getUserWishlists.mjs +0 -25
  148. package/dist/client/wishlist/actions/getUserWishlists.mjs.map +0 -1
  149. package/dist/client/wishlist/actions/revokeShareTokenAction.d.mts +0 -5
  150. package/dist/client/wishlist/actions/revokeShareTokenAction.mjs +0 -20
  151. package/dist/client/wishlist/actions/revokeShareTokenAction.mjs.map +0 -1
  152. package/dist/client/wishlist/actions/updateWishlistAction.d.mts +0 -6
  153. package/dist/client/wishlist/actions/updateWishlistAction.mjs +0 -20
  154. package/dist/client/wishlist/actions/updateWishlistAction.mjs.map +0 -1
  155. package/dist/client/wishlist/hooks/index.d.mts +0 -3
  156. package/dist/client/wishlist/hooks/index.mjs +0 -2
  157. package/dist/client/wishlist/hooks/index.mjs.map +0 -1
  158. package/dist/client/wishlist/hooks/useWishlist.d.mts +0 -98
  159. package/dist/client/wishlist/hooks/useWishlist.mjs +0 -66
  160. package/dist/client/wishlist/hooks/useWishlist.mjs.map +0 -1
  161. package/dist/client/wishlist/hooks/useWishlistActions.d.mts +0 -48
  162. package/dist/client/wishlist/hooks/useWishlistActions.mjs +0 -101
  163. package/dist/client/wishlist/hooks/useWishlistActions.mjs.map +0 -1
  164. package/dist/client/wishlist/wishlist-drawer.d.mts +0 -19
  165. package/dist/client/wishlist/wishlist-drawer.mjs +0 -180
  166. package/dist/client/wishlist/wishlist-drawer.mjs.map +0 -1
  167. package/dist/styles.css +0 -959
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/user/clients/enad.ts"],"sourcesContent":["import { CustomerClient, ShopperClient } from \"@enadhq/enad-ts-sdk\"\nimport { enadConfig } from \"../../../client/global/config\"\n\nexport const customerClient = new CustomerClient({\n apiKey: enadConfig.server.userApiKey,\n appId: enadConfig.client.appId,\n groupId: enadConfig.client.groupId,\n})\n\nexport const shopperClient = new ShopperClient({\n apiKey: enadConfig.client.apiKey,\n appId: enadConfig.client.appId,\n groupId: enadConfig.client.groupId,\n defaultLocale: enadConfig.client.defaultLocale,\n defaultMarket: enadConfig.client.defaultMarket,\n})\n"],"mappings":"AAAA,SAAS,gBAAgB,qBAAqB;AAC9C,SAAS,kBAAkB;AAEpB,MAAM,iBAAiB,IAAI,eAAe;AAAA,EAC/C,QAAQ,WAAW,OAAO;AAAA,EAC1B,OAAO,WAAW,OAAO;AAAA,EACzB,SAAS,WAAW,OAAO;AAC7B,CAAC;AAEM,MAAM,gBAAgB,IAAI,cAAc;AAAA,EAC7C,QAAQ,WAAW,OAAO;AAAA,EAC1B,OAAO,WAAW,OAAO;AAAA,EACzB,SAAS,WAAW,OAAO;AAAA,EAC3B,eAAe,WAAW,OAAO;AAAA,EACjC,eAAe,WAAW,OAAO;AACnC,CAAC;","names":[]}
@@ -1,20 +0,0 @@
1
- import React__default from 'react';
2
-
3
- interface LoginFormProps {
4
- title?: string;
5
- subtitle?: string;
6
- emailLabel?: string;
7
- emailPlaceholder?: string;
8
- passwordLabel?: string;
9
- passwordPlaceholder?: string;
10
- forgotPasswordLink?: string;
11
- submitText?: string;
12
- signup?: {
13
- href: string;
14
- label: string;
15
- };
16
- successRedirect?: string;
17
- }
18
- declare const LoginForm: React__default.FC<LoginFormProps>;
19
-
20
- export { LoginForm };
@@ -1,113 +0,0 @@
1
- "use client";
2
- import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useState } from "react";
4
- import { logInUserAction } from "../actions/logInUserAction";
5
- const LoginForm = ({
6
- title = "Welcome back",
7
- subtitle = "Sign in to access your account",
8
- emailLabel = "Email address",
9
- emailPlaceholder = "you@example.com",
10
- passwordLabel = "Password",
11
- passwordPlaceholder = "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
12
- forgotPasswordLink = "/reset-password/start",
13
- submitText = "Sign In",
14
- signup = { href: "/signup", label: "Sign up" },
15
- successRedirect = "/"
16
- }) => {
17
- const [errors, setErrors] = useState({});
18
- const [isPending, setIsPending] = useState(false);
19
- const action = async (formData) => {
20
- setIsPending(true);
21
- setErrors({});
22
- const res = await logInUserAction(formData, { redirectPath: successRedirect });
23
- if (res?.errors) {
24
- setErrors(res.errors);
25
- }
26
- setIsPending(false);
27
- };
28
- const handleSubmit = async (e) => {
29
- e.preventDefault();
30
- const formData = new FormData(e.currentTarget);
31
- await action(formData);
32
- };
33
- return /* @__PURE__ */ jsx("main", { className: "flex items-center justify-center px-4 font-enad", children: /* @__PURE__ */ jsxs("div", { className: "w-full max-w-md bg-(--enad-surface) border border-(--enad-border-color) shadow-lg rounded-(--enad-border-radius) p-8", children: [
34
- /* @__PURE__ */ jsx("h2", { className: "text-2xl font-semibold text-(--enad-text-primary-color) mb-2 text-center", children: title }),
35
- /* @__PURE__ */ jsx("p", { className: "text-(--enad-text-muted-color) text-sm text-center mb-8", children: subtitle }),
36
- /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "space-y-5", children: [
37
- /* @__PURE__ */ jsxs("div", { children: [
38
- /* @__PURE__ */ jsx(
39
- "label",
40
- {
41
- htmlFor: "email",
42
- className: "block text-sm font-medium text-(--enad-text-primary-color) mb-1",
43
- children: emailLabel
44
- }
45
- ),
46
- /* @__PURE__ */ jsx(
47
- "input",
48
- {
49
- type: "email",
50
- id: "email",
51
- name: "email",
52
- required: true,
53
- placeholder: emailPlaceholder,
54
- className: "w-full px-4 py-2.5 border border-(--enad-border-color) rounded-(--enad-border-radius) focus:ring-2 focus:ring-(--enad-button-bg) focus:border-(--enad-button-bg) outline-none transition text-(--enad-text-primary-color) bg-(--enad-background)"
55
- }
56
- ),
57
- errors.email && /* @__PURE__ */ jsx("p", { className: "text-(--enad-error-color) text-sm mt-1", children: errors.email.join(", ") })
58
- ] }),
59
- /* @__PURE__ */ jsxs("div", { children: [
60
- /* @__PURE__ */ jsx(
61
- "label",
62
- {
63
- htmlFor: "password",
64
- className: "block text-sm font-medium text-(--enad-text-primary-color) mb-1",
65
- children: passwordLabel
66
- }
67
- ),
68
- /* @__PURE__ */ jsx(
69
- "input",
70
- {
71
- type: "password",
72
- id: "password",
73
- name: "password",
74
- required: true,
75
- placeholder: passwordPlaceholder,
76
- className: "w-full px-4 py-2.5 border border-(--enad-border-color) rounded-(--enad-border-radius) focus:ring-2 focus:ring-(--enad-button-bg) focus:border-(--enad-button-bg) outline-none transition text-(--enad-text-primary-color) bg-(--enad-background)"
77
- }
78
- ),
79
- errors.password && /* @__PURE__ */ jsx("p", { className: "text-(--enad-error-color) text-sm mt-1", children: errors.password.join(", ") })
80
- ] }),
81
- /* @__PURE__ */ jsx("div", { className: "flex justify-start text-sm", children: /* @__PURE__ */ jsx(
82
- "a",
83
- {
84
- href: forgotPasswordLink,
85
- className: "text-(--enad-link-color) hover:text-(--enad-link-hover-color) transition",
86
- children: "Forgot password?"
87
- }
88
- ) }),
89
- /* @__PURE__ */ jsx(
90
- "button",
91
- {
92
- type: "submit",
93
- disabled: isPending,
94
- className: "w-full py-2.5 bg-(--enad-button-bg) hover:bg-(--enad-button-hover-bg) text-(--enad-button-color) font-medium rounded-(--enad-border-radius) transition shadow-sm hover:shadow",
95
- children: isPending ? "Signing in..." : submitText
96
- }
97
- ),
98
- errors.general && /* @__PURE__ */ jsx("p", { className: "text-(--enad-error-color) text-sm mt-2 text-center", children: errors.general.join(", ") })
99
- ] }),
100
- signup && /* @__PURE__ */ jsx("p", { className: "text-sm text-(--enad-text-muted-color) text-center mt-2", children: /* @__PURE__ */ jsx(
101
- "a",
102
- {
103
- href: signup.href,
104
- className: "text-(--enad-link-color) hover:text-(--enad-link-hover-color) font-medium",
105
- children: signup.label
106
- }
107
- ) })
108
- ] }) });
109
- };
110
- export {
111
- LoginForm
112
- };
113
- //# sourceMappingURL=login-form.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/user/components/login-form.tsx"],"sourcesContent":["\"use client\"\n\nimport React, { useState, FormEvent } from \"react\"\nimport { logInUserAction } from \"../actions/logInUserAction\"\n\ninterface LoginFormProps {\n title?: string\n subtitle?: string\n emailLabel?: string\n emailPlaceholder?: string\n passwordLabel?: string\n passwordPlaceholder?: string\n forgotPasswordLink?: string\n submitText?: string\n signup?: {\n href: string\n label: string\n }\n successRedirect?: string\n}\n\ninterface FormErrors {\n email?: string[]\n password?: string[]\n general?: string[]\n}\n\nexport const LoginForm: React.FC<LoginFormProps> = ({\n title = \"Welcome back\",\n subtitle = \"Sign in to access your account\",\n emailLabel = \"Email address\",\n emailPlaceholder = \"you@example.com\",\n passwordLabel = \"Password\",\n passwordPlaceholder = \"••••••••\",\n forgotPasswordLink = \"/reset-password/start\",\n submitText = \"Sign In\",\n signup = { href: \"/signup\", label: \"Sign up\" },\n successRedirect = \"/\",\n}) => {\n const [errors, setErrors] = useState<FormErrors>({})\n const [isPending, setIsPending] = useState(false)\n\n const action = async (formData: FormData): Promise<void> => {\n setIsPending(true)\n setErrors({})\n\n const res = await logInUserAction(formData, { redirectPath: successRedirect })\n\n if (res?.errors) {\n setErrors(res.errors)\n }\n\n setIsPending(false)\n }\n\n const handleSubmit = async (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n const formData = new FormData(e.currentTarget)\n await action(formData)\n }\n\n return (\n <main className=\"flex items-center justify-center px-4 font-enad\">\n <div className=\"w-full max-w-md bg-(--enad-surface) border border-(--enad-border-color) shadow-lg rounded-(--enad-border-radius) p-8\">\n <h2 className=\"text-2xl font-semibold text-(--enad-text-primary-color) mb-2 text-center\">\n {title}\n </h2>\n <p className=\"text-(--enad-text-muted-color) text-sm text-center mb-8\">{subtitle}</p>\n\n <form onSubmit={handleSubmit} className=\"space-y-5\">\n {/* Email */}\n <div>\n <label\n htmlFor=\"email\"\n className=\"block text-sm font-medium text-(--enad-text-primary-color) mb-1\"\n >\n {emailLabel}\n </label>\n <input\n type=\"email\"\n id=\"email\"\n name=\"email\"\n required\n placeholder={emailPlaceholder}\n className=\"w-full px-4 py-2.5 border border-(--enad-border-color) rounded-(--enad-border-radius) focus:ring-2 focus:ring-(--enad-button-bg) focus:border-(--enad-button-bg) outline-none transition text-(--enad-text-primary-color) bg-(--enad-background)\"\n />\n {errors.email && (\n <p className=\"text-(--enad-error-color) text-sm mt-1\">{errors.email.join(\", \")}</p>\n )}\n </div>\n\n {/* Password */}\n <div>\n <label\n htmlFor=\"password\"\n className=\"block text-sm font-medium text-(--enad-text-primary-color) mb-1\"\n >\n {passwordLabel}\n </label>\n <input\n type=\"password\"\n id=\"password\"\n name=\"password\"\n required\n placeholder={passwordPlaceholder}\n className=\"w-full px-4 py-2.5 border border-(--enad-border-color) rounded-(--enad-border-radius) focus:ring-2 focus:ring-(--enad-button-bg) focus:border-(--enad-button-bg) outline-none transition text-(--enad-text-primary-color) bg-(--enad-background)\"\n />\n {errors.password && (\n <p className=\"text-(--enad-error-color) text-sm mt-1\">{errors.password.join(\", \")}</p>\n )}\n </div>\n\n {/* Forgot password */}\n <div className=\"flex justify-start text-sm\">\n <a\n href={forgotPasswordLink}\n className=\"text-(--enad-link-color) hover:text-(--enad-link-hover-color) transition\"\n >\n Forgot password?\n </a>\n </div>\n\n {/* Submit */}\n <button\n type=\"submit\"\n disabled={isPending}\n className=\"w-full py-2.5 bg-(--enad-button-bg) hover:bg-(--enad-button-hover-bg) text-(--enad-button-color) font-medium rounded-(--enad-border-radius) transition shadow-sm hover:shadow\"\n >\n {isPending ? \"Signing in...\" : submitText}\n </button>\n\n {/* General errors */}\n {errors.general && (\n <p className=\"text-(--enad-error-color) text-sm mt-2 text-center\">\n {errors.general.join(\", \")}\n </p>\n )}\n </form>\n\n {/* Signup link */}\n {signup && (\n <p className=\"text-sm text-(--enad-text-muted-color) text-center mt-2\">\n <a\n href={signup.href}\n className=\"text-(--enad-link-color) hover:text-(--enad-link-hover-color) font-medium\"\n >\n {signup.label}\n </a>\n </p>\n )}\n </div>\n </main>\n )\n}\n"],"mappings":";AAgEQ,cAOE,YAPF;AA9DR,SAAgB,gBAA2B;AAC3C,SAAS,uBAAuB;AAwBzB,MAAM,YAAsC,CAAC;AAAA,EAClD,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,aAAa;AAAA,EACb,SAAS,EAAE,MAAM,WAAW,OAAO,UAAU;AAAA,EAC7C,kBAAkB;AACpB,MAAM;AACJ,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAqB,CAAC,CAAC;AACnD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAEhD,QAAM,SAAS,OAAO,aAAsC;AAC1D,iBAAa,IAAI;AACjB,cAAU,CAAC,CAAC;AAEZ,UAAM,MAAM,MAAM,gBAAgB,UAAU,EAAE,cAAc,gBAAgB,CAAC;AAE7E,QAAI,KAAK,QAAQ;AACf,gBAAU,IAAI,MAAM;AAAA,IACtB;AAEA,iBAAa,KAAK;AAAA,EACpB;AAEA,QAAM,eAAe,OAAO,MAAkC;AAC5D,MAAE,eAAe;AACjB,UAAM,WAAW,IAAI,SAAS,EAAE,aAAa;AAC7C,UAAM,OAAO,QAAQ;AAAA,EACvB;AAEA,SACE,oBAAC,UAAK,WAAU,mDACd,+BAAC,SAAI,WAAU,wHACb;AAAA,wBAAC,QAAG,WAAU,4EACX,iBACH;AAAA,IACA,oBAAC,OAAE,WAAU,2DAA2D,oBAAS;AAAA,IAEjF,qBAAC,UAAK,UAAU,cAAc,WAAU,aAEtC;AAAA,2BAAC,SACC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,IAAG;AAAA,YACH,MAAK;AAAA,YACL,UAAQ;AAAA,YACR,aAAa;AAAA,YACb,WAAU;AAAA;AAAA,QACZ;AAAA,QACC,OAAO,SACN,oBAAC,OAAE,WAAU,0CAA0C,iBAAO,MAAM,KAAK,IAAI,GAAE;AAAA,SAEnF;AAAA,MAGA,qBAAC,SACC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,IAAG;AAAA,YACH,MAAK;AAAA,YACL,UAAQ;AAAA,YACR,aAAa;AAAA,YACb,WAAU;AAAA;AAAA,QACZ;AAAA,QACC,OAAO,YACN,oBAAC,OAAE,WAAU,0CAA0C,iBAAO,SAAS,KAAK,IAAI,GAAE;AAAA,SAEtF;AAAA,MAGA,oBAAC,SAAI,WAAU,8BACb;AAAA,QAAC;AAAA;AAAA,UACC,MAAM;AAAA,UACN,WAAU;AAAA,UACX;AAAA;AAAA,MAED,GACF;AAAA,MAGA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,UAAU;AAAA,UACV,WAAU;AAAA,UAET,sBAAY,kBAAkB;AAAA;AAAA,MACjC;AAAA,MAGC,OAAO,WACN,oBAAC,OAAE,WAAU,sDACV,iBAAO,QAAQ,KAAK,IAAI,GAC3B;AAAA,OAEJ;AAAA,IAGC,UACC,oBAAC,OAAE,WAAU,2DACX;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,OAAO;AAAA,QACb,WAAU;AAAA,QAET,iBAAO;AAAA;AAAA,IACV,GACF;AAAA,KAEJ,GACF;AAEJ;","names":[]}
@@ -1,15 +0,0 @@
1
- import React__default from 'react';
2
-
3
- interface ResetPasswordFormProps {
4
- title?: string;
5
- subtitle?: string;
6
- submitText?: string;
7
- extraLink?: {
8
- href: string;
9
- text: string;
10
- };
11
- successRedirect?: string;
12
- }
13
- declare const ResetPasswordForm: React__default.FC<ResetPasswordFormProps>;
14
-
15
- export { ResetPasswordForm };
@@ -1,86 +0,0 @@
1
- "use client";
2
- import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useState } from "react";
4
- import { createPasswordResetLinkAction } from "../actions/createResetPasswordLinkAction";
5
- const ResetPasswordForm = ({
6
- title = "Reset your password",
7
- subtitle = "Enter your email to receive reset instructions",
8
- submitText = "Send Reset Link",
9
- extraLink = { href: "/login", text: "Back to sign in" },
10
- successRedirect = "/login"
11
- }) => {
12
- const [errors, setErrors] = useState({});
13
- const [isPending, setIsPending] = useState(false);
14
- const [successMessage, setSuccessMessage] = useState("");
15
- const action = async (formData) => {
16
- setIsPending(true);
17
- setErrors({});
18
- setSuccessMessage("");
19
- const res = await createPasswordResetLinkAction(formData, { redirectPath: successRedirect });
20
- if (res?.errors) {
21
- setErrors(res.errors);
22
- } else {
23
- setSuccessMessage("Check your email for reset instructions.");
24
- }
25
- setIsPending(false);
26
- };
27
- const handleSubmit = async (e) => {
28
- e.preventDefault();
29
- const formData = new FormData(e.currentTarget);
30
- await action(formData);
31
- };
32
- const inputClasses = `
33
- w-full px-4 py-2.5 border border-(--enad-border-color)
34
- rounded-(--enad-border-radius)
35
- focus:ring-2 focus:ring-(--enad-button-bg)
36
- focus:border-(--enad-button-bg)
37
- outline-none transition
38
- bg-(--enad-background) text-(--enad-text-primary-color)
39
- `;
40
- const buttonClasses = `
41
- w-full py-2.5 bg-(--enad-button-bg)
42
- hover:bg-(--enad-button-hover-bg)
43
- text-(--enad-button-color)
44
- font-medium rounded-(--enad-border-radius)
45
- transition shadow-sm hover:shadow
46
- `;
47
- const labelClasses = `block text-sm font-medium text-(--enad-text-primary-color) mb-1`;
48
- const errorClasses = `text-(--enad-error-color) text-sm mt-1`;
49
- const successClasses = `text-(--enad-success-color) text-sm mt-2 text-center`;
50
- return /* @__PURE__ */ jsx("main", { className: "flex items-center justify-center px-4 font-enad", children: /* @__PURE__ */ jsxs("div", { className: "w-full max-w-md bg-(--enad-surface) shadow-lg p-8 border border-(--enad-border-color) rounded-(--enad-border-radius)", children: [
51
- /* @__PURE__ */ jsx("h2", { className: "text-2xl font-semibold text-(--enad-text-primary-color) mb-2 text-center", children: title }),
52
- /* @__PURE__ */ jsx("p", { className: "text-sm text-(--enad-text-muted-color) mb-8 text-center", children: subtitle }),
53
- /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "space-y-5", children: [
54
- /* @__PURE__ */ jsxs("div", { children: [
55
- /* @__PURE__ */ jsx("label", { htmlFor: "email", className: labelClasses, children: "Email" }),
56
- /* @__PURE__ */ jsx(
57
- "input",
58
- {
59
- type: "email",
60
- id: "email",
61
- name: "email",
62
- required: true,
63
- placeholder: "you@example.com",
64
- className: inputClasses
65
- }
66
- ),
67
- errors.email && /* @__PURE__ */ jsx("p", { className: errorClasses, children: errors.email.join(", ") })
68
- ] }),
69
- /* @__PURE__ */ jsx("button", { type: "submit", disabled: isPending, className: buttonClasses, children: isPending ? "Sending..." : submitText }),
70
- errors.general && /* @__PURE__ */ jsx("p", { className: errorClasses + " text-center", children: errors.general.join(", ") }),
71
- successMessage && /* @__PURE__ */ jsx("p", { className: successClasses, children: successMessage })
72
- ] }),
73
- extraLink && /* @__PURE__ */ jsx("p", { className: "text-sm text-(--enad-text-muted-color) text-center mt-4", children: /* @__PURE__ */ jsx(
74
- "a",
75
- {
76
- href: extraLink.href,
77
- className: "text-(--enad-link-color) hover:text-(--enad-link-hover-color) font-medium",
78
- children: extraLink.text
79
- }
80
- ) })
81
- ] }) });
82
- };
83
- export {
84
- ResetPasswordForm
85
- };
86
- //# sourceMappingURL=reset-password-form.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/user/components/reset-password-form.tsx"],"sourcesContent":["\"use client\"\n\nimport React, { useState, FormEvent } from \"react\"\nimport { createPasswordResetLinkAction } from \"../actions/createResetPasswordLinkAction\"\n\ninterface ResetPasswordFormProps {\n title?: string\n subtitle?: string\n submitText?: string\n extraLink?: {\n href: string\n text: string\n }\n successRedirect?: string\n}\n\ninterface FormErrors {\n email?: string[]\n general?: string[]\n}\n\nexport const ResetPasswordForm: React.FC<ResetPasswordFormProps> = ({\n title = \"Reset your password\",\n subtitle = \"Enter your email to receive reset instructions\",\n submitText = \"Send Reset Link\",\n extraLink = { href: \"/login\", text: \"Back to sign in\" },\n successRedirect = \"/login\",\n}) => {\n const [errors, setErrors] = useState<FormErrors>({})\n const [isPending, setIsPending] = useState(false)\n const [successMessage, setSuccessMessage] = useState(\"\")\n\n const action = async (formData: FormData) => {\n setIsPending(true)\n setErrors({})\n setSuccessMessage(\"\")\n\n const res = await createPasswordResetLinkAction(formData, { redirectPath: successRedirect })\n\n if (res?.errors) {\n setErrors(res.errors)\n } else {\n setSuccessMessage(\"Check your email for reset instructions.\")\n }\n\n setIsPending(false)\n }\n\n const handleSubmit = async (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n const formData = new FormData(e.currentTarget)\n await action(formData)\n }\n\n const inputClasses = `\n w-full px-4 py-2.5 border border-(--enad-border-color)\n rounded-(--enad-border-radius)\n focus:ring-2 focus:ring-(--enad-button-bg)\n focus:border-(--enad-button-bg)\n outline-none transition\n bg-(--enad-background) text-(--enad-text-primary-color)\n `\n\n const buttonClasses = `\n w-full py-2.5 bg-(--enad-button-bg)\n hover:bg-(--enad-button-hover-bg)\n text-(--enad-button-color)\n font-medium rounded-(--enad-border-radius)\n transition shadow-sm hover:shadow\n `\n\n const labelClasses = `block text-sm font-medium text-(--enad-text-primary-color) mb-1`\n const errorClasses = `text-(--enad-error-color) text-sm mt-1`\n const successClasses = `text-(--enad-success-color) text-sm mt-2 text-center`\n\n return (\n <main className=\"flex items-center justify-center px-4 font-enad\">\n <div className=\"w-full max-w-md bg-(--enad-surface) shadow-lg p-8 border border-(--enad-border-color) rounded-(--enad-border-radius)\">\n <h2 className=\"text-2xl font-semibold text-(--enad-text-primary-color) mb-2 text-center\">\n {title}\n </h2>\n <p className=\"text-sm text-(--enad-text-muted-color) mb-8 text-center\">{subtitle}</p>\n\n <form onSubmit={handleSubmit} className=\"space-y-5\">\n {/* Email */}\n <div>\n <label htmlFor=\"email\" className={labelClasses}>\n Email\n </label>\n <input\n type=\"email\"\n id=\"email\"\n name=\"email\"\n required\n placeholder=\"you@example.com\"\n className={inputClasses}\n />\n {errors.email && <p className={errorClasses}>{errors.email.join(\", \")}</p>}\n </div>\n\n {/* Submit */}\n <button type=\"submit\" disabled={isPending} className={buttonClasses}>\n {isPending ? \"Sending...\" : submitText}\n </button>\n\n {/* General error */}\n {errors.general && (\n <p className={errorClasses + \" text-center\"}>{errors.general.join(\", \")}</p>\n )}\n\n {/* Success message */}\n {successMessage && <p className={successClasses}>{successMessage}</p>}\n </form>\n\n {/* Extra Link */}\n {extraLink && (\n <p className=\"text-sm text-(--enad-text-muted-color) text-center mt-4\">\n <a\n href={extraLink.href}\n className=\"text-(--enad-link-color) hover:text-(--enad-link-hover-color) font-medium\"\n >\n {extraLink.text}\n </a>\n </p>\n )}\n </div>\n </main>\n )\n}\n"],"mappings":";AA8EQ,cAOE,YAPF;AA5ER,SAAgB,gBAA2B;AAC3C,SAAS,qCAAqC;AAkBvC,MAAM,oBAAsD,CAAC;AAAA,EAClE,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,aAAa;AAAA,EACb,YAAY,EAAE,MAAM,UAAU,MAAM,kBAAkB;AAAA,EACtD,kBAAkB;AACpB,MAAM;AACJ,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAqB,CAAC,CAAC;AACnD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,EAAE;AAEvD,QAAM,SAAS,OAAO,aAAuB;AAC3C,iBAAa,IAAI;AACjB,cAAU,CAAC,CAAC;AACZ,sBAAkB,EAAE;AAEpB,UAAM,MAAM,MAAM,8BAA8B,UAAU,EAAE,cAAc,gBAAgB,CAAC;AAE3F,QAAI,KAAK,QAAQ;AACf,gBAAU,IAAI,MAAM;AAAA,IACtB,OAAO;AACL,wBAAkB,0CAA0C;AAAA,IAC9D;AAEA,iBAAa,KAAK;AAAA,EACpB;AAEA,QAAM,eAAe,OAAO,MAAkC;AAC5D,MAAE,eAAe;AACjB,UAAM,WAAW,IAAI,SAAS,EAAE,aAAa;AAC7C,UAAM,OAAO,QAAQ;AAAA,EACvB;AAEA,QAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASrB,QAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQtB,QAAM,eAAe;AACrB,QAAM,eAAe;AACrB,QAAM,iBAAiB;AAEvB,SACE,oBAAC,UAAK,WAAU,mDACd,+BAAC,SAAI,WAAU,wHACb;AAAA,wBAAC,QAAG,WAAU,4EACX,iBACH;AAAA,IACA,oBAAC,OAAE,WAAU,2DAA2D,oBAAS;AAAA,IAEjF,qBAAC,UAAK,UAAU,cAAc,WAAU,aAEtC;AAAA,2BAAC,SACC;AAAA,4BAAC,WAAM,SAAQ,SAAQ,WAAW,cAAc,mBAEhD;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,IAAG;AAAA,YACH,MAAK;AAAA,YACL,UAAQ;AAAA,YACR,aAAY;AAAA,YACZ,WAAW;AAAA;AAAA,QACb;AAAA,QACC,OAAO,SAAS,oBAAC,OAAE,WAAW,cAAe,iBAAO,MAAM,KAAK,IAAI,GAAE;AAAA,SACxE;AAAA,MAGA,oBAAC,YAAO,MAAK,UAAS,UAAU,WAAW,WAAW,eACnD,sBAAY,eAAe,YAC9B;AAAA,MAGC,OAAO,WACN,oBAAC,OAAE,WAAW,eAAe,gBAAiB,iBAAO,QAAQ,KAAK,IAAI,GAAE;AAAA,MAIzE,kBAAkB,oBAAC,OAAE,WAAW,gBAAiB,0BAAe;AAAA,OACnE;AAAA,IAGC,aACC,oBAAC,OAAE,WAAU,2DACX;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,UAAU;AAAA,QAChB,WAAU;AAAA,QAET,oBAAU;AAAA;AAAA,IACb,GACF;AAAA,KAEJ,GACF;AAEJ;","names":[]}
@@ -1,5 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
-
3
- declare const SignOut: () => react_jsx_runtime.JSX.Element;
4
-
5
- export { SignOut };
@@ -1,23 +0,0 @@
1
- "use client";
2
- import { jsx } from "react/jsx-runtime";
3
- import { useQueryClient } from "@tanstack/react-query";
4
- import { logOutUserAction } from "../actions/logoutUserAction";
5
- const SignOut = () => {
6
- const queryClient = useQueryClient();
7
- return /* @__PURE__ */ jsx(
8
- "button",
9
- {
10
- onClick: async () => {
11
- const success = await logOutUserAction();
12
- if (success) {
13
- queryClient.setQueryData(["user"], null);
14
- }
15
- },
16
- children: "Sign out"
17
- }
18
- );
19
- };
20
- export {
21
- SignOut
22
- };
23
- //# sourceMappingURL=sign-out.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/user/components/sign-out.tsx"],"sourcesContent":["\"use client\"\n\nimport { useQueryClient } from \"@tanstack/react-query\"\nimport { logOutUserAction } from \"../actions/logoutUserAction\"\n\nexport const SignOut = () => {\n const queryClient = useQueryClient()\n\n return (\n <button\n onClick={async () => {\n const success = await logOutUserAction()\n\n if (success) {\n queryClient.setQueryData([\"user\"], null)\n }\n }}\n >\n Sign out\n </button>\n )\n}\n"],"mappings":";AASI;AAPJ,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AAE1B,MAAM,UAAU,MAAM;AAC3B,QAAM,cAAc,eAAe;AAEnC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,YAAY;AACnB,cAAM,UAAU,MAAM,iBAAiB;AAEvC,YAAI,SAAS;AACX,sBAAY,aAAa,CAAC,MAAM,GAAG,IAAI;AAAA,QACzC;AAAA,MACF;AAAA,MACD;AAAA;AAAA,EAED;AAEJ;","names":[]}
@@ -1,15 +0,0 @@
1
- import React__default from 'react';
2
-
3
- interface SignupFormProps {
4
- title?: string;
5
- subtitle?: string;
6
- submitText?: string;
7
- extraLink?: {
8
- href: string;
9
- text: string;
10
- };
11
- successRedirect: string;
12
- }
13
- declare const SignupForm: React__default.FC<SignupFormProps>;
14
-
15
- export { SignupForm };
@@ -1,155 +0,0 @@
1
- "use client";
2
- import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useState } from "react";
4
- import { registerUserAction } from "../actions/registerUserAction";
5
- const SignupForm = ({
6
- title = "Create your account",
7
- subtitle = "Sign up to get started",
8
- submitText = "Sign Up",
9
- extraLink = { href: "/login", text: "Already have an account? Sign in" },
10
- successRedirect = "/"
11
- }) => {
12
- const [errors, setErrors] = useState({});
13
- const [isPending, setIsPending] = useState(false);
14
- const action = async (formData) => {
15
- setIsPending(true);
16
- setErrors({});
17
- const res = await registerUserAction(formData, { redirectPath: successRedirect });
18
- if (res?.errors) {
19
- setErrors(res.errors);
20
- }
21
- setIsPending(false);
22
- };
23
- const handleSubmit = async (e) => {
24
- e.preventDefault();
25
- const formData = new FormData(e.currentTarget);
26
- await action(formData);
27
- };
28
- const inputBaseClasses = `
29
- w-full px-4 py-2.5
30
- border border-(--enad-border-color)
31
- rounded-(--enad-border-radius)
32
- focus:ring-2 focus:ring-(--enad-button-bg)
33
- focus:border-(--enad-button-bg)
34
- outline-none transition
35
- bg-(--enad-background)
36
- text-(--enad-text-primary-color)
37
- `;
38
- const buttonBaseClasses = `
39
- w-full py-2.5
40
- bg-(--enad-button-bg)
41
- hover:bg-(--enad-button-hover-bg)
42
- text-(--enad-button-color)
43
- font-medium rounded-(--enad-border-radius)
44
- transition shadow-sm hover:shadow
45
- `;
46
- const labelClasses = `block text-sm font-medium text-(--enad-text-primary-color) mb-1`;
47
- const checkboxLabelClasses = `ml-2 text-sm text-(--enad-text-primary-color)`;
48
- const errorClasses = `text-(--enad-error-color) text-sm mt-1`;
49
- return /* @__PURE__ */ jsx("main", { className: "flex items-center justify-center px-4", children: /* @__PURE__ */ jsxs("div", { className: "w-full max-w-md bg-(--enad-surface) shadow-lg p-8 border border-(--enad-border-color) rounded-(--enad-border-radius)", children: [
50
- /* @__PURE__ */ jsx("h2", { className: "text-2xl font-semibold mb-2 text-center text-(--enad-text-primary-color)", children: title }),
51
- /* @__PURE__ */ jsx("p", { className: "text-sm mb-8 text-center text-(--enad-text-muted-color)", children: subtitle }),
52
- /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "space-y-5", children: [
53
- /* @__PURE__ */ jsxs("div", { children: [
54
- /* @__PURE__ */ jsx("label", { htmlFor: "firstName", className: labelClasses, children: "First Name" }),
55
- /* @__PURE__ */ jsx(
56
- "input",
57
- {
58
- type: "text",
59
- id: "firstName",
60
- name: "firstName",
61
- required: true,
62
- placeholder: "John",
63
- className: inputBaseClasses
64
- }
65
- ),
66
- errors.firstName && /* @__PURE__ */ jsx("p", { className: errorClasses, children: errors.firstName.join(", ") })
67
- ] }),
68
- /* @__PURE__ */ jsxs("div", { children: [
69
- /* @__PURE__ */ jsx("label", { htmlFor: "lastName", className: labelClasses, children: "Last Name" }),
70
- /* @__PURE__ */ jsx(
71
- "input",
72
- {
73
- type: "text",
74
- id: "lastName",
75
- name: "lastName",
76
- required: true,
77
- placeholder: "Doe",
78
- className: inputBaseClasses
79
- }
80
- ),
81
- errors.lastName && /* @__PURE__ */ jsx("p", { className: errorClasses, children: errors.lastName.join(", ") })
82
- ] }),
83
- /* @__PURE__ */ jsxs("div", { children: [
84
- /* @__PURE__ */ jsx("label", { htmlFor: "email", className: labelClasses, children: "Email" }),
85
- /* @__PURE__ */ jsx(
86
- "input",
87
- {
88
- type: "email",
89
- id: "email",
90
- name: "email",
91
- required: true,
92
- placeholder: "you@example.com",
93
- className: inputBaseClasses
94
- }
95
- ),
96
- errors.email && /* @__PURE__ */ jsx("p", { className: errorClasses, children: errors.email.join(", ") })
97
- ] }),
98
- /* @__PURE__ */ jsxs("div", { children: [
99
- /* @__PURE__ */ jsx("label", { htmlFor: "password", className: labelClasses, children: "Password" }),
100
- /* @__PURE__ */ jsx(
101
- "input",
102
- {
103
- type: "password",
104
- id: "password",
105
- name: "password",
106
- required: true,
107
- placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
108
- className: inputBaseClasses
109
- }
110
- ),
111
- errors.password && /* @__PURE__ */ jsx("p", { className: errorClasses, children: errors.password.join(", ") })
112
- ] }),
113
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
114
- /* @__PURE__ */ jsx(
115
- "input",
116
- {
117
- type: "checkbox",
118
- id: "acceptTerms",
119
- name: "acceptTerms",
120
- required: true,
121
- className: "h-4 w-4 text-(--enad-button-bg) focus:ring-2 focus:ring-(--enad-button-bg) border border-(--enad-border-color) rounded transition"
122
- }
123
- ),
124
- /* @__PURE__ */ jsxs("label", { htmlFor: "acceptTerms", className: checkboxLabelClasses, children: [
125
- "I accept the",
126
- " ",
127
- /* @__PURE__ */ jsx(
128
- "a",
129
- {
130
- href: "/terms",
131
- target: "_blank",
132
- className: "text-(--enad-link-color) hover:text-(--enad-link-hover-color) hover:underline",
133
- children: "terms and conditions"
134
- }
135
- )
136
- ] })
137
- ] }),
138
- errors.acceptTerms && /* @__PURE__ */ jsx("p", { className: errorClasses, children: errors.acceptTerms.join(", ") }),
139
- /* @__PURE__ */ jsx("button", { type: "submit", disabled: isPending, className: buttonBaseClasses, children: isPending ? "Signing up..." : submitText }),
140
- errors.general && /* @__PURE__ */ jsx("p", { className: errorClasses + " mt-2 text-center", children: errors.general.join(", ") })
141
- ] }),
142
- extraLink && /* @__PURE__ */ jsx("p", { className: "text-sm text-(--enad-text-muted-color) text-center mt-2", children: /* @__PURE__ */ jsx(
143
- "a",
144
- {
145
- href: extraLink.href,
146
- className: "text-(--enad-link-color) hover:text-(--enad-link-hover-color) font-medium",
147
- children: extraLink.text
148
- }
149
- ) })
150
- ] }) });
151
- };
152
- export {
153
- SignupForm
154
- };
155
- //# sourceMappingURL=signup-form.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/user/components/signup-form.tsx"],"sourcesContent":["\"use client\"\n\nimport React, { useState, FormEvent } from \"react\"\nimport { registerUserAction } from \"../actions/registerUserAction\"\n\ninterface SignupFormProps {\n title?: string\n subtitle?: string\n submitText?: string\n extraLink?: {\n href: string\n text: string\n }\n successRedirect: string\n}\n\ninterface FormErrors {\n firstName?: string[]\n lastName?: string[]\n email?: string[]\n password?: string[]\n acceptTerms?: string[]\n general?: string[]\n}\n\nexport const SignupForm: React.FC<SignupFormProps> = ({\n title = \"Create your account\",\n subtitle = \"Sign up to get started\",\n submitText = \"Sign Up\",\n extraLink = { href: \"/login\", text: \"Already have an account? Sign in\" },\n successRedirect = \"/\",\n}) => {\n const [errors, setErrors] = useState<FormErrors>({})\n const [isPending, setIsPending] = useState(false)\n\n const action = async (formData: FormData) => {\n setIsPending(true)\n setErrors({})\n\n const res = await registerUserAction(formData, { redirectPath: successRedirect })\n\n if (res?.errors) {\n setErrors(res.errors)\n }\n\n setIsPending(false)\n }\n\n const handleSubmit = async (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n const formData = new FormData(e.currentTarget)\n await action(formData)\n }\n\n const inputBaseClasses = `\n w-full px-4 py-2.5\n border border-(--enad-border-color) \n rounded-(--enad-border-radius)\n focus:ring-2 focus:ring-(--enad-button-bg)\n focus:border-(--enad-button-bg)\n outline-none transition\n bg-(--enad-background)\n text-(--enad-text-primary-color)\n `\n\n const buttonBaseClasses = `\n w-full py-2.5\n bg-(--enad-button-bg)\n hover:bg-(--enad-button-hover-bg)\n text-(--enad-button-color)\n font-medium rounded-(--enad-border-radius)\n transition shadow-sm hover:shadow\n `\n\n const labelClasses = `block text-sm font-medium text-(--enad-text-primary-color) mb-1`\n const checkboxLabelClasses = `ml-2 text-sm text-(--enad-text-primary-color)`\n const errorClasses = `text-(--enad-error-color) text-sm mt-1`\n\n return (\n <main className=\"flex items-center justify-center px-4\">\n <div className=\"w-full max-w-md bg-(--enad-surface) shadow-lg p-8 border border-(--enad-border-color) rounded-(--enad-border-radius)\">\n <h2 className=\"text-2xl font-semibold mb-2 text-center text-(--enad-text-primary-color)\">\n {title}\n </h2>\n <p className=\"text-sm mb-8 text-center text-(--enad-text-muted-color)\">{subtitle}</p>\n\n <form onSubmit={handleSubmit} className=\"space-y-5\">\n {/* First Name */}\n <div>\n <label htmlFor=\"firstName\" className={labelClasses}>\n First Name\n </label>\n <input\n type=\"text\"\n id=\"firstName\"\n name=\"firstName\"\n required\n placeholder=\"John\"\n className={inputBaseClasses}\n />\n {errors.firstName && <p className={errorClasses}>{errors.firstName.join(\", \")}</p>}\n </div>\n\n {/* Last Name */}\n <div>\n <label htmlFor=\"lastName\" className={labelClasses}>\n Last Name\n </label>\n <input\n type=\"text\"\n id=\"lastName\"\n name=\"lastName\"\n required\n placeholder=\"Doe\"\n className={inputBaseClasses}\n />\n {errors.lastName && <p className={errorClasses}>{errors.lastName.join(\", \")}</p>}\n </div>\n\n {/* Email */}\n <div>\n <label htmlFor=\"email\" className={labelClasses}>\n Email\n </label>\n <input\n type=\"email\"\n id=\"email\"\n name=\"email\"\n required\n placeholder=\"you@example.com\"\n className={inputBaseClasses}\n />\n {errors.email && <p className={errorClasses}>{errors.email.join(\", \")}</p>}\n </div>\n\n {/* Password */}\n <div>\n <label htmlFor=\"password\" className={labelClasses}>\n Password\n </label>\n <input\n type=\"password\"\n id=\"password\"\n name=\"password\"\n required\n placeholder=\"••••••••\"\n className={inputBaseClasses}\n />\n {errors.password && <p className={errorClasses}>{errors.password.join(\", \")}</p>}\n </div>\n\n {/* Accept Terms */}\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n id=\"acceptTerms\"\n name=\"acceptTerms\"\n required\n className=\"h-4 w-4 text-(--enad-button-bg) focus:ring-2 focus:ring-(--enad-button-bg) border border-(--enad-border-color) rounded transition\"\n />\n <label htmlFor=\"acceptTerms\" className={checkboxLabelClasses}>\n I accept the{\" \"}\n <a\n href=\"/terms\"\n target=\"_blank\"\n className=\"text-(--enad-link-color) hover:text-(--enad-link-hover-color) hover:underline\"\n >\n terms and conditions\n </a>\n </label>\n </div>\n {errors.acceptTerms && <p className={errorClasses}>{errors.acceptTerms.join(\", \")}</p>}\n\n {/* Submit */}\n <button type=\"submit\" disabled={isPending} className={buttonBaseClasses}>\n {isPending ? \"Signing up...\" : submitText}\n </button>\n\n {/* General errors */}\n {errors.general && (\n <p className={errorClasses + \" mt-2 text-center\"}>{errors.general.join(\", \")}</p>\n )}\n </form>\n\n {/* Extra Link */}\n {extraLink && (\n <p className=\"text-sm text-(--enad-text-muted-color) text-center mt-2\">\n <a\n href={extraLink.href}\n className=\"text-(--enad-link-color) hover:text-(--enad-link-hover-color) font-medium\"\n >\n {extraLink.text}\n </a>\n </p>\n )}\n </div>\n </main>\n )\n}\n"],"mappings":"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","names":[]}
@@ -1,20 +0,0 @@
1
- import React__default from 'react';
2
-
3
- interface SignupOrganisationFormProps {
4
- title?: string;
5
- subtitle?: string;
6
- submitText?: string;
7
- extraLink?: {
8
- href: string;
9
- text: string;
10
- };
11
- successRedirect?: string;
12
- organisationStatus?: "active" | "pending";
13
- defaultMarket?: string;
14
- defaultLanguage?: string;
15
- defaultCountry?: string;
16
- defaultStoreGroup?: string;
17
- }
18
- declare const SignupOrganisationForm: React__default.FC<SignupOrganisationFormProps>;
19
-
20
- export { SignupOrganisationForm };