@nextblock-cms/ecom 0.12.13 → 0.12.14
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.
- package/lib/components/CustomerProfileForm.cjs.js +1 -1
- package/lib/components/CustomerProfileForm.es.js +185 -238
- package/lib/pages/cms/orders/types.d.ts +0 -1
- package/lib/server-actions/customer-actions.cjs.js +1 -1
- package/lib/server-actions/customer-actions.d.ts +0 -1
- package/lib/server-actions/customer-actions.es.js +12 -13
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),_=require("react"),K=require("react-hook-form"),Q=require("./AccountNavigationMenu.cjs.js"),S=require("@nextblock-cms/ui/avatar"),Y=require("@nextblock-cms/ui/badge"),T=require("@nextblock-cms/ui/button"),o=require("@nextblock-cms/ui/card"),Z=require("@nextblock-cms/ui/checkbox"),i=require("@nextblock-cms/ui/input"),a=require("@nextblock-cms/ui/label"),x=require("@nextblock-cms/ui/select"),D=require("@nextblock-cms/ui/separator"),ee=require("../server-actions/customer-actions.cjs.js"),C=require("../customer.cjs.js"),B=require("@nextblock-cms/db"),u=require("lucide-react"),P=require("@nextblock-cms/utils"),H=require("../countries.cjs.js");function se(s){return s?s.startsWith("http")?s:process.env.NEXT_PUBLIC_R2_BASE_URL?`${process.env.NEXT_PUBLIC_R2_BASE_URL}/${s}`:process.env.NEXT_PUBLIC_SUPABASE_URL?`${process.env.NEXT_PUBLIC_SUPABASE_URL}/storage/v1/object/public/media/${s}`:s:null}function I(s){return{company_name:s?.company_name||"",recipient_name:s?.recipient_name||"",line1:s?.line1||"",line2:s?.line2||"",city:s?.city||"",state:s?.state||"",postal_code:s?.postal_code||"",country_code:H.normalizeCountryCode(s?.country_code)||"CA"}}function G({prefix:s,title:j,register:c}){const{t:n}=P.useTranslations(),w=n("company_name")==="company_name"?"Company name":n("company_name");return e.jsxs("div",{className:"space-y-4 rounded-xl border p-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-medium",children:j}),e.jsx("p",{className:"text-sm text-muted-foreground",children:n("profile_address_defaults_help")})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(a.Label,{htmlFor:`${s}-company_name`,children:w}),e.jsx(i.Input,{id:`${s}-company_name`,...c(`${s}.company_name`)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(a.Label,{htmlFor:`${s}-recipient_name`,children:n("full_name")}),e.jsx(i.Input,{id:`${s}-recipient_name`,...c(`${s}.recipient_name`)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(a.Label,{htmlFor:`${s}-country_code`,children:n("country")}),e.jsx("select",{id:`${s}-country_code`,className:"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",...c(`${s}.country_code`),children:H.countries.map(g=>e.jsx("option",{value:g.code,children:g.name},g.code))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(a.Label,{htmlFor:`${s}-line1`,children:n("address_line_1")}),e.jsx(i.Input,{id:`${s}-line1`,...c(`${s}.line1`)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(a.Label,{htmlFor:`${s}-line2`,children:n("address_line_2")}),e.jsx(i.Input,{id:`${s}-line2`,...c(`${s}.line2`)})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(a.Label,{htmlFor:`${s}-city`,children:n("city")}),e.jsx(i.Input,{id:`${s}-city`,...c(`${s}.city`)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(a.Label,{htmlFor:`${s}-state`,children:n("state_province")}),e.jsx(i.Input,{id:`${s}-state`,...c(`${s}.state`)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(a.Label,{htmlFor:`${s}-postal_code`,children:n("postal_zip_code")}),e.jsx(i.Input,{id:`${s}-postal_code`,...c(`${s}.postal_code`)})]})]})]})}function le({initialData:s,MediaPickerComponent:j,isAdmin:c,email:n,accountLinks:w,onAction:g,initialSuccessMessage:f}){const{t:l}=P.useTranslations(),[E,F]=_.useState(!1),[L,y]=_.useState(f?{type:"success",text:f}:null),[A,V]=_.useState(!1),[U,X]=_.useState(null),z=s?.use_billing_for_shipping??(!s?.shipping_address||C.addressesMatch(s?.billing_address,s?.shipping_address)),{register:p,handleSubmit:M,setValue:m,getValues:$,watch:v,reset:q}=K.useForm({defaultValues:{full_name:s?.full_name||"",avatar_url:s?.avatar_url||"",website:s?.website||"",github_username:s?.github_username||"",phone:s?.phone||"",role:s?.role,use_billing_for_shipping:z,billing_address:I(s?.billing_address),shipping_address:I(s?.shipping_address)}});_.useEffect(()=>{s&&q({full_name:s.full_name||"",avatar_url:s.avatar_url||"",website:s.website||"",github_username:s.github_username||"",phone:s.phone||"",role:s.role,use_billing_for_shipping:s.use_billing_for_shipping??(!s.shipping_address||C.addressesMatch(s.billing_address,s.shipping_address)),billing_address:I(s.billing_address),shipping_address:I(s.shipping_address)})},[s,q]),_.useEffect(()=>{f&&y({type:"success",text:f})},[f]),_.useEffect(()=>{const r=B.createClient();(async()=>{const{data:{user:h}}=await r.auth.getUser();if(!h)return;const t=h.identities?.find(b=>b.provider==="github");if(t){V(!0);const b=t.identity_data?.email||(h.app_metadata.provider==="github"?h.email:null);if(X(b),!$("website")){const N=t.identity_data?.custom_claims?.blog||t.identity_data?.blog||t.identity_data?.html_url;N&&m("website",N)}if(!$("avatar_url")){const N=t.identity_data?.avatar_url;N&&m("avatar_url",N)}const k=t.identity_data?.user_name||t.identity_data?.preferred_username;k&&m("github_username",k)}!$("full_name")&&h.user_metadata?.full_name&&m("full_name",h.user_metadata.full_name)})()},[$,m]);const W=async()=>{const r=B.createClient(),{error:d}=await r.auth.linkIdentity({provider:"github"});d&&(console.error("Error linking GitHub:",d),y({type:"error",text:l("github_link_failed")||"Failed to link GitHub account"}))},O=r=>{const d=se(r?.object_key??r?.file_path);d&&m("avatar_url",d)},J=async r=>{F(!0),y(null);const d=C.normalizeCustomerAddress(r.billing_address)??C.emptyCustomerAddress(),h=r.use_billing_for_shipping?d:C.normalizeCustomerAddress(r.shipping_address);try{const t={...r,billing_address:d,shipping_address:h};if(g){const b=await g(t);if(b?.error)throw new Error(b.error)}else await ee.updateProfile(t);y({type:"success",text:l("profile_updated_success")})}catch(t){if(t.message==="NEXT_REDIRECT"||t.message?.includes("NEXT_REDIRECT"))return;console.error(t),y({type:"error",text:t.message||l("profile_update_failed")})}finally{F(!1)}},R=v("use_billing_for_shipping");return e.jsxs("div",{className:"grid gap-6 md:grid-cols-12 max-w-5xl mx-auto",children:[e.jsxs(o.Card,{className:"md:col-span-4 h-fit",children:[e.jsx(o.CardHeader,{children:e.jsx(o.CardTitle,{className:"text-xl",children:l("public_profile")})}),e.jsxs(o.CardContent,{className:"flex flex-col items-center text-center space-y-4",children:[e.jsxs("div",{className:"relative group",children:[e.jsxs(S.Avatar,{className:"h-32 w-32 border-4 border-muted",children:[e.jsx(S.AvatarImage,{src:v("avatar_url")||void 0,className:"object-cover"}),e.jsx(S.AvatarFallback,{className:"text-4xl bg-secondary",children:v("full_name")?.charAt(0)?.toUpperCase()||e.jsx(u.User,{className:"h-12 w-12"})})]}),j&&e.jsx("div",{className:"absolute inset-0 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity bg-black/40 rounded-full cursor-pointer",children:e.jsx(j,{triggerLabel:e.jsx(u.Upload,{className:"h-6 w-6 text-white"}),triggerVariant:"ghost",title:l("customer_profile"),onSelect:O,accept:r=>r.file_type.startsWith("image/"),hideTrigger:!1})})]}),!j&&e.jsxs("div",{className:"w-full",children:[e.jsx(a.Label,{htmlFor:"avatar_url",className:"sr-only",children:l("avatar_url")}),e.jsx(i.Input,{id:"avatar_url",...p("avatar_url"),placeholder:"https://...",className:"mt-2"})]}),e.jsxs("div",{className:"w-full space-y-1 text-left mt-4",children:[e.jsx("div",{className:"text-sm font-medium text-muted-foreground uppercase tracking-wider",children:l("identity")}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-semibold text-lg",children:v("full_name")||l("full_name")})}),A&&e.jsxs(Y.Badge,{variant:"secondary",className:"mt-2 w-fit gap-1",children:[e.jsx(u.Github,{className:"h-3 w-3"})," ",l("github_connected")||"GitHub Connected"]})]}),w?.length?e.jsx(Q.AccountNavigationMenu,{links:w,className:"mt-2 text-left"}):null]})]}),e.jsx(o.Card,{className:"md:col-span-8",children:e.jsxs("form",{onSubmit:M(J),children:[e.jsx(o.CardHeader,{children:e.jsx(o.CardTitle,{children:l("details")})}),e.jsxs(o.CardContent,{className:"space-y-6",children:[n&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs(a.Label,{htmlFor:"email",children:[l("email")||"Email"," (Read-only)"]}),e.jsx(i.Input,{id:"email",value:n,readOnly:!0,disabled:!0,className:"bg-muted/50"})]}),e.jsx("div",{className:"rounded-xl border bg-muted/20 p-4 text-sm text-muted-foreground",children:l("profile_basic_info_help")}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(a.Label,{htmlFor:"full_name",className:"flex items-center gap-2",children:[e.jsx(u.User,{className:"h-4 w-4"})," ",l("full_name")]}),e.jsx(i.Input,{id:"full_name",...p("full_name")})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(a.Label,{htmlFor:"phone",className:"flex items-center gap-2",children:[e.jsx(u.Phone,{className:"h-4 w-4"})," ",l("phone_number")]}),e.jsx(i.Input,{id:"phone",...p("phone")})]})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(a.Label,{htmlFor:"website",className:"flex items-center gap-2",children:[e.jsx(u.Globe,{className:"h-4 w-4"})," ",l("website")]}),e.jsx(i.Input,{id:"website",...p("website"),placeholder:"https://example.com"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(a.Label,{htmlFor:"github_username",className:"flex items-center gap-2",children:[e.jsx(u.Github,{className:"h-4 w-4"})," ",l("github_username")]}),A?e.jsxs("div",{className:"space-y-2",children:[e.jsx(i.Input,{id:"github_username",...p("github_username"),disabled:!0,className:"bg-muted"}),U&&e.jsxs("p",{className:"text-xs text-muted-foreground flex items-center gap-1",children:[e.jsx(u.Mail,{className:"h-3 w-3"})," ",l("linked_to")||"Linked to"," ",U]})]}):e.jsxs(T.Button,{type:"button",variant:"outline",className:"w-full",onClick:W,children:[e.jsx(u.Github,{className:"mr-2 h-4 w-4"}),l("connect_github")]})]})]}),e.jsx(D.Separator,{className:"my-2"}),e.jsx(G,{prefix:"billing_address",title:l("billing_address"),register:p}),e.jsxs("div",{className:"flex items-center space-x-3 rounded-lg border p-4",children:[e.jsx(Z.Checkbox,{id:"use_billing_for_shipping",checked:!!R,onCheckedChange:r=>m("use_billing_for_shipping",!!r,{shouldDirty:!0})}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(a.Label,{htmlFor:"use_billing_for_shipping",className:"cursor-pointer",children:l("use_billing_for_shipping")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:l("profile_use_billing_for_shipping_help")})]})]}),!R&&e.jsx(G,{prefix:"shipping_address",title:l("shipping_address"),register:p}),L&&e.jsx("div",{className:`mt-4 rounded-xl border p-4 text-sm ${L.type==="success"?"border-emerald-200 bg-emerald-50 text-emerald-700":"border-red-200 bg-red-50 text-red-700"}`,children:L.text}),c&&e.jsxs("div",{className:"border-t pt-4 mt-4",children:[e.jsx("h3",{className:"text-sm font-medium mb-3",children:"Admin Settings"}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(a.Label,{htmlFor:"role",children:"Role"}),e.jsxs(x.Select,{value:v("role")||"USER",onValueChange:r=>m("role",r),children:[e.jsx(x.SelectTrigger,{children:e.jsx(x.SelectValue,{placeholder:"Select role"})}),e.jsxs(x.SelectContent,{children:[e.jsx(x.SelectItem,{value:"USER",children:"User"}),e.jsx(x.SelectItem,{value:"WRITER",children:"Writer"}),e.jsx(x.SelectItem,{value:"ADMIN",children:"Admin"})]})]})]})]})]}),e.jsx(o.CardFooter,{className:"flex justify-end",children:e.jsx(T.Button,{type:"submit",disabled:E,size:"lg",children:l(E?"saving":"save_changes")})})]})})]})}exports.CustomerProfileForm=le;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),b=require("react"),V=require("react-hook-form"),X=require("./AccountNavigationMenu.cjs.js"),w=require("@nextblock-cms/ui/avatar"),z=require("@nextblock-cms/ui/button"),d=require("@nextblock-cms/ui/card"),W=require("@nextblock-cms/ui/checkbox"),t=require("@nextblock-cms/ui/input"),n=require("@nextblock-cms/ui/label"),o=require("@nextblock-cms/ui/select"),H=require("@nextblock-cms/ui/separator"),M=require("../server-actions/customer-actions.cjs.js"),f=require("../customer.cjs.js"),O=require("@nextblock-cms/db"),N=require("lucide-react"),R=require("@nextblock-cms/utils"),q=require("../countries.cjs.js");function G(s){return s?s.startsWith("http")?s:process.env.NEXT_PUBLIC_R2_BASE_URL?`${process.env.NEXT_PUBLIC_R2_BASE_URL}/${s}`:process.env.NEXT_PUBLIC_SUPABASE_URL?`${process.env.NEXT_PUBLIC_SUPABASE_URL}/storage/v1/object/public/media/${s}`:s:null}function C(s){return{company_name:s?.company_name||"",recipient_name:s?.recipient_name||"",line1:s?.line1||"",line2:s?.line2||"",city:s?.city||"",state:s?.state||"",postal_code:s?.postal_code||"",country_code:q.normalizeCountryCode(s?.country_code)||"CA"}}function U({prefix:s,title:h,register:c}){const{t:a}=R.useTranslations(),v=a("company_name")==="company_name"?"Company name":a("company_name");return e.jsxs("div",{className:"space-y-4 rounded-xl border p-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-medium",children:h}),e.jsx("p",{className:"text-sm text-muted-foreground",children:a("profile_address_defaults_help")})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(n.Label,{htmlFor:`${s}-company_name`,children:v}),e.jsx(t.Input,{id:`${s}-company_name`,...c(`${s}.company_name`)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(n.Label,{htmlFor:`${s}-recipient_name`,children:a("full_name")}),e.jsx(t.Input,{id:`${s}-recipient_name`,...c(`${s}.recipient_name`)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(n.Label,{htmlFor:`${s}-country_code`,children:a("country")}),e.jsx("select",{id:`${s}-country_code`,className:"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",...c(`${s}.country_code`),children:q.countries.map(m=>e.jsx("option",{value:m.code,children:m.name},m.code))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(n.Label,{htmlFor:`${s}-line1`,children:a("address_line_1")}),e.jsx(t.Input,{id:`${s}-line1`,...c(`${s}.line1`)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(n.Label,{htmlFor:`${s}-line2`,children:a("address_line_2")}),e.jsx(t.Input,{id:`${s}-line2`,...c(`${s}.line2`)})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(n.Label,{htmlFor:`${s}-city`,children:a("city")}),e.jsx(t.Input,{id:`${s}-city`,...c(`${s}.city`)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(n.Label,{htmlFor:`${s}-state`,children:a("state_province")}),e.jsx(t.Input,{id:`${s}-state`,...c(`${s}.state`)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(n.Label,{htmlFor:`${s}-postal_code`,children:a("postal_zip_code")}),e.jsx(t.Input,{id:`${s}-postal_code`,...c(`${s}.postal_code`)})]})]})]})}function J({initialData:s,MediaPickerComponent:h,isAdmin:c,email:a,accountLinks:v,onAction:m,initialSuccessMessage:_}){const{t:l}=R.useTranslations(),[L,S]=b.useState(!1),[$,y]=b.useState(_?{type:"success",text:_}:null),T=s?.use_billing_for_shipping??(!s?.shipping_address||f.addressesMatch(s?.billing_address,s?.shipping_address)),{register:u,handleSubmit:B,setValue:x,getValues:F,watch:g,reset:I}=V.useForm({defaultValues:{full_name:s?.full_name||"",avatar_url:s?.avatar_url||"",website:s?.website||"",phone:s?.phone||"",role:s?.role,use_billing_for_shipping:T,billing_address:C(s?.billing_address),shipping_address:C(s?.shipping_address)}});b.useEffect(()=>{s&&I({full_name:s.full_name||"",avatar_url:s.avatar_url||"",website:s.website||"",phone:s.phone||"",role:s.role,use_billing_for_shipping:s.use_billing_for_shipping??(!s.shipping_address||f.addressesMatch(s.billing_address,s.shipping_address)),billing_address:C(s.billing_address),shipping_address:C(s.shipping_address)})},[s,I]),b.useEffect(()=>{_&&y({type:"success",text:_})},[_]),b.useEffect(()=>{const r=O.createClient();(async()=>{const{data:{user:j}}=await r.auth.getUser();j&&!F("full_name")&&j.user_metadata?.full_name&&x("full_name",j.user_metadata.full_name)})()},[F,x]);const k=r=>{const p=G(r?.object_key??r?.file_path);p&&x("avatar_url",p)},P=async r=>{S(!0),y(null);const p=f.normalizeCustomerAddress(r.billing_address)??f.emptyCustomerAddress(),j=r.use_billing_for_shipping?p:f.normalizeCustomerAddress(r.shipping_address);try{const i={...r,billing_address:p,shipping_address:j};if(m){const E=await m(i);if(E?.error)throw new Error(E.error)}else await M.updateProfile(i);y({type:"success",text:l("profile_updated_success")})}catch(i){if(i.message==="NEXT_REDIRECT"||i.message?.includes("NEXT_REDIRECT"))return;console.error(i),y({type:"error",text:i.message||l("profile_update_failed")})}finally{S(!1)}},A=g("use_billing_for_shipping");return e.jsxs("div",{className:"grid gap-6 md:grid-cols-12 max-w-5xl mx-auto",children:[e.jsxs(d.Card,{className:"md:col-span-4 h-fit",children:[e.jsx(d.CardHeader,{children:e.jsx(d.CardTitle,{className:"text-xl",children:l("public_profile")})}),e.jsxs(d.CardContent,{className:"flex flex-col items-center text-center space-y-4",children:[e.jsxs("div",{className:"relative group",children:[e.jsxs(w.Avatar,{className:"h-32 w-32 border-4 border-muted",children:[e.jsx(w.AvatarImage,{src:g("avatar_url")||void 0,className:"object-cover"}),e.jsx(w.AvatarFallback,{className:"text-4xl bg-secondary",children:g("full_name")?.charAt(0)?.toUpperCase()||e.jsx(N.User,{className:"h-12 w-12"})})]}),h&&e.jsx("div",{className:"absolute inset-0 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity bg-black/40 rounded-full cursor-pointer",children:e.jsx(h,{triggerLabel:e.jsx(N.Upload,{className:"h-6 w-6 text-white"}),triggerVariant:"ghost",title:l("customer_profile"),onSelect:k,accept:r=>r.file_type.startsWith("image/"),hideTrigger:!1})})]}),!h&&e.jsxs("div",{className:"w-full",children:[e.jsx(n.Label,{htmlFor:"avatar_url",className:"sr-only",children:l("avatar_url")}),e.jsx(t.Input,{id:"avatar_url",...u("avatar_url"),placeholder:"https://...",className:"mt-2"})]}),e.jsxs("div",{className:"w-full space-y-1 text-left mt-4",children:[e.jsx("div",{className:"text-sm font-medium text-muted-foreground uppercase tracking-wider",children:l("identity")}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-semibold text-lg",children:g("full_name")||l("full_name")})})]}),v?.length?e.jsx(X.AccountNavigationMenu,{links:v,className:"mt-2 text-left"}):null]})]}),e.jsx(d.Card,{className:"md:col-span-8",children:e.jsxs("form",{onSubmit:B(P),children:[e.jsx(d.CardHeader,{children:e.jsx(d.CardTitle,{children:l("details")})}),e.jsxs(d.CardContent,{className:"space-y-6",children:[a&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs(n.Label,{htmlFor:"email",children:[l("email")||"Email"," (Read-only)"]}),e.jsx(t.Input,{id:"email",value:a,readOnly:!0,disabled:!0,className:"bg-muted/50"})]}),e.jsx("div",{className:"rounded-xl border bg-muted/20 p-4 text-sm text-muted-foreground",children:l("profile_basic_info_help")}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(n.Label,{htmlFor:"full_name",className:"flex items-center gap-2",children:[e.jsx(N.User,{className:"h-4 w-4"})," ",l("full_name")]}),e.jsx(t.Input,{id:"full_name",...u("full_name")})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(n.Label,{htmlFor:"phone",className:"flex items-center gap-2",children:[e.jsx(N.Phone,{className:"h-4 w-4"})," ",l("phone_number")]}),e.jsx(t.Input,{id:"phone",...u("phone")})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(n.Label,{htmlFor:"website",className:"flex items-center gap-2",children:[e.jsx(N.Globe,{className:"h-4 w-4"})," ",l("website")]}),e.jsx(t.Input,{id:"website",...u("website"),placeholder:"https://example.com"})]}),e.jsx(H.Separator,{className:"my-2"}),e.jsx(U,{prefix:"billing_address",title:l("billing_address"),register:u}),e.jsxs("div",{className:"flex items-center space-x-3 rounded-lg border p-4",children:[e.jsx(W.Checkbox,{id:"use_billing_for_shipping",checked:!!A,onCheckedChange:r=>x("use_billing_for_shipping",!!r,{shouldDirty:!0})}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(n.Label,{htmlFor:"use_billing_for_shipping",className:"cursor-pointer",children:l("use_billing_for_shipping")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:l("profile_use_billing_for_shipping_help")})]})]}),!A&&e.jsx(U,{prefix:"shipping_address",title:l("shipping_address"),register:u}),$&&e.jsx("div",{className:`mt-4 rounded-xl border p-4 text-sm ${$.type==="success"?"border-emerald-200 bg-emerald-50 text-emerald-700":"border-red-200 bg-red-50 text-red-700"}`,children:$.text}),c&&e.jsxs("div",{className:"border-t pt-4 mt-4",children:[e.jsx("h3",{className:"text-sm font-medium mb-3",children:"Admin Settings"}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(n.Label,{htmlFor:"role",children:"Role"}),e.jsxs(o.Select,{value:g("role")||"USER",onValueChange:r=>x("role",r),children:[e.jsx(o.SelectTrigger,{children:e.jsx(o.SelectValue,{placeholder:"Select role"})}),e.jsxs(o.SelectContent,{children:[e.jsx(o.SelectItem,{value:"USER",children:"User"}),e.jsx(o.SelectItem,{value:"WRITER",children:"Writer"}),e.jsx(o.SelectItem,{value:"ADMIN",children:"Admin"})]})]})]})]})]}),e.jsx(d.CardFooter,{className:"flex justify-end",children:e.jsx(z.Button,{type:"submit",disabled:L,size:"lg",children:l(L?"saving":"save_changes")})})]})})]})}exports.CustomerProfileForm=J;
|
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsxs as
|
|
3
|
-
import
|
|
4
|
-
import { useForm as
|
|
5
|
-
import { AccountNavigationMenu as
|
|
6
|
-
import { Avatar as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { Checkbox as ne } from "@nextblock-cms/ui/checkbox";
|
|
2
|
+
import { jsxs as s, jsx as l } from "react/jsx-runtime";
|
|
3
|
+
import x, { useState as S } from "react";
|
|
4
|
+
import { useForm as H } from "react-hook-form";
|
|
5
|
+
import { AccountNavigationMenu as O } from "./AccountNavigationMenu.es.js";
|
|
6
|
+
import { Avatar as q, AvatarImage as J, AvatarFallback as K } from "@nextblock-cms/ui/avatar";
|
|
7
|
+
import { Button as M } from "@nextblock-cms/ui/button";
|
|
8
|
+
import { Card as R, CardHeader as T, CardTitle as B, CardContent as I, CardFooter as Q } from "@nextblock-cms/ui/card";
|
|
9
|
+
import { Checkbox as Y } from "@nextblock-cms/ui/checkbox";
|
|
11
10
|
import { Input as d } from "@nextblock-cms/ui/input";
|
|
12
|
-
import { Label as
|
|
13
|
-
import { Select as
|
|
14
|
-
import { Separator as
|
|
15
|
-
import { updateProfile as
|
|
16
|
-
import { addressesMatch as
|
|
17
|
-
import { createClient as
|
|
18
|
-
import { User as
|
|
19
|
-
import { useTranslations as
|
|
20
|
-
import { normalizeCountryCode as
|
|
21
|
-
function
|
|
11
|
+
import { Label as n } from "@nextblock-cms/ui/label";
|
|
12
|
+
import { Select as Z, SelectTrigger as D, SelectValue as ee, SelectContent as le, SelectItem as $ } from "@nextblock-cms/ui/select";
|
|
13
|
+
import { Separator as se } from "@nextblock-cms/ui/separator";
|
|
14
|
+
import { updateProfile as re } from "../server-actions/customer-actions.es.js";
|
|
15
|
+
import { addressesMatch as L, normalizeCustomerAddress as k, emptyCustomerAddress as ae } from "../customer.es.js";
|
|
16
|
+
import { createClient as ne } from "@nextblock-cms/db";
|
|
17
|
+
import { User as j, Upload as ce, Phone as de, Globe as ie } from "lucide-react";
|
|
18
|
+
import { useTranslations as V } from "@nextblock-cms/utils";
|
|
19
|
+
import { normalizeCountryCode as te, countries as oe } from "../countries.es.js";
|
|
20
|
+
function me(e) {
|
|
22
21
|
return e ? e.startsWith("http") ? e : process.env.NEXT_PUBLIC_R2_BASE_URL ? `${process.env.NEXT_PUBLIC_R2_BASE_URL}/${e}` : process.env.NEXT_PUBLIC_SUPABASE_URL ? `${process.env.NEXT_PUBLIC_SUPABASE_URL}/storage/v1/object/public/media/${e}` : e : null;
|
|
23
22
|
}
|
|
24
|
-
function
|
|
23
|
+
function y(e) {
|
|
25
24
|
return {
|
|
26
25
|
company_name: e?.company_name || "",
|
|
27
26
|
recipient_name: e?.recipient_name || "",
|
|
@@ -30,318 +29,266 @@ function $(e) {
|
|
|
30
29
|
city: e?.city || "",
|
|
31
30
|
state: e?.state || "",
|
|
32
31
|
postal_code: e?.postal_code || "",
|
|
33
|
-
country_code:
|
|
32
|
+
country_code: te(e?.country_code) || "CA"
|
|
34
33
|
};
|
|
35
34
|
}
|
|
36
|
-
function
|
|
35
|
+
function P({
|
|
37
36
|
prefix: e,
|
|
38
|
-
title:
|
|
39
|
-
register:
|
|
37
|
+
title: h,
|
|
38
|
+
register: i
|
|
40
39
|
}) {
|
|
41
|
-
const { t:
|
|
42
|
-
return /* @__PURE__ */
|
|
43
|
-
/* @__PURE__ */
|
|
44
|
-
/* @__PURE__ */
|
|
45
|
-
/* @__PURE__ */
|
|
40
|
+
const { t: c } = V(), b = c("company_name") === "company_name" ? "Company name" : c("company_name");
|
|
41
|
+
return /* @__PURE__ */ s("div", { className: "space-y-4 rounded-xl border p-4", children: [
|
|
42
|
+
/* @__PURE__ */ s("div", { children: [
|
|
43
|
+
/* @__PURE__ */ l("h3", { className: "text-lg font-medium", children: h }),
|
|
44
|
+
/* @__PURE__ */ l("p", { className: "text-sm text-muted-foreground", children: c("profile_address_defaults_help") })
|
|
46
45
|
] }),
|
|
47
|
-
/* @__PURE__ */
|
|
48
|
-
/* @__PURE__ */
|
|
49
|
-
/* @__PURE__ */
|
|
50
|
-
/* @__PURE__ */
|
|
46
|
+
/* @__PURE__ */ s("div", { className: "grid gap-4 md:grid-cols-3", children: [
|
|
47
|
+
/* @__PURE__ */ s("div", { className: "space-y-2", children: [
|
|
48
|
+
/* @__PURE__ */ l(n, { htmlFor: `${e}-company_name`, children: b }),
|
|
49
|
+
/* @__PURE__ */ l(d, { id: `${e}-company_name`, ...i(`${e}.company_name`) })
|
|
51
50
|
] }),
|
|
52
|
-
/* @__PURE__ */
|
|
53
|
-
/* @__PURE__ */
|
|
54
|
-
/* @__PURE__ */
|
|
51
|
+
/* @__PURE__ */ s("div", { className: "space-y-2", children: [
|
|
52
|
+
/* @__PURE__ */ l(n, { htmlFor: `${e}-recipient_name`, children: c("full_name") }),
|
|
53
|
+
/* @__PURE__ */ l(d, { id: `${e}-recipient_name`, ...i(`${e}.recipient_name`) })
|
|
55
54
|
] }),
|
|
56
|
-
/* @__PURE__ */
|
|
57
|
-
/* @__PURE__ */
|
|
58
|
-
/* @__PURE__ */
|
|
55
|
+
/* @__PURE__ */ s("div", { className: "space-y-2", children: [
|
|
56
|
+
/* @__PURE__ */ l(n, { htmlFor: `${e}-country_code`, children: c("country") }),
|
|
57
|
+
/* @__PURE__ */ l(
|
|
59
58
|
"select",
|
|
60
59
|
{
|
|
61
60
|
id: `${e}-country_code`,
|
|
62
61
|
className: "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
|
|
63
|
-
...
|
|
64
|
-
children:
|
|
62
|
+
...i(`${e}.country_code`),
|
|
63
|
+
children: oe.map((o) => /* @__PURE__ */ l("option", { value: o.code, children: o.name }, o.code))
|
|
65
64
|
}
|
|
66
65
|
)
|
|
67
66
|
] })
|
|
68
67
|
] }),
|
|
69
|
-
/* @__PURE__ */
|
|
70
|
-
/* @__PURE__ */
|
|
71
|
-
/* @__PURE__ */
|
|
68
|
+
/* @__PURE__ */ s("div", { className: "space-y-2", children: [
|
|
69
|
+
/* @__PURE__ */ l(n, { htmlFor: `${e}-line1`, children: c("address_line_1") }),
|
|
70
|
+
/* @__PURE__ */ l(d, { id: `${e}-line1`, ...i(`${e}.line1`) })
|
|
72
71
|
] }),
|
|
73
|
-
/* @__PURE__ */
|
|
74
|
-
/* @__PURE__ */
|
|
75
|
-
/* @__PURE__ */
|
|
72
|
+
/* @__PURE__ */ s("div", { className: "space-y-2", children: [
|
|
73
|
+
/* @__PURE__ */ l(n, { htmlFor: `${e}-line2`, children: c("address_line_2") }),
|
|
74
|
+
/* @__PURE__ */ l(d, { id: `${e}-line2`, ...i(`${e}.line2`) })
|
|
76
75
|
] }),
|
|
77
|
-
/* @__PURE__ */
|
|
78
|
-
/* @__PURE__ */
|
|
79
|
-
/* @__PURE__ */
|
|
80
|
-
/* @__PURE__ */
|
|
76
|
+
/* @__PURE__ */ s("div", { className: "grid gap-4 md:grid-cols-3", children: [
|
|
77
|
+
/* @__PURE__ */ s("div", { className: "space-y-2", children: [
|
|
78
|
+
/* @__PURE__ */ l(n, { htmlFor: `${e}-city`, children: c("city") }),
|
|
79
|
+
/* @__PURE__ */ l(d, { id: `${e}-city`, ...i(`${e}.city`) })
|
|
81
80
|
] }),
|
|
82
|
-
/* @__PURE__ */
|
|
83
|
-
/* @__PURE__ */
|
|
84
|
-
/* @__PURE__ */
|
|
81
|
+
/* @__PURE__ */ s("div", { className: "space-y-2", children: [
|
|
82
|
+
/* @__PURE__ */ l(n, { htmlFor: `${e}-state`, children: c("state_province") }),
|
|
83
|
+
/* @__PURE__ */ l(d, { id: `${e}-state`, ...i(`${e}.state`) })
|
|
85
84
|
] }),
|
|
86
|
-
/* @__PURE__ */
|
|
87
|
-
/* @__PURE__ */
|
|
88
|
-
/* @__PURE__ */
|
|
85
|
+
/* @__PURE__ */ s("div", { className: "space-y-2", children: [
|
|
86
|
+
/* @__PURE__ */ l(n, { htmlFor: `${e}-postal_code`, children: c("postal_zip_code") }),
|
|
87
|
+
/* @__PURE__ */ l(d, { id: `${e}-postal_code`, ...i(`${e}.postal_code`) })
|
|
89
88
|
] })
|
|
90
89
|
] })
|
|
91
90
|
] });
|
|
92
91
|
}
|
|
93
|
-
function
|
|
92
|
+
function Se({
|
|
94
93
|
initialData: e,
|
|
95
|
-
MediaPickerComponent:
|
|
96
|
-
isAdmin:
|
|
97
|
-
email:
|
|
98
|
-
accountLinks:
|
|
99
|
-
onAction:
|
|
100
|
-
initialSuccessMessage:
|
|
94
|
+
MediaPickerComponent: h,
|
|
95
|
+
isAdmin: i,
|
|
96
|
+
email: c,
|
|
97
|
+
accountLinks: b,
|
|
98
|
+
onAction: o,
|
|
99
|
+
initialSuccessMessage: u
|
|
101
100
|
}) {
|
|
102
|
-
const { t: r } =
|
|
103
|
-
|
|
104
|
-
),
|
|
105
|
-
register:
|
|
106
|
-
handleSubmit:
|
|
107
|
-
setValue:
|
|
108
|
-
getValues:
|
|
109
|
-
watch:
|
|
110
|
-
reset:
|
|
111
|
-
} =
|
|
101
|
+
const { t: r } = V(), [w, C] = S(!1), [v, N] = S(
|
|
102
|
+
u ? { type: "success", text: u } : null
|
|
103
|
+
), X = e?.use_billing_for_shipping ?? (!e?.shipping_address || L(e?.billing_address, e?.shipping_address)), {
|
|
104
|
+
register: m,
|
|
105
|
+
handleSubmit: z,
|
|
106
|
+
setValue: _,
|
|
107
|
+
getValues: E,
|
|
108
|
+
watch: g,
|
|
109
|
+
reset: F
|
|
110
|
+
} = H({
|
|
112
111
|
defaultValues: {
|
|
113
112
|
full_name: e?.full_name || "",
|
|
114
113
|
avatar_url: e?.avatar_url || "",
|
|
115
114
|
website: e?.website || "",
|
|
116
|
-
github_username: e?.github_username || "",
|
|
117
115
|
phone: e?.phone || "",
|
|
118
116
|
role: e?.role,
|
|
119
|
-
use_billing_for_shipping:
|
|
120
|
-
billing_address:
|
|
121
|
-
shipping_address:
|
|
117
|
+
use_billing_for_shipping: X,
|
|
118
|
+
billing_address: y(e?.billing_address),
|
|
119
|
+
shipping_address: y(e?.shipping_address)
|
|
122
120
|
}
|
|
123
121
|
});
|
|
124
|
-
|
|
125
|
-
e &&
|
|
122
|
+
x.useEffect(() => {
|
|
123
|
+
e && F({
|
|
126
124
|
full_name: e.full_name || "",
|
|
127
125
|
avatar_url: e.avatar_url || "",
|
|
128
126
|
website: e.website || "",
|
|
129
|
-
github_username: e.github_username || "",
|
|
130
127
|
phone: e.phone || "",
|
|
131
128
|
role: e.role,
|
|
132
|
-
use_billing_for_shipping: e.use_billing_for_shipping ?? (!e.shipping_address ||
|
|
133
|
-
billing_address:
|
|
134
|
-
shipping_address:
|
|
129
|
+
use_billing_for_shipping: e.use_billing_for_shipping ?? (!e.shipping_address || L(e.billing_address, e.shipping_address)),
|
|
130
|
+
billing_address: y(e.billing_address),
|
|
131
|
+
shipping_address: y(e.shipping_address)
|
|
135
132
|
});
|
|
136
|
-
}, [e,
|
|
137
|
-
|
|
138
|
-
}, [
|
|
139
|
-
const
|
|
133
|
+
}, [e, F]), x.useEffect(() => {
|
|
134
|
+
u && N({ type: "success", text: u });
|
|
135
|
+
}, [u]), x.useEffect(() => {
|
|
136
|
+
const a = ne();
|
|
140
137
|
(async () => {
|
|
141
138
|
const {
|
|
142
|
-
data: { user:
|
|
143
|
-
} = await
|
|
144
|
-
|
|
145
|
-
return;
|
|
146
|
-
const a = u.identities?.find((_) => _.provider === "github");
|
|
147
|
-
if (a) {
|
|
148
|
-
q(!0);
|
|
149
|
-
const _ = a.identity_data?.email || (u.app_metadata.provider === "github" ? u.email : null);
|
|
150
|
-
if (J(_), !x("website")) {
|
|
151
|
-
const N = a.identity_data?.custom_claims?.blog || a.identity_data?.blog || a.identity_data?.html_url;
|
|
152
|
-
N && m("website", N);
|
|
153
|
-
}
|
|
154
|
-
if (!x("avatar_url")) {
|
|
155
|
-
const N = a.identity_data?.avatar_url;
|
|
156
|
-
N && m("avatar_url", N);
|
|
157
|
-
}
|
|
158
|
-
const T = a.identity_data?.user_name || a.identity_data?.preferred_username;
|
|
159
|
-
T && m("github_username", T);
|
|
160
|
-
}
|
|
161
|
-
!x("full_name") && u.user_metadata?.full_name && m("full_name", u.user_metadata.full_name);
|
|
139
|
+
data: { user: f }
|
|
140
|
+
} = await a.auth.getUser();
|
|
141
|
+
f && !E("full_name") && f.user_metadata?.full_name && _("full_name", f.user_metadata.full_name);
|
|
162
142
|
})();
|
|
163
|
-
}, [
|
|
164
|
-
const
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}, Z = (t) => {
|
|
171
|
-
const o = ve(t?.object_key ?? t?.file_path);
|
|
172
|
-
o && m("avatar_url", o);
|
|
173
|
-
}, D = async (t) => {
|
|
174
|
-
S(!0), b(null);
|
|
175
|
-
const o = z(t.billing_address) ?? pe(), u = t.use_billing_for_shipping ? o : z(t.shipping_address);
|
|
143
|
+
}, [E, _]);
|
|
144
|
+
const W = (a) => {
|
|
145
|
+
const p = me(a?.object_key ?? a?.file_path);
|
|
146
|
+
p && _("avatar_url", p);
|
|
147
|
+
}, G = async (a) => {
|
|
148
|
+
C(!0), N(null);
|
|
149
|
+
const p = k(a.billing_address) ?? ae(), f = a.use_billing_for_shipping ? p : k(a.shipping_address);
|
|
176
150
|
try {
|
|
177
|
-
const
|
|
178
|
-
...
|
|
179
|
-
billing_address:
|
|
180
|
-
shipping_address:
|
|
151
|
+
const t = {
|
|
152
|
+
...a,
|
|
153
|
+
billing_address: p,
|
|
154
|
+
shipping_address: f
|
|
181
155
|
};
|
|
182
|
-
if (
|
|
183
|
-
const
|
|
184
|
-
if (
|
|
185
|
-
throw new Error(
|
|
156
|
+
if (o) {
|
|
157
|
+
const A = await o(t);
|
|
158
|
+
if (A?.error)
|
|
159
|
+
throw new Error(A.error);
|
|
186
160
|
} else
|
|
187
|
-
await
|
|
188
|
-
|
|
189
|
-
} catch (
|
|
190
|
-
if (
|
|
161
|
+
await re(t);
|
|
162
|
+
N({ type: "success", text: r("profile_updated_success") });
|
|
163
|
+
} catch (t) {
|
|
164
|
+
if (t.message === "NEXT_REDIRECT" || t.message?.includes("NEXT_REDIRECT"))
|
|
191
165
|
return;
|
|
192
|
-
console.error(
|
|
166
|
+
console.error(t), N({ type: "error", text: t.message || r("profile_update_failed") });
|
|
193
167
|
} finally {
|
|
194
|
-
|
|
168
|
+
C(!1);
|
|
195
169
|
}
|
|
196
|
-
},
|
|
197
|
-
return /* @__PURE__ */
|
|
198
|
-
/* @__PURE__ */
|
|
199
|
-
/* @__PURE__ */
|
|
200
|
-
/* @__PURE__ */
|
|
201
|
-
/* @__PURE__ */
|
|
202
|
-
/* @__PURE__ */
|
|
203
|
-
/* @__PURE__ */
|
|
204
|
-
/* @__PURE__ */
|
|
170
|
+
}, U = g("use_billing_for_shipping");
|
|
171
|
+
return /* @__PURE__ */ s("div", { className: "grid gap-6 md:grid-cols-12 max-w-5xl mx-auto", children: [
|
|
172
|
+
/* @__PURE__ */ s(R, { className: "md:col-span-4 h-fit", children: [
|
|
173
|
+
/* @__PURE__ */ l(T, { children: /* @__PURE__ */ l(B, { className: "text-xl", children: r("public_profile") }) }),
|
|
174
|
+
/* @__PURE__ */ s(I, { className: "flex flex-col items-center text-center space-y-4", children: [
|
|
175
|
+
/* @__PURE__ */ s("div", { className: "relative group", children: [
|
|
176
|
+
/* @__PURE__ */ s(q, { className: "h-32 w-32 border-4 border-muted", children: [
|
|
177
|
+
/* @__PURE__ */ l(J, { src: g("avatar_url") || void 0, className: "object-cover" }),
|
|
178
|
+
/* @__PURE__ */ l(K, { className: "text-4xl bg-secondary", children: g("full_name")?.charAt(0)?.toUpperCase() || /* @__PURE__ */ l(j, { className: "h-12 w-12" }) })
|
|
205
179
|
] }),
|
|
206
|
-
|
|
207
|
-
|
|
180
|
+
h && /* @__PURE__ */ l("div", { className: "absolute inset-0 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity bg-black/40 rounded-full cursor-pointer", children: /* @__PURE__ */ l(
|
|
181
|
+
h,
|
|
208
182
|
{
|
|
209
|
-
triggerLabel: /* @__PURE__ */
|
|
183
|
+
triggerLabel: /* @__PURE__ */ l(ce, { className: "h-6 w-6 text-white" }),
|
|
210
184
|
triggerVariant: "ghost",
|
|
211
185
|
title: r("customer_profile"),
|
|
212
|
-
onSelect:
|
|
213
|
-
accept: (
|
|
186
|
+
onSelect: W,
|
|
187
|
+
accept: (a) => a.file_type.startsWith("image/"),
|
|
214
188
|
hideTrigger: !1
|
|
215
189
|
}
|
|
216
190
|
) })
|
|
217
191
|
] }),
|
|
218
|
-
!
|
|
219
|
-
/* @__PURE__ */
|
|
220
|
-
/* @__PURE__ */
|
|
192
|
+
!h && /* @__PURE__ */ s("div", { className: "w-full", children: [
|
|
193
|
+
/* @__PURE__ */ l(n, { htmlFor: "avatar_url", className: "sr-only", children: r("avatar_url") }),
|
|
194
|
+
/* @__PURE__ */ l(d, { id: "avatar_url", ...m("avatar_url"), placeholder: "https://...", className: "mt-2" })
|
|
221
195
|
] }),
|
|
222
|
-
/* @__PURE__ */
|
|
223
|
-
/* @__PURE__ */
|
|
224
|
-
/* @__PURE__ */
|
|
225
|
-
R && /* @__PURE__ */ l(ae, { variant: "secondary", className: "mt-2 w-fit gap-1", children: [
|
|
226
|
-
/* @__PURE__ */ s(U, { className: "h-3 w-3" }),
|
|
227
|
-
" ",
|
|
228
|
-
r("github_connected") || "GitHub Connected"
|
|
229
|
-
] })
|
|
196
|
+
/* @__PURE__ */ s("div", { className: "w-full space-y-1 text-left mt-4", children: [
|
|
197
|
+
/* @__PURE__ */ l("div", { className: "text-sm font-medium text-muted-foreground uppercase tracking-wider", children: r("identity") }),
|
|
198
|
+
/* @__PURE__ */ l("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ l("span", { className: "font-semibold text-lg", children: g("full_name") || r("full_name") }) })
|
|
230
199
|
] }),
|
|
231
|
-
|
|
232
|
-
|
|
200
|
+
b?.length ? /* @__PURE__ */ l(
|
|
201
|
+
O,
|
|
233
202
|
{
|
|
234
|
-
links:
|
|
203
|
+
links: b,
|
|
235
204
|
className: "mt-2 text-left"
|
|
236
205
|
}
|
|
237
206
|
) : null
|
|
238
207
|
] })
|
|
239
208
|
] }),
|
|
240
|
-
/* @__PURE__ */
|
|
241
|
-
/* @__PURE__ */
|
|
242
|
-
/* @__PURE__ */
|
|
243
|
-
|
|
244
|
-
/* @__PURE__ */
|
|
209
|
+
/* @__PURE__ */ l(R, { className: "md:col-span-8", children: /* @__PURE__ */ s("form", { onSubmit: z(G), children: [
|
|
210
|
+
/* @__PURE__ */ l(T, { children: /* @__PURE__ */ l(B, { children: r("details") }) }),
|
|
211
|
+
/* @__PURE__ */ s(I, { className: "space-y-6", children: [
|
|
212
|
+
c && /* @__PURE__ */ s("div", { className: "space-y-2", children: [
|
|
213
|
+
/* @__PURE__ */ s(n, { htmlFor: "email", children: [
|
|
245
214
|
r("email") || "Email",
|
|
246
215
|
" (Read-only)"
|
|
247
216
|
] }),
|
|
248
|
-
/* @__PURE__ */
|
|
217
|
+
/* @__PURE__ */ l(d, { id: "email", value: c, readOnly: !0, disabled: !0, className: "bg-muted/50" })
|
|
249
218
|
] }),
|
|
250
|
-
/* @__PURE__ */
|
|
251
|
-
/* @__PURE__ */
|
|
252
|
-
/* @__PURE__ */
|
|
253
|
-
/* @__PURE__ */
|
|
254
|
-
/* @__PURE__ */
|
|
219
|
+
/* @__PURE__ */ l("div", { className: "rounded-xl border bg-muted/20 p-4 text-sm text-muted-foreground", children: r("profile_basic_info_help") }),
|
|
220
|
+
/* @__PURE__ */ s("div", { className: "grid gap-4 md:grid-cols-2", children: [
|
|
221
|
+
/* @__PURE__ */ s("div", { className: "space-y-2", children: [
|
|
222
|
+
/* @__PURE__ */ s(n, { htmlFor: "full_name", className: "flex items-center gap-2", children: [
|
|
223
|
+
/* @__PURE__ */ l(j, { className: "h-4 w-4" }),
|
|
255
224
|
" ",
|
|
256
225
|
r("full_name")
|
|
257
226
|
] }),
|
|
258
|
-
/* @__PURE__ */
|
|
227
|
+
/* @__PURE__ */ l(d, { id: "full_name", ...m("full_name") })
|
|
259
228
|
] }),
|
|
260
|
-
/* @__PURE__ */
|
|
261
|
-
/* @__PURE__ */
|
|
262
|
-
/* @__PURE__ */
|
|
229
|
+
/* @__PURE__ */ s("div", { className: "space-y-2", children: [
|
|
230
|
+
/* @__PURE__ */ s(n, { htmlFor: "phone", className: "flex items-center gap-2", children: [
|
|
231
|
+
/* @__PURE__ */ l(de, { className: "h-4 w-4" }),
|
|
263
232
|
" ",
|
|
264
233
|
r("phone_number")
|
|
265
234
|
] }),
|
|
266
|
-
/* @__PURE__ */
|
|
235
|
+
/* @__PURE__ */ l(d, { id: "phone", ...m("phone") })
|
|
267
236
|
] })
|
|
268
237
|
] }),
|
|
269
|
-
/* @__PURE__ */
|
|
270
|
-
/* @__PURE__ */
|
|
271
|
-
/* @__PURE__ */ l(
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
r("website")
|
|
275
|
-
] }),
|
|
276
|
-
/* @__PURE__ */ s(d, { id: "website", ...h("website"), placeholder: "https://example.com" })
|
|
238
|
+
/* @__PURE__ */ s("div", { className: "space-y-2", children: [
|
|
239
|
+
/* @__PURE__ */ s(n, { htmlFor: "website", className: "flex items-center gap-2", children: [
|
|
240
|
+
/* @__PURE__ */ l(ie, { className: "h-4 w-4" }),
|
|
241
|
+
" ",
|
|
242
|
+
r("website")
|
|
277
243
|
] }),
|
|
278
|
-
/* @__PURE__ */ l(
|
|
279
|
-
/* @__PURE__ */ l(i, { htmlFor: "github_username", className: "flex items-center gap-2", children: [
|
|
280
|
-
/* @__PURE__ */ s(U, { className: "h-4 w-4" }),
|
|
281
|
-
" ",
|
|
282
|
-
r("github_username")
|
|
283
|
-
] }),
|
|
284
|
-
R ? /* @__PURE__ */ l("div", { className: "space-y-2", children: [
|
|
285
|
-
/* @__PURE__ */ s(d, { id: "github_username", ...h("github_username"), disabled: !0, className: "bg-muted" }),
|
|
286
|
-
k && /* @__PURE__ */ l("p", { className: "text-xs text-muted-foreground flex items-center gap-1", children: [
|
|
287
|
-
/* @__PURE__ */ s(be, { className: "h-3 w-3" }),
|
|
288
|
-
" ",
|
|
289
|
-
r("linked_to") || "Linked to",
|
|
290
|
-
" ",
|
|
291
|
-
k
|
|
292
|
-
] })
|
|
293
|
-
] }) : /* @__PURE__ */ l(B, { type: "button", variant: "outline", className: "w-full", onClick: Y, children: [
|
|
294
|
-
/* @__PURE__ */ s(U, { className: "mr-2 h-4 w-4" }),
|
|
295
|
-
r("connect_github")
|
|
296
|
-
] })
|
|
297
|
-
] })
|
|
244
|
+
/* @__PURE__ */ l(d, { id: "website", ...m("website"), placeholder: "https://example.com" })
|
|
298
245
|
] }),
|
|
299
|
-
/* @__PURE__ */
|
|
300
|
-
/* @__PURE__ */
|
|
301
|
-
/* @__PURE__ */
|
|
302
|
-
/* @__PURE__ */
|
|
303
|
-
|
|
246
|
+
/* @__PURE__ */ l(se, { className: "my-2" }),
|
|
247
|
+
/* @__PURE__ */ l(P, { prefix: "billing_address", title: r("billing_address"), register: m }),
|
|
248
|
+
/* @__PURE__ */ s("div", { className: "flex items-center space-x-3 rounded-lg border p-4", children: [
|
|
249
|
+
/* @__PURE__ */ l(
|
|
250
|
+
Y,
|
|
304
251
|
{
|
|
305
252
|
id: "use_billing_for_shipping",
|
|
306
|
-
checked: !!
|
|
307
|
-
onCheckedChange: (
|
|
253
|
+
checked: !!U,
|
|
254
|
+
onCheckedChange: (a) => _("use_billing_for_shipping", !!a, { shouldDirty: !0 })
|
|
308
255
|
}
|
|
309
256
|
),
|
|
310
|
-
/* @__PURE__ */
|
|
311
|
-
/* @__PURE__ */
|
|
312
|
-
/* @__PURE__ */
|
|
257
|
+
/* @__PURE__ */ s("div", { className: "space-y-1", children: [
|
|
258
|
+
/* @__PURE__ */ l(n, { htmlFor: "use_billing_for_shipping", className: "cursor-pointer", children: r("use_billing_for_shipping") }),
|
|
259
|
+
/* @__PURE__ */ l("p", { className: "text-sm text-muted-foreground", children: r("profile_use_billing_for_shipping_help") })
|
|
313
260
|
] })
|
|
314
261
|
] }),
|
|
315
|
-
!
|
|
316
|
-
|
|
262
|
+
!U && /* @__PURE__ */ l(
|
|
263
|
+
P,
|
|
317
264
|
{
|
|
318
265
|
prefix: "shipping_address",
|
|
319
266
|
title: r("shipping_address"),
|
|
320
|
-
register:
|
|
267
|
+
register: m
|
|
321
268
|
}
|
|
322
269
|
),
|
|
323
|
-
|
|
270
|
+
v && /* @__PURE__ */ l(
|
|
324
271
|
"div",
|
|
325
272
|
{
|
|
326
|
-
className: `mt-4 rounded-xl border p-4 text-sm ${
|
|
327
|
-
children:
|
|
273
|
+
className: `mt-4 rounded-xl border p-4 text-sm ${v.type === "success" ? "border-emerald-200 bg-emerald-50 text-emerald-700" : "border-red-200 bg-red-50 text-red-700"}`,
|
|
274
|
+
children: v.text
|
|
328
275
|
}
|
|
329
276
|
),
|
|
330
|
-
|
|
331
|
-
/* @__PURE__ */
|
|
332
|
-
/* @__PURE__ */
|
|
333
|
-
/* @__PURE__ */
|
|
334
|
-
/* @__PURE__ */
|
|
335
|
-
|
|
277
|
+
i && /* @__PURE__ */ s("div", { className: "border-t pt-4 mt-4", children: [
|
|
278
|
+
/* @__PURE__ */ l("h3", { className: "text-sm font-medium mb-3", children: "Admin Settings" }),
|
|
279
|
+
/* @__PURE__ */ s("div", { className: "grid gap-2", children: [
|
|
280
|
+
/* @__PURE__ */ l(n, { htmlFor: "role", children: "Role" }),
|
|
281
|
+
/* @__PURE__ */ s(
|
|
282
|
+
Z,
|
|
336
283
|
{
|
|
337
|
-
value:
|
|
338
|
-
onValueChange: (
|
|
284
|
+
value: g("role") || "USER",
|
|
285
|
+
onValueChange: (a) => _("role", a),
|
|
339
286
|
children: [
|
|
340
|
-
/* @__PURE__ */
|
|
341
|
-
/* @__PURE__ */
|
|
342
|
-
/* @__PURE__ */
|
|
343
|
-
/* @__PURE__ */
|
|
344
|
-
/* @__PURE__ */
|
|
287
|
+
/* @__PURE__ */ l(D, { children: /* @__PURE__ */ l(ee, { placeholder: "Select role" }) }),
|
|
288
|
+
/* @__PURE__ */ s(le, { children: [
|
|
289
|
+
/* @__PURE__ */ l($, { value: "USER", children: "User" }),
|
|
290
|
+
/* @__PURE__ */ l($, { value: "WRITER", children: "Writer" }),
|
|
291
|
+
/* @__PURE__ */ l($, { value: "ADMIN", children: "Admin" })
|
|
345
292
|
] })
|
|
346
293
|
]
|
|
347
294
|
}
|
|
@@ -349,10 +296,10 @@ function Xe({
|
|
|
349
296
|
] })
|
|
350
297
|
] })
|
|
351
298
|
] }),
|
|
352
|
-
/* @__PURE__ */
|
|
299
|
+
/* @__PURE__ */ l(Q, { className: "flex justify-end", children: /* @__PURE__ */ l(M, { type: "submit", disabled: w, size: "lg", children: r(w ? "saving" : "save_changes") }) })
|
|
353
300
|
] }) })
|
|
354
301
|
] });
|
|
355
302
|
}
|
|
356
303
|
export {
|
|
357
|
-
|
|
304
|
+
Se as CustomerProfileForm
|
|
358
305
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("@nextblock-cms/db/server"),o=require("next/cache"),n=require("../customer.cjs.js"),c=require("../customer-addresses.cjs.js");async function p(e){const r=d.createClient(),{data:{user:s},error:
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("@nextblock-cms/db/server"),o=require("next/cache"),n=require("../customer.cjs.js"),c=require("../customer-addresses.cjs.js");async function p(e){const r=d.createClient(),{data:{user:s},error:l}=await r.auth.getUser();if(l||!s)throw new Error("Unauthorized");const u={full_name:e.full_name||null,avatar_url:e.avatar_url||null,website:e.website||null,phone:e.phone||null,updated_at:new Date().toISOString()},{error:t}=await r.from("profiles").update(u).eq("id",s.id);if(t)throw console.error("Error updating profile:",t),new Error("Failed to update profile");const i=n.normalizeCustomerAddress(e.billing_address),a=e.use_billing_for_shipping?i:n.normalizeCustomerAddress(e.shipping_address);return await c.upsertDefaultUserAddresses({userId:s.id,billingAddress:i,shippingAddress:a,client:r}),o.revalidatePath("/profile"),o.revalidatePath("/checkout"),{success:!0}}exports.updateProfile=p;
|
|
@@ -3,28 +3,27 @@ import { createClient as p } from "@nextblock-cms/db/server";
|
|
|
3
3
|
import { revalidatePath as s } from "next/cache";
|
|
4
4
|
import { normalizeCustomerAddress as n } from "../customer.es.js";
|
|
5
5
|
import { upsertDefaultUserAddresses as d } from "../customer-addresses.es.js";
|
|
6
|
-
async function
|
|
7
|
-
const e = p(), { data: { user:
|
|
8
|
-
if (l || !
|
|
6
|
+
async function w(r) {
|
|
7
|
+
const e = p(), { data: { user: o }, error: l } = await e.auth.getUser();
|
|
8
|
+
if (l || !o)
|
|
9
9
|
throw new Error("Unauthorized");
|
|
10
|
-
const
|
|
10
|
+
const a = {
|
|
11
11
|
full_name: r.full_name || null,
|
|
12
12
|
avatar_url: r.avatar_url || null,
|
|
13
13
|
website: r.website || null,
|
|
14
|
-
github_username: r.github_username || null,
|
|
15
14
|
phone: r.phone || null,
|
|
16
15
|
updated_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
17
|
-
}, { error:
|
|
18
|
-
if (
|
|
19
|
-
throw console.error("Error updating profile:",
|
|
20
|
-
const
|
|
16
|
+
}, { error: t } = await e.from("profiles").update(a).eq("id", o.id);
|
|
17
|
+
if (t)
|
|
18
|
+
throw console.error("Error updating profile:", t), new Error("Failed to update profile");
|
|
19
|
+
const i = n(r.billing_address), u = r.use_billing_for_shipping ? i : n(r.shipping_address);
|
|
21
20
|
return await d({
|
|
22
|
-
userId:
|
|
23
|
-
billingAddress:
|
|
24
|
-
shippingAddress:
|
|
21
|
+
userId: o.id,
|
|
22
|
+
billingAddress: i,
|
|
23
|
+
shippingAddress: u,
|
|
25
24
|
client: e
|
|
26
25
|
}), s("/profile"), s("/checkout"), { success: !0 };
|
|
27
26
|
}
|
|
28
27
|
export {
|
|
29
|
-
|
|
28
|
+
w as updateProfile
|
|
30
29
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nextblock-cms/ecom",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.14",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
},
|
|
11
11
|
"type": "module",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@nextblock-cms/db": "^0.12.
|
|
14
|
-
"@nextblock-cms/ui": "^0.12.
|
|
15
|
-
"@nextblock-cms/utils": "^0.12.
|
|
13
|
+
"@nextblock-cms/db": "^0.12.14",
|
|
14
|
+
"@nextblock-cms/ui": "^0.12.14",
|
|
15
|
+
"@nextblock-cms/utils": "^0.12.14",
|
|
16
16
|
"@freemius/checkout": "^1.4.1",
|
|
17
17
|
"@freemius/sdk": "^0.3.0",
|
|
18
18
|
"@hookform/resolvers": "^5.2.2",
|