@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/components/signup-organisation-form.tsx"],"sourcesContent":["\"use client\"\n\nimport {\n OrganisationBillingAddress,\n OrganisationShippingAddress,\n RegisterOrganisationRequest,\n} from \"@enadhq/enad-ts-sdk\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport React, { useEffect, useRef, useState } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\nimport { registerOrganisationAction } from \"../actions/registerOrganisationAction\"\nimport { registerUserWithoutRedirectAction } from \"../actions/registerUserWithoutRedirectAction\"\n\n// Address schema\nconst addressSchema = z.object({\n street_address: z.string().min(1, \"Street address is required\"),\n house_number: z.string().optional(),\n city: z.string().min(1, \"City is required\"),\n postal_code: z.string().min(1, \"Postal code is required\"),\n country: z.string().min(1, \"Country is required\"),\n state_province: z.string().optional(),\n phone: z.string().optional(),\n co_address: z.string().optional(),\n name: z.string().optional(),\n is_default: z.boolean().default(true),\n shipping_type: z.string().default(\"standard\"),\n})\n\n// User schema\nconst userSchema = z\n .object({\n first_name: z.string().trim().min(1, \"First name is required\"),\n last_name: z.string().trim().min(1, \"Last name is required\"),\n email: z.string().email(\"Invalid email address\").min(1, \"Email is required\"),\n password: z\n .string()\n .min(10, \"Password must be at least 10 characters\")\n .regex(/\\d/, \"Password must contain a number\"),\n confirmPassword: z.string(),\n phone_number: z.string().optional(),\n language: z.string().default(\"SV\"),\n country_code: z.string().default(\"SE\"),\n market: z.string().default(\"SE\"),\n store_group: z.string().default(\"default\"),\n allow_email_notifications: z.boolean().default(false),\n allow_phone_notifications: z.boolean().default(false),\n allow_postal_notifications: z.boolean().default(false),\n })\n .refine((data) => data.password === data.confirmPassword, {\n message: \"Passwords do not match\",\n path: [\"confirmPassword\"],\n })\n\n// Organisation schema\nconst organizationSchema = z.object({\n name: z.string().min(1, \"Organization name is required\"),\n organisation_number: z.string().min(1, \"Organization number is required\"),\n tax_id_vat_number: z.string().min(1, \"Tax ID/VAT number is required\"),\n contact_name: z.string().optional(),\n email: z.string().email(\"Invalid email address\").min(1, \"Email is required\"),\n invoice_email: z.string().email(\"Invalid email address\").optional(),\n phone: z.string().optional(),\n external_ref: z.string().optional(),\n attribute: z.string().optional(),\n credit_check: z.boolean().default(false),\n custom_fields: z.record(z.string(), z.any()).optional(),\n billing_address: z.array(addressSchema).min(1),\n})\n\n// Combined form schema\nconst formSchema = z.object({\n user: userSchema,\n organization: organizationSchema,\n shipping_address: z.array(addressSchema).min(1),\n use_billing_as_shipping: z.boolean().default(false),\n terms_accepted: z.boolean().refine((val) => val === true, {\n message: \"You must accept the terms and conditions\",\n }),\n})\n\ntype FormData = z.infer<typeof formSchema>\n\ninterface SignupOrganisationFormProps {\n title?: string\n subtitle?: string\n submitText?: string\n extraLink?: {\n href: string\n text: string\n }\n successRedirect?: string\n organisationStatus?: \"active\" | \"pending\"\n defaultMarket?: string\n defaultLanguage?: string\n defaultCountry?: string\n defaultStoreGroup?: string\n}\n\nexport const SignupOrganisationForm: React.FC<SignupOrganisationFormProps> = ({\n title = \"Create your organisation account\",\n subtitle = \"Sign up to get started\",\n submitText = \"Sign Up\",\n extraLink = { href: \"/login\", text: \"Already have an account? Sign in\" },\n organisationStatus = \"active\",\n defaultMarket = \"SE\",\n defaultLanguage = \"SV\",\n defaultCountry = \"SE\",\n defaultStoreGroup = \"default\",\n}) => {\n const [errors, setErrors] = useState<Record<string, string[]>>({})\n const [isPending, setIsPending] = useState(false)\n const [showPassword, setShowPassword] = useState(false)\n const [showConfirmPassword, setShowConfirmPassword] = useState(false)\n const [confirmMode, setConfirmMode] = useState(false)\n\n const form = useForm<FormData>({\n resolver: zodResolver(formSchema),\n defaultValues: {\n user: {\n first_name: \"\",\n last_name: \"\",\n email: \"\",\n password: \"\",\n confirmPassword: \"\",\n phone_number: \"\",\n language: defaultLanguage,\n market: defaultMarket,\n country_code: defaultCountry,\n store_group: defaultStoreGroup,\n allow_email_notifications: false,\n allow_phone_notifications: false,\n allow_postal_notifications: false,\n },\n organization: {\n name: \"\",\n organisation_number: \"\",\n tax_id_vat_number: \"\",\n contact_name: \"\",\n email: \"\",\n invoice_email: \"\",\n phone: \"\",\n external_ref: \"\",\n attribute: \"\",\n credit_check: false,\n custom_fields: {},\n billing_address: [\n {\n street_address: \"\",\n house_number: \"\",\n city: \"\",\n postal_code: \"\",\n country: defaultCountry,\n state_province: \"\",\n phone: \"\",\n co_address: \"\",\n name: \"\",\n is_default: true,\n shipping_type: \"standard\",\n },\n ],\n },\n shipping_address: [\n {\n street_address: \"\",\n house_number: \"\",\n city: \"\",\n postal_code: \"\",\n country: defaultCountry,\n state_province: \"\",\n phone: \"\",\n co_address: \"\",\n name: \"\",\n is_default: true,\n shipping_type: \"standard\",\n },\n ],\n use_billing_as_shipping: false,\n terms_accepted: false,\n },\n })\n\n const { watch, setValue } = form\n const useBillingAsShipping = watch(\"use_billing_as_shipping\")\n const billingAddress = watch(\"organization.billing_address.0\")\n const contactEmail = watch(\"user.email\")\n const contactPhone = watch(\"user.phone_number\")\n const orgNumber = watch(\"organization.organisation_number\")\n const invoiceCountry = watch(\"organization.billing_address.0.country\")\n\n // Keep track of last autofilled values\n const lastAutoOrgEmail = useRef<string | null>(null)\n const lastAutoInvoiceEmail = useRef<string | null>(null)\n const lastAutoOrgPhone = useRef<string | null>(null)\n const lastAutoVat = useRef<string | null>(null)\n\n // Update shipping address when billing address changes\n useEffect(() => {\n if (useBillingAsShipping && billingAddress) {\n setValue(\"shipping_address.0\", billingAddress)\n }\n }, [useBillingAsShipping, billingAddress, setValue])\n\n // Autofill organization email and invoice email from contact email\n useEffect(() => {\n if (!contactEmail) return\n\n const currentOrgEmail = form.getValues(\"organization.email\")\n if (!currentOrgEmail || currentOrgEmail === lastAutoOrgEmail.current) {\n setValue(\"organization.email\", contactEmail)\n lastAutoOrgEmail.current = contactEmail\n }\n\n const currentInvoiceEmail = form.getValues(\"organization.invoice_email\")\n if (!currentInvoiceEmail || currentInvoiceEmail === lastAutoInvoiceEmail.current) {\n setValue(\"organization.invoice_email\", contactEmail)\n lastAutoInvoiceEmail.current = contactEmail\n }\n }, [contactEmail, setValue, form])\n\n // Autofill organization phone from contact phone\n useEffect(() => {\n if (!contactPhone) return\n\n const currentOrgPhone = form.getValues(\"organization.phone\")\n if (!currentOrgPhone || currentOrgPhone === lastAutoOrgPhone.current) {\n setValue(\"organization.phone\", contactPhone)\n lastAutoOrgPhone.current = contactPhone\n }\n }, [contactPhone, setValue, form])\n\n // Autofill VAT number based on organisation number and invoice country\n useEffect(() => {\n const currentOrgNumber = form.getValues(\"organization.organisation_number\")\n const currentCountry = (form.getValues(\"organization.billing_address.0.country\") || \"\")\n .toString()\n .toUpperCase()\n const currentVat = form.getValues(\"organization.tax_id_vat_number\")\n\n if (!currentOrgNumber) {\n if (!currentVat || currentVat === lastAutoVat.current) {\n setValue(\"organization.tax_id_vat_number\", \"\")\n lastAutoVat.current = \"\"\n }\n return\n }\n\n const computedVat = currentCountry === \"SE\" ? `SE${currentOrgNumber}01` : currentOrgNumber\n\n if (!currentVat || currentVat === lastAutoVat.current) {\n setValue(\"organization.tax_id_vat_number\", computedVat)\n lastAutoVat.current = computedVat\n }\n }, [orgNumber, invoiceCountry, setValue, form])\n\n const onSubmit = async (values: FormData) => {\n setIsPending(true)\n setErrors({})\n\n try {\n // First register the user\n const userResult = await registerUserWithoutRedirectAction({\n firstName: values.user.first_name,\n lastName: values.user.last_name,\n email: values.user.email,\n password: values.user.password,\n phone_number: values.user.phone_number,\n language: values.user.language,\n country_code: values.user.country_code,\n market: values.user.market,\n store_group: values.user.store_group,\n allow_email_notifications: values.user.allow_email_notifications,\n allow_phone_notifications: values.user.allow_phone_notifications,\n allow_postal_notifications: values.user.allow_postal_notifications,\n status: organisationStatus,\n })\n\n if (userResult?.errors) {\n setErrors(userResult.errors)\n setIsPending(false)\n return\n }\n \n const userId = userResult?.data.id\n if (!userId) {\n setErrors({ general: [\"User registration failed. Please try again.\"] })\n setIsPending(false)\n return\n }\n\n // Then register the organisation\n const organisationData: RegisterOrganisationRequest = {\n billing_address: values.organization\n .billing_address as Partial<OrganisationBillingAddress>[],\n shipping_address: values.shipping_address as Partial<OrganisationShippingAddress>[],\n contact_name: values.organization.contact_name,\n credit_check: values.organization.credit_check,\n custom_fields: values.organization.custom_fields,\n email: values.organization.email.toLowerCase(),\n external_ref: values.organization.external_ref,\n invoice_email: values.organization.invoice_email?.toLowerCase(),\n name: values.organization.name,\n organisation_number: values.organization.organisation_number,\n phone: values.organization.phone,\n tax_id_vat_number: values.organization.tax_id_vat_number,\n user_id: userId,\n attribute_ids: values.organization.attribute ? [values.organization.attribute] : [],\n status: organisationStatus as \"active\" | \"pending\" | \"inactive\" | undefined,\n }\n\n const orgResult = await registerOrganisationAction(organisationData)\n\n if (orgResult?.error) {\n setErrors({ general: [orgResult.error] })\n setIsPending(false)\n return\n }\n\n // Success - show confirmation or redirect\n setConfirmMode(true)\n } catch (error) {\n console.error(\"Registration error:\", error)\n setErrors({ general: [\"Failed to register. Please try again.\"] })\n } finally {\n setIsPending(false)\n }\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 disabled:opacity-50 disabled:cursor-not-allowed\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 sectionTitleClasses = `text-xl font-semibold mb-4 pb-2 border-b border-(--enad-border-color)`\n\n if (confirmMode) {\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 Verify your email\n </h2>\n <p className=\"text-sm text-center text-(--enad-text-muted-color)\">\n Please check your email to verify your account.\n </p>\n </div>\n </main>\n )\n }\n\n return (\n <main className=\"flex items-center justify-center px-4 py-8\">\n <div className=\"w-full max-w-4xl 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={form.handleSubmit(onSubmit)} className=\"space-y-8\">\n {/* Contact Person Section */}\n <div className=\"space-y-4\">\n <h3 className={sectionTitleClasses}>Contact Person</h3>\n <div className=\"grid md:grid-cols-2 gap-4\">\n <div>\n <label className={labelClasses}>\n First Name <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <input\n {...form.register(\"user.first_name\")}\n className={inputBaseClasses}\n placeholder=\"John\"\n />\n {form.formState.errors.user?.first_name && (\n <p className={errorClasses}>{form.formState.errors.user.first_name.message}</p>\n )}\n </div>\n <div>\n <label className={labelClasses}>\n Last Name <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <input\n {...form.register(\"user.last_name\")}\n className={inputBaseClasses}\n placeholder=\"Doe\"\n />\n {form.formState.errors.user?.last_name && (\n <p className={errorClasses}>{form.formState.errors.user.last_name.message}</p>\n )}\n </div>\n </div>\n <div className=\"grid md:grid-cols-2 gap-4\">\n <div>\n <label className={labelClasses}>\n Email <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <input\n type=\"email\"\n {...form.register(\"user.email\")}\n className={inputBaseClasses}\n placeholder=\"you@example.com\"\n />\n {form.formState.errors.user?.email && (\n <p className={errorClasses}>{form.formState.errors.user.email.message}</p>\n )}\n </div>\n <div>\n <label className={labelClasses}>Phone Number</label>\n <input\n type=\"tel\"\n {...form.register(\"user.phone_number\")}\n className={inputBaseClasses}\n placeholder=\"+46 123 456 789\"\n />\n {form.formState.errors.user?.phone_number && (\n <p className={errorClasses}>{form.formState.errors.user.phone_number.message}</p>\n )}\n </div>\n </div>\n <div className=\"grid md:grid-cols-2 gap-4\">\n <div>\n <label className={labelClasses}>\n Password <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <div className=\"relative\">\n <input\n type={showPassword ? \"text\" : \"password\"}\n {...form.register(\"user.password\")}\n className={inputBaseClasses + \" pr-10\"}\n placeholder=\"••••••••\"\n />\n <button\n type=\"button\"\n onClick={() => setShowPassword(!showPassword)}\n className=\"absolute right-2 top-1/2 -translate-y-1/2 text-(--enad-text-muted-color)\"\n >\n {showPassword ? \"Hide\" : \"Show\"}\n </button>\n </div>\n {form.formState.errors.user?.password && (\n <p className={errorClasses}>{form.formState.errors.user.password.message}</p>\n )}\n </div>\n <div>\n <label className={labelClasses}>\n Confirm Password <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <div className=\"relative\">\n <input\n type={showConfirmPassword ? \"text\" : \"password\"}\n {...form.register(\"user.confirmPassword\")}\n className={inputBaseClasses + \" pr-10\"}\n placeholder=\"••••••••\"\n />\n <button\n type=\"button\"\n onClick={() => setShowConfirmPassword(!showConfirmPassword)}\n className=\"absolute right-2 top-1/2 -translate-y-1/2 text-(--enad-text-muted-color)\"\n >\n {showConfirmPassword ? \"Hide\" : \"Show\"}\n </button>\n </div>\n {form.formState.errors.user?.confirmPassword && (\n <p className={errorClasses}>\n {form.formState.errors.user.confirmPassword.message}\n </p>\n )}\n </div>\n </div>\n <div className=\"space-y-2\">\n <p className=\"text-sm font-medium text-(--enad-text-primary-color)\">\n Communication Preferences\n </p>\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n {...form.register(\"user.allow_email_notifications\")}\n className=\"h-4 w-4\"\n />\n <label className=\"text-sm text-(--enad-text-primary-color)\">\n Accept email notifications\n </label>\n </div>\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n {...form.register(\"user.allow_phone_notifications\")}\n className=\"h-4 w-4\"\n />\n <label className=\"text-sm text-(--enad-text-primary-color)\">\n Accept SMS notifications\n </label>\n </div>\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n {...form.register(\"user.allow_postal_notifications\")}\n className=\"h-4 w-4\"\n />\n <label className=\"text-sm text-(--enad-text-primary-color)\">\n Accept postal notifications\n </label>\n </div>\n </div>\n </div>\n\n {/* Company Information Section */}\n <div className=\"space-y-4\">\n <h3 className={sectionTitleClasses}>Company Information</h3>\n <div>\n <label className={labelClasses}>\n Company Name <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <input\n {...form.register(\"organization.name\")}\n className={inputBaseClasses}\n placeholder=\"Company Name\"\n />\n {form.formState.errors.organization?.name && (\n <p className={errorClasses}>{form.formState.errors.organization.name.message}</p>\n )}\n </div>\n <div className=\"grid md:grid-cols-2 gap-4\">\n <div>\n <label className={labelClasses}>\n Organisation Number <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <input\n {...form.register(\"organization.organisation_number\")}\n className={inputBaseClasses}\n placeholder=\"1234567890\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n form.setValue(\n \"organization.organisation_number\",\n e.target.value.replace(/\\D/g, \"\")\n )\n }}\n />\n {form.formState.errors.organization?.organisation_number && (\n <p className={errorClasses}>\n {form.formState.errors.organization.organisation_number.message}\n </p>\n )}\n </div>\n <div>\n <label className={labelClasses}>\n Tax ID/VAT Number <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <input\n {...form.register(\"organization.tax_id_vat_number\")}\n className={inputBaseClasses}\n placeholder=\"SE123456789001\"\n />\n {form.formState.errors.organization?.tax_id_vat_number && (\n <p className={errorClasses}>\n {form.formState.errors.organization.tax_id_vat_number.message}\n </p>\n )}\n </div>\n </div>\n <div className=\"grid md:grid-cols-2 gap-4\">\n <div>\n <label className={labelClasses}>\n Company Email <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <input\n type=\"email\"\n {...form.register(\"organization.email\")}\n className={inputBaseClasses}\n placeholder=\"company@example.com\"\n />\n {form.formState.errors.organization?.email && (\n <p className={errorClasses}>{form.formState.errors.organization.email.message}</p>\n )}\n </div>\n <div>\n <label className={labelClasses}>Company Phone</label>\n <input\n type=\"tel\"\n {...form.register(\"organization.phone\")}\n className={inputBaseClasses}\n placeholder=\"+46 123 456 789\"\n />\n {form.formState.errors.organization?.phone && (\n <p className={errorClasses}>{form.formState.errors.organization.phone.message}</p>\n )}\n </div>\n </div>\n <div>\n <label className={labelClasses}>Invoice Email</label>\n <input\n type=\"email\"\n {...form.register(\"organization.invoice_email\")}\n className={inputBaseClasses}\n placeholder=\"invoices@example.com\"\n />\n {form.formState.errors.organization?.invoice_email && (\n <p className={errorClasses}>\n {form.formState.errors.organization.invoice_email.message}\n </p>\n )}\n </div>\n <div className=\"grid md:grid-cols-2 gap-4\">\n <div>\n <label className={labelClasses}>Contact Name</label>\n <input\n {...form.register(\"organization.contact_name\")}\n className={inputBaseClasses}\n placeholder=\"Contact Person\"\n />\n {form.formState.errors.organization?.contact_name && (\n <p className={errorClasses}>\n {form.formState.errors.organization.contact_name.message}\n </p>\n )}\n </div>\n <div>\n <label className={labelClasses}>External Reference</label>\n <input\n {...form.register(\"organization.external_ref\")}\n className={inputBaseClasses}\n placeholder=\"External Ref\"\n />\n {form.formState.errors.organization?.external_ref && (\n <p className={errorClasses}>\n {form.formState.errors.organization.external_ref.message}\n </p>\n )}\n </div>\n </div>\n </div>\n\n {/* Billing Address Section */}\n <div className=\"space-y-4\">\n <h3 className={sectionTitleClasses}>Billing Address</h3>\n <div className=\"grid md:grid-cols-2 gap-4\">\n <div>\n <label className={labelClasses}>\n Street Address <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <input\n {...form.register(\"organization.billing_address.0.street_address\")}\n className={inputBaseClasses}\n placeholder=\"Street Address\"\n />\n {form.formState.errors.organization?.billing_address?.[0]?.street_address && (\n <p className={errorClasses}>\n {form.formState.errors.organization.billing_address[0]?.street_address?.message}\n </p>\n )}\n </div>\n <div>\n <label className={labelClasses}>House Number</label>\n <input\n {...form.register(\"organization.billing_address.0.house_number\")}\n className={inputBaseClasses}\n placeholder=\"123\"\n />\n </div>\n </div>\n <div className=\"grid md:grid-cols-2 gap-4\">\n <div>\n <label className={labelClasses}>Co Address</label>\n <input\n {...form.register(\"organization.billing_address.0.co_address\")}\n className={inputBaseClasses}\n placeholder=\"Co Address\"\n />\n </div>\n <div>\n <label className={labelClasses}>\n Postal Code <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <input\n {...form.register(\"organization.billing_address.0.postal_code\")}\n className={inputBaseClasses}\n placeholder=\"12345\"\n />\n {form.formState.errors.organization?.billing_address?.[0]?.postal_code && (\n <p className={errorClasses}>\n {form.formState.errors.organization.billing_address[0]?.postal_code?.message}\n </p>\n )}\n </div>\n </div>\n <div className=\"grid md:grid-cols-2 gap-4\">\n <div>\n <label className={labelClasses}>\n City <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <input\n {...form.register(\"organization.billing_address.0.city\")}\n className={inputBaseClasses}\n placeholder=\"City\"\n />\n {form.formState.errors.organization?.billing_address?.[0]?.city && (\n <p className={errorClasses}>\n {form.formState.errors.organization.billing_address[0]?.city?.message}\n </p>\n )}\n </div>\n <div>\n <label className={labelClasses}>\n Country <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <select\n {...form.register(\"organization.billing_address.0.country\")}\n className={inputBaseClasses}\n >\n <option value=\"SE\">Sweden</option>\n <option value=\"NO\">Norway</option>\n <option value=\"DK\">Denmark</option>\n <option value=\"FI\">Finland</option>\n </select>\n {form.formState.errors.organization?.billing_address?.[0]?.country && (\n <p className={errorClasses}>\n {form.formState.errors.organization.billing_address[0]?.country?.message}\n </p>\n )}\n </div>\n </div>\n </div>\n\n {/* Shipping Address Section */}\n <div className=\"space-y-4\">\n <h3 className={sectionTitleClasses}>Shipping Address</h3>\n <div className=\"flex items-center gap-2 mb-4\">\n <input\n type=\"checkbox\"\n {...form.register(\"use_billing_as_shipping\")}\n className=\"h-4 w-4\"\n />\n <label className=\"text-sm font-medium text-(--enad-text-primary-color)\">\n Same address as billing address\n </label>\n </div>\n {!useBillingAsShipping && (\n <>\n <div className=\"grid md:grid-cols-2 gap-4\">\n <div>\n <label className={labelClasses}>\n Street Address <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <input\n {...form.register(\"shipping_address.0.street_address\")}\n className={inputBaseClasses}\n placeholder=\"Street Address\"\n />\n {form.formState.errors.shipping_address?.[0]?.street_address && (\n <p className={errorClasses}>\n {form.formState.errors.shipping_address[0]?.street_address?.message}\n </p>\n )}\n </div>\n <div>\n <label className={labelClasses}>House Number</label>\n <input\n {...form.register(\"shipping_address.0.house_number\")}\n className={inputBaseClasses}\n placeholder=\"123\"\n />\n </div>\n </div>\n <div className=\"grid md:grid-cols-2 gap-4\">\n <div>\n <label className={labelClasses}>Co Address</label>\n <input\n {...form.register(\"shipping_address.0.co_address\")}\n className={inputBaseClasses}\n placeholder=\"Co Address\"\n />\n </div>\n <div>\n <label className={labelClasses}>\n Postal Code <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <input\n {...form.register(\"shipping_address.0.postal_code\")}\n className={inputBaseClasses}\n placeholder=\"12345\"\n />\n {form.formState.errors.shipping_address?.[0]?.postal_code && (\n <p className={errorClasses}>\n {form.formState.errors.shipping_address[0]?.postal_code?.message}\n </p>\n )}\n </div>\n </div>\n <div className=\"grid md:grid-cols-2 gap-4\">\n <div>\n <label className={labelClasses}>\n City <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <input\n {...form.register(\"shipping_address.0.city\")}\n className={inputBaseClasses}\n placeholder=\"City\"\n />\n {form.formState.errors.shipping_address?.[0]?.city && (\n <p className={errorClasses}>\n {form.formState.errors.shipping_address[0]?.city?.message}\n </p>\n )}\n </div>\n <div>\n <label className={labelClasses}>\n Country <span className=\"text-(--enad-error-color)\">*</span>\n </label>\n <select\n {...form.register(\"shipping_address.0.country\")}\n className={inputBaseClasses}\n >\n <option value=\"SE\">Sweden</option>\n <option value=\"NO\">Norway</option>\n <option value=\"DK\">Denmark</option>\n <option value=\"FI\">Finland</option>\n </select>\n {form.formState.errors.shipping_address?.[0]?.country && (\n <p className={errorClasses}>\n {form.formState.errors.shipping_address[0]?.country?.message}\n </p>\n )}\n </div>\n </div>\n </>\n )}\n </div>\n\n {/* Terms and Conditions */}\n <div className=\"flex items-center gap-2\">\n <input type=\"checkbox\" {...form.register(\"terms_accepted\")} className=\"h-4 w-4\" />\n <label className=\"text-sm text-(--enad-text-primary-color)\">\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 {form.formState.errors.terms_accepted && (\n <p className={errorClasses}>{form.formState.errors.terms_accepted.message}</p>\n )}\n\n {/* Submit Button */}\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-6\">\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,11 +0,0 @@
1
- import React__default from 'react';
2
-
3
- interface UpdatePasswordFormProps {
4
- title?: string;
5
- subtitle?: string;
6
- submitText?: string;
7
- successRedirect?: string;
8
- }
9
- declare const UpdatePasswordForm: React__default.FC<UpdatePasswordFormProps>;
10
-
11
- export { UpdatePasswordForm };
@@ -1,69 +0,0 @@
1
- "use client";
2
- import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useState } from "react";
4
- import { updatePasswordAction } from "../actions/updatePasswordAction";
5
- const UpdatePasswordForm = ({
6
- title = "Create new password",
7
- subtitle = "Enter a new password to update your account",
8
- submitText = "Update Password",
9
- successRedirect = "/login"
10
- }) => {
11
- const [errors, setErrors] = useState({});
12
- const [isPending, setIsPending] = useState(false);
13
- const token = "e";
14
- const handleSubmit = async (e) => {
15
- e.preventDefault();
16
- setIsPending(true);
17
- setErrors({});
18
- const formData = new FormData(e.currentTarget);
19
- formData.set("token", token);
20
- const res = await updatePasswordAction(formData, { redirectPath: successRedirect });
21
- if (res?.errors) {
22
- setErrors(res.errors);
23
- }
24
- setIsPending(false);
25
- };
26
- 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: [
27
- /* @__PURE__ */ jsx("h2", { className: "text-2xl font-semibold text-(--enad-text-primary-color) mb-2 text-center", children: title }),
28
- /* @__PURE__ */ jsx("p", { className: "text-(--enad-text-muted-color) text-sm text-center mb-8", children: subtitle }),
29
- /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "space-y-5", children: [
30
- /* @__PURE__ */ jsxs("div", { children: [
31
- /* @__PURE__ */ jsx(
32
- "label",
33
- {
34
- htmlFor: "password",
35
- className: "block text-sm font-medium text-(--enad-text-primary-color) mb-1",
36
- children: "Password"
37
- }
38
- ),
39
- /* @__PURE__ */ jsx(
40
- "input",
41
- {
42
- type: "password",
43
- id: "password",
44
- name: "password",
45
- required: true,
46
- placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
47
- 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"
48
- }
49
- ),
50
- errors.password && /* @__PURE__ */ jsx("p", { className: "text-(--enad-error-color) text-sm mt-1", children: errors.password.join(", ") })
51
- ] }),
52
- /* @__PURE__ */ jsx(
53
- "button",
54
- {
55
- type: "submit",
56
- disabled: isPending,
57
- 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",
58
- children: isPending ? "Updating..." : submitText
59
- }
60
- ),
61
- errors.general && /* @__PURE__ */ jsx("p", { className: "text-(--enad-error-color) text-sm mt-2 text-center", children: errors.general.join(", ") }),
62
- errors.token && /* @__PURE__ */ jsx("p", { className: "text-(--enad-error-color) text-sm mt-2 text-center", children: errors.token.join(", ") })
63
- ] })
64
- ] }) });
65
- };
66
- export {
67
- UpdatePasswordForm
68
- };
69
- //# sourceMappingURL=update-password-form.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/user/components/update-password-form.tsx"],"sourcesContent":["\"use client\"\n\nimport React, { useState, FormEvent } from \"react\"\nimport { updatePasswordAction } from \"../actions/updatePasswordAction\"\nimport { useSearchParams } from \"next/navigation\"\n\ninterface UpdatePasswordFormProps {\n title?: string\n subtitle?: string\n submitText?: string\n successRedirect?: string\n}\n\ninterface FormErrors {\n password?: string[]\n token?: string[]\n general?: string[]\n}\n\nexport const UpdatePasswordForm: React.FC<UpdatePasswordFormProps> = ({\n title = \"Create new password\",\n subtitle = \"Enter a new password to update your account\",\n submitText = \"Update Password\",\n successRedirect = \"/login\",\n}) => {\n const [errors, setErrors] = useState<FormErrors>({})\n const [isPending, setIsPending] = useState(false)\n\n // const searchParams = useSearchParams();\n const token = \"e\"\n\n const handleSubmit = async (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n setIsPending(true)\n setErrors({})\n\n const formData = new FormData(e.currentTarget)\n formData.set(\"token\", token)\n\n const res = await updatePasswordAction(formData, { redirectPath: successRedirect })\n\n if (res?.errors) {\n setErrors(res.errors)\n }\n\n setIsPending(false)\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) 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-(--enad-text-muted-color) text-sm text-center mb-8\">{subtitle}</p>\n\n <form onSubmit={handleSubmit} className=\"space-y-5\">\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 Password\n </label>\n <input\n type=\"password\"\n id=\"password\"\n name=\"password\"\n required\n placeholder=\"••••••••\"\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\"\n />\n {errors.password && (\n <p className=\"text-(--enad-error-color) text-sm mt-1\">{errors.password.join(\", \")}</p>\n )}\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 ? \"Updating...\" : 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 {errors.token && (\n <p className=\"text-(--enad-error-color) text-sm mt-2 text-center\">\n {errors.token.join(\", \")}\n </p>\n )}\n </form>\n </div>\n </main>\n )\n}\n"],"mappings":";AAmDQ,cAOE,YAPF;AAjDR,SAAgB,gBAA2B;AAC3C,SAAS,4BAA4B;AAgB9B,MAAM,qBAAwD,CAAC;AAAA,EACpE,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,aAAa;AAAA,EACb,kBAAkB;AACpB,MAAM;AACJ,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAqB,CAAC,CAAC;AACnD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAGhD,QAAM,QAAQ;AAEd,QAAM,eAAe,OAAO,MAAkC;AAC5D,MAAE,eAAe;AACjB,iBAAa,IAAI;AACjB,cAAU,CAAC,CAAC;AAEZ,UAAM,WAAW,IAAI,SAAS,EAAE,aAAa;AAC7C,aAAS,IAAI,SAAS,KAAK;AAE3B,UAAM,MAAM,MAAM,qBAAqB,UAAU,EAAE,cAAc,gBAAgB,CAAC;AAElF,QAAI,KAAK,QAAQ;AACf,gBAAU,IAAI,MAAM;AAAA,IACtB;AAEA,iBAAa,KAAK;AAAA,EACpB;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,YACX;AAAA;AAAA,QAED;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,IAAG;AAAA,YACH,MAAK;AAAA,YACL,UAAQ;AAAA,YACR,aAAY;AAAA,YACZ,WAAU;AAAA;AAAA,QACZ;AAAA,QACC,OAAO,YACN,oBAAC,OAAE,WAAU,0CAA0C,iBAAO,SAAS,KAAK,IAAI,GAAE;AAAA,SAEtF;AAAA,MAGA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,UAAU;AAAA,UACV,WAAU;AAAA,UAET,sBAAY,gBAAgB;AAAA;AAAA,MAC/B;AAAA,MAGC,OAAO,WACN,oBAAC,OAAE,WAAU,sDACV,iBAAO,QAAQ,KAAK,IAAI,GAC3B;AAAA,MAED,OAAO,SACN,oBAAC,OAAE,WAAU,sDACV,iBAAO,MAAM,KAAK,IAAI,GACzB;AAAA,OAEJ;AAAA,KACF,GACF;AAEJ;","names":[]}
@@ -1,3 +0,0 @@
1
- export { useUser } from './useUser.mjs';
2
- import '@tanstack/react-query';
3
- import '../types/user.mjs';
@@ -1,2 +0,0 @@
1
- export * from "./useUser";
2
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/user/hooks/index.ts"],"sourcesContent":["export * from \"./useUser\"\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -1,16 +0,0 @@
1
- import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { EnadUser } from '../types/user.mjs';
3
-
4
- /**
5
- * Hook to fetch the current authenticated user.
6
- * Relies on /api/user which handles token refresh automatically.
7
- */
8
- declare const useUser: () => {
9
- user: EnadUser | null;
10
- userIsSignedIn: boolean;
11
- isLoading: boolean;
12
- isFetching: boolean;
13
- refreshUser: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<EnadUser, Error>>;
14
- };
15
-
16
- export { useUser };
@@ -1,32 +0,0 @@
1
- "use client";
2
- import { useQuery } from "@tanstack/react-query";
3
- import { useEffect, useState } from "react";
4
- import { getUserAction } from "../actions/getUserAction";
5
- const useUser = () => {
6
- const [signedIn, setSignedIn] = useState(false);
7
- useEffect(() => {
8
- const isSignedIn = document.cookie.includes("user_sign_in=true");
9
- setSignedIn(isSignedIn);
10
- }, []);
11
- const userQuery = useQuery({
12
- queryKey: ["user"],
13
- queryFn: async () => {
14
- return getUserAction();
15
- },
16
- staleTime: 5 * 60 * 1e3,
17
- // Cache user for 5 minutes
18
- refetchOnMount: false,
19
- enabled: signedIn
20
- });
21
- return {
22
- user: userQuery.data ?? null,
23
- userIsSignedIn: !!userQuery.data,
24
- isLoading: userQuery.isLoading,
25
- isFetching: userQuery.isFetching,
26
- refreshUser: userQuery.refetch
27
- };
28
- };
29
- export {
30
- useUser
31
- };
32
- //# sourceMappingURL=useUser.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/user/hooks/useUser.tsx"],"sourcesContent":["\"use client\"\n\nimport { useQuery } from \"@tanstack/react-query\"\nimport { useEffect, useState } from \"react\"\nimport { getUserAction } from \"../actions/getUserAction\"\n\n/**\n * Hook to fetch the current authenticated user.\n * Relies on /api/user which handles token refresh automatically.\n */\nexport const useUser = () => {\n const [signedIn, setSignedIn] = useState(false)\n\n useEffect(() => {\n const isSignedIn = document.cookie.includes(\"user_sign_in=true\")\n setSignedIn(isSignedIn)\n }, [])\n\n const userQuery = useQuery({\n queryKey: [\"user\"],\n queryFn: async () => {\n return getUserAction()\n },\n staleTime: 5 * 60 * 1000, // Cache user for 5 minutes\n refetchOnMount: false,\n enabled: signedIn,\n })\n\n return {\n user: userQuery.data ?? null,\n userIsSignedIn: !!userQuery.data,\n isLoading: userQuery.isLoading,\n isFetching: userQuery.isFetching,\n refreshUser: userQuery.refetch,\n }\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,WAAW,gBAAgB;AACpC,SAAS,qBAAqB;AAMvB,MAAM,UAAU,MAAM;AAC3B,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAE9C,YAAU,MAAM;AACd,UAAM,aAAa,SAAS,OAAO,SAAS,mBAAmB;AAC/D,gBAAY,UAAU;AAAA,EACxB,GAAG,CAAC,CAAC;AAEL,QAAM,YAAY,SAAS;AAAA,IACzB,UAAU,CAAC,MAAM;AAAA,IACjB,SAAS,YAAY;AACnB,aAAO,cAAc;AAAA,IACvB;AAAA,IACA,WAAW,IAAI,KAAK;AAAA;AAAA,IACpB,gBAAgB;AAAA,IAChB,SAAS;AAAA,EACX,CAAC;AAED,SAAO;AAAA,IACL,MAAM,UAAU,QAAQ;AAAA,IACxB,gBAAgB,CAAC,CAAC,UAAU;AAAA,IAC5B,WAAW,UAAU;AAAA,IACrB,YAAY,UAAU;AAAA,IACtB,aAAa,UAAU;AAAA,EACzB;AACF;","names":[]}
@@ -1,202 +0,0 @@
1
- type EnadOrganisationUserListItem = {
2
- id: string;
3
- first_name: string;
4
- last_name: string;
5
- email?: string;
6
- role?: "agent" | "customer";
7
- level?: "admin" | "default";
8
- organisations?: EnadOrganisationByUser[];
9
- };
10
- type EnadOrganisationsResponse = {
11
- companies: EnadOrganisation[];
12
- page: number;
13
- total: number;
14
- total_pages?: number;
15
- };
16
- type EnadOrganisationUsersResponse = {
17
- items: EnadOrganisationUserListItem[];
18
- page: number;
19
- per_page?: number;
20
- total_items: number;
21
- total_pages: number;
22
- };
23
- type EnadOrganisationResponse = {
24
- company: EnadOrganisation;
25
- };
26
- type EnadRemoveUserFromOrganisationRequest = {
27
- id: string;
28
- user_id: string;
29
- };
30
- type EnadAddUserOrganisationRequest = {
31
- id: string;
32
- user_id: string;
33
- level: string;
34
- role: string;
35
- };
36
- type EnadOrganisation = {
37
- app_id: string;
38
- billing_address: OrganisationBillingAddress[];
39
- contact_name: string;
40
- created_at: string;
41
- credit_check: boolean;
42
- email: string;
43
- external_ref: string;
44
- invoice_email: string;
45
- id: string;
46
- name: string;
47
- organisation_number: string;
48
- status: "active" | "inactive" | "pending";
49
- phone: string;
50
- shipping_address: OrganisationShippingAddress[];
51
- store_groups: {
52
- country_of_sale: string;
53
- created_at: string;
54
- description: string;
55
- id: string;
56
- name: string;
57
- slug: string;
58
- store_type: string;
59
- updated_at: string;
60
- }[];
61
- tax_id_vat_number: string;
62
- updated_at: string;
63
- };
64
- type OrganisationShippingAddress = {
65
- city: string;
66
- co_address: string;
67
- company_id: string;
68
- company_name: string;
69
- country: string;
70
- created_at: string;
71
- house_number: string;
72
- id: string;
73
- is_default: boolean;
74
- name: string;
75
- phone: string;
76
- postal_code: string;
77
- shipping_type: string;
78
- state_province: string;
79
- street_address: string;
80
- updated_at: string;
81
- };
82
- type OrganisationBillingAddress = {
83
- city: string;
84
- co_address: string;
85
- company_id: string;
86
- company_name: string;
87
- country: string;
88
- created_at: string;
89
- house_number: string;
90
- id: string;
91
- is_default: boolean;
92
- name: string;
93
- phone: string;
94
- postal_code: string;
95
- shipping_type: string;
96
- state_province: string;
97
- street_address: string;
98
- updated_at: string;
99
- };
100
- type EnadUserResponse = {
101
- access_token: string;
102
- refresh_token: string;
103
- token_type: "Bearer";
104
- expires_in: number;
105
- user: EnadUser;
106
- };
107
- type EnadSignupResponse = EnadUser & {};
108
- type EnadCreatePasswordResetLinkResponse = {
109
- message: string;
110
- };
111
- type CreateUserRelationShipOrganisationReponse = {
112
- message: string;
113
- };
114
- type EnadDeleteUserResponse = {
115
- message: string;
116
- };
117
- type EnadCreateVerificationResponse = {
118
- message: string;
119
- };
120
- type EnadUserError = {
121
- success?: boolean;
122
- code?: number;
123
- message: "Unauthorized";
124
- details: string[] | null;
125
- };
126
- type EnadUser = {
127
- app_id: string;
128
- id: string;
129
- first_name: string;
130
- last_name: string;
131
- email: string;
132
- language: string;
133
- market: string;
134
- store_group: string | "";
135
- store_group_id: string | "";
136
- phone_number: "";
137
- additions: {
138
- voyado_id: string;
139
- };
140
- email_verified: boolean;
141
- communication_preferences: {
142
- allow_email: boolean;
143
- allow_sms: boolean;
144
- allow_postal: boolean;
145
- };
146
- address: {
147
- street: string;
148
- zip_code: string;
149
- city: string;
150
- country: string;
151
- country_code: string;
152
- };
153
- organisations: EnadOrganisationByUser[];
154
- is_super_admin?: boolean;
155
- };
156
- interface EnadOrganisationByUser extends EnadOrganisation {
157
- role?: "agent" | "customer";
158
- level?: "admin" | "default";
159
- }
160
- interface EnadUserOrganisation extends EnadUser {
161
- role?: "agent" | "customer";
162
- level?: "admin" | "default";
163
- }
164
- type EnadLoginRequest = {
165
- email: string;
166
- password: string;
167
- };
168
- type EnadResetPasswordRequest = {
169
- reset_password_token: string;
170
- password: string;
171
- };
172
- type EnadSignupRequest = {
173
- email: string;
174
- password: string;
175
- first_name: string;
176
- last_name: string;
177
- market: string;
178
- store_group: string;
179
- language: string;
180
- status: "active" | "inactive" | "pending";
181
- };
182
- type EnadUpdateUserRequest = {
183
- email: string;
184
- password: string;
185
- first_name: string;
186
- last_name: string;
187
- market: string;
188
- store_group: string;
189
- language: string;
190
- street: string;
191
- phone_number: string;
192
- postal_code: string;
193
- zip_code: string;
194
- city: string;
195
- country: string;
196
- country_code: string;
197
- allow_email_notifications: boolean;
198
- allow_phone_notifications: boolean;
199
- allow_postal_notifications: boolean;
200
- };
201
-
202
- export type { CreateUserRelationShipOrganisationReponse, EnadAddUserOrganisationRequest, EnadCreatePasswordResetLinkResponse, EnadCreateVerificationResponse, EnadDeleteUserResponse, EnadLoginRequest, EnadOrganisation, EnadOrganisationByUser, EnadOrganisationResponse, EnadOrganisationUserListItem, EnadOrganisationUsersResponse, EnadOrganisationsResponse, EnadRemoveUserFromOrganisationRequest, EnadResetPasswordRequest, EnadSignupRequest, EnadSignupResponse, EnadUpdateUserRequest, EnadUser, EnadUserError, EnadUserOrganisation, EnadUserResponse, OrganisationBillingAddress, OrganisationShippingAddress };
@@ -1 +0,0 @@
1
- //# sourceMappingURL=user.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,20 +0,0 @@
1
- declare const userCookieService: {
2
- /** Get all relevant cookies */
3
- get(): Promise<{
4
- accessToken: string | null;
5
- refreshToken: string | null;
6
- signedIn: boolean;
7
- }>;
8
- /** Set tokens and mark user as signed in */
9
- setTokens(accessToken: string, refreshToken: string): Promise<void>;
10
- /** Clear all auth-related cookies */
11
- clear(): Promise<void>;
12
- /** Set a single cookie (for flexibility) */
13
- set(name: string, value: string): Promise<void>;
14
- /** Get a single cookie value */
15
- getValue(name: string): Promise<string | null>;
16
- /** Delete a single cookie */
17
- delete(name: string): Promise<void>;
18
- };
19
-
20
- export { userCookieService };
@@ -1,51 +0,0 @@
1
- import { cookies } from "next/headers";
2
- const COOKIE_OPTIONS = {
3
- httpOnly: true,
4
- secure: process.env.NODE_ENV === "production",
5
- path: "/"
6
- // ensure cookies are available across the whole app
7
- };
8
- const userCookieService = {
9
- /** Get all relevant cookies */
10
- async get() {
11
- const store = await cookies();
12
- return {
13
- accessToken: store.get("access_token")?.value || null,
14
- refreshToken: store.get("refresh_token")?.value || null,
15
- signedIn: store.get("user_sign_in")?.value === "true"
16
- };
17
- },
18
- /** Set tokens and mark user as signed in */
19
- async setTokens(accessToken, refreshToken) {
20
- const store = await cookies();
21
- store.set("access_token", accessToken, COOKIE_OPTIONS);
22
- store.set("refresh_token", refreshToken, COOKIE_OPTIONS);
23
- store.set("user_sign_in", "true");
24
- },
25
- /** Clear all auth-related cookies */
26
- async clear() {
27
- const store = await cookies();
28
- store.delete("access_token");
29
- store.delete("refresh_token");
30
- store.delete("user_sign_in");
31
- },
32
- /** Set a single cookie (for flexibility) */
33
- async set(name, value) {
34
- const store = await cookies();
35
- store.set(name, value, COOKIE_OPTIONS);
36
- },
37
- /** Get a single cookie value */
38
- async getValue(name) {
39
- const store = await cookies();
40
- return store.get(name)?.value ?? null;
41
- },
42
- /** Delete a single cookie */
43
- async delete(name) {
44
- const store = await cookies();
45
- store.delete(name);
46
- }
47
- };
48
- export {
49
- userCookieService
50
- };
51
- //# sourceMappingURL=userCookieService.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/user/utils/userCookieService.ts"],"sourcesContent":["import { cookies } from \"next/headers\"\n\n/**\n * Centralized helper for managing authentication-related cookies.\n */\nconst COOKIE_OPTIONS = {\n httpOnly: true,\n secure: process.env.NODE_ENV === \"production\",\n path: \"/\", // ensure cookies are available across the whole app\n} as const\n\nexport const userCookieService = {\n /** Get all relevant cookies */\n async get() {\n const store = await cookies()\n\n return {\n accessToken: store.get(\"access_token\")?.value || null,\n refreshToken: store.get(\"refresh_token\")?.value || null,\n signedIn: store.get(\"user_sign_in\")?.value === \"true\",\n }\n },\n\n /** Set tokens and mark user as signed in */\n async setTokens(accessToken: string, refreshToken: string) {\n const store = await cookies()\n\n store.set(\"access_token\", accessToken, COOKIE_OPTIONS)\n store.set(\"refresh_token\", refreshToken, COOKIE_OPTIONS)\n store.set(\"user_sign_in\", \"true\")\n },\n\n /** Clear all auth-related cookies */\n async clear() {\n const store = await cookies()\n\n store.delete(\"access_token\")\n store.delete(\"refresh_token\")\n store.delete(\"user_sign_in\")\n },\n\n /** Set a single cookie (for flexibility) */\n async set(name: string, value: string) {\n const store = await cookies()\n store.set(name, value, COOKIE_OPTIONS)\n },\n\n /** Get a single cookie value */\n async getValue(name: string): Promise<string | null> {\n const store = await cookies()\n return store.get(name)?.value ?? null\n },\n\n /** Delete a single cookie */\n async delete(name: string) {\n const store = await cookies()\n store.delete(name)\n },\n}\n"],"mappings":"AAAA,SAAS,eAAe;AAKxB,MAAM,iBAAiB;AAAA,EACrB,UAAU;AAAA,EACV,QAAQ,QAAQ,IAAI,aAAa;AAAA,EACjC,MAAM;AAAA;AACR;AAEO,MAAM,oBAAoB;AAAA;AAAA,EAE/B,MAAM,MAAM;AACV,UAAM,QAAQ,MAAM,QAAQ;AAE5B,WAAO;AAAA,MACL,aAAa,MAAM,IAAI,cAAc,GAAG,SAAS;AAAA,MACjD,cAAc,MAAM,IAAI,eAAe,GAAG,SAAS;AAAA,MACnD,UAAU,MAAM,IAAI,cAAc,GAAG,UAAU;AAAA,IACjD;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,UAAU,aAAqB,cAAsB;AACzD,UAAM,QAAQ,MAAM,QAAQ;AAE5B,UAAM,IAAI,gBAAgB,aAAa,cAAc;AACrD,UAAM,IAAI,iBAAiB,cAAc,cAAc;AACvD,UAAM,IAAI,gBAAgB,MAAM;AAAA,EAClC;AAAA;AAAA,EAGA,MAAM,QAAQ;AACZ,UAAM,QAAQ,MAAM,QAAQ;AAE5B,UAAM,OAAO,cAAc;AAC3B,UAAM,OAAO,eAAe;AAC5B,UAAM,OAAO,cAAc;AAAA,EAC7B;AAAA;AAAA,EAGA,MAAM,IAAI,MAAc,OAAe;AACrC,UAAM,QAAQ,MAAM,QAAQ;AAC5B,UAAM,IAAI,MAAM,OAAO,cAAc;AAAA,EACvC;AAAA;AAAA,EAGA,MAAM,SAAS,MAAsC;AACnD,UAAM,QAAQ,MAAM,QAAQ;AAC5B,WAAO,MAAM,IAAI,IAAI,GAAG,SAAS;AAAA,EACnC;AAAA;AAAA,EAGA,MAAM,OAAO,MAAc;AACzB,UAAM,QAAQ,MAAM,QAAQ;AAC5B,UAAM,OAAO,IAAI;AAAA,EACnB;AACF;","names":[]}
@@ -1,7 +0,0 @@
1
- import { AddItemsToWishlistOptions } from '@enadhq/enad-ts-sdk';
2
-
3
- declare const addItemsToWishlistAction: (wishlistId: string, options?: AddItemsToWishlistOptions) => Promise<{
4
- message: string;
5
- }>;
6
-
7
- export { addItemsToWishlistAction };
@@ -1,20 +0,0 @@
1
- "use server";
2
- import { cookies } from "next/headers";
3
- import { withAuth } from "../../global/auth/withAuth";
4
- import { customerClient } from "../../user/clients/enad";
5
- const addItemsToWishlist = async (wishlistId, options) => {
6
- const cookieStore = await cookies();
7
- const token = cookieStore.get("access_token");
8
- const [data, error] = await customerClient.wishlist.addItemsToWishlist(
9
- token?.value || "",
10
- wishlistId,
11
- options
12
- );
13
- if (error) throw error;
14
- return data;
15
- };
16
- const addItemsToWishlistAction = (wishlistId, options) => withAuth(() => addItemsToWishlist(wishlistId, options));
17
- export {
18
- addItemsToWishlistAction
19
- };
20
- //# sourceMappingURL=addItemsToWishlistAction.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/wishlist/actions/addItemsToWishlistAction.ts"],"sourcesContent":["\"use server\"\n\nimport { AddItemsToWishlistOptions } from \"@enadhq/enad-ts-sdk\"\nimport { cookies } from \"next/headers\"\nimport { withAuth } from \"../../global/auth/withAuth\"\nimport { customerClient } from \"../../user/clients/enad\"\n\nconst addItemsToWishlist = async (wishlistId: string, options?: AddItemsToWishlistOptions) => {\n const cookieStore = await cookies()\n const token = cookieStore.get(\"access_token\")\n const [data, error] = await customerClient.wishlist.addItemsToWishlist(\n token?.value || \"\",\n wishlistId,\n options\n )\n if (error) throw error\n return data\n}\n\nexport const addItemsToWishlistAction = (wishlistId: string, options?: AddItemsToWishlistOptions) =>\n withAuth(() => addItemsToWishlist(wishlistId, options))\n"],"mappings":";AAGA,SAAS,eAAe;AACxB,SAAS,gBAAgB;AACzB,SAAS,sBAAsB;AAE/B,MAAM,qBAAqB,OAAO,YAAoB,YAAwC;AAC5F,QAAM,cAAc,MAAM,QAAQ;AAClC,QAAM,QAAQ,YAAY,IAAI,cAAc;AAC5C,QAAM,CAAC,MAAM,KAAK,IAAI,MAAM,eAAe,SAAS;AAAA,IAClD,OAAO,SAAS;AAAA,IAChB;AAAA,IACA;AAAA,EACF;AACA,MAAI,MAAO,OAAM;AACjB,SAAO;AACT;AAEO,MAAM,2BAA2B,CAAC,YAAoB,YAC3D,SAAS,MAAM,mBAAmB,YAAY,OAAO,CAAC;","names":[]}
@@ -1,6 +0,0 @@
1
- import * as _enadhq_enad_ts_sdk from '@enadhq/enad-ts-sdk';
2
- import { CreateOrGetShareTokenForWishlistOptions } from '@enadhq/enad-ts-sdk';
3
-
4
- declare const createOrGetShareTokenAction: (wishlistId: string, options?: CreateOrGetShareTokenForWishlistOptions) => Promise<_enadhq_enad_ts_sdk.WishlistShareTokenResponse>;
5
-
6
- export { createOrGetShareTokenAction };