@dropins/storefront-company-management 1.0.0-beta23 → 1.0.0-beta24

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.
@@ -1,13 +1,13 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{f as d,h as a}from"./network-error.js";import{h as l}from"./fetch-error.js";import{t as g}from"./validateCompanyEmail.js";const u=`
3
+ import{f as m,h as p}from"./network-error.js";import{h as u}from"./fetch-error.js";import{t as _}from"./validateCompanyEmail.js";const y=`
4
4
  query getStoreConfig {
5
5
  storeConfig {
6
6
  default_country
7
7
  store_code
8
8
  }
9
9
  }
10
- `,p="US",s={defaultCountry:p,storeCode:""},T=async()=>await d(u,{method:"GET"}).then(e=>{var r;return(r=e.errors)!=null&&r.length?l(e.errors):m(e)}).catch(a),m=e=>{var t;if(!((t=e==null?void 0:e.data)!=null&&t.storeConfig))return s;const{default_country:r,store_code:o}=e.data.storeConfig;return{defaultCountry:r||s.defaultCountry,storeCode:o||s.storeCode}},_=`
10
+ `,C="US",d={defaultCountry:C,storeCode:""},G=async()=>await m(y,{method:"GET"}).then(e=>{var n;return(n=e.errors)!=null&&n.length?u(e.errors):h(e)}).catch(p),h=e=>{var t;if(!((t=e==null?void 0:e.data)!=null&&t.storeConfig))return d;const{default_country:n,store_code:r}=e.data.storeConfig;return{defaultCountry:n||d.defaultCountry,storeCode:r||d.storeCode}},T=`
11
11
  mutation CreateCompany($input: CompanyCreateInput!) {
12
12
  createCompany(input: $input) {
13
13
  company {
@@ -40,5 +40,5 @@ import{f as d,h as a}from"./network-error.js";import{h as l}from"./fetch-error.j
40
40
  }
41
41
  }
42
42
  }
43
- `,y=e=>{var o,t,i;const r={};if(e.regionCode&&e.regionCode.trim())r.region_code=e.regionCode.trim(),e.regionId&&(r.region_id=typeof e.regionId=="string"?parseInt(e.regionId,10):e.regionId);else if(e.region&&typeof e.region=="string"&&e.region.includes(",")){const[n,c]=e.region.split(",");r.region_code=n.trim(),r.region_id=parseInt(c.trim(),10)}else if(e.region&&e.region.trim()){const n=e.region.trim();if(/^\d+$/.test(n))throw new Error("Region selection error: Missing region code. Please ensure regions are properly loaded.");r.region=n,r.region_code=n}if(!r.region_code)throw new Error("Region code is required. Please select a state/province or enter a region name.");return{company_name:e.companyName,company_email:e.companyEmail,legal_name:e.legalName,vat_tax_id:e.vatTaxId,reseller_id:e.resellerId,legal_address:{street:Array.isArray(e.street)?e.street.filter(n=>n&&n.trim()!==""):[e.street].filter(n=>n&&n.trim()!==""),city:e.city,region:r,postcode:e.postcode,country_id:e.countryCode,telephone:e.addressTelephone},company_admin:{email:e.adminEmail,firstname:((o=e.adminFirstname)==null?void 0:o.trim())||"",lastname:((t=e.adminLastname)==null?void 0:t.trim())||"",job_title:e.adminJobTitle,telephone:e.adminWorkTelephone,gender:e.adminGender?typeof e.adminGender=="string"?parseInt(e.adminGender,10):e.adminGender:void 0,custom_attributes:((i=e.adminCustomAttributes)==null?void 0:i.map(n=>({attribute_code:n.attribute_code,value:n.value})))||[]}}},E=async e=>{var r;try{const o=y(e),t=await d(_,{method:"POST",variables:{input:o}});return(r=t.errors)!=null&&r.length?{success:!1,errors:t.errors.map(n=>n.message)}:{success:!0,company:g(t)}}catch(o){return console.error("Failed to create company:",o),{success:!1,errors:["Failed to create company. Please try again."]}}};export{p as D,s as S,E as c,T as g};
43
+ `,E=e=>{var s,i,a,c,l;const n=(s=e.regionCode)==null?void 0:s.trim(),r=(i=e.region)==null?void 0:i.trim();let t;if(n)t={region_code:n,...e.regionId&&{region_id:typeof e.regionId=="string"?parseInt(e.regionId,10):e.regionId}};else if(r!=null&&r.includes(",")){const[o,g]=r.split(",");t={region_code:o.trim(),region_id:parseInt(g.trim(),10)}}else{if(r&&/^\d+$/.test(r))throw new Error("Region selection error: Missing region code. Please ensure regions are properly loaded.");r?t={region:r,region_code:r}:t={region:"",region_code:"",region_id:0}}return{company_name:e.companyName||"",company_email:e.companyEmail||"",legal_name:e.legalName,vat_tax_id:e.vatTaxId,reseller_id:e.resellerId,legal_address:{street:Array.isArray(e.street)?e.street.filter(o=>typeof o=="string"&&o.trim()!==""):[e.street].filter(o=>typeof o=="string"&&o.trim()!==""),city:e.city||"",region:t,postcode:e.postcode||"",country_id:e.countryCode||"",telephone:e.addressTelephone},company_admin:{email:e.adminEmail||"",firstname:((a=e.adminFirstname)==null?void 0:a.trim())||"",lastname:((c=e.adminLastname)==null?void 0:c.trim())||"",job_title:e.adminJobTitle,telephone:e.adminWorkTelephone,gender:e.adminGender?typeof e.adminGender=="string"?parseInt(e.adminGender,10):e.adminGender:void 0,custom_attributes:((l=e.adminCustomAttributes)==null?void 0:l.map(o=>({attribute_code:o.attribute_code,value:o.value})))||[]}}},S=async e=>{var n;try{const r=E(e),t=await m(T,{method:"POST",variables:{input:r}});return(n=t.errors)!=null&&n.length?{success:!1,errors:t.errors.map(i=>i.message)}:{success:!0,company:_(t)}}catch(r){return console.error("Failed to create company:",r),{success:!1,errors:["Failed to create company. Please try again."]}}};export{C as D,d as S,S as c,G as g};
44
44
  //# sourceMappingURL=createCompany.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createCompany.js","sources":["/@dropins/storefront-company-management/src/api/getStoreConfig/graphql/getStoreConfig.graphql.ts","/@dropins/storefront-company-management/src/api/getStoreConfig/getStoreConfig.ts","/@dropins/storefront-company-management/src/data/transforms/transform-store-config.ts","/@dropins/storefront-company-management/src/api/createCompany/graphql/createCompany.graphql.ts","/@dropins/storefront-company-management/src/data/transforms/company.ts","/@dropins/storefront-company-management/src/api/createCompany/createCompany.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_STORE_CONFIG_QUERY = /* GraphQL */ `\n query getStoreConfig {\n storeConfig {\n default_country\n store_code\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { GET_STORE_CONFIG_QUERY } from './graphql/getStoreConfig.graphql';\nimport { handleNetworkError } from '@/company-management/lib/network-error';\nimport { handleFetchError } from '@/company-management/lib/fetch-error';\nimport { GetStoreConfigResponse, StoreConfigModel } from '@/company-management/types';\nimport { transformStoreConfig } from '@/company-management/data/transforms';\n\nexport const DEFAULT_COUNTRY = 'US';\n\nexport const STORE_CONFIG_DEFAULTS: StoreConfigModel = {\n defaultCountry: DEFAULT_COUNTRY,\n storeCode: '',\n};\n\nexport const getStoreConfig = async (): Promise<StoreConfigModel> => {\n return await fetchGraphQl(GET_STORE_CONFIG_QUERY, {\n method: 'GET',\n })\n .then((response: GetStoreConfigResponse) => {\n if (response.errors?.length) return handleFetchError(response.errors);\n\n return transformStoreConfig(response);\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { GetStoreConfigResponse, StoreConfigModel } from '@/company-management/types';\nimport { STORE_CONFIG_DEFAULTS } from '@/company-management/api/getStoreConfig/getStoreConfig';\n\nexport const transformStoreConfig = (\n response: GetStoreConfigResponse\n): StoreConfigModel => {\n if (!response?.data?.storeConfig) return STORE_CONFIG_DEFAULTS;\n\n const { default_country, store_code } = response.data.storeConfig;\n\n return {\n defaultCountry: default_country || STORE_CONFIG_DEFAULTS.defaultCountry,\n storeCode: store_code || STORE_CONFIG_DEFAULTS.storeCode,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const CREATE_COMPANY_MUTATION = /* GraphQL */ `\n mutation CreateCompany($input: CompanyCreateInput!) {\n createCompany(input: $input) {\n company {\n id\n name\n email\n legal_name\n vat_tax_id\n reseller_id\n legal_address {\n street\n city\n region {\n region_code\n region\n region_id\n }\n postcode\n country_code\n telephone\n }\n company_admin {\n id\n firstname\n lastname\n email\n job_title\n telephone\n }\n }\n }\n }\n`;","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CompanyFormData } from '../models/company';\nimport { CompanyCreateInput } from '@/company-management/api/createCompany';\n\nexport const transformFormDataToCreateInput = (formData: CompanyFormData): CompanyCreateInput => {\n // Build region object - ensure we have at least one region field\n const regionInput: any = {};\n \n // Handle region data based on what we receive from the form\n if (formData.regionCode && formData.regionCode.trim()) {\n // We have regionCode (preferred path)\n regionInput.region_code = formData.regionCode.trim();\n if (formData.regionId) {\n regionInput.region_id = typeof formData.regionId === 'string' ? parseInt(formData.regionId, 10) : formData.regionId;\n }\n } else if (formData.region && typeof formData.region === 'string' && formData.region.includes(',')) {\n // Dropdown selection: parse \"AL,4\" format as fallback\n const [regionCode, regionId] = formData.region.split(',');\n regionInput.region_code = regionCode.trim();\n regionInput.region_id = parseInt(regionId.trim(), 10);\n } else if (formData.region && formData.region.trim()) {\n const regionValue = formData.region.trim();\n // Check if this is a numeric regionId (from dropdown) or text region name\n if (/^\\d+$/.test(regionValue)) {\n // This is likely a regionId from dropdown, but we only have the ID\n // We need both region_code and region_id for GraphQL, but we can't proceed without region_code\n throw new Error('Region selection error: Missing region code. Please ensure regions are properly loaded.');\n } else {\n // Text input: free-form region name (countries without predefined regions)\n regionInput.region = regionValue;\n regionInput.region_code = regionValue;\n }\n }\n \n // Ensure we have at least region_code (required by GraphQL)\n if (!regionInput.region_code) {\n throw new Error('Region code is required. Please select a state/province or enter a region name.');\n }\n\n return {\n company_name: formData.companyName,\n company_email: formData.companyEmail,\n legal_name: formData.legalName,\n vat_tax_id: formData.vatTaxId,\n reseller_id: formData.resellerId,\n legal_address: {\n street: Array.isArray(formData.street) \n ? formData.street.filter((line: string) => line && line.trim() !== '') // Remove empty lines\n : [formData.street].filter((line: string) => line && line.trim() !== ''), // Handle case where street is not an array\n city: formData.city,\n region: regionInput,\n postcode: formData.postcode,\n country_id: formData.countryCode,\n telephone: formData.addressTelephone,\n },\n company_admin: {\n email: formData.adminEmail,\n firstname: formData.adminFirstname?.trim() || '',\n lastname: formData.adminLastname?.trim() || '',\n job_title: formData.adminJobTitle,\n telephone: formData.adminWorkTelephone,\n gender: formData.adminGender ? (typeof formData.adminGender === 'string' ? parseInt(formData.adminGender, 10) : formData.adminGender) : undefined,\n custom_attributes: formData.adminCustomAttributes?.map(attr => ({\n attribute_code: attr.attribute_code,\n value: attr.value,\n })) || [],\n },\n };\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/company-management/api/fetch-graphql';\nimport { CREATE_COMPANY_MUTATION } from './graphql/createCompany.graphql';\nimport { CompanyRegistrationModel } from '@/company-management/data/models/company';\nimport { transformFormDataToCreateInput } from '@/company-management/data/transforms/company';\nimport { transformCreateCompanyResponse } from '@/company-management/data/transforms/transform-company';\n\nexport interface CompanyCreateInput {\n company_name: string;\n company_email: string;\n legal_name?: string;\n vat_tax_id?: string;\n reseller_id?: string;\n legal_address: {\n street: string[];\n city: string;\n region: {\n region_code: string;\n region?: string;\n region_id?: number;\n };\n postcode: string;\n country_id: string;\n telephone?: string;\n };\n company_admin: {\n email: string;\n firstname: string;\n lastname: string;\n job_title?: string;\n telephone?: string;\n gender?: number;\n custom_attributes?: Array<{\n attribute_code: string;\n value: string;\n }>;\n };\n}\n\n\nexport const createCompany = async (formData: any): Promise<{ success: boolean; company?: CompanyRegistrationModel; errors?: string[] }> => {\n try {\n const input = transformFormDataToCreateInput(formData);\n const response = await fetchGraphQl(CREATE_COMPANY_MUTATION, {\n method: 'POST',\n variables: { input },\n });\n\n if (response.errors?.length) {\n return {\n success: false,\n errors: response.errors.map((error: any) => error.message),\n };\n }\n\n // Transform the GraphQL response using the dedicated transformer\n const transformedCompany = transformCreateCompanyResponse(response);\n\n return {\n success: true,\n company: transformedCompany,\n };\n } catch (error) {\n console.error('Failed to create company:', error);\n return {\n success: false,\n errors: ['Failed to create company. Please try again.'],\n };\n }\n};"],"names":["GET_STORE_CONFIG_QUERY","DEFAULT_COUNTRY","STORE_CONFIG_DEFAULTS","getStoreConfig","fetchGraphQl","response","_a","handleFetchError","transformStoreConfig","handleNetworkError","default_country","store_code","CREATE_COMPANY_MUTATION","transformFormDataToCreateInput","formData","regionInput","regionCode","regionId","regionValue","line","_b","_c","attr","createCompany","input","error","transformCreateCompanyResponse"],"mappings":"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"}
1
+ {"version":3,"file":"createCompany.js","sources":["/@dropins/storefront-company-management/src/api/getStoreConfig/graphql/getStoreConfig.graphql.ts","/@dropins/storefront-company-management/src/api/getStoreConfig/getStoreConfig.ts","/@dropins/storefront-company-management/src/data/transforms/transform-store-config.ts","/@dropins/storefront-company-management/src/api/createCompany/graphql/createCompany.graphql.ts","/@dropins/storefront-company-management/src/data/transforms/company.ts","/@dropins/storefront-company-management/src/api/createCompany/createCompany.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_STORE_CONFIG_QUERY = /* GraphQL */ `\n query getStoreConfig {\n storeConfig {\n default_country\n store_code\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { GET_STORE_CONFIG_QUERY } from './graphql/getStoreConfig.graphql';\nimport { handleNetworkError } from '@/company-management/lib/network-error';\nimport { handleFetchError } from '@/company-management/lib/fetch-error';\nimport { GetStoreConfigResponse, StoreConfigModel } from '@/company-management/types';\nimport { transformStoreConfig } from '@/company-management/data/transforms';\n\nexport const DEFAULT_COUNTRY = 'US';\n\nexport const STORE_CONFIG_DEFAULTS: StoreConfigModel = {\n defaultCountry: DEFAULT_COUNTRY,\n storeCode: '',\n};\n\nexport const getStoreConfig = async (): Promise<StoreConfigModel> => {\n return await fetchGraphQl(GET_STORE_CONFIG_QUERY, {\n method: 'GET',\n })\n .then((response: GetStoreConfigResponse) => {\n if (response.errors?.length) return handleFetchError(response.errors);\n\n return transformStoreConfig(response);\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { GetStoreConfigResponse, StoreConfigModel } from '@/company-management/types';\nimport { STORE_CONFIG_DEFAULTS } from '@/company-management/api/getStoreConfig/getStoreConfig';\n\nexport const transformStoreConfig = (\n response: GetStoreConfigResponse\n): StoreConfigModel => {\n if (!response?.data?.storeConfig) return STORE_CONFIG_DEFAULTS;\n\n const { default_country, store_code } = response.data.storeConfig;\n\n return {\n defaultCountry: default_country || STORE_CONFIG_DEFAULTS.defaultCountry,\n storeCode: store_code || STORE_CONFIG_DEFAULTS.storeCode,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const CREATE_COMPANY_MUTATION = /* GraphQL */ `\n mutation CreateCompany($input: CompanyCreateInput!) {\n createCompany(input: $input) {\n company {\n id\n name\n email\n legal_name\n vat_tax_id\n reseller_id\n legal_address {\n street\n city\n region {\n region_code\n region\n region_id\n }\n postcode\n country_code\n telephone\n }\n company_admin {\n id\n firstname\n lastname\n email\n job_title\n telephone\n }\n }\n }\n }\n`;","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CompanyFormData } from '../models/company';\nimport { CompanyCreateInput } from '@/company-management/api/createCompany';\n\nexport const transformFormDataToCreateInput = (formData: CompanyFormData): CompanyCreateInput => {\n // Build region object based on form data\n // Backend GraphQL schema requires region (CustomerAddressRegionInput!)\n const regionCode = formData.regionCode?.trim();\n const region = formData.region?.trim();\n \n let finalRegion: { region?: string; region_code: string; region_id?: number };\n \n if (regionCode) {\n // Preferred path: explicit regionCode from dropdown selection\n finalRegion = {\n region_code: regionCode,\n ...(formData.regionId && { \n region_id: typeof formData.regionId === 'string' ? parseInt(formData.regionId, 10) : formData.regionId \n }),\n };\n } else if (region?.includes(',')) {\n // Dropdown selection fallback: parse \"AL,4\" format\n const [code, id] = region.split(',');\n finalRegion = { region_code: code.trim(), region_id: parseInt(id.trim(), 10) };\n } else if (region && /^\\d+$/.test(region)) {\n // Numeric-only region without code - invalid state\n throw new Error('Region selection error: Missing region code. Please ensure regions are properly loaded.');\n } else if (region) {\n // Text input: free-form region name (countries without predefined regions)\n finalRegion = { region, region_code: region };\n } else {\n // No region data: countries like UK that don't require regions\n finalRegion = { region: '', region_code: '', region_id: 0 };\n }\n\n return {\n company_name: formData.companyName || '',\n company_email: formData.companyEmail || '',\n legal_name: formData.legalName,\n vat_tax_id: formData.vatTaxId,\n reseller_id: formData.resellerId,\n legal_address: {\n street: Array.isArray(formData.street) \n ? formData.street.filter((line): line is string => typeof line === 'string' && line.trim() !== '') // Remove empty lines\n : [formData.street].filter((line): line is string => typeof line === 'string' && line.trim() !== ''), // Handle case where street is not an array\n city: formData.city || '',\n region: finalRegion,\n postcode: formData.postcode || '',\n country_id: formData.countryCode || '',\n telephone: formData.addressTelephone,\n },\n company_admin: {\n email: formData.adminEmail || '',\n firstname: formData.adminFirstname?.trim() || '',\n lastname: formData.adminLastname?.trim() || '',\n job_title: formData.adminJobTitle,\n telephone: formData.adminWorkTelephone,\n gender: formData.adminGender ? (typeof formData.adminGender === 'string' ? parseInt(formData.adminGender, 10) : formData.adminGender) : undefined,\n custom_attributes: formData.adminCustomAttributes?.map((attr: { attribute_code: string; value: string }) => ({\n attribute_code: attr.attribute_code,\n value: attr.value,\n })) || [],\n },\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/company-management/api/fetch-graphql';\nimport { CREATE_COMPANY_MUTATION } from './graphql/createCompany.graphql';\nimport { CompanyRegistrationModel } from '@/company-management/data/models/company';\nimport { transformFormDataToCreateInput } from '@/company-management/data/transforms/company';\nimport { transformCreateCompanyResponse } from '@/company-management/data/transforms/transform-company';\n\nexport interface CompanyCreateInput {\n company_name: string;\n company_email: string;\n legal_name?: string;\n vat_tax_id?: string;\n reseller_id?: string;\n legal_address: {\n street: string[];\n city: string;\n region: {\n region_code: string;\n region?: string;\n region_id?: number;\n };\n postcode: string;\n country_id: string;\n telephone?: string;\n };\n company_admin: {\n email: string;\n firstname: string;\n lastname: string;\n job_title?: string;\n telephone?: string;\n gender?: number;\n custom_attributes?: Array<{\n attribute_code: string;\n value: string;\n }>;\n };\n}\n\n\nexport const createCompany = async (formData: any): Promise<{ success: boolean; company?: CompanyRegistrationModel; errors?: string[] }> => {\n try {\n const input = transformFormDataToCreateInput(formData);\n const response = await fetchGraphQl(CREATE_COMPANY_MUTATION, {\n method: 'POST',\n variables: { input },\n });\n\n if (response.errors?.length) {\n return {\n success: false,\n errors: response.errors.map((error: any) => error.message),\n };\n }\n\n // Transform the GraphQL response using the dedicated transformer\n const transformedCompany = transformCreateCompanyResponse(response);\n\n return {\n success: true,\n company: transformedCompany,\n };\n } catch (error) {\n console.error('Failed to create company:', error);\n return {\n success: false,\n errors: ['Failed to create company. Please try again.'],\n };\n }\n};"],"names":["GET_STORE_CONFIG_QUERY","DEFAULT_COUNTRY","STORE_CONFIG_DEFAULTS","getStoreConfig","fetchGraphQl","response","_a","handleFetchError","transformStoreConfig","handleNetworkError","default_country","store_code","CREATE_COMPANY_MUTATION","transformFormDataToCreateInput","formData","regionCode","region","_b","finalRegion","code","id","line","_c","_d","_e","attr","createCompany","input","error","transformCreateCompanyResponse"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { FunctionComponent } from 'preact';
2
2
  import { CompanyFormSlots } from '../../types/form.types';
3
3
  import { Company } from '../../data/models/company';
4
+ import { InLineAlertProps } from '../../types/companyProfile.types';
4
5
 
5
6
  export interface CompanyRegistrationFormProps {
6
7
  onSuccess?: (company: Company) => void;
@@ -8,6 +9,7 @@ export interface CompanyRegistrationFormProps {
8
9
  className?: string;
9
10
  slots?: CompanyFormSlots;
10
11
  hideActionFormButtons?: boolean;
12
+ inLineAlertProps?: InLineAlertProps;
11
13
  }
12
14
  export declare const CompanyRegistrationForm: FunctionComponent<CompanyRegistrationFormProps>;
13
15
  //# sourceMappingURL=CompanyRegistrationForm.d.ts.map
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsxs as C,jsx as p,Fragment as W}from"@dropins/tools/preact-jsx-runtime.js";import{useRef as K,useState as $,useEffect as M,useMemo as G,useCallback as D}from"@dropins/tools/preact-hooks.js";import{Field as B,Picker as ee,Input as ae,Button as re}from"@dropins/tools/components.js";import{classes as k,Slot as ne}from"@dropins/tools/lib.js";import{memo as oe}from"@dropins/tools/preact-compat.js";import{useText as J}from"@dropins/tools/i18n.js";import{g as te,c as se}from"../chunks/createCompany.js";import{g as z,v as ie}from"../chunks/validateCompanyEmail.js";/* empty css */import{a as le,i as de}from"../chunks/isCompanyUser.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/event-bus.js";import"../chunks/fetch-error.js";import"../chunks/company-permissions.js";var A=(a=>(a.TEXT="TEXT",a.EMAIL="EMAIL",a.TEL="TEL",a.SELECT="SELECT",a.HIDDEN="HIDDEN",a))(A||{});const ce=oe(({loading:a,values:e={},fields:u,errors:n={},className:y="",regionOptions:s,countryOptions:g,onChange:o,onBlur:i,onFocus:c,slots:E,fieldIdPrefix:f})=>{const _=`${y}__field`,T=J({selectCountry:"Company.FormText.selectCountry",selectRegion:"Company.FormText.selectRegion",selectCountryFirst:"Company.FormText.selectCountryFirst",country:"Company.shared.fields.country",stateProvince:"Company.shared.fields.stateProvince","Company.Registration.companyInformation":"Company.shared.fields.companyInformation","Company.Registration.legalAddress":"Company.shared.fields.legalAddress","Company.Registration.companyAdmin":"Company.shared.fields.companyAdmin"}),N={CompanyInformationSection:["companyName","legalName","companyEmail","vatTaxId","resellerId"],LegalAddressSection:["street","streetLine2","city","countryCode","region","postcode","addressTelephone"],CompanyAdministratorSection:["adminEmail","adminFirstname","adminLastname","adminJobTitle","adminWorkTelephone","adminGender"]},v=r=>({CompanyInformationSection:"Company.Registration.companyInformation",LegalAddressSection:"Company.Registration.legalAddress",CompanyAdministratorSection:"Company.Registration.companyAdmin"})[r],L=r=>{var h,R,F,q;if((r.code==="region"||r.code==="regionCode")&&r.fieldType===A.SELECT){const x=((h=e.regionCode)==null?void 0:h.toString())||"",I=((R=e.regionId)==null?void 0:R.toString())||"";return x&&I?`${x},${I}`:(F=e[r.code])!=null&&F.toString().includes(",")?(q=e[r.code])==null?void 0:q.toString():""}return null},l=r=>{var h;return r.code==="street"?Array.isArray(e.street)?e.street[0]||"":((h=e.street)==null?void 0:h.toString())||"":r.code==="streetLine2"?Array.isArray(e.street)&&e.street[1]||"":null},t=(r,h)=>{const R=`CompanyFormInput_${r.code}`,F=E==null?void 0:E[R];if(!F)return null;const q={inputName:r.code,handleOnChange:o||(()=>{}),errorMessage:h,errors:Object.values(n),formData:e,fieldConfig:{required:r.required,disabled:r.disabled||a,placeholder:r.placeholder||r.label,label:r.label}};return p(ne,{"data-testid":`companyFormInput_${r.code}`,name:R,slot:F,context:q})},d=(r,h,R)=>{let F=r.options;return r.code==="countryCode"||r.code==="country_code"?F=(g==null?void 0:g.map(q=>({value:q.value,text:q.text,isDefault:!1})))||[]:(r.code==="region"||r.code==="regionCode")&&(F=(s==null?void 0:s.map(q=>({text:q.text,value:q.value,isDefault:!1})))||[]),p(W,{children:t(r,R)??p(B,{error:R,className:k([_,`${_}--${r.id}`,[`${_}--${r.id}-hidden`,r.isHidden],r.className]),"data-testid":`${y}--${r.id}`,disabled:a,children:p(ee,{"aria-label":r.label,"aria-required":r.required?"true":"false",id:f?`${f}_${r.code}`:r.code,required:r==null?void 0:r.required,name:r.customUpperCode||r.code,placeholder:r.label,options:F,onBlur:i,onFocus:c,handleSelect:o,defaultValue:h,value:h})},r.id)})},m=(r,h,R)=>{let F="text";return r.fieldType===A.EMAIL?F="email":r.fieldType===A.TEL&&(F="tel"),p(W,{children:t(r,R)??p(B,{error:R,className:k([_,`${_}--${r.id}`,[`${_}--${r.id}-hidden`,r.isHidden],r.className]),"data-testid":`${y}--${r.id}`,disabled:a,children:p(ae,{"aria-label":r.label,"aria-required":r.required?"true":"false",id:f?`${f}_${r.code}`:r.code,type:F,name:r.customUpperCode,value:h??r.defaultValue,placeholder:r.label,floatingLabel:`${r.label} ${r.required?"*":""}`,maxLength:r.maxlength,onBlur:i,onFocus:c,onChange:o})},r.id)})},b=r=>u==null?void 0:u.filter(h=>r.includes(h.code)&&!h.isHidden).map(h=>{var I,V;let R=((I=e[h.code])==null?void 0:I.toString())||"";const F=l(h);F!==null&&(R=F);const q=L(h);q!==null&&(R=q);const x=n[h.customUpperCode||h.code]||"";return h.code==="region"||h.code==="regionCode"?h.fieldType===A.SELECT?d(h,R,x):m(h,R,x):h.fieldType===A.SELECT||((V=h.options)==null?void 0:V.length)>0?d(h,R,x):m(h,R,x)}),S=r=>{const h=N[r],R=v(r);return(u==null?void 0:u.some(q=>h.includes(q.code)&&!q.isHidden))?C("div",{className:`${y}__section`,children:[p("h3",{className:`${y}__section-title`,children:T[R]}),b(h)]},`section-${r}`):null};return C("div",{className:`${y}__inputs`,children:[S("CompanyInformationSection"),S("LegalAddressSection"),S("CompanyAdministratorSection")]})}),me=({showFormLoader:a,slots:e,name:u="companyForm",loading:n,children:y,className:s="company-form",fieldsConfig:g=[],values:o={},errors:i={},onSubmit:c,onChange:E,onBlur:f,regionOptions:_,countryOptions:T,fieldIdPrefix:N})=>{const v=K(null),L=async t=>{t.preventDefault(),c&&await c(t,!0)};if(a||n)return p("div",{className:k(["dropin-form-loader","company-form-loader"]),children:"Loading..."});const l=t=>{const d=t.target,{name:m,value:b}=d;E&&E({[m]:b})};return C("form",{id:u,ref:v,className:k(["company-form",s]),onSubmit:L,noValidate:!0,children:[p(ce,{className:s,fields:g,values:o,errors:i,onChange:l,onBlur:f,slots:e,regionOptions:_,countryOptions:T,fieldIdPrefix:N}),y]})},ue=(a={})=>{const{defaultCountry:e="US",formName:u="company_registration"}=a,[n,y]=$(null),[s,g]=$(()=>{var d;try{const m=sessionStorage.getItem(`${u}_formData`);return m?{countryCode:(d=JSON.parse(m))==null?void 0:d.countryCode}:{countryCode:e}}catch{return{countryCode:e}}}),[o,i]=$(!0),[c,E]=$(!0),[f,_]=$([]);M(()=>{i(!0),E(!0),z().then(({availableCountries:d,countriesWithRequiredRegion:m,optionalZipCountries:b})=>{y({availableCountries:d,countriesWithRequiredRegion:m,optionalZipCountries:b}),i(!1),E(!1)}).catch(d=>{console.error("Failed to load countries:",d),i(!1),E(!1)})},[]),M(()=>{if(s!=null&&s.countryCode&&n){const d=n.availableCountries.find(m=>m.value===s.countryCode);if(d!=null&&d.availableRegions&&d.availableRegions.length>0){const m=d.availableRegions.map(b=>({text:b.name,value:`${b.code},${b.id}`,id:b.id,code:b.code}));_(m)}else _([])}else _([])},[s==null?void 0:s.countryCode,n]);const T=G(()=>(n==null?void 0:n.availableCountries)||[],[n]),N=G(()=>!(s!=null&&s.countryCode)||!n?!1:n.countriesWithRequiredRegion.includes(s.countryCode),[s==null?void 0:s.countryCode,n]),v=G(()=>!(s!=null&&s.countryCode)||!n?!0:!n.optionalZipCountries.includes(s.countryCode),[s==null?void 0:s.countryCode,n]),L=G(()=>f,[f]),l=G(()=>L.length>0,[L.length]),t=D((d,m)=>{g(b=>{const S={...b,[d]:m};return d==="countryCode"&&(S.regionCode="",S.regionId=void 0),S})},[]);return{countryOptions:T,regionOptions:L,isRequiredRegion:N,isRequiredPostCode:v,disableField:o,loadingCountries:c,hasRegions:l,handleInputChange:t,inputChange:s}},pe=a=>{var E;const{formData:e,isRequiredRegion:u=!1,isRequiredPostCode:n=!1,hasRegions:y=!1,disableField:s=!1,translations:g={}}=a,o=f=>(g==null?void 0:g[f])||f,i=f=>{const _=o(f);return f==="countryCode"||f==="region"||f==="adminGender"?`Select ${_.toLowerCase()}`:`Enter ${_.toLowerCase()}`},c={isRequiredRegion:u,isRequiredPostCode:n};return[{code:"companyName",name:"companyName",id:"companyName",label:o("companyName"),placeholder:i("companyName"),required:!0,fieldType:A.TEXT,isHidden:!1,customUpperCode:"companyName",defaultValue:(e==null?void 0:e.companyName)||"",options:[],maxlength:40,...c,validateRules:[]},{code:"legalName",name:"legalName",id:"legalName",label:o("legalName"),placeholder:i("legalName"),required:!1,fieldType:A.TEXT,isHidden:!1,customUpperCode:"legalName",defaultValue:(e==null?void 0:e.legalName)||"",options:[],maxlength:80,validateRules:[],...c},{code:"companyEmail",name:"companyEmail",id:"companyEmail",label:o("companyEmail"),placeholder:i("companyEmail"),required:!0,fieldType:A.EMAIL,isHidden:!1,customUpperCode:"companyEmail",defaultValue:(e==null?void 0:e.companyEmail)||"",options:[],maxlength:254,validateRules:[{INPUT_VALIDATION:"email"},{MIN_TEXT_LENGTH:5},{MAX_TEXT_LENGTH:254}],...c},{code:"vatTaxId",name:"vatTaxId",id:"vatTaxId",label:o("vatTaxId"),placeholder:i("vatTaxId"),required:!1,fieldType:A.TEXT,isHidden:!1,customUpperCode:"vatTaxId",defaultValue:(e==null?void 0:e.vatTaxId)||"",options:[],maxlength:40,validateRules:[],...c},{code:"resellerId",name:"resellerId",id:"resellerId",label:o("resellerId"),placeholder:i("resellerId"),required:!1,fieldType:A.TEXT,isHidden:!1,customUpperCode:"resellerId",defaultValue:(e==null?void 0:e.resellerId)||"",options:[],maxlength:40,validateRules:[],...c},{code:"street",name:"street",id:"street",label:o("street"),placeholder:i("street"),required:!0,fieldType:A.TEXT,isHidden:!1,customUpperCode:"street",defaultValue:Array.isArray(e==null?void 0:e.street)?e.street[0]:(e==null?void 0:e.street)||"",options:[],validateRules:[],...c},{code:"streetLine2",name:"streetLine2",id:"streetLine2",label:o("streetLine2"),placeholder:i("streetLine2"),required:!1,fieldType:A.TEXT,isHidden:!1,customUpperCode:"streetLine2",defaultValue:Array.isArray(e==null?void 0:e.street)?e.street[1]:"",options:[],validateRules:[],...c},{code:"city",name:"city",id:"city",label:o("city"),placeholder:i("city"),required:!0,fieldType:A.TEXT,isHidden:!1,customUpperCode:"city",defaultValue:(e==null?void 0:e.city)||"",options:[],validateRules:[],...c},{code:"countryCode",name:"countryCode",id:"countryCode",label:o("country"),placeholder:i("country"),required:!0,disabled:s,fieldType:A.SELECT,isHidden:!1,customUpperCode:"countryCode",defaultValue:(e==null?void 0:e.countryCode)||"",options:[],validateRules:[]},{code:"region",name:"region",id:"region",label:o("stateProvince"),placeholder:i("stateProvince"),required:u,disabled:!1,fieldType:y?A.SELECT:A.TEXT,isHidden:!1,customUpperCode:"region",defaultValue:(e==null?void 0:e.regionCode)||"",options:[]},{code:"postcode",name:"postcode",id:"postcode",label:o("postalCode"),placeholder:i("postalCode"),required:n,fieldType:A.TEXT,isHidden:!1,customUpperCode:"postcode",defaultValue:(e==null?void 0:e.postcode)||"",options:[],validateRules:[{INPUT_VALIDATION:"postal-code"},{MIN_TEXT_LENGTH:3},{MAX_TEXT_LENGTH:20}],...c},{code:"addressTelephone",name:"addressTelephone",id:"addressTelephone",label:o("telephone"),placeholder:i("telephone"),required:!0,fieldType:A.TEL,isHidden:!1,customUpperCode:"addressTelephone",defaultValue:(e==null?void 0:e.addressTelephone)||"",options:[],validateRules:[{INPUT_VALIDATION:"phone"},{MIN_TEXT_LENGTH:1},{MAX_TEXT_LENGTH:20}],...c},{code:"adminJobTitle",name:"adminJobTitle",id:"adminJobTitle",label:o("adminJobTitle"),placeholder:i("adminJobTitle"),required:!1,fieldType:A.TEXT,isHidden:!1,customUpperCode:"adminJobTitle",defaultValue:(e==null?void 0:e.adminJobTitle)||"",options:[],validateRules:[],...c},{code:"adminWorkTelephone",name:"adminWorkTelephone",id:"adminWorkTelephone",label:o("adminWorkTelephone"),placeholder:i("adminWorkTelephone"),required:!1,fieldType:A.TEL,isHidden:!1,customUpperCode:"adminWorkTelephone",defaultValue:(e==null?void 0:e.adminWorkTelephone)||"",options:[],validateRules:[{INPUT_VALIDATION:"phone"},{MIN_TEXT_LENGTH:1},{MAX_TEXT_LENGTH:20}],...c},{code:"adminEmail",name:"adminEmail",id:"adminEmail",label:o("adminEmail"),placeholder:i("adminEmail"),required:!0,fieldType:A.EMAIL,isHidden:!1,customUpperCode:"adminEmail",defaultValue:(e==null?void 0:e.adminEmail)||"",options:[],validateRules:[{INPUT_VALIDATION:"email"},{MIN_TEXT_LENGTH:5},{MAX_TEXT_LENGTH:254}],...c},{code:"adminFirstname",name:"adminFirstname",id:"adminFirstname",label:o("adminFirstname"),placeholder:i("adminFirstname"),required:!0,fieldType:A.TEXT,isHidden:!1,customUpperCode:"adminFirstname",defaultValue:(e==null?void 0:e.adminFirstname)||"",options:[],validateRules:[{INPUT_VALIDATION:"name"},{MIN_TEXT_LENGTH:1},{MAX_TEXT_LENGTH:255}],...c},{code:"adminLastname",name:"adminLastname",id:"adminLastname",label:o("adminLastname"),placeholder:i("adminLastname"),required:!0,fieldType:A.TEXT,isHidden:!1,customUpperCode:"adminLastname",defaultValue:(e==null?void 0:e.adminLastname)||"",options:[],validateRules:[{INPUT_VALIDATION:"name"},{MIN_TEXT_LENGTH:1},{MAX_TEXT_LENGTH:255}],...c},{code:"adminGender",name:"adminGender",id:"adminGender",label:o("adminGender"),placeholder:i("adminGender"),required:!1,fieldType:A.SELECT,isHidden:!1,customUpperCode:"adminGender",defaultValue:((E=e==null?void 0:e.adminGender)==null?void 0:E.toString())||"",options:[{value:"1",text:"Male",isDefault:!0},{value:"2",text:"Female",isDefault:!1},{value:"0",text:"Not Specified",isDefault:!1}],validateRules:[],...c}]},he=a=>a.reduce((e,u)=>({...e,...u}),{}),ye=a=>/^[0-9]+$/.test(a),ge=a=>/^[a-zA-Z0-9]+$/.test(a),Ce=a=>/^[a-zA-Z0-9\s]+$/.test(a),fe=a=>/^[a-zA-Z]+$/.test(a),Te=a=>/^[a-z0-9,!#$%&'*+/=?^_`{|}~-]+(\.[a-z0-9,!#$%&'*+/=?^_`{|}~-]+)*@([a-z0-9-]+\.)+[a-z]{2,}$/i.test(a),Ee=a=>/(?:[\d\s+\-()]{1,20})/u.test(a),_e=a=>/^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i.test(a),Ne=a=>/^[A-Z0-9\s-]{3,10}$/i.test(a),ve=a=>/^(?:[\p{L}\p{M},\-_.'`&\s\d]){1,255}$/u.test(a),be=(a,e,u)=>{const n=a.length;return n>=e&&n<=u},Z=(a,e,u,n)=>{var r,h;const{requiredFieldError:y,lengthTextError:s,numericError:g,alphaNumWithSpacesError:o,alphaNumericError:i,alphaError:c,emailError:E,phoneError:f,postalCodeError:_,urlError:T,nameError:N}=u,v=e==null?void 0:e.customUpperCode,L={[v]:""};n[v]&&delete n[v];const l=(a==null?void 0:a.trim())||"";if(e!=null&&e.required&&(!l||l==="false"))return{[v]:y};if(!(e!=null&&e.required)&&!l||!((r=e==null?void 0:e.validateRules)!=null&&r.length))return L;const t=he(e==null?void 0:e.validateRules),d=Number(t.MIN_TEXT_LENGTH)??1,m=Number(t.MAX_TEXT_LENGTH)??255;if(!be(l,d,m))return{[v]:s.replace("{min}",d.toString()).replace("{max}",m.toString())};const S={numeric:{validate:ye,error:g},"alphanum-with-spaces":{validate:Ce,error:o},alphanumeric:{validate:ge,error:i},alpha:{validate:fe,error:c},email:{validate:Te,error:E},phone:{validate:Ee,error:f},"postal-code":{validate:R=>Ne(R),error:_},url:{validate:_e,error:T},name:{validate:ve,error:N}}[t.INPUT_VALIDATION];return S&&!S.validate(l)&&!((h=n[v])!=null&&h.length)?{[v]:S.error}:L},Ie=a=>({requiredFieldError:a.requiredFieldError,lengthTextError:a.lengthTextError,numericError:a.numericError,alphaNumWithSpacesError:a.alphaNumWithSpacesError,alphaNumericError:a.alphaNumericError,alphaError:a.alphaError,emailError:a.emailError,phoneError:a.phoneError,postalCodeError:a.postalCodeError,urlError:a.urlError,nameError:a.nameError}),Q=(a,e)=>({fieldsConfig:a,translations:Ie(e)}),Ae=(a,e,u)=>{const{fieldsConfig:n,translations:y}=u,s=n.find(c=>c.code===a);if(!s)return"";const g=Array.isArray(e)?e.join(""):e.toString(),o={validateRules:s.validateRules||[],customUpperCode:s.customUpperCode,required:s.required};return Z(g,o,y,{})[s.customUpperCode]||""},Le=(a,e)=>{const{fieldsConfig:u,translations:n}=e,y=u[0],s=(y==null?void 0:y.isRequiredRegion)||!1,g=(y==null?void 0:y.isRequiredPostCode)||!1;let o=!1;const i={};Object.entries(a).forEach(([_,T])=>{const N=u.find(t=>t.code===_);if(!N)return;const v=Array.isArray(T)?T.join(""):T.toString(),L={validateRules:N.validateRules,customUpperCode:N.customUpperCode,required:N.required},l=Z(v,L,n,{});l[N.customUpperCode]&&(i[N.customUpperCode]=l[N.customUpperCode],o=!0)});const c=typeof a.regionId=="number"&&a.regionId>0,E=a.regionCode&&a.regionCode.toString().trim(),f=a.region&&a.region.toString().trim();return s&&!c&&!E&&!f&&(i.region=n.requiredFieldError,o=!0),g&&!a.postcode.toString().trim()&&(i.postcode=n.requiredFieldError,o=!0),{isValid:!o,fieldErrors:i}},Y=(a,e,u,n)=>{const y=Q(u,n);return Ae(a,e,y)},Re=(a,e,u)=>{const n=Q(e,u);return Le(a,n)},Se=a=>{const{setFormData:e,hasRegions:u,regionOptions:n,fieldsConfig:y,formTranslations:s,setFieldErrors:g}=a,o=(l,t)=>{const d=Y(l,t,y,s);g&&d?g(m=>({...m,[l]:d})):g&&g(m=>{const b={...m};return delete b[l],b})},i=l=>{e(t=>{const d=Array.isArray(t.street)?t.street:[t.street||"",""],m=Array.isArray(l)?l:[l,d[1]||""];return{...t,street:m}}),o("street",l)},c=l=>{e(t=>{const m=[(Array.isArray(t.street)?t.street:[t.street||"",""])[0]||"",l];return{...t,street:m}}),o("streetLine2",l)},E=l=>{e(t=>({...t,region:l,regionCode:"",regionId:void 0})),o("region",l)},f=l=>{e(t=>({...t,regionCode:l,...u?{}:{regionId:void 0}})),o("regionCode",l)},_=l=>{const t=typeof l=="string"?parseInt(l,10)||void 0:l;e(d=>{const m={...d,regionId:t};if(t&&n.length>0){const b=n.find(S=>S.id===t||S.value===(t==null?void 0:t.toString()));b&&b.code&&(m.regionCode=b.code)}return m}),o("regionId",l)},T=l=>{e(t=>({...t,countryCode:l,regionCode:"",regionId:void 0,region:""})),o("countryCode",l)},N=(l,t)=>{e(d=>({...d,[l]:t})),o(l,t)};return{handleInputChange:l=>{const t=l.target;if(!t)return;const{name:d,value:m}=t;switch(d){case"street":i(m);break;case"streetLine2":c(m);break;case"region":u?_(m):E(m);break;case"regionCode":f(m);break;case"countryCode":T(m);break;default:N(d,m);break}},handleInputChangeFromValues:l=>{Object.entries(l).forEach(([t,d])=>{switch(t){case"street":i(d);break;case"streetLine2":c(d);break;case"region":E(d);break;case"regionCode":f(d);break;case"regionId":_(d);break;case"countryCode":T(d);break;default:N(t,d);break}})},handleStreetChange:i,handleStreetLine2Change:c,handleRegionTextChange:E,handleRegionCodeChange:f,handleRegionDropdownChange:_,handleCountryChange:T,handleGenericFieldChange:N}},Fe=({onSuccess:a,onError:e})=>{const[u,n]=$(!1),[y,s]=$({}),[g,o]=$("US"),[i,c]=$(!0),{countryOptions:E,regionOptions:f,isRequiredRegion:_,isRequiredPostCode:T,hasRegions:N,loadingCountries:v,disableField:L,handleInputChange:l}=ue({defaultCountry:g,formName:"companyRegistration"}),[t,d]=$({countryCode:g,region:"",regionCode:"",regionId:"",street:["",""]});M(()=>{(async()=>{try{c(!0);const V=(await te()).defaultCountry||"US";o(V),d(w=>({...w,countryCode:V}))}catch(I){console.error("Failed to load store config:",I)}finally{c(!1)}})()},[]),M(()=>{g&&!i&&l("countryCode",g)},[g,l,i]);const m=J({requiredFieldError:"Company.shared.validation.required",lengthTextError:"Company.FormText.lengthTextError",numericError:"Company.FormText.numericError",alphaNumWithSpacesError:"Company.FormText.alphaNumWithSpacesError",alphaNumericError:"Company.FormText.alphaNumericError",alphaError:"Company.FormText.alphaError",emailError:"Company.shared.validation.invalidEmail",phoneError:"Company.shared.validation.phoneInvalid",postalCodeError:"Company.shared.validation.postalCodeInvalid",urlError:"Company.FormText.urlError",nameError:"Company.FormText.nameError"}),b=J({title:"Company.shared.fields.title",submitButton:"Company.shared.fields.submit",submittingButton:"Company.shared.fields.submitting",cancelButton:"Company.shared.buttons.cancel",createCompanyError:"Company.shared.fields.createCompanyError",unexpectedError:"Company.shared.fields.unexpectedError",emailNotAvailable:"Company.shared.validation.emailNotAvailable",companyName:"Company.shared.fields.companyName",legalName:"Company.shared.fields.legalName",companyEmail:"Company.shared.fields.companyEmail",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId",street:"Company.shared.fields.street",streetLine2:"Company.shared.fields.streetLine2",city:"Company.shared.fields.city",country:"Company.shared.fields.country",stateProvince:"Company.shared.fields.stateProvince",postalCode:"Company.shared.fields.postalCode",telephone:"Company.shared.fields.telephone",adminJobTitle:"Company.shared.fields.adminJobTitle",adminWorkTelephone:"Company.shared.fields.adminWorkTelephone",adminEmail:"Company.shared.fields.adminEmail",adminFirstname:"Company.shared.fields.adminFirstname",adminLastname:"Company.shared.fields.adminLastname",adminGender:"Company.shared.fields.adminGender"}),S=G(()=>pe({formData:{countryCode:t.countryCode,regionCode:t.regionCode,regionId:t.regionId},isRequiredRegion:_,isRequiredPostCode:T,hasRegions:N,disableField:L,translations:b}).map(I=>I.code==="region"?{...I,required:_,disabled:v,fieldType:N?"SELECT":"TEXT",options:N?f.map(V=>({text:V.text,value:V.value,isDefault:!1})):[]}:I.code==="postcode"?{...I,required:T}:I.code==="countryCode"?{...I,disabled:L||v,options:E.map(V=>({text:V.text,value:V.value,isDefault:!1}))}:I),[_,T,N,v,L,E,f,t.countryCode,t.regionCode,t.regionId,b]),r=x=>{const I=Re(x,S,m);return s(I.fieldErrors),I.isValid},h=G(()=>Se({setFormData:d,hasRegions:N,regionOptions:f,fieldsConfig:S,formTranslations:m,setFieldErrors:s}),[N,f,S,m]);return{formValues:t,fieldErrors:y,isSubmitting:u,loadingStoreConfig:i,fieldsConfig:S,countryOptions:E,regionOptions:f,loadingCountries:v,handleInputChange:x=>{h.handleInputChangeFromValues(x),Object.entries(x).forEach(([I,V])=>{I==="countryCode"&&l("countryCode",V)})},handleBlur:x=>{const I=x.target,{name:V,value:w}=I,P=S.find(H=>H.customUpperCode===V);if(P){const H=Y(P.code,w,S,m);s(O=>({...O,[V]:H||""}))}},handleFormSubmit:async(x,I)=>{const V=x.target,w=new FormData(V),P={};for(const[X,U]of w.entries())P[X]=U;const H={...P,...t},O=r(H);if(!(!I||!O)){n(!0);try{const X=await ie(H.companyEmail);if(!X.isValid){s(j=>({...j,companyEmail:X.error||b.emailNotAvailable})),n(!1);return}const U=await se(H);if(U.success&&U.company)a==null||a(U.company);else{const j=U.errors||[b.createCompanyError];e==null||e(j)}}catch(X){const U=X instanceof Error?X.message:b.unexpectedError;e==null||e([U])}finally{n(!1)}}},translations:b,formTranslations:m}},xe=({onSuccess:a,onError:e,className:u="",slots:n,hideActionFormButtons:y=!1})=>{const{formValues:s,fieldErrors:g,isSubmitting:o,loadingStoreConfig:i,fieldsConfig:c,countryOptions:E,regionOptions:f,loadingCountries:_,handleInputChange:T,handleBlur:N,handleFormSubmit:v,translations:L}=Fe({onSuccess:a,onError:e});return C("div",{className:k(["company-form-wrapper",u]),children:[p("h2",{children:L.title}),p(me,{regionOptions:f,countryOptions:E,slots:n,className:"company-registration-form",name:"companyRegistrationForm",fieldsConfig:c,values:s,errors:g,onChange:T,onBlur:N,onSubmit:v,loading:o,showFormLoader:!1,children:!y&&p("div",{className:k(["company-form-wrapper__buttons"]),children:p(re,{type:"submit",disabled:o||i||_,className:"company-form-wrapper__submit",children:o?L.submittingButton:L.submitButton})})})]})},Ve=({company:a})=>{var y;const[e,u]=$(""),n=J({pendingApproval:"Company.CompanyRegistration.success.pendingApproval",companyDetails:"Company.CompanyRegistration.success.companyDetails",companyName:"Company.shared.fields.companyName",companyEmail:"Company.shared.fields.companyEmail",legalName:"Company.shared.fields.legalName",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId",address:"Company.shared.fields.legalAddress",street:"Company.shared.fields.street",city:"Company.shared.fields.city",stateProvince:"Company.shared.fields.stateProvince",postcode:"Company.shared.fields.postcode",country:"Company.shared.fields.country",telephone:"Company.shared.fields.telephone",companyAdmin:"Company.shared.fields.companyAdmin",adminFirstname:"Company.shared.fields.adminFirstname",adminLastname:"Company.shared.fields.adminLastname",adminEmail:"Company.shared.fields.adminEmail",adminJobTitle:"Company.shared.fields.adminJobTitle",adminWorkTelephone:"Company.shared.fields.adminWorkTelephone"});return M(()=>{(async()=>{var g;if((g=a.legalAddress)!=null&&g.countryCode)try{const{availableCountries:o}=await z(),i=o.find(c=>{var E;return c.value===((E=a.legalAddress)==null?void 0:E.countryCode)});i&&u(i.text)}catch(o){console.error("Failed to fetch countries:",o),u(a.legalAddress.countryCode)}})()},[(y=a.legalAddress)==null?void 0:y.countryCode]),C("div",{className:"company-registration-success",children:[p("div",{className:"company-registration-success__header",children:p("p",{className:"company-registration-success__pending",children:n.pendingApproval})}),C("div",{className:"company-registration-success__details",children:[p("h2",{className:"company-registration-success__details-title",children:n.companyDetails}),C("div",{className:"company-registration-success__grid",children:[C("div",{className:"company-registration-success__item",children:[C("span",{className:"company-registration-success__label",children:[n.companyName,":"]}),p("span",{className:"company-registration-success__value",children:a.name})]}),a.legalName&&C("div",{className:"company-registration-success__item",children:[C("span",{className:"company-registration-success__label",children:[n.legalName,":"]}),p("span",{className:"company-registration-success__value",children:a.legalName})]}),C("div",{className:"company-registration-success__item",children:[C("span",{className:"company-registration-success__label",children:[n.companyEmail,":"]}),p("span",{className:"company-registration-success__value",children:a.email})]}),a.vatTaxId&&C("div",{className:"company-registration-success__item",children:[C("span",{className:"company-registration-success__label",children:[n.vatTaxId,":"]}),p("span",{className:"company-registration-success__value",children:a.vatTaxId})]}),a.resellerId&&C("div",{className:"company-registration-success__item",children:[C("span",{className:"company-registration-success__label",children:[n.resellerId,":"]}),p("span",{className:"company-registration-success__value",children:a.resellerId})]}),a.legalAddress&&C(W,{children:[p("div",{className:"company-registration-success__section-header",children:p("h3",{children:n.address})}),a.legalAddress.street&&a.legalAddress.street[0]&&C("div",{className:"company-registration-success__item",children:[C("span",{className:"company-registration-success__label",children:[n.street,":"]}),p("span",{className:"company-registration-success__value",children:a.legalAddress.street.map((s,g)=>p("div",{children:s},g))})]}),a.legalAddress.city&&C("div",{className:"company-registration-success__item",children:[C("span",{className:"company-registration-success__label",children:[n.city,":"]}),p("span",{className:"company-registration-success__value",children:a.legalAddress.city})]}),a.legalAddress.countryCode&&C("div",{className:"company-registration-success__item",children:[C("span",{className:"company-registration-success__label",children:[n.country,":"]}),p("span",{className:"company-registration-success__value",children:e||a.legalAddress.countryCode})]}),a.legalAddress.region&&C("div",{className:"company-registration-success__item",children:[C("span",{className:"company-registration-success__label",children:[n.stateProvince,":"]}),p("span",{className:"company-registration-success__value",children:a.legalAddress.region.region||a.legalAddress.region.regionCode})]}),a.legalAddress.postcode&&C("div",{className:"company-registration-success__item",children:[C("span",{className:"company-registration-success__label",children:[n.postcode,":"]}),p("span",{className:"company-registration-success__value",children:a.legalAddress.postcode})]}),a.legalAddress.telephone&&C("div",{className:"company-registration-success__item",children:[C("span",{className:"company-registration-success__label",children:[n.telephone,":"]}),p("span",{className:"company-registration-success__value",children:a.legalAddress.telephone})]})]}),a.companyAdmin&&C(W,{children:[p("div",{className:"company-registration-success__section-header",children:p("h3",{children:n.companyAdmin})}),a.companyAdmin.jobTitle&&C("div",{className:"company-registration-success__item",children:[C("span",{className:"company-registration-success__label",children:[n.adminJobTitle,":"]}),p("span",{className:"company-registration-success__value",children:a.companyAdmin.jobTitle})]}),a.companyAdmin.telephone&&C("div",{className:"company-registration-success__item",children:[C("span",{className:"company-registration-success__label",children:[n.adminWorkTelephone,":"]}),p("span",{className:"company-registration-success__value",children:a.companyAdmin.telephone})]}),C("div",{className:"company-registration-success__item",children:[C("span",{className:"company-registration-success__label",children:[n.adminEmail,":"]}),p("span",{className:"company-registration-success__value",children:a.companyAdmin.email})]})]})]})]})]})},ze=({isAuthenticated:a=!1,onRedirectLogin:e,onRedirectAccount:u,onSuccess:n,onError:y,className:s,slots:g})=>{const[o,i]=$("loading"),[c,E]=$(null);M(()=>{let T=!0;return(async()=>{try{if(!await le()){if(T){const v=a?"redirect-account":"redirect-login";console.log(`Company registration disabled - redirecting to ${a?"account dashboard":"login page"}`),i(v)}return}if(a)try{if(await de()){T&&(console.log("User already belongs to a company - redirecting to account dashboard"),i("redirect-account"));return}}catch(v){console.error("Error checking company membership - redirecting to account dashboard:",v),T&&i("redirect-account");return}T&&i("show-form")}catch(N){console.error("Error checking B2B status:",N),T&&i(a?"redirect-account":"redirect-login")}})(),()=>{T=!1}},[a]),M(()=>{o==="redirect-login"&&e&&e(),o==="redirect-account"&&u&&u()},[o,e,u]);const f=T=>{i("success"),E(T),n==null||n(T)},_=T=>{y==null||y(T)};return o==="loading"||o==="redirect-login"||o==="redirect-account"?null:o==="success"&&c?p("div",{className:`company-registration-container ${s||""}`,children:p(Ve,{company:c})}):p("div",{className:`company-registration-container ${s||""}`,children:p(xe,{onSuccess:f,onError:_,slots:g})})};export{ze as CompanyRegistration,ze as default};
3
+ import{jsxs as g,jsx as m,Fragment as J}from"@dropins/tools/preact-jsx-runtime.js";import{useRef as D,useEffect as H,useState as $,useMemo as G,useCallback as ee}from"@dropins/tools/preact-hooks.js";import{Field as B,Picker as ae,Input as re,ProgressSpinner as z,InLineAlert as ne,Button as oe}from"@dropins/tools/components.js";import{classes as w,Slot as te}from"@dropins/tools/lib.js";import{memo as se}from"@dropins/tools/preact-compat.js";import{useText as P}from"@dropins/tools/i18n.js";import{g as ie,c as le}from"../chunks/createCompany.js";import{g as Z,v as de}from"../chunks/validateCompanyEmail.js";/* empty css */import{u as ce}from"../chunks/useInLineAlert.js";import{a as me,i as ue}from"../chunks/isCompanyUser.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/event-bus.js";import"../chunks/fetch-error.js";import"../chunks/company-permissions.js";var A=(a=>(a.TEXT="TEXT",a.EMAIL="EMAIL",a.TEL="TEL",a.SELECT="SELECT",a.HIDDEN="HIDDEN",a))(A||{});const pe=se(({loading:a,values:e={},fields:p,errors:n={},className:h="",regionOptions:t,countryOptions:y,onChange:s,onBlur:l,onFocus:u,slots:E,fieldIdPrefix:f})=>{const _=`${h}__field`,S=P({selectCountry:"Company.FormText.selectCountry",selectRegion:"Company.FormText.selectRegion",selectCountryFirst:"Company.FormText.selectCountryFirst",country:"Company.shared.fields.country",stateProvince:"Company.shared.fields.stateProvince","Company.Registration.companyInformation":"Company.shared.fields.companyInformation","Company.Registration.legalAddress":"Company.shared.fields.legalAddress","Company.Registration.companyAdmin":"Company.shared.fields.companyAdmin"}),N={CompanyInformationSection:["companyName","legalName","companyEmail","vatTaxId","resellerId"],LegalAddressSection:["street","streetLine2","city","countryCode","region","postcode","addressTelephone"],CompanyAdministratorSection:["adminEmail","adminFirstname","adminLastname","adminJobTitle","adminWorkTelephone","adminGender"]},b=r=>({CompanyInformationSection:"Company.Registration.companyInformation",LegalAddressSection:"Company.Registration.legalAddress",CompanyAdministratorSection:"Company.Registration.companyAdmin"})[r],T=r=>{var C,L,F,V;if((r.code==="region"||r.code==="regionCode")&&r.fieldType===A.SELECT){const x=((C=e.regionCode)==null?void 0:C.toString())||"",I=((L=e.regionId)==null?void 0:L.toString())||"";return x&&I?`${x},${I}`:(F=e[r.code])!=null&&F.toString().includes(",")?(V=e[r.code])==null?void 0:V.toString():""}return null},i=r=>{var C;return r.code==="street"?Array.isArray(e.street)?e.street[0]||"":((C=e.street)==null?void 0:C.toString())||"":r.code==="streetLine2"?Array.isArray(e.street)&&e.street[1]||"":null},o=(r,C)=>{const L=`CompanyFormInput_${r.code}`,F=E==null?void 0:E[L];if(!F)return null;const V={inputName:r.code,handleOnChange:s||(()=>{}),errorMessage:C,errors:Object.values(n),formData:e,fieldConfig:{required:r.required,disabled:r.disabled||a,placeholder:r.placeholder||r.label,label:r.label}};return m(te,{"data-testid":`companyFormInput_${r.code}`,name:L,slot:F,context:V})},d=(r,C,L)=>{let F=r.options;return r.code==="countryCode"||r.code==="country_code"?F=(y==null?void 0:y.map(V=>({value:V.value,text:V.text,isDefault:!1})))||[]:(r.code==="region"||r.code==="regionCode")&&(F=(t==null?void 0:t.map(V=>({text:V.text,value:V.value,isDefault:!1})))||[]),m(J,{children:o(r,L)??m(B,{error:L,className:w([_,`${_}--${r.id}`,[`${_}--${r.id}-hidden`,r.isHidden],r.className]),"data-testid":`${h}--${r.id}`,disabled:a,children:m(ae,{"aria-label":r.label,"aria-required":r.required?"true":"false",id:f?`${f}_${r.code}`:r.code,required:r==null?void 0:r.required,name:r.customUpperCode||r.code,floatingLabel:`${r.label} ${r.required?"*":""}`,placeholder:r.label,options:F,onBlur:l,onFocus:u,handleSelect:s,defaultValue:C,value:C})},r.id)})},c=(r,C,L)=>{let F="text";return r.fieldType===A.EMAIL?F="email":r.fieldType===A.TEL&&(F="tel"),m(J,{children:o(r,L)??m(B,{error:L,className:w([_,`${_}--${r.id}`,[`${_}--${r.id}-hidden`,r.isHidden],r.className]),"data-testid":`${h}--${r.id}`,disabled:a,children:m(re,{"aria-label":r.label,"aria-required":r.required?"true":"false",id:f?`${f}_${r.code}`:r.code,type:F,name:r.customUpperCode,value:C??r.defaultValue,placeholder:r.label,floatingLabel:`${r.label} ${r.required?"*":""}`,maxLength:r.maxlength,onBlur:l,onFocus:u,onChange:s})},r.id)})},v=r=>p==null?void 0:p.filter(C=>r.includes(C.code)&&!C.isHidden).map(C=>{var I,q;let L=((I=e[C.code])==null?void 0:I.toString())||"";const F=i(C);F!==null&&(L=F);const V=T(C);V!==null&&(L=V);const x=n[C.customUpperCode||C.code]||"";return C.code==="region"||C.code==="regionCode"?C.fieldType===A.SELECT?d(C,L,x):c(C,L,x):C.fieldType===A.SELECT||((q=C.options)==null?void 0:q.length)>0?d(C,L,x):c(C,L,x)}),R=r=>{const C=N[r],L=b(r);return(p==null?void 0:p.some(V=>C.includes(V.code)&&!V.isHidden))?g("div",{className:`${h}__section`,children:[m("h3",{className:`${h}__section-title`,children:S[L]}),v(C)]},`section-${r}`):null};return g("div",{className:`${h}__inputs`,children:[R("CompanyInformationSection"),R("LegalAddressSection"),R("CompanyAdministratorSection")]})}),he=({showFormLoader:a,slots:e,name:p="companyForm",loading:n,submitting:h,children:t,className:y="company-form",fieldsConfig:s=[],values:l={},errors:u={},onSubmit:E,onChange:f,onBlur:_,regionOptions:S,countryOptions:N,fieldIdPrefix:b})=>{const T=D(null),i=P({loading:"Company.FormText.loading",submitting:"Company.FormText.submitting"});H(()=>{h&&window.scrollTo({top:0,behavior:"smooth"})},[h]);const o=async c=>{c.preventDefault(),E&&await E(c,!0)};if(a||n)return g("div",{className:w(["company-form-loader"]),"data-testid":"company-form-loader",children:[m(z,{size:"large"}),m("div",{className:"company-form-loader__text",children:i.loading})]});const d=c=>{const v=c.target,{name:R,value:r}=v;f&&f({[R]:r})};return g("div",{className:"company-form-container",children:[g("form",{id:p,ref:T,className:w(["company-form",y,h&&"company-form--submitting"]),onSubmit:o,noValidate:!0,children:[m(pe,{className:y,fields:s,values:l,errors:u,loading:h,onChange:d,onBlur:_,slots:e,regionOptions:S,countryOptions:N,fieldIdPrefix:b}),t]}),h&&g("div",{className:"company-form__submitting-overlay","data-testid":"company-form-submitting-overlay",children:[m(z,{size:"large"}),m("div",{className:"company-form__submitting-text",children:i.submitting})]})]})},ye=(a={})=>{const{defaultCountry:e="US",formName:p="company_registration"}=a,[n,h]=$(null),[t,y]=$(()=>{var d;try{const c=sessionStorage.getItem(`${p}_formData`);return c?{countryCode:(d=JSON.parse(c))==null?void 0:d.countryCode}:{countryCode:e}}catch{return{countryCode:e}}}),[s,l]=$(!0),[u,E]=$(!0),[f,_]=$([]);H(()=>{l(!0),E(!0),Z().then(({availableCountries:d,countriesWithRequiredRegion:c,optionalZipCountries:v})=>{h({availableCountries:d,countriesWithRequiredRegion:c,optionalZipCountries:v}),l(!1),E(!1)}).catch(d=>{console.error("Failed to load countries:",d),l(!1),E(!1)})},[]),H(()=>{if(t!=null&&t.countryCode&&n){const d=n.availableCountries.find(c=>c.value===t.countryCode);if(d!=null&&d.availableRegions&&d.availableRegions.length>0){const c=d.availableRegions.map(v=>({text:v.name,value:`${v.code},${v.id}`,id:v.id,code:v.code}));_(c)}else _([])}else _([])},[t==null?void 0:t.countryCode,n]);const S=G(()=>(n==null?void 0:n.availableCountries)||[],[n]),N=G(()=>!(t!=null&&t.countryCode)||!n?!1:n.countriesWithRequiredRegion.includes(t.countryCode),[t==null?void 0:t.countryCode,n]),b=G(()=>!(t!=null&&t.countryCode)||!n?!0:!n.optionalZipCountries.includes(t.countryCode),[t==null?void 0:t.countryCode,n]),T=G(()=>f,[f]),i=G(()=>T.length>0,[T.length]),o=ee((d,c)=>{y(v=>{const R={...v,[d]:c};return d==="countryCode"&&(R.regionCode="",R.regionId=void 0),R})},[]);return{countryOptions:S,regionOptions:T,isRequiredRegion:N,isRequiredPostCode:b,disableField:s,loadingCountries:u,hasRegions:i,handleInputChange:o,inputChange:t}},ge=a=>{var E;const{formData:e,isRequiredRegion:p=!1,isRequiredPostCode:n=!1,hasRegions:h=!1,disableField:t=!1,translations:y={}}=a,s=f=>(y==null?void 0:y[f])||f,l=f=>{const _=s(f);return f==="countryCode"||f==="region"||f==="adminGender"?`Select ${_.toLowerCase()}`:`Enter ${_.toLowerCase()}`},u={isRequiredRegion:p,isRequiredPostCode:n};return[{code:"companyName",name:"companyName",id:"companyName",label:s("companyName"),placeholder:l("companyName"),required:!0,fieldType:A.TEXT,isHidden:!1,customUpperCode:"companyName",defaultValue:(e==null?void 0:e.companyName)||"",options:[],maxlength:40,...u,validateRules:[]},{code:"legalName",name:"legalName",id:"legalName",label:s("legalName"),placeholder:l("legalName"),required:!1,fieldType:A.TEXT,isHidden:!1,customUpperCode:"legalName",defaultValue:(e==null?void 0:e.legalName)||"",options:[],maxlength:80,validateRules:[],...u},{code:"companyEmail",name:"companyEmail",id:"companyEmail",label:s("companyEmail"),placeholder:l("companyEmail"),required:!0,fieldType:A.EMAIL,isHidden:!1,customUpperCode:"companyEmail",defaultValue:(e==null?void 0:e.companyEmail)||"",options:[],maxlength:254,validateRules:[{INPUT_VALIDATION:"email"},{MIN_TEXT_LENGTH:5},{MAX_TEXT_LENGTH:254}],...u},{code:"vatTaxId",name:"vatTaxId",id:"vatTaxId",label:s("vatTaxId"),placeholder:l("vatTaxId"),required:!1,fieldType:A.TEXT,isHidden:!1,customUpperCode:"vatTaxId",defaultValue:(e==null?void 0:e.vatTaxId)||"",options:[],maxlength:40,validateRules:[],...u},{code:"resellerId",name:"resellerId",id:"resellerId",label:s("resellerId"),placeholder:l("resellerId"),required:!1,fieldType:A.TEXT,isHidden:!1,customUpperCode:"resellerId",defaultValue:(e==null?void 0:e.resellerId)||"",options:[],maxlength:40,validateRules:[],...u},{code:"street",name:"street",id:"street",label:s("street"),placeholder:l("street"),required:!0,fieldType:A.TEXT,isHidden:!1,customUpperCode:"street",defaultValue:Array.isArray(e==null?void 0:e.street)?e.street[0]:(e==null?void 0:e.street)||"",options:[],validateRules:[],...u},{code:"streetLine2",name:"streetLine2",id:"streetLine2",label:s("streetLine2"),placeholder:l("streetLine2"),required:!1,fieldType:A.TEXT,isHidden:!1,customUpperCode:"streetLine2",defaultValue:Array.isArray(e==null?void 0:e.street)?e.street[1]:"",options:[],validateRules:[],...u},{code:"city",name:"city",id:"city",label:s("city"),placeholder:l("city"),required:!0,fieldType:A.TEXT,isHidden:!1,customUpperCode:"city",defaultValue:(e==null?void 0:e.city)||"",options:[],validateRules:[],...u},{code:"countryCode",name:"countryCode",id:"countryCode",label:s("country"),placeholder:l("country"),required:!0,disabled:t,fieldType:A.SELECT,isHidden:!1,customUpperCode:"countryCode",defaultValue:(e==null?void 0:e.countryCode)||"",options:[],validateRules:[]},{code:"region",name:"region",id:"region",label:s("stateProvince"),placeholder:l("stateProvince"),required:p,disabled:!1,fieldType:h?A.SELECT:A.TEXT,isHidden:!1,customUpperCode:"region",defaultValue:(e==null?void 0:e.regionCode)||"",options:[]},{code:"postcode",name:"postcode",id:"postcode",label:s("postalCode"),placeholder:l("postalCode"),required:n,fieldType:A.TEXT,isHidden:!1,customUpperCode:"postcode",defaultValue:(e==null?void 0:e.postcode)||"",options:[],validateRules:[{INPUT_VALIDATION:"postal-code"},{MIN_TEXT_LENGTH:3},{MAX_TEXT_LENGTH:20}],...u},{code:"addressTelephone",name:"addressTelephone",id:"addressTelephone",label:s("telephone"),placeholder:l("telephone"),required:!0,fieldType:A.TEL,isHidden:!1,customUpperCode:"addressTelephone",defaultValue:(e==null?void 0:e.addressTelephone)||"",options:[],validateRules:[{INPUT_VALIDATION:"phone"},{MIN_TEXT_LENGTH:1},{MAX_TEXT_LENGTH:20}],...u},{code:"adminJobTitle",name:"adminJobTitle",id:"adminJobTitle",label:s("adminJobTitle"),placeholder:l("adminJobTitle"),required:!1,fieldType:A.TEXT,isHidden:!1,customUpperCode:"adminJobTitle",defaultValue:(e==null?void 0:e.adminJobTitle)||"",options:[],validateRules:[],...u},{code:"adminWorkTelephone",name:"adminWorkTelephone",id:"adminWorkTelephone",label:s("adminWorkTelephone"),placeholder:l("adminWorkTelephone"),required:!1,fieldType:A.TEL,isHidden:!1,customUpperCode:"adminWorkTelephone",defaultValue:(e==null?void 0:e.adminWorkTelephone)||"",options:[],validateRules:[{INPUT_VALIDATION:"phone"},{MIN_TEXT_LENGTH:1},{MAX_TEXT_LENGTH:20}],...u},{code:"adminEmail",name:"adminEmail",id:"adminEmail",label:s("adminEmail"),placeholder:l("adminEmail"),required:!0,fieldType:A.EMAIL,isHidden:!1,customUpperCode:"adminEmail",defaultValue:(e==null?void 0:e.adminEmail)||"",options:[],validateRules:[{INPUT_VALIDATION:"email"},{MIN_TEXT_LENGTH:5},{MAX_TEXT_LENGTH:254}],...u},{code:"adminFirstname",name:"adminFirstname",id:"adminFirstname",label:s("adminFirstname"),placeholder:l("adminFirstname"),required:!0,fieldType:A.TEXT,isHidden:!1,customUpperCode:"adminFirstname",defaultValue:(e==null?void 0:e.adminFirstname)||"",options:[],validateRules:[{INPUT_VALIDATION:"name"},{MIN_TEXT_LENGTH:1},{MAX_TEXT_LENGTH:255}],...u},{code:"adminLastname",name:"adminLastname",id:"adminLastname",label:s("adminLastname"),placeholder:l("adminLastname"),required:!0,fieldType:A.TEXT,isHidden:!1,customUpperCode:"adminLastname",defaultValue:(e==null?void 0:e.adminLastname)||"",options:[],validateRules:[{INPUT_VALIDATION:"name"},{MIN_TEXT_LENGTH:1},{MAX_TEXT_LENGTH:255}],...u},{code:"adminGender",name:"adminGender",id:"adminGender",label:s("adminGender"),placeholder:l("adminGender"),required:!1,fieldType:A.SELECT,isHidden:!1,customUpperCode:"adminGender",defaultValue:((E=e==null?void 0:e.adminGender)==null?void 0:E.toString())||"",options:[{value:"1",text:"Male",isDefault:!0},{value:"2",text:"Female",isDefault:!1},{value:"0",text:"Not Specified",isDefault:!1}],validateRules:[],...u}]},Ce=a=>a.reduce((e,p)=>({...e,...p}),{}),fe=a=>/^[0-9]+$/.test(a),Te=a=>/^[a-zA-Z0-9]+$/.test(a),Ee=a=>/^[a-zA-Z0-9\s]+$/.test(a),_e=a=>/^[a-zA-Z]+$/.test(a),Ne=a=>/^[a-z0-9,!#$%&'*+/=?^_`{|}~-]+(\.[a-z0-9,!#$%&'*+/=?^_`{|}~-]+)*@([a-z0-9-]+\.)+[a-z]{2,}$/i.test(a),ve=a=>/(?:[\d\s+\-()]{1,20})/u.test(a),be=a=>/^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i.test(a),Ie=a=>/^[A-Z0-9\s-]{3,10}$/i.test(a),Ae=a=>/^(?:[\p{L}\p{M},\-_.'`&\s\d]){1,255}$/u.test(a),Re=(a,e,p)=>{const n=a.length;return n>=e&&n<=p},Q=(a,e,p,n)=>{var r,C;const{requiredFieldError:h,lengthTextError:t,numericError:y,alphaNumWithSpacesError:s,alphaNumericError:l,alphaError:u,emailError:E,phoneError:f,postalCodeError:_,urlError:S,nameError:N}=p,b=e==null?void 0:e.customUpperCode,T={[b]:""};n[b]&&delete n[b];const i=(a==null?void 0:a.trim())||"";if(e!=null&&e.required&&(!i||i==="false"))return{[b]:h};if(!(e!=null&&e.required)&&!i||!((r=e==null?void 0:e.validateRules)!=null&&r.length))return T;const o=Ce(e==null?void 0:e.validateRules),d=Number(o.MIN_TEXT_LENGTH)??1,c=Number(o.MAX_TEXT_LENGTH)??255;if(!Re(i,d,c))return{[b]:t.replace("{min}",d.toString()).replace("{max}",c.toString())};const R={numeric:{validate:fe,error:y},"alphanum-with-spaces":{validate:Ee,error:s},alphanumeric:{validate:Te,error:l},alpha:{validate:_e,error:u},email:{validate:Ne,error:E},phone:{validate:ve,error:f},"postal-code":{validate:L=>Ie(L),error:_},url:{validate:be,error:S},name:{validate:Ae,error:N}}[o.INPUT_VALIDATION];return R&&!R.validate(i)&&!((C=n[b])!=null&&C.length)?{[b]:R.error}:T},Le=a=>({requiredFieldError:a.requiredFieldError,lengthTextError:a.lengthTextError,numericError:a.numericError,alphaNumWithSpacesError:a.alphaNumWithSpacesError,alphaNumericError:a.alphaNumericError,alphaError:a.alphaError,emailError:a.emailError,phoneError:a.phoneError,postalCodeError:a.postalCodeError,urlError:a.urlError,nameError:a.nameError}),Y=(a,e)=>({fieldsConfig:a,translations:Le(e)}),Se=(a,e,p)=>{const{fieldsConfig:n,translations:h}=p,t=n.find(u=>u.code===a);if(!t)return"";const y=Array.isArray(e)?e.join(""):e.toString(),s={validateRules:t.validateRules||[],customUpperCode:t.customUpperCode,required:t.required};return Q(y,s,h,{})[t.customUpperCode]||""},Fe=(a,e)=>{const{fieldsConfig:p,translations:n}=e,h=p[0],t=(h==null?void 0:h.isRequiredRegion)||!1,y=(h==null?void 0:h.isRequiredPostCode)||!1;let s=!1;const l={};Object.entries(a).forEach(([_,S])=>{const N=p.find(o=>o.code===_);if(!N)return;const b=Array.isArray(S)?S.join(""):S.toString(),T={validateRules:N.validateRules,customUpperCode:N.customUpperCode,required:N.required},i=Q(b,T,n,{});i[N.customUpperCode]&&(l[N.customUpperCode]=i[N.customUpperCode],s=!0)});const u=typeof a.regionId=="number"&&a.regionId>0,E=a.regionCode&&a.regionCode.toString().trim(),f=a.region&&a.region.toString().trim();return t&&!u&&!E&&!f&&(l.region=n.requiredFieldError,s=!0),y&&!a.postcode.toString().trim()&&(l.postcode=n.requiredFieldError,s=!0),{isValid:!s,fieldErrors:l}},K=(a,e,p,n)=>{const h=Y(p,n);return Se(a,e,h)},xe=(a,e,p)=>{const n=Y(e,p);return Fe(a,n)},qe=a=>{const{setFormData:e,hasRegions:p,regionOptions:n,fieldsConfig:h,formTranslations:t,setFieldErrors:y}=a,s=(i,o)=>{const d=K(i,o,h,t);y&&d?y(c=>({...c,[i]:d})):y&&y(c=>{const v={...c};return delete v[i],v})},l=i=>{e(o=>{const d=Array.isArray(o.street)?o.street:[o.street||"",""],c=Array.isArray(i)?i:[i,d[1]||""];return{...o,street:c}}),s("street",i)},u=i=>{e(o=>{const c=[(Array.isArray(o.street)?o.street:[o.street||"",""])[0]||"",i];return{...o,street:c}}),s("streetLine2",i)},E=i=>{e(o=>({...o,region:i,regionCode:"",regionId:void 0})),s("region",i)},f=i=>{e(o=>({...o,regionCode:i,...p?{}:{regionId:void 0}})),s("regionCode",i)},_=i=>{const o=typeof i=="string"?parseInt(i,10)||void 0:i;e(d=>{const c={...d,regionId:o};if(o&&n.length>0){const v=n.find(R=>R.id===o||R.value===(o==null?void 0:o.toString()));v&&v.code&&(c.regionCode=v.code)}return c}),s("regionId",i)},S=i=>{e(o=>({...o,countryCode:i,regionCode:"",regionId:void 0,region:""})),s("countryCode",i),y&&y(o=>{const d={...o};return delete d.region,delete d.regionCode,delete d.regionId,d})},N=(i,o)=>{e(d=>({...d,[i]:o})),s(i,o)};return{handleInputChange:i=>{const o=i.target;if(!o)return;const{name:d,value:c}=o;switch(d){case"street":l(c);break;case"streetLine2":u(c);break;case"region":p?_(c):E(c);break;case"regionCode":f(c);break;case"countryCode":S(c);break;default:N(d,c);break}},handleInputChangeFromValues:i=>{Object.entries(i).forEach(([o,d])=>{switch(o){case"street":l(d);break;case"streetLine2":u(d);break;case"region":E(d);break;case"regionCode":f(d);break;case"regionId":_(d);break;case"countryCode":S(d);break;default:N(o,d);break}})},handleStreetChange:l,handleStreetLine2Change:u,handleRegionTextChange:E,handleRegionCodeChange:f,handleRegionDropdownChange:_,handleCountryChange:S,handleGenericFieldChange:N}},Ve=({onSuccess:a,onError:e})=>{const[p,n]=$(!1),[h,t]=$({}),[y,s]=$("US"),[l,u]=$(!0),{countryOptions:E,regionOptions:f,isRequiredRegion:_,isRequiredPostCode:S,hasRegions:N,loadingCountries:b,disableField:T,handleInputChange:i}=ye({defaultCountry:y,formName:"companyRegistration"}),[o,d]=$({countryCode:y,region:"",regionCode:"",regionId:"",street:["",""]});H(()=>{(async()=>{try{u(!0);const q=(await ie()).defaultCountry||"US";s(q),d(k=>({...k,countryCode:q}))}catch(I){console.error("Failed to load store config:",I)}finally{u(!1)}})()},[]),H(()=>{y&&!l&&i("countryCode",y)},[y,i,l]);const c=P({requiredFieldError:"Company.shared.validation.required",lengthTextError:"Company.FormText.lengthTextError",numericError:"Company.FormText.numericError",alphaNumWithSpacesError:"Company.FormText.alphaNumWithSpacesError",alphaNumericError:"Company.FormText.alphaNumericError",alphaError:"Company.FormText.alphaError",emailError:"Company.shared.validation.invalidEmail",phoneError:"Company.shared.validation.phoneInvalid",postalCodeError:"Company.shared.validation.postalCodeInvalid",urlError:"Company.FormText.urlError",nameError:"Company.FormText.nameError"}),v=P({title:"Company.shared.fields.title",submitButton:"Company.shared.fields.submit",submittingButton:"Company.shared.fields.submitting",cancelButton:"Company.shared.buttons.cancel",createCompanyError:"Company.shared.fields.createCompanyError",unexpectedError:"Company.shared.fields.unexpectedError",emailNotAvailable:"Company.shared.validation.emailNotAvailable",companyName:"Company.shared.fields.companyName",legalName:"Company.shared.fields.legalName",companyEmail:"Company.shared.fields.companyEmail",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId",street:"Company.shared.fields.street",streetLine2:"Company.shared.fields.streetLine2",city:"Company.shared.fields.city",country:"Company.shared.fields.country",stateProvince:"Company.shared.fields.stateProvince",postalCode:"Company.shared.fields.postalCode",telephone:"Company.shared.fields.telephone",adminJobTitle:"Company.shared.fields.adminJobTitle",adminWorkTelephone:"Company.shared.fields.adminWorkTelephone",adminEmail:"Company.shared.fields.adminEmail",adminFirstname:"Company.shared.fields.adminFirstname",adminLastname:"Company.shared.fields.adminLastname",adminGender:"Company.shared.fields.adminGender"}),R=G(()=>ge({formData:{countryCode:o.countryCode,regionCode:o.regionCode,regionId:o.regionId},isRequiredRegion:_,isRequiredPostCode:S,hasRegions:N,disableField:T,translations:v}).map(I=>I.code==="region"?{...I,required:_,disabled:b,fieldType:N?"SELECT":"TEXT",options:N?f.map(q=>({text:q.text,value:q.value,isDefault:!1})):[]}:I.code==="postcode"?{...I,required:!0}:I.code==="countryCode"?{...I,disabled:T||b,options:E.map(q=>({text:q.text,value:q.value,isDefault:!1}))}:I),[_,S,N,b,T,E,f,o.countryCode,o.regionCode,o.regionId,v]),r=x=>{const I=xe(x,R,c);return t(I.fieldErrors),I.isValid},C=G(()=>qe({setFormData:d,hasRegions:N,regionOptions:f,fieldsConfig:R,formTranslations:c,setFieldErrors:t}),[N,f,R,c]);return{formValues:o,fieldErrors:h,isSubmitting:p,loadingStoreConfig:l,fieldsConfig:R,countryOptions:E,regionOptions:f,loadingCountries:b,handleInputChange:x=>{C.handleInputChangeFromValues(x),Object.entries(x).forEach(([I,q])=>{I==="countryCode"&&i("countryCode",q)})},handleBlur:x=>{const I=x.target,{name:q,value:k}=I,W=R.find(X=>X.customUpperCode===q);if(W){const X=K(W.code,k,R,c);t(O=>({...O,[q]:X||""}))}},handleFormSubmit:async(x,I)=>{const q=x.target,k=new FormData(q),W={};for(const[M,U]of k.entries())W[M]=U;const X={...W,...o},O=r(X);if(!(!I||!O)){n(!0);try{const M=await de(X.companyEmail);if(!M.isValid){t(j=>({...j,companyEmail:M.error||v.emailNotAvailable})),n(!1);return}const U=await le(X);if(U.success&&U.company)a==null||a(U.company);else{const j=U.errors||[v.createCompanyError];e==null||e(j)}}catch(M){const U=M instanceof Error?M.message:v.unexpectedError;e==null||e([U])}finally{n(!1)}}},translations:v,formTranslations:c}},$e=({onSuccess:a,onError:e,className:p="",slots:n,hideActionFormButtons:h=!1,inLineAlertProps:t})=>{const{formValues:y,fieldErrors:s,isSubmitting:l,loadingStoreConfig:u,fieldsConfig:E,countryOptions:f,regionOptions:_,loadingCountries:S,handleInputChange:N,handleBlur:b,handleFormSubmit:T,translations:i}=Ve({onSuccess:a,onError:e}),o=u||S;return g("div",{className:w(["company-form-wrapper",p]),children:[m("h2",{children:i.title}),(t==null?void 0:t.text)&&m(ne,{className:"company-form-wrapper__notification",type:t.type,variant:"secondary",heading:t.text,icon:t.icon,"data-testid":"companyRegistrationFormAlert"}),m(he,{regionOptions:_,countryOptions:f,slots:n,className:"company-registration-form",name:"companyRegistrationForm",fieldsConfig:E,values:y,errors:s,onChange:N,onBlur:b,onSubmit:T,loading:o,submitting:l,children:!h&&m("div",{className:w(["company-form-wrapper__buttons"]),children:m(oe,{type:"submit",disabled:l||o,className:"company-form-wrapper__submit",children:i.submitButton})})})]})},Ue=({company:a})=>{var h;const[e,p]=$(""),n=P({pendingApproval:"Company.CompanyRegistration.success.pendingApproval",companyDetails:"Company.CompanyRegistration.success.companyDetails",companyName:"Company.shared.fields.companyName",companyEmail:"Company.shared.fields.companyEmail",legalName:"Company.shared.fields.legalName",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId",address:"Company.shared.fields.legalAddress",street:"Company.shared.fields.street",city:"Company.shared.fields.city",stateProvince:"Company.shared.fields.stateProvince",postcode:"Company.shared.fields.postcode",country:"Company.shared.fields.country",telephone:"Company.shared.fields.telephone",companyAdmin:"Company.shared.fields.companyAdmin",adminFirstname:"Company.shared.fields.adminFirstname",adminLastname:"Company.shared.fields.adminLastname",adminEmail:"Company.shared.fields.adminEmail",adminJobTitle:"Company.shared.fields.adminJobTitle",adminWorkTelephone:"Company.shared.fields.adminWorkTelephone"});return H(()=>{(async()=>{var y;if((y=a.legalAddress)!=null&&y.countryCode)try{const{availableCountries:s}=await Z(),l=s.find(u=>{var E;return u.value===((E=a.legalAddress)==null?void 0:E.countryCode)});l&&p(l.text)}catch(s){console.error("Failed to fetch countries:",s),p(a.legalAddress.countryCode)}})()},[(h=a.legalAddress)==null?void 0:h.countryCode]),g("div",{className:"company-registration-success",children:[m("div",{className:"company-registration-success__header",children:m("p",{className:"company-registration-success__pending",children:n.pendingApproval})}),g("div",{className:"company-registration-success__details",children:[m("h2",{className:"company-registration-success__details-title",children:n.companyDetails}),g("div",{className:"company-registration-success__grid",children:[g("div",{className:"company-registration-success__item",children:[g("span",{className:"company-registration-success__label",children:[n.companyName,":"]}),m("span",{className:"company-registration-success__value",children:a.name})]}),a.legalName&&g("div",{className:"company-registration-success__item",children:[g("span",{className:"company-registration-success__label",children:[n.legalName,":"]}),m("span",{className:"company-registration-success__value",children:a.legalName})]}),g("div",{className:"company-registration-success__item",children:[g("span",{className:"company-registration-success__label",children:[n.companyEmail,":"]}),m("span",{className:"company-registration-success__value",children:a.email})]}),a.vatTaxId&&g("div",{className:"company-registration-success__item",children:[g("span",{className:"company-registration-success__label",children:[n.vatTaxId,":"]}),m("span",{className:"company-registration-success__value",children:a.vatTaxId})]}),a.resellerId&&g("div",{className:"company-registration-success__item",children:[g("span",{className:"company-registration-success__label",children:[n.resellerId,":"]}),m("span",{className:"company-registration-success__value",children:a.resellerId})]}),a.legalAddress&&g(J,{children:[m("div",{className:"company-registration-success__section-header",children:m("h3",{children:n.address})}),a.legalAddress.street&&a.legalAddress.street[0]&&g("div",{className:"company-registration-success__item",children:[g("span",{className:"company-registration-success__label",children:[n.street,":"]}),m("span",{className:"company-registration-success__value",children:a.legalAddress.street.map((t,y)=>m("div",{children:t},y))})]}),a.legalAddress.city&&g("div",{className:"company-registration-success__item",children:[g("span",{className:"company-registration-success__label",children:[n.city,":"]}),m("span",{className:"company-registration-success__value",children:a.legalAddress.city})]}),a.legalAddress.countryCode&&g("div",{className:"company-registration-success__item",children:[g("span",{className:"company-registration-success__label",children:[n.country,":"]}),m("span",{className:"company-registration-success__value",children:e||a.legalAddress.countryCode})]}),a.legalAddress.region&&g("div",{className:"company-registration-success__item",children:[g("span",{className:"company-registration-success__label",children:[n.stateProvince,":"]}),m("span",{className:"company-registration-success__value",children:a.legalAddress.region.region||a.legalAddress.region.regionCode})]}),a.legalAddress.postcode&&g("div",{className:"company-registration-success__item",children:[g("span",{className:"company-registration-success__label",children:[n.postcode,":"]}),m("span",{className:"company-registration-success__value",children:a.legalAddress.postcode})]}),a.legalAddress.telephone&&g("div",{className:"company-registration-success__item",children:[g("span",{className:"company-registration-success__label",children:[n.telephone,":"]}),m("span",{className:"company-registration-success__value",children:a.legalAddress.telephone})]})]}),a.companyAdmin&&g(J,{children:[m("div",{className:"company-registration-success__section-header",children:m("h3",{children:n.companyAdmin})}),a.companyAdmin.jobTitle&&g("div",{className:"company-registration-success__item",children:[g("span",{className:"company-registration-success__label",children:[n.adminJobTitle,":"]}),m("span",{className:"company-registration-success__value",children:a.companyAdmin.jobTitle})]}),a.companyAdmin.telephone&&g("div",{className:"company-registration-success__item",children:[g("span",{className:"company-registration-success__label",children:[n.adminWorkTelephone,":"]}),m("span",{className:"company-registration-success__value",children:a.companyAdmin.telephone})]}),g("div",{className:"company-registration-success__item",children:[g("span",{className:"company-registration-success__label",children:[n.adminEmail,":"]}),m("span",{className:"company-registration-success__value",children:a.companyAdmin.email})]})]})]})]})]})},Ke=({isAuthenticated:a=!1,onRedirectLogin:e,onRedirectAccount:p,onSuccess:n,onError:h,className:t,slots:y})=>{const[s,l]=$("loading"),[u,E]=$(null),{inLineAlertProps:f,showError:_,clearAlert:S}=ce();H(()=>{let T=!0;return(async()=>{try{if(!await me()){if(T){const o=a?"redirect-account":"redirect-login";console.log(`Company registration disabled - redirecting to ${a?"account dashboard":"login page"}`),l(o)}return}if(a)try{if(await ue()){T&&(console.log("User already belongs to a company - redirecting to account dashboard"),l("redirect-account"));return}}catch(o){console.error("Error checking company membership - redirecting to account dashboard:",o),T&&l("redirect-account");return}T&&l("show-form")}catch(i){console.error("Error checking B2B status:",i),T&&l(a?"redirect-account":"redirect-login")}})(),()=>{T=!1}},[a]),H(()=>{s==="redirect-login"&&e&&e(),s==="redirect-account"&&p&&p()},[s,e,p]);const N=T=>{S(),l("success"),E(T),n==null||n(T)},b=T=>{const i=T.join(". ");_(i,!1),h==null||h(T)};return s==="loading"||s==="redirect-login"||s==="redirect-account"?null:s==="success"&&u?m("div",{className:`company-registration-container ${t||""}`,children:m(Ue,{company:u})}):m("div",{className:`company-registration-container ${t||""}`,children:m($e,{onSuccess:N,onError:b,slots:y,inLineAlertProps:f})})};export{Ke as CompanyRegistration,Ke as default};
4
4
  //# sourceMappingURL=CompanyRegistration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CompanyRegistration.js","sources":["/@dropins/storefront-company-management/src/types/form.types.ts","/@dropins/storefront-company-management/src/components/CompanyRegistrationForm/Form/FormInputs/FormInputs.tsx","/@dropins/storefront-company-management/src/components/CompanyRegistrationForm/Form/Form.tsx","/@dropins/storefront-company-management/src/hooks/useCountryAndRegionFields.tsx","/@dropins/storefront-company-management/src/components/CompanyRegistrationForm/Form/getCompanyFieldsConfig.ts","/@dropins/storefront-company-management/src/components/CompanyRegistrationForm/Form/fieldValidationRules.ts","/@dropins/storefront-company-management/src/components/CompanyRegistrationForm/Form/formValidation.ts","/@dropins/storefront-company-management/src/components/CompanyRegistrationForm/Form/fieldHandlers.ts","/@dropins/storefront-company-management/src/hooks/useCompanyRegistrationForm.ts","/@dropins/storefront-company-management/src/components/CompanyRegistrationForm/CompanyRegistrationForm.tsx","/@dropins/storefront-company-management/src/components/CompanyRegistrationSuccess/CompanyRegistrationSuccess.tsx","/@dropins/storefront-company-management/src/containers/CompanyRegistration/CompanyRegistration.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars\nimport { SlotProps } from '@adobe-commerce/elsie/lib';\nimport { CompanyFormData } from '@/company-management/data/models/company';\n\nexport enum FieldTypeEnum {\n TEXT = 'TEXT',\n EMAIL = 'EMAIL',\n TEL = 'TEL',\n SELECT = 'SELECT',\n HIDDEN = 'HIDDEN',\n}\n\nexport interface FieldsProps {\n code: string;\n name: string;\n id: string;\n required: boolean;\n label: string;\n options: { isDefault: boolean; text: string; value: string }[];\n className?: string;\n defaultValue: string | boolean | number;\n fieldType: FieldTypeEnum;\n isHidden: boolean;\n customUpperCode: string;\n validateRules?: Record<string, string | number | boolean>[];\n placeholder?: string;\n disabled?: boolean;\n isRequiredRegion?: boolean;\n isRequiredPostCode?: boolean;\n maxlength?: number;\n}\n\nexport interface CompanyFormInputsContext {\n formData: CompanyFormData;\n formActions: {\n handleChange: (field: keyof CompanyFormData, value: string | string[]) => void;\n };\n}\n\nexport interface CompanyFormSectionContext {\n formData: CompanyFormData;\n handleInputChange: (values: Record<string, string | string[] | number | boolean>) => void;\n isSubmitting: boolean;\n errors: string[];\n}\n\nexport interface CompanyFormSlots {\n // Individual field slots - pattern: CompanyFormInput_{fieldCode}\n // Examples: CompanyFormInput_companyName, CompanyFormInput_companyEmail, etc.\n // Each slot is a function that receives context and returns JSX\n [key: string]: (context?: any) => any;\n}\n\nexport interface FormProps {\n regionOptions?: { text: string; value: string }[];\n countryOptions?: { text: string; value: string }[];\n fieldIdPrefix?: string;\n slots?: CompanyFormSlots;\n fieldsConfig?: FieldsProps[];\n values?: Record<string, string | number | boolean | string[]>;\n errors?: Record<string, string>;\n name?: string;\n className?: string;\n children?: any;\n loading?: boolean;\n showFormLoader?: boolean;\n onSubmit?: (event: SubmitEvent, isValid: boolean) => Promise<void | null | undefined>;\n onChange?: (values: Record<string, string | string[] | number | boolean>) => void;\n onBlur?: (event: Event) => void;\n}\n\nexport interface FormInputsProps {\n className?: string;\n errors?: Record<string, string>;\n values?: Record<string, string | number | boolean | string[]>;\n formData?: Record<string, string | number | boolean>;\n fields?: FieldsProps[];\n loading?: boolean;\n regionOptions?: { text: string; value: string }[];\n countryOptions?: { text: string; value: string }[];\n onChange?: (event: Event) => void;\n handleInputChange?: (event: Event) => void;\n onBlur?: (event: Event) => void;\n onFocus?: (event: Event) => void;\n fieldIdPrefix?: string;\n slots?: CompanyFormSlots;\n}","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent, memo } from 'preact/compat';\nimport { Field, Input, Picker } from '@adobe-commerce/elsie/components';\nimport { classes, Slot } from '@adobe-commerce/elsie/lib';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { FormInputsProps, FieldsProps, FieldTypeEnum } from '../../../../types/form.types';\n\nexport const FormInputs: FunctionComponent<FormInputsProps> = memo(({\n loading,\n values = {},\n fields,\n errors = {},\n className = '',\n regionOptions,\n countryOptions,\n onChange,\n onBlur,\n onFocus,\n slots,\n fieldIdPrefix,\n}) => {\n const itemClassName = `${className}__field`;\n\n const translations = useText({\n selectCountry: 'Company.FormText.selectCountry',\n selectRegion: 'Company.FormText.selectRegion',\n selectCountryFirst: 'Company.FormText.selectCountryFirst',\n country: 'Company.shared.fields.country',\n stateProvince: 'Company.shared.fields.stateProvince',\n 'Company.Registration.companyInformation': 'Company.shared.fields.companyInformation',\n 'Company.Registration.legalAddress': 'Company.shared.fields.legalAddress', \n 'Company.Registration.companyAdmin': 'Company.shared.fields.companyAdmin',\n });\n\n // Define field sections for organizing form\n const fieldSections = {\n CompanyInformationSection: ['companyName', 'legalName', 'companyEmail', 'vatTaxId', 'resellerId'],\n LegalAddressSection: ['street', 'streetLine2', 'city', 'countryCode', 'region', 'postcode', 'addressTelephone'],\n CompanyAdministratorSection: ['adminEmail', 'adminFirstname', 'adminLastname', 'adminJobTitle', 'adminWorkTelephone', 'adminGender']\n };\n\n const getSectionTitle = (sectionKey: string) => {\n const titles = {\n CompanyInformationSection: 'Company.Registration.companyInformation',\n LegalAddressSection: 'Company.Registration.legalAddress', \n CompanyAdministratorSection: 'Company.Registration.companyAdmin'\n };\n return titles[sectionKey as keyof typeof titles];\n };\n\n // Format region value for SELECT fields using \"regionCode,regionId\" format\n const formatRegionValue = (item: FieldsProps) => {\n if ((item.code === 'region' || item.code === 'regionCode') && item.fieldType === FieldTypeEnum.SELECT) {\n const regionCode = values['regionCode']?.toString() || '';\n const regionId = values['regionId']?.toString() || '';\n if (regionCode && regionId) {\n return `${regionCode},${regionId}`;\n }\n if (values[item.code]?.toString().includes(',')) {\n // If region value is already in \"code,id\" format, use it\n return values[item.code]?.toString();\n }\n return '';\n }\n return null;\n };\n\n // Format street value handling array mapping for street and streetLine2 fields\n const formatStreetValue = (item: FieldsProps) => {\n if (item.code === 'street') {\n return Array.isArray(values.street) ? (values.street[0] || '') : (values.street?.toString() || '');\n } else if (item.code === 'streetLine2') {\n return Array.isArray(values.street) ? (values.street[1] || '') : '';\n }\n return null;\n };\n\n\n // Render slot function for individual fields\n const renderSlot = (item: FieldsProps, errorMessage?: string) => {\n const slotName = `CompanyFormInput_${item.code}`;\n const slot = slots?.[slotName];\n if (!slot) return null;\n\n const contextValue = {\n inputName: item.code,\n handleOnChange: onChange || (() => {}),\n errorMessage,\n errors: Object.values(errors),\n formData: values,\n fieldConfig: {\n required: item.required,\n disabled: item.disabled || loading,\n placeholder: item.placeholder || item.label,\n label: item.label,\n },\n };\n return (\n <Slot\n data-testid={`companyFormInput_${item.code}`}\n name={slotName}\n slot={slot}\n context={contextValue}\n />\n );\n };\n\n // Select/Picker element renderer\n const selectElement = (item: FieldsProps, valueMessage: string, errorMessage: string) => {\n let options = item.options;\n \n // Special handling for country and region fields\n if (item.code === 'countryCode' || item.code === 'country_code') {\n options = countryOptions?.map(country => ({\n value: country.value,\n text: country.text,\n isDefault: false,\n })) || [];\n } else if (item.code === 'region' || item.code === 'regionCode') {\n options = regionOptions?.map(option => ({ \n text: option.text, \n value: option.value, \n isDefault: false \n })) || [];\n }\n\n return (\n <>\n {renderSlot(item, errorMessage) ?? (\n <Field\n key={item.id}\n error={errorMessage}\n className={classes([\n itemClassName,\n `${itemClassName}--${item.id}`,\n [`${itemClassName}--${item.id}-hidden`, item.isHidden],\n item.className,\n ])}\n data-testid={`${className}--${item.id}`}\n disabled={loading}\n >\n <Picker\n aria-label={item.label}\n aria-required={item.required ? 'true' : 'false'}\n id={fieldIdPrefix ? `${fieldIdPrefix}_${item.code}` : item.code}\n required={item?.required}\n name={item.customUpperCode || item.code}\n placeholder={item.label}\n options={options}\n onBlur={onBlur}\n onFocus={onFocus}\n handleSelect={onChange}\n defaultValue={valueMessage}\n value={valueMessage}\n />\n </Field>\n )}\n </>\n );\n };\n\n // Input element renderer\n const inputElement = (item: FieldsProps, valueMessage: string, errorMessage: string) => {\n let inputType = 'text';\n \n if (item.fieldType === FieldTypeEnum.EMAIL) {\n inputType = 'email';\n } else if (item.fieldType === FieldTypeEnum.TEL) {\n inputType = 'tel';\n }\n\n return (\n <>\n {renderSlot(item, errorMessage) ?? (\n <Field\n key={item.id}\n error={errorMessage}\n className={classes([\n itemClassName,\n `${itemClassName}--${item.id}`,\n [`${itemClassName}--${item.id}-hidden`, item.isHidden],\n item.className,\n ])}\n data-testid={`${className}--${item.id}`}\n disabled={loading}\n >\n <Input\n aria-label={item.label}\n aria-required={item.required ? 'true' : 'false'}\n id={fieldIdPrefix ? `${fieldIdPrefix}_${item.code}` : item.code}\n type={inputType}\n name={item.customUpperCode}\n value={valueMessage ?? item.defaultValue}\n placeholder={item.label}\n floatingLabel={`${item.label} ${item.required ? '*' : ''}`}\n maxLength={item.maxlength}\n onBlur={onBlur}\n onFocus={onFocus}\n onChange={onChange}\n />\n </Field>\n \n )}\n </>\n );\n };\n\n\n\n // Render fields for a specific section\n const renderSectionFields = (sectionFields: string[]) => {\n return fields\n ?.filter(field => sectionFields.includes(field.code) && !field.isHidden)\n .map(item => {\n // Render the field\n let valueMessage = values[item.code]?.toString() || '';\n \n // Special handling for street fields - street array mapping\n const streetValue = formatStreetValue(item);\n if (streetValue !== null) {\n valueMessage = streetValue;\n }\n \n // Special handling for region field - use \"regionCode,regionId\" format for Picker\n const regionValue = formatRegionValue(item);\n if (regionValue !== null) {\n valueMessage = regionValue;\n }\n \n const errorMessage = errors[item.customUpperCode || item.code] || '';\n\n // For region field, respect the fieldType (which changes based on hasRegions)\n if (item.code === 'region' || item.code === 'regionCode') {\n if (item.fieldType === FieldTypeEnum.SELECT) {\n return selectElement(item, valueMessage, errorMessage);\n }\n return inputElement(item, valueMessage, errorMessage);\n }\n if (item.fieldType === FieldTypeEnum.SELECT || item.options?.length > 0) {\n return selectElement(item, valueMessage, errorMessage);\n }\n return inputElement(item, valueMessage, errorMessage);\n });\n };\n\n // Render individual section \n const renderSection = (sectionKey: keyof typeof fieldSections) => {\n const sectionFields = fieldSections[sectionKey];\n const sectionTitle = getSectionTitle(sectionKey);\n \n // Check if section has any visible fields\n const hasVisibleFields = fields?.some(field => \n sectionFields.includes(field.code) && !field.isHidden\n );\n \n if (!hasVisibleFields) return null;\n \n // Render section with title and fields\n return (\n <div key={`section-${sectionKey}`} className={`${className}__section`}>\n <h3 className={`${className}__section-title`}>{translations[sectionTitle]}</h3>\n {renderSectionFields(sectionFields)}\n </div>\n );\n };\n\n return (\n <div className={`${className}__inputs`}>\n {renderSection('CompanyInformationSection')}\n {renderSection('LegalAddressSection')}\n {renderSection('CompanyAdministratorSection')}\n </div>\n );\n});","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useRef } from 'preact/hooks';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { FormProps } from '../../../types/form.types';\nimport { FormInputs } from './FormInputs/FormInputs';\nimport './Form.css';\n\nexport const Form: FunctionComponent<FormProps> = ({\n showFormLoader,\n slots,\n name = 'companyForm',\n loading,\n children,\n className = 'company-form',\n fieldsConfig = [],\n values = {},\n errors = {},\n onSubmit,\n onChange,\n onBlur,\n regionOptions,\n countryOptions,\n fieldIdPrefix,\n}) => {\n const formRef = useRef<HTMLFormElement>(null);\n\n\n\n const handleSubmit = async (event: SubmitEvent) => {\n event.preventDefault();\n \n if (onSubmit) {\n await onSubmit(event, true);\n }\n };\n\n if (showFormLoader || loading) {\n return (\n <div className={classes(['dropin-form-loader', 'company-form-loader'])}>\n Loading...\n </div>\n );\n }\n\n const handleChange = (event: Event) => {\n const target = event.target as HTMLInputElement;\n const { name, value } = target;\n \n if (onChange) {\n onChange({ [name]: value });\n }\n };\n\n return (\n <form\n id={name}\n ref={formRef}\n className={classes(['company-form', className])}\n onSubmit={handleSubmit}\n noValidate\n >\n <FormInputs\n className={className}\n fields={fieldsConfig}\n values={values}\n errors={errors}\n onChange={handleChange}\n onBlur={onBlur}\n slots={slots}\n regionOptions={regionOptions}\n countryOptions={countryOptions}\n fieldIdPrefix={fieldIdPrefix}\n />\n {children}\n </form>\n );\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useCallback, useEffect, useMemo, useState } from 'preact/hooks';\nimport { getCountries } from '@/company-management/api/getCountries';\nimport { Country } from '@/company-management/data/models/country';\nimport { CompanyFormData } from '@/company-management/data/models/company';\n\ninterface CountriesData {\n availableCountries: Country[];\n countriesWithRequiredRegion: string[];\n optionalZipCountries: string[];\n}\n\ninterface UseCountryAndRegionFieldsOptions {\n defaultCountry?: string;\n formName?: string;\n}\n\nexport const useCountryAndRegionFields = (options: UseCountryAndRegionFieldsOptions = {}) => {\n const { defaultCountry = 'US', formName = 'company_registration' } = options;\n const [countriesData, setCountriesData] = useState<CountriesData | null>(null);\n const [inputChange, setInputChange] = useState<Partial<CompanyFormData>>(() => {\n // Check session storage first, like storefront-account does\n try {\n const savedData = sessionStorage.getItem(`${formName}_formData`);\n return savedData\n ? { countryCode: JSON.parse(savedData)?.countryCode }\n : { countryCode: defaultCountry };\n } catch (error) {\n // If parsing fails, fall back to default country\n return { countryCode: defaultCountry };\n }\n });\n const [disableField, setDisableField] = useState(true);\n const [loadingCountries, setLoadingCountries] = useState(true);\n const [regionsData, setRegionsData] = useState<any[]>([]);\n\n useEffect(() => {\n setDisableField(true);\n setLoadingCountries(true);\n getCountries().then(({\n availableCountries,\n countriesWithRequiredRegion,\n optionalZipCountries,\n }) => {\n setCountriesData({\n availableCountries,\n countriesWithRequiredRegion,\n optionalZipCountries,\n });\n setDisableField(false);\n setLoadingCountries(false);\n }).catch((error) => {\n console.error('Failed to load countries:', error);\n setDisableField(false);\n setLoadingCountries(false);\n });\n }, []);\n\n // Load regions when country changes (matching EditCompanyProfile pattern)\n useEffect(() => {\n if (inputChange?.countryCode && countriesData) {\n const selectedCountry = countriesData.availableCountries.find(\n country => country.value === inputChange.countryCode\n );\n \n if (selectedCountry?.availableRegions && selectedCountry.availableRegions.length > 0) {\n const regions = selectedCountry.availableRegions.map((region: { id: number; code: string; name: string }) => ({\n text: region.name,\n value: `${region.code},${region.id}`,\n id: region.id,\n code: region.code,\n }));\n setRegionsData(regions);\n } else {\n setRegionsData([]);\n }\n } else {\n setRegionsData([]);\n }\n }, [inputChange?.countryCode, countriesData]);\n\n const countryOptions = useMemo(() => {\n return countriesData?.availableCountries || [];\n }, [countriesData]);\n\n const isRequiredRegion = useMemo(() => {\n if (!inputChange?.countryCode || !countriesData) return false;\n return countriesData.countriesWithRequiredRegion.includes(inputChange.countryCode as string);\n }, [inputChange?.countryCode, countriesData]);\n\n const isRequiredPostCode = useMemo(() => {\n if (!inputChange?.countryCode || !countriesData) return true;\n return !countriesData.optionalZipCountries.includes(inputChange.countryCode as string);\n }, [inputChange?.countryCode, countriesData]);\n\n // Memoized options for region dropdown (matching EditCompanyProfile pattern)\n const regionOptions = useMemo(() => {\n return regionsData;\n }, [regionsData]);\n\n // Check if region should be a dropdown (has options) or text input (no options)\n const hasRegions = useMemo(() => {\n return regionOptions.length > 0;\n }, [regionOptions.length]);\n\n const handleInputChange = useCallback((field: keyof CompanyFormData, value: string | string[]) => {\n setInputChange(prev => {\n const updatedData = {\n ...prev,\n [field]: value,\n };\n\n // When country changes, clear region data (matching EditCompanyProfile pattern)\n if (field === 'countryCode') {\n updatedData.regionCode = '';\n updatedData.regionId = undefined;\n }\n\n return updatedData;\n });\n }, []);\n\n return {\n countryOptions,\n regionOptions,\n isRequiredRegion,\n isRequiredPostCode,\n disableField,\n loadingCountries,\n hasRegions,\n handleInputChange,\n inputChange,\n };\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FieldsProps, FieldTypeEnum } from '../../../types/form.types';\nimport { CompanyFormData } from '../../../data/models/company';\n\nexport interface CompanyFieldsConfigOptions {\n formData?: Partial<CompanyFormData>;\n isRequiredRegion?: boolean;\n isRequiredPostCode?: boolean;\n hasRegions?: boolean;\n disableField?: boolean;\n translations: Record<string, string>;\n}\n\nexport const getCompanyFieldsConfig = (\n options: CompanyFieldsConfigOptions\n): FieldsProps[] => {\n const { \n formData, \n isRequiredRegion = false, \n isRequiredPostCode = false, \n hasRegions = false, \n disableField = false,\n translations = {}\n } = options;\n \n // Helper function to get translated label\n const getLabel = (key: string) => {\n return translations?.[key] || key;\n };\n\n // Helper function to get translated placeholder using existing field labels\n const getPlaceholder = (key: string) => {\n const label = getLabel(key);\n \n // Create placeholder text from label\n if (key === 'countryCode' || key === 'region' || key === 'adminGender') {\n return `Select ${label.toLowerCase()}`;\n }\n return `Enter ${label.toLowerCase()}`;\n };\n\n // Common configuration for all fields\n const commonConfig = {\n isRequiredRegion,\n isRequiredPostCode,\n };\n \n return [\n // Company Information Section\n {\n code: 'companyName',\n name: 'companyName',\n id: 'companyName',\n label: getLabel('companyName'),\n placeholder: getPlaceholder('companyName'),\n required: true,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'companyName',\n defaultValue: formData?.companyName || '',\n options: [],\n maxlength: 40,\n ...commonConfig,\n validateRules: [],\n },\n {\n code: 'legalName',\n name: 'legalName',\n id: 'legalName',\n label: getLabel('legalName'),\n placeholder: getPlaceholder('legalName'),\n required: false,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'legalName',\n defaultValue: formData?.legalName || '',\n options: [],\n maxlength: 80,\n validateRules: [],\n ...commonConfig\n },\n {\n code: 'companyEmail',\n name: 'companyEmail',\n id: 'companyEmail',\n label: getLabel('companyEmail'),\n placeholder: getPlaceholder('companyEmail'),\n required: true,\n fieldType: FieldTypeEnum.EMAIL,\n isHidden: false,\n customUpperCode: 'companyEmail',\n defaultValue: formData?.companyEmail || '',\n options: [],\n maxlength: 254,\n validateRules: [\n { INPUT_VALIDATION: 'email' },\n { MIN_TEXT_LENGTH: 5 },\n { MAX_TEXT_LENGTH: 254 }\n ],\n ...commonConfig,\n },\n {\n code: 'vatTaxId',\n name: 'vatTaxId',\n id: 'vatTaxId',\n label: getLabel('vatTaxId'),\n placeholder: getPlaceholder('vatTaxId'),\n required: false,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'vatTaxId',\n defaultValue: formData?.vatTaxId || '',\n options: [],\n maxlength: 40,\n validateRules: [],\n ...commonConfig,\n },\n {\n code: 'resellerId',\n name: 'resellerId',\n id: 'resellerId',\n label: getLabel('resellerId'),\n placeholder: getPlaceholder('resellerId'),\n required: false,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'resellerId',\n defaultValue: formData?.resellerId || '',\n options: [],\n maxlength: 40,\n validateRules: [],\n ...commonConfig,\n },\n\n // Legal Address Section\n {\n code: 'street',\n name: 'street',\n id: 'street',\n label: getLabel('street'),\n placeholder: getPlaceholder('street'),\n required: true,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'street',\n defaultValue: Array.isArray(formData?.street) ? formData.street[0] : formData?.street || '',\n options: [],\n validateRules: [],\n ...commonConfig,\n },\n {\n code: 'streetLine2',\n name: 'streetLine2',\n id: 'streetLine2',\n label: getLabel('streetLine2'),\n placeholder: getPlaceholder('streetLine2'),\n required: false,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'streetLine2',\n defaultValue: Array.isArray(formData?.street) ? formData.street[1] : '',\n options: [],\n validateRules: [],\n ...commonConfig,\n },\n {\n code: 'city',\n name: 'city',\n id: 'city',\n label: getLabel('city'),\n placeholder: getPlaceholder('city'),\n required: true,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'city',\n defaultValue: formData?.city || '',\n options: [],\n validateRules: [],\n ...commonConfig,\n },\n {\n code: 'countryCode',\n name: 'countryCode',\n id: 'countryCode',\n label: getLabel('country'),\n placeholder: getPlaceholder('country'),\n required: true,\n disabled: disableField,\n fieldType: FieldTypeEnum.SELECT,\n isHidden: false,\n customUpperCode: 'countryCode',\n defaultValue: formData?.countryCode || '',\n options: [], \n validateRules: [],\n },\n {\n code: 'region',\n name: 'region',\n id: 'region',\n label: getLabel('stateProvince'),\n placeholder: getPlaceholder('stateProvince'),\n required: isRequiredRegion,\n disabled: false, \n fieldType: hasRegions ? FieldTypeEnum.SELECT : FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'region',\n defaultValue: formData?.regionCode || '',\n options: [], \n },\n {\n code: 'postcode',\n name: 'postcode',\n id: 'postcode',\n label: getLabel('postalCode'),\n placeholder: getPlaceholder('postalCode'),\n required: isRequiredPostCode,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'postcode',\n defaultValue: formData?.postcode || '',\n options: [],\n validateRules: [\n { INPUT_VALIDATION: 'postal-code' },\n { MIN_TEXT_LENGTH: 3 },\n { MAX_TEXT_LENGTH: 20 }\n ],\n ...commonConfig,\n },\n {\n code: 'addressTelephone',\n name: 'addressTelephone',\n id: 'addressTelephone',\n label: getLabel('telephone'),\n placeholder: getPlaceholder('telephone'),\n required: true,\n fieldType: FieldTypeEnum.TEL,\n isHidden: false,\n customUpperCode: 'addressTelephone',\n defaultValue: formData?.addressTelephone || '',\n options: [],\n validateRules: [\n { INPUT_VALIDATION: 'phone' },\n { MIN_TEXT_LENGTH: 1 },\n { MAX_TEXT_LENGTH: 20 }\n ],\n ...commonConfig,\n },\n\n // Administrator Section\n {\n code: 'adminJobTitle',\n name: 'adminJobTitle',\n id: 'adminJobTitle',\n label: getLabel('adminJobTitle'),\n placeholder: getPlaceholder('adminJobTitle'),\n required: false,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'adminJobTitle',\n defaultValue: formData?.adminJobTitle || '',\n options: [],\n validateRules: [],\n ...commonConfig,\n },\n {\n code: 'adminWorkTelephone',\n name: 'adminWorkTelephone',\n id: 'adminWorkTelephone',\n label: getLabel('adminWorkTelephone'),\n placeholder: getPlaceholder('adminWorkTelephone'),\n required: false,\n fieldType: FieldTypeEnum.TEL,\n isHidden: false,\n customUpperCode: 'adminWorkTelephone',\n defaultValue: formData?.adminWorkTelephone || '',\n options: [],\n validateRules: [\n { INPUT_VALIDATION: 'phone' },\n { MIN_TEXT_LENGTH: 1 },\n { MAX_TEXT_LENGTH: 20 }\n ],\n ...commonConfig,\n },\n {\n code: 'adminEmail',\n name: 'adminEmail',\n id: 'adminEmail',\n label: getLabel('adminEmail'),\n placeholder: getPlaceholder('adminEmail'),\n required: true,\n fieldType: FieldTypeEnum.EMAIL,\n isHidden: false,\n customUpperCode: 'adminEmail',\n defaultValue: formData?.adminEmail || '',\n options: [],\n validateRules: [\n { INPUT_VALIDATION: 'email' },\n { MIN_TEXT_LENGTH: 5 },\n { MAX_TEXT_LENGTH: 254 }\n ],\n ...commonConfig,\n },\n {\n code: 'adminFirstname',\n name: 'adminFirstname',\n id: 'adminFirstname',\n label: getLabel('adminFirstname'),\n placeholder: getPlaceholder('adminFirstname'),\n required: true,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'adminFirstname',\n defaultValue: formData?.adminFirstname || '',\n options: [],\n validateRules: [\n { INPUT_VALIDATION: 'name' },\n { MIN_TEXT_LENGTH: 1 },\n { MAX_TEXT_LENGTH: 255 }\n ],\n ...commonConfig,\n },\n {\n code: 'adminLastname',\n name: 'adminLastname',\n id: 'adminLastname',\n label: getLabel('adminLastname'),\n placeholder: getPlaceholder('adminLastname'),\n required: true,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'adminLastname',\n defaultValue: formData?.adminLastname || '',\n options: [],\n validateRules: [\n { INPUT_VALIDATION: 'name' },\n { MIN_TEXT_LENGTH: 1 },\n { MAX_TEXT_LENGTH: 255 }\n ],\n ...commonConfig,\n },\n {\n code: 'adminGender',\n name: 'adminGender',\n id: 'adminGender',\n label: getLabel('adminGender'),\n placeholder: getPlaceholder('adminGender'),\n required: false,\n fieldType: FieldTypeEnum.SELECT,\n isHidden: false,\n customUpperCode: 'adminGender',\n defaultValue: formData?.adminGender?.toString() || '',\n options: [\n { value: '1', text: 'Male', isDefault: true },\n { value: '2', text: 'Female', isDefault: false },\n { value: '0', text: 'Not Specified', isDefault: false },\n ],\n validateRules: [],\n ...commonConfig,\n },\n ];\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\ntype ErrorsList = Record<string, string>;\n\nexport type ValidationFieldsConfig = {\n validateRules?: Record<string, string | number | boolean>[];\n code?: string;\n customUpperCode: string;\n required: boolean;\n};\n\nexport type TranslationList = {\n requiredFieldError: string;\n lengthTextError: string;\n numericError: string;\n alphaNumWithSpacesError: string;\n alphaNumericError: string;\n alphaError: string;\n emailError: string;\n phoneError: string;\n postalCodeError: string;\n urlError: string;\n nameError: string;\n};\n\nenum ConfigEnumLength {\n MIN_TEXT_LENGTH = 'MIN_TEXT_LENGTH',\n MAX_TEXT_LENGTH = 'MAX_TEXT_LENGTH',\n}\n\nexport enum InputValidation {\n Numeric = 'numeric',\n AlphanumWithSpaces = 'alphanum-with-spaces',\n Alphanumeric = 'alphanumeric',\n Alpha = 'alpha',\n Email = 'email',\n Phone = 'phone',\n PostalCode = 'postal-code',\n Length = 'length',\n Url = 'url',\n Name = 'name',\n}\n\nconst flattenObjectsArray = (arr: Record<string, string | number | boolean>[]): Record<string, string | number | boolean> =>\n arr.reduce((acc, obj) => ({ ...acc, ...obj }), {});\n\nexport const validateNumeric = (value: string): boolean =>\n /^[0-9]+$/.test(value);\n\nexport const validateAlphanumeric = (value: string): boolean =>\n /^[a-zA-Z0-9]+$/.test(value);\n\nexport const validateAlphanumWithSpaces = (value: string): boolean =>\n /^[a-zA-Z0-9\\s]+$/.test(value);\n\nexport const validateAlpha = (value: string): boolean =>\n /^[a-zA-Z]+$/.test(value);\n\nexport const validateEmail = (value: string): boolean =>\n /^[a-z0-9,!#$%&'*+/=?^_`{|}~-]+(\\.[a-z0-9,!#$%&'*+/=?^_`{|}~-]+)*@([a-z0-9-]+\\.)+[a-z]{2,}$/i.test(\n value\n );\n\nexport const validatePhone = (value: string): boolean =>\n /(?:[\\d\\s+\\-()]{1,20})/u.test(value);\n\nexport const validateUrl = (value: string): boolean =>\n /^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/i.test(value);\n\nexport const validatePostalCode = (value: string): boolean => {\n return /^[A-Z0-9\\s-]{3,10}$/i.test(value);\n};\n\nexport const validateName = (value: string): boolean => {\n return /^(?:[\\p{L}\\p{M},\\-_.'`&\\s\\d]){1,255}$/u.test(value);\n};\n\nexport const validateLength = (\n value: string,\n minLength: number,\n maxLength: number\n): boolean => {\n const length = value.length;\n return length >= minLength && length <= maxLength;\n};\n\nexport const validationFields = (\n value: string,\n configs: ValidationFieldsConfig,\n translations: TranslationList,\n errorsList: ErrorsList\n) => {\n const {\n requiredFieldError,\n lengthTextError,\n numericError,\n alphaNumWithSpacesError,\n alphaNumericError,\n alphaError,\n emailError,\n phoneError,\n postalCodeError,\n urlError,\n nameError,\n } = translations;\n\n const fieldName = configs?.customUpperCode as string;\n const defaultFields = { [fieldName]: '' };\n\n if (errorsList[fieldName]) {\n delete errorsList[fieldName];\n }\n\n const trimmedValue = value?.trim() || '';\n \n if (configs?.required && (!trimmedValue || trimmedValue === 'false')) {\n return { [fieldName]: requiredFieldError };\n }\n\n if (!configs?.required && !trimmedValue) {\n return defaultFields;\n }\n\n if (!configs?.validateRules?.length) return defaultFields;\n\n const validateRulesConfig = flattenObjectsArray(configs?.validateRules);\n\n const min = Number(validateRulesConfig[ConfigEnumLength.MIN_TEXT_LENGTH]) ?? 1;\n const max = Number(validateRulesConfig[ConfigEnumLength.MAX_TEXT_LENGTH]) ?? 255;\n\n // Use trimmed value for length validation\n if (!validateLength(trimmedValue, min, max)) {\n return {\n [fieldName]: lengthTextError.replace('{min}', min.toString()).replace('{max}', max.toString()),\n };\n }\n\n const validationMap = {\n [InputValidation.Numeric]: {\n validate: validateNumeric,\n error: numericError,\n },\n [InputValidation.AlphanumWithSpaces]: {\n validate: validateAlphanumWithSpaces,\n error: alphaNumWithSpacesError,\n },\n [InputValidation.Alphanumeric]: {\n validate: validateAlphanumeric,\n error: alphaNumericError,\n },\n [InputValidation.Alpha]: {\n validate: validateAlpha,\n error: alphaError,\n },\n [InputValidation.Email]: {\n validate: validateEmail,\n error: emailError,\n },\n [InputValidation.Phone]: {\n validate: validatePhone,\n error: phoneError,\n },\n [InputValidation.PostalCode]: {\n validate: (value: string) => validatePostalCode(value), \n error: postalCodeError,\n },\n [InputValidation.Url]: {\n validate: validateUrl,\n error: urlError,\n },\n [InputValidation.Name]: {\n validate: validateName,\n error: nameError,\n },\n };\n\n const validation =\n validationMap[\n validateRulesConfig['INPUT_VALIDATION'] as keyof typeof validationMap\n ];\n\n if (\n validation &&\n !validation.validate(trimmedValue) &&\n !errorsList[fieldName]?.length\n ) {\n return { [fieldName]: validation.error };\n }\n\n return defaultFields;\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { validationFields, ValidationFieldsConfig, TranslationList } from './fieldValidationRules';\nimport { FieldsProps } from '../../../types/form.types';\n\n// Extract validation-related translations from the complete translations object\nconst getValidationTranslations = (translations: any): TranslationList => ({\n requiredFieldError: translations.requiredFieldError,\n lengthTextError: translations.lengthTextError,\n numericError: translations.numericError,\n alphaNumWithSpacesError: translations.alphaNumWithSpacesError,\n alphaNumericError: translations.alphaNumericError,\n alphaError: translations.alphaError,\n emailError: translations.emailError,\n phoneError: translations.phoneError,\n postalCodeError: translations.postalCodeError,\n urlError: translations.urlError,\n nameError: translations.nameError,\n});\n\nexport type ValidationResult = {\n isValid: boolean;\n fieldErrors: Record<string, string>;\n};\n\nexport type FormValidationConfig = {\n fieldsConfig: FieldsProps[];\n translations: TranslationList;\n};\n\nconst createValidationConfig = (\n fieldsConfig: FieldsProps[],\n translations: any\n): FormValidationConfig => ({\n fieldsConfig,\n translations: getValidationTranslations(translations),\n});\n\nexport const validateField = (\n fieldCode: string,\n value: string | string[] | number | boolean,\n config: FormValidationConfig\n): string => {\n const { fieldsConfig, translations } = config;\n const fieldConfig = fieldsConfig.find(field => field.code === fieldCode);\n \n if (!fieldConfig) return '';\n\n const stringValue = Array.isArray(value) ? value.join('') : value.toString();\n \n const validationConfig: ValidationFieldsConfig = {\n validateRules: fieldConfig.validateRules || [],\n customUpperCode: fieldConfig.customUpperCode,\n required: fieldConfig.required,\n };\n\n const result = validationFields(\n stringValue,\n validationConfig,\n translations,\n {}\n );\n\n return result[fieldConfig.customUpperCode] || '';\n};\n\nexport const validateAllFields = (\n formData: Record<string, string | string[] | number | boolean>,\n config: FormValidationConfig\n): ValidationResult => {\n const { fieldsConfig, translations } = config;\n \n // Read the required flags from fieldsConfig (they are the same for all fields)\n const firstField = fieldsConfig[0];\n const isRequiredRegion = firstField?.isRequiredRegion || false;\n const isRequiredPostCode = firstField?.isRequiredPostCode || false;\n let hasErrors = false;\n const fieldErrors: Record<string, string> = {};\n\n // Validate all configured fields\n Object.entries(formData).forEach(([key, value]) => {\n const fieldConfig = fieldsConfig.find(field => field.code === key);\n if (!fieldConfig) return;\n\n const stringValue = Array.isArray(value) ? value.join('') : value.toString();\n \n const validationConfig: ValidationFieldsConfig = {\n validateRules: fieldConfig.validateRules,\n customUpperCode: fieldConfig.customUpperCode,\n required: fieldConfig.required,\n };\n\n const result = validationFields(\n stringValue,\n validationConfig,\n translations,\n {}\n );\n\n if (result[fieldConfig.customUpperCode]) {\n fieldErrors[fieldConfig.customUpperCode] = result[fieldConfig.customUpperCode];\n hasErrors = true;\n }\n });\n\n // Additional specific validation for dynamic requirements\n const hasRegionId = typeof formData.regionId === 'number' && formData.regionId > 0;\n const hasRegionCode = formData.regionCode && formData.regionCode.toString().trim();\n const hasRegion = formData.region && formData.region.toString().trim();\n \n if (isRequiredRegion && !hasRegionId && !hasRegionCode && !hasRegion) {\n fieldErrors.region = translations.requiredFieldError;\n hasErrors = true;\n }\n \n if (isRequiredPostCode && !formData.postcode.toString().trim()) {\n fieldErrors.postcode = translations.requiredFieldError;\n hasErrors = true;\n }\n\n return {\n isValid: !hasErrors,\n fieldErrors\n };\n};\n\nexport const updateFieldError = (\n currentErrors: Record<string, string>,\n fieldCode: string,\n errorMessage: string\n): Record<string, string> => {\n return {\n ...currentErrors,\n [fieldCode]: errorMessage\n };\n};\n\n// Convenience functions that handle config creation internally\nexport const validateSingleField = (\n fieldCode: string,\n value: string | string[] | number | boolean,\n fieldsConfig: FieldsProps[],\n translations: any\n): string => {\n const config = createValidationConfig(fieldsConfig, translations);\n return validateField(fieldCode, value, config);\n};\n\nexport const validateFormData = (\n formData: Record<string, string | string[] | number | boolean>,\n fieldsConfig: FieldsProps[],\n translations: any\n): ValidationResult => {\n const config = createValidationConfig(fieldsConfig, translations);\n return validateAllFields(formData, config);\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport React from 'react';\nimport { CompanyFormData } from '../../../data/models/company';\nimport { validateSingleField } from './formValidation';\nimport { FieldsProps } from '../../../types/form.types';\n\nexport type FieldChangeHandler = (key: string, value: string | string[] | number | boolean) => void;\nexport type ValidationHandler = (fieldCode: string, value: string | string[] | number | boolean) => void;\n\nexport interface FieldHandlersConfig {\n setFormData: React.Dispatch<React.SetStateAction<CompanyFormData>>;\n hasRegions: boolean;\n regionOptions: any[];\n fieldsConfig: FieldsProps[];\n formTranslations: any;\n setFieldErrors?: React.Dispatch<React.SetStateAction<Record<string, string>>>;\n}\n\nexport const createFieldHandlers = (config: FieldHandlersConfig) => {\n const { setFormData, hasRegions, regionOptions, fieldsConfig, formTranslations, setFieldErrors } = config;\n\n // Validation helper\n const validateField = (fieldCode: string, value: string | string[] | number | boolean) => {\n const errorMessage = validateSingleField(fieldCode, value, fieldsConfig, formTranslations);\n if (setFieldErrors && errorMessage) {\n setFieldErrors((prev: Record<string, string>) => ({\n ...prev,\n [fieldCode]: errorMessage\n }));\n } else if (setFieldErrors) {\n setFieldErrors((prev: Record<string, string>) => {\n const updated = { ...prev };\n delete updated[fieldCode];\n return updated;\n });\n }\n };\n\n const handleStreetChange = (value: string | string[]) => {\n setFormData(prev => {\n // Ensure prev.street is always treated as an array\n const currentStreet = Array.isArray(prev.street) ? prev.street : [prev.street || '', ''];\n const newStreet = Array.isArray(value) ? value : [value, currentStreet[1] || ''];\n return {\n ...prev,\n street: newStreet\n };\n });\n validateField('street', value);\n };\n\n const handleStreetLine2Change = (value: string) => {\n setFormData(prev => {\n // Ensure prev.street is always treated as an array\n const currentStreet = Array.isArray(prev.street) ? prev.street : [prev.street || '', ''];\n const newStreet = [currentStreet[0] || '', value];\n return {\n ...prev,\n street: newStreet\n };\n });\n validateField('streetLine2', value);\n };\n\n const handleRegionTextChange = (value: string) => {\n setFormData(prev => ({\n ...prev,\n region: value,\n regionCode: '',\n regionId: undefined\n }));\n validateField('region', value);\n };\n\n const handleRegionCodeChange = (value: string) => {\n setFormData(prev => ({\n ...prev,\n regionCode: value,\n ...(hasRegions ? {} : { regionId: undefined })\n }));\n validateField('regionCode', value);\n };\n\n const handleRegionDropdownChange = (value: string | number) => {\n const regionId = typeof value === 'string' ? parseInt(value, 10) || undefined : value;\n \n setFormData(prev => {\n const updated = { ...prev, regionId };\n \n // Find corresponding region code\n if (regionId && regionOptions.length > 0) {\n const selectedRegion = regionOptions.find((option: any) => \n option.id === regionId || option.value === regionId?.toString()\n );\n if (selectedRegion && selectedRegion.code) {\n updated.regionCode = selectedRegion.code;\n }\n }\n \n return updated;\n });\n validateField('regionId', value);\n };\n\n const handleCountryChange = (value: string) => {\n setFormData(prev => ({\n ...prev,\n countryCode: value,\n regionCode: '',\n regionId: undefined,\n region: ''\n }));\n validateField('countryCode', value);\n };\n\n const handleGenericFieldChange = (key: string, value: string | string[] | number | boolean) => {\n setFormData(prev => ({\n ...prev,\n [key]: value\n }));\n validateField(key, value);\n };\n\n // Main input change handler that delegates to specific handlers\n const handleInputChangeFromValues = (values: Record<string, string | string[] | number | boolean>) => {\n Object.entries(values).forEach(([key, value]) => {\n switch (key) {\n case 'street':\n handleStreetChange(value as string | string[]);\n break;\n case 'streetLine2':\n handleStreetLine2Change(value as string);\n break;\n case 'region':\n handleRegionTextChange(value as string);\n break;\n case 'regionCode':\n handleRegionCodeChange(value as string);\n break;\n case 'regionId':\n handleRegionDropdownChange(value as string | number);\n break;\n case 'countryCode':\n handleCountryChange(value as string);\n break;\n default:\n handleGenericFieldChange(key, value);\n break;\n }\n });\n };\n\n // DOM event handler that delegates to specific handlers\n const handleInputChange = (event: Event) => {\n const target = event.target as HTMLInputElement | HTMLSelectElement;\n if (!target) return;\n \n const { name, value } = target;\n \n switch (name) {\n case 'street':\n handleStreetChange(value);\n break;\n case 'streetLine2':\n handleStreetLine2Change(value);\n break;\n case 'region':\n if (hasRegions) {\n handleRegionDropdownChange(value);\n } else {\n handleRegionTextChange(value);\n }\n break;\n case 'regionCode':\n handleRegionCodeChange(value);\n break;\n case 'countryCode':\n handleCountryChange(value);\n break;\n default:\n handleGenericFieldChange(name, value);\n break;\n }\n };\n\n return {\n handleInputChange,\n handleInputChangeFromValues,\n handleStreetChange,\n handleStreetLine2Change,\n handleRegionTextChange,\n handleRegionCodeChange,\n handleRegionDropdownChange,\n handleCountryChange,\n handleGenericFieldChange,\n };\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useState, useMemo, useEffect } from 'preact/hooks';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nimport { createCompany } from '../api/createCompany/createCompany';\nimport { getStoreConfig } from '../api/getStoreConfig/getStoreConfig';\nimport { validateCompanyEmail } from '../api/validateCompanyEmail/validateCompanyEmail';\nimport { useCountryAndRegionFields } from './useCountryAndRegionFields';\nimport { getCompanyFieldsConfig } from '../components/CompanyRegistrationForm/Form/getCompanyFieldsConfig';\nimport { createFieldHandlers } from '../components/CompanyRegistrationForm/Form/fieldHandlers';\nimport { validateFormData, validateSingleField } from '../components/CompanyRegistrationForm/Form/formValidation';\n\nexport interface UseCompanyRegistrationFormProps {\n onSuccess?: (company: any) => void;\n onError?: (errors: string[]) => void;\n}\n\nexport interface UseCompanyRegistrationFormReturn {\n // Form state\n formValues: Record<string, string | number | boolean | string[]>;\n fieldErrors: Record<string, string>;\n isSubmitting: boolean;\n loadingStoreConfig: boolean;\n \n // Form configuration\n fieldsConfig: any[];\n \n // From useCountryAndRegionFields\n countryOptions: any[];\n regionOptions: any[];\n loadingCountries: boolean;\n \n // Form handlers\n handleInputChange: (values: Record<string, string | string[] | number | boolean>) => void;\n handleBlur: (event: Event) => void;\n handleFormSubmit: (event: SubmitEvent, isValid: boolean) => Promise<void>;\n \n // Translations\n translations: Record<string, string>;\n formTranslations: Record<string, string>;\n}\n\nexport const useCompanyRegistrationForm = ({\n onSuccess,\n onError,\n}: UseCompanyRegistrationFormProps): UseCompanyRegistrationFormReturn => {\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [fieldErrors, setFieldErrors] = useState<Record<string, string>>({});\n const [defaultCountry, setDefaultCountry] = useState('US');\n const [loadingStoreConfig, setLoadingStoreConfig] = useState(true);\n\n const {\n countryOptions,\n regionOptions,\n isRequiredRegion,\n isRequiredPostCode,\n hasRegions,\n loadingCountries,\n disableField,\n handleInputChange: handleCompanyFormChange,\n } = useCountryAndRegionFields({\n defaultCountry,\n formName: 'companyRegistration',\n });\n\n const [formValues, setFormValues] = useState<Record<string, string | number | boolean | string[]>>({\n countryCode: defaultCountry,\n region: '',\n regionCode: '',\n regionId: '',\n street: ['', ''],\n });\n\n\n // Fetch store config to get default country\n useEffect(() => {\n const fetchStoreConfig = async () => {\n try {\n setLoadingStoreConfig(true);\n const storeConfig = await getStoreConfig();\n const country = storeConfig.defaultCountry || 'US';\n setDefaultCountry(country);\n setFormValues(prev => ({ ...prev, countryCode: country }));\n } catch (error) {\n console.error('Failed to load store config:', error);\n // Keep default fallback country 'US'\n } finally {\n setLoadingStoreConfig(false);\n }\n };\n\n fetchStoreConfig();\n }, []);\n\n // Initialize the hook with default country when component mounts\n useEffect(() => {\n if (defaultCountry && !loadingStoreConfig) {\n handleCompanyFormChange('countryCode', defaultCountry);\n }\n }, [defaultCountry, handleCompanyFormChange, loadingStoreConfig]);\n\n const formTranslations = useText({\n requiredFieldError: 'Company.shared.validation.required',\n lengthTextError: 'Company.FormText.lengthTextError',\n numericError: 'Company.FormText.numericError',\n alphaNumWithSpacesError: 'Company.FormText.alphaNumWithSpacesError',\n alphaNumericError: 'Company.FormText.alphaNumericError',\n alphaError: 'Company.FormText.alphaError',\n emailError: 'Company.shared.validation.invalidEmail',\n phoneError: 'Company.shared.validation.phoneInvalid',\n postalCodeError: 'Company.shared.validation.postalCodeInvalid',\n urlError: 'Company.FormText.urlError',\n nameError: 'Company.FormText.nameError',\n });\n\n const translations = useText({\n title: 'Company.shared.fields.title',\n submitButton: 'Company.shared.fields.submit',\n submittingButton: 'Company.shared.fields.submitting',\n cancelButton: 'Company.shared.buttons.cancel',\n createCompanyError: 'Company.shared.fields.createCompanyError',\n unexpectedError: 'Company.shared.fields.unexpectedError',\n emailNotAvailable: 'Company.shared.validation.emailNotAvailable',\n // Field labels for placeholder generation\n companyName: 'Company.shared.fields.companyName',\n legalName: 'Company.shared.fields.legalName',\n companyEmail: 'Company.shared.fields.companyEmail',\n vatTaxId: 'Company.shared.fields.vatTaxId',\n resellerId: 'Company.shared.fields.resellerId',\n street: 'Company.shared.fields.street',\n streetLine2: 'Company.shared.fields.streetLine2',\n city: 'Company.shared.fields.city',\n country: 'Company.shared.fields.country',\n stateProvince: 'Company.shared.fields.stateProvince',\n postalCode: 'Company.shared.fields.postalCode',\n telephone: 'Company.shared.fields.telephone',\n adminJobTitle: 'Company.shared.fields.adminJobTitle',\n adminWorkTelephone: 'Company.shared.fields.adminWorkTelephone',\n adminEmail: 'Company.shared.fields.adminEmail',\n adminFirstname: 'Company.shared.fields.adminFirstname',\n adminLastname: 'Company.shared.fields.adminLastname',\n adminGender: 'Company.shared.fields.adminGender',\n });\n\n // Generate fields config\n const fieldsConfig = useMemo(() => {\n const config = getCompanyFieldsConfig({\n formData: {\n countryCode: formValues.countryCode as string,\n regionCode: formValues.regionCode as string,\n regionId: formValues.regionId as number,\n },\n isRequiredRegion,\n isRequiredPostCode,\n hasRegions,\n disableField,\n translations,\n });\n \n return config.map((field: any) => {\n if (field.code === 'region') {\n return {\n ...field,\n required: isRequiredRegion,\n disabled: loadingCountries,\n fieldType: hasRegions ? 'SELECT' : 'TEXT',\n options: hasRegions ? regionOptions.map(region => ({\n text: region.text,\n value: region.value,\n isDefault: false,\n })) : [],\n };\n }\n if (field.code === 'postcode') {\n return {\n ...field,\n required: isRequiredPostCode,\n };\n }\n if (field.code === 'countryCode') {\n return {\n ...field,\n disabled: disableField || loadingCountries,\n options: countryOptions.map(country => ({\n text: country.text,\n value: country.value,\n isDefault: false,\n })),\n };\n }\n return field;\n });\n }, [isRequiredRegion, isRequiredPostCode, hasRegions, loadingCountries, disableField, countryOptions, regionOptions, formValues.countryCode, formValues.regionCode, formValues.regionId, translations]);\n\n const validateForm = (formData: any): boolean => {\n const validation = validateFormData(formData, fieldsConfig, formTranslations);\n setFieldErrors(validation.fieldErrors);\n \n return validation.isValid;\n };\n\n // Create field handlers\n const fieldHandlers = useMemo(() => createFieldHandlers({\n setFormData: setFormValues as any,\n hasRegions,\n regionOptions,\n fieldsConfig,\n formTranslations,\n setFieldErrors,\n }), [hasRegions, regionOptions, fieldsConfig, formTranslations]);\n\n const handleInputChange = (values: Record<string, string | string[] | number | boolean>) => {\n // Use the field handlers to process the values\n fieldHandlers.handleInputChangeFromValues(values);\n \n // Handle special cases that need additional processing\n Object.entries(values).forEach(([key, value]) => {\n if (key === 'countryCode') {\n handleCompanyFormChange('countryCode', value as string);\n }\n });\n };\n\n const handleBlur = (event: Event) => {\n const target = event.target as HTMLInputElement;\n const { name, value } = target;\n \n // Find the field configuration\n const fieldConfig = fieldsConfig.find(field => field.customUpperCode === name);\n \n if (fieldConfig) {\n // Validate this specific field using field code\n const validation = validateSingleField(fieldConfig.code, value, fieldsConfig, formTranslations);\n \n // Update field errors - clear if valid, set if invalid\n setFieldErrors(prev => ({\n ...prev,\n [name]: validation || ''\n }));\n }\n };\n\n const handleFormSubmit = async (event: SubmitEvent, isValid: boolean) => {\n // Get form data from the form\n const formElement = event.target as HTMLFormElement;\n const formData = new FormData(formElement);\n const rawFormValues: Record<string, any> = {};\n \n for (const [key, value] of formData.entries()) {\n rawFormValues[key] = value;\n }\n\n const finalFormValues = {\n ...rawFormValues,\n ...formValues \n };\n\n const formIsValid = validateForm(finalFormValues);\n \n if (!isValid || !formIsValid) {\n return;\n }\n\n setIsSubmitting(true);\n\n try {\n // Validate company email availability before creating the company\n const emailValidation = await validateCompanyEmail(finalFormValues.companyEmail as string);\n if (!emailValidation.isValid) {\n setFieldErrors(prev => ({\n ...prev,\n companyEmail: emailValidation.error || translations.emailNotAvailable,\n }));\n setIsSubmitting(false);\n return;\n }\n const result = await createCompany(finalFormValues);\n \n if (result.success && result.company) {\n onSuccess?.(result.company);\n } else {\n const errorMessages = result.errors || [translations.createCompanyError];\n onError?.(errorMessages);\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : translations.unexpectedError;\n onError?.([errorMessage]);\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return {\n // Form state\n formValues,\n fieldErrors,\n isSubmitting,\n loadingStoreConfig,\n \n // Form configuration\n fieldsConfig,\n \n // From useCountryAndRegionFields\n countryOptions,\n regionOptions,\n loadingCountries,\n \n // Form handlers\n handleInputChange,\n handleBlur,\n handleFormSubmit,\n \n // Translations\n translations,\n formTranslations,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { Button } from '@adobe-commerce/elsie/components';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Form } from './Form/Form';\nimport { CompanyFormSlots } from '../../types/form.types';\nimport { Company } from '../../data/models/company';\nimport { useCompanyRegistrationForm } from '../../hooks/useCompanyRegistrationForm';\nimport '@adobe-commerce/storefront-design/dist/css/base.css';\nimport './CompanyRegistrationForm.css';\n\nexport interface CompanyRegistrationFormProps {\n onSuccess?: (company: Company) => void;\n onError?: (errors: string[]) => void;\n className?: string;\n slots?: CompanyFormSlots;\n hideActionFormButtons?: boolean;\n}\n\nexport const CompanyRegistrationForm: FunctionComponent<CompanyRegistrationFormProps> = ({\n onSuccess,\n onError,\n className = '',\n slots,\n hideActionFormButtons = false,\n}) => {\n const {\n // Form state\n formValues,\n fieldErrors,\n isSubmitting,\n loadingStoreConfig,\n \n // Form configuration\n fieldsConfig,\n \n // From useCountryAndRegionFields\n countryOptions,\n regionOptions,\n loadingCountries,\n \n // Form handlers\n handleInputChange,\n handleBlur,\n handleFormSubmit,\n \n // Translations\n translations,\n } = useCompanyRegistrationForm({\n onSuccess,\n onError,\n });\n\n return (\n <div className={classes(['company-form-wrapper', className])}>\n <h2>{translations.title}</h2>\n <Form\n regionOptions={regionOptions}\n countryOptions={countryOptions}\n slots={slots}\n className=\"company-registration-form\"\n name=\"companyRegistrationForm\"\n fieldsConfig={fieldsConfig}\n values={formValues}\n errors={fieldErrors}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onSubmit={handleFormSubmit}\n loading={isSubmitting}\n showFormLoader={false}\n >\n {/* Submit Button Section */}\n {!hideActionFormButtons && (\n <div className={classes(['company-form-wrapper__buttons'])}>\n <Button\n type=\"submit\"\n disabled={isSubmitting || loadingStoreConfig || loadingCountries}\n className=\"company-form-wrapper__submit\"\n >\n {isSubmitting ? translations.submittingButton : translations.submitButton}\n </Button>\n </div>\n )}\n </Form>\n </div>\n );\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { getCountries } from '@/company-management/api/getCountries';\nimport { Company } from '@/company-management/data/models/company';\nimport '@adobe-commerce/storefront-design/dist/css/base.css';\nimport './CompanyRegistrationSuccess.css';\n\n\nexport interface CompanyRegistrationSuccessProps {\n company: Company;\n}\n\nexport const CompanyRegistrationSuccess: FunctionComponent<CompanyRegistrationSuccessProps> = ({\n company\n}) => {\n const [countryName, setCountryName] = useState<string>('');\n\n const translations = useText({\n pendingApproval: 'Company.CompanyRegistration.success.pendingApproval',\n companyDetails: 'Company.CompanyRegistration.success.companyDetails',\n companyName: 'Company.shared.fields.companyName',\n companyEmail: 'Company.shared.fields.companyEmail',\n legalName: 'Company.shared.fields.legalName',\n vatTaxId: 'Company.shared.fields.vatTaxId',\n resellerId: 'Company.shared.fields.resellerId',\n address: 'Company.shared.fields.legalAddress',\n street: 'Company.shared.fields.street',\n city: 'Company.shared.fields.city',\n stateProvince: 'Company.shared.fields.stateProvince',\n postcode: 'Company.shared.fields.postcode',\n country: 'Company.shared.fields.country',\n telephone: 'Company.shared.fields.telephone',\n companyAdmin: 'Company.shared.fields.companyAdmin',\n adminFirstname: 'Company.shared.fields.adminFirstname',\n adminLastname: 'Company.shared.fields.adminLastname',\n adminEmail: 'Company.shared.fields.adminEmail',\n adminJobTitle: 'Company.shared.fields.adminJobTitle',\n adminWorkTelephone: 'Company.shared.fields.adminWorkTelephone',\n });\n\n // Fetch country name based on country code\n useEffect(() => {\n const fetchCountryName = async () => {\n if (company.legalAddress?.countryCode) {\n try {\n const { availableCountries } = await getCountries();\n const country = availableCountries.find(c => c.value === company.legalAddress?.countryCode);\n if (country) {\n setCountryName(country.text);\n }\n } catch (error) {\n console.error('Failed to fetch countries:', error);\n // Fallback to country code if API fails\n setCountryName(company.legalAddress.countryCode);\n }\n }\n };\n\n fetchCountryName();\n }, [company.legalAddress?.countryCode]); \n\n return (\n <div className={`company-registration-success`}>\n <div className=\"company-registration-success__header\">\n <p className=\"company-registration-success__pending\">\n {translations.pendingApproval}\n </p>\n </div>\n\n <div className=\"company-registration-success__details\">\n <h2 className=\"company-registration-success__details-title\">\n {translations.companyDetails}\n </h2>\n \n <div className=\"company-registration-success__grid\">\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.companyName}:\n </span>\n <span className=\"company-registration-success__value\">{company.name}</span>\n </div>\n\n {company.legalName && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.legalName}:\n </span>\n <span className=\"company-registration-success__value\">{company.legalName}</span>\n </div>\n )}\n\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.companyEmail}:\n </span>\n <span className=\"company-registration-success__value\">{company.email}</span>\n </div>\n\n \n\n {company.vatTaxId && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.vatTaxId}:\n </span>\n <span className=\"company-registration-success__value\">{company.vatTaxId}</span>\n </div>\n )}\n\n {company.resellerId && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.resellerId}:\n </span>\n <span className=\"company-registration-success__value\">{company.resellerId}</span>\n </div>\n )}\n\n {/* Address Information */}\n {company.legalAddress && (\n <>\n <div className=\"company-registration-success__section-header\">\n <h3>{translations.address}</h3>\n </div>\n\n {company.legalAddress.street && company.legalAddress.street[0] && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.street}:\n </span>\n <span className=\"company-registration-success__value\">\n {company.legalAddress.street.map((line: string, index: number) => (\n <div key={index}>{line}</div>\n ))}\n </span>\n </div>\n )}\n\n {company.legalAddress.city && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.city}:\n </span>\n <span className=\"company-registration-success__value\">{company.legalAddress.city}</span>\n </div>\n )}\n\n {company.legalAddress.countryCode && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.country}:\n </span>\n <span className=\"company-registration-success__value\">{countryName || company.legalAddress.countryCode}</span>\n </div>\n )}\n\n {company.legalAddress.region && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.stateProvince}:\n </span>\n <span className=\"company-registration-success__value\">\n {company.legalAddress.region.region || company.legalAddress.region.regionCode}\n </span>\n </div>\n )}\n\n {company.legalAddress.postcode && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.postcode}:\n </span>\n <span className=\"company-registration-success__value\">{company.legalAddress.postcode}</span>\n </div>\n )}\n\n \n\n {company.legalAddress.telephone && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.telephone}:\n </span>\n <span className=\"company-registration-success__value\">{company.legalAddress.telephone}</span>\n </div>\n )}\n </>\n )}\n\n {/* Company Admin Information */}\n {company.companyAdmin && (\n <>\n <div className=\"company-registration-success__section-header\">\n <h3>{translations.companyAdmin}</h3>\n </div>\n\n {company.companyAdmin.jobTitle && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.adminJobTitle}:\n </span>\n <span className=\"company-registration-success__value\">{company.companyAdmin.jobTitle}</span>\n </div>\n )}\n\n {company.companyAdmin.telephone && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.adminWorkTelephone}:\n </span>\n <span className=\"company-registration-success__value\">{company.companyAdmin.telephone}</span>\n </div>\n )}\n\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.adminEmail}:\n </span>\n <span className=\"company-registration-success__value\">{company.companyAdmin.email}</span>\n </div>\n </>\n )}\n\n </div>\n </div>\n </div>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useState, useEffect } from 'preact/hooks';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { CompanyRegistrationForm } from '@/company-management/components/CompanyRegistrationForm';\nimport { CompanyRegistrationSuccess } from '@/company-management/components/CompanyRegistrationSuccess';\nimport { CompanyFormSlots } from '@/company-management/types/form.types';\nimport { Company } from '@/company-management/data/models/company';\nimport { allowCompanyRegistration } from '../../api/allowCompanyRegistration';\nimport { isCompanyUser } from '../../api/isCompanyUser';\n\nexport interface CompanyRegistrationProps {\n isAuthenticated?: boolean;\n onRedirectLogin?: () => void;\n onRedirectAccount?: () => void;\n onSuccess?: (company: Company) => void;\n onError?: (errors: string[]) => void;\n className?: string;\n slots?: CompanyFormSlots;\n}\n\ntype CompanyRegistrationState = 'loading' | 'redirect-login' | 'redirect-account' | 'show-form' | 'success';\n\nexport const CompanyRegistration: Container<CompanyRegistrationProps> = ({\n isAuthenticated = false,\n onRedirectLogin,\n onRedirectAccount,\n onSuccess,\n onError,\n className,\n slots,\n}) => {\n const [state, setState] = useState<CompanyRegistrationState>('loading');\n const [registeredCompany, setRegisteredCompany] = useState<Company | null>(null);\n\n useEffect(() => {\n let active = true;\n (async () => {\n try {\n const canRegister = await allowCompanyRegistration();\n \n if (!canRegister) {\n // Provide status logging since company registration link is always visible\n // and backend configuration is not exposed to frontend users\n if (active) {\n const redirectState = isAuthenticated ? 'redirect-account' : 'redirect-login';\n const destination = isAuthenticated ? 'account dashboard' : 'login page';\n console.log(`Company registration disabled - redirecting to ${destination}`);\n setState(redirectState);\n }\n return;\n }\n\n if (isAuthenticated) {\n try {\n const belongsToCompany = await isCompanyUser();\n if (belongsToCompany) {\n if (active) {\n console.log('User already belongs to a company - redirecting to account dashboard');\n setState('redirect-account');\n }\n return;\n }\n } catch (error) {\n console.error('Error checking company membership - redirecting to account dashboard:', error);\n if (active) setState('redirect-account');\n return;\n }\n }\n\n if (active) setState('show-form');\n } catch (error) {\n console.error('Error checking B2B status:', error);\n if (active) setState(isAuthenticated ? 'redirect-account' : 'redirect-login');\n }\n })();\n return () => { active = false; };\n }, [isAuthenticated]);\n\n // Handle redirects\n useEffect(() => {\n if (state === 'redirect-login' && onRedirectLogin) {\n onRedirectLogin();\n }\n if (state === 'redirect-account' && onRedirectAccount) {\n onRedirectAccount();\n }\n }, [state, onRedirectLogin, onRedirectAccount]);\n\n const handleSuccess = (company: Company) => {\n setState('success');\n setRegisteredCompany(company);\n onSuccess?.(company);\n };\n\n const handleError = (errors: string[]) => {\n onError?.(errors);\n };\n\n if (state === 'loading' || state === 'redirect-login' || state === 'redirect-account') {\n return null;\n }\n\n if (state === 'success' && registeredCompany) {\n return (\n <div className={`company-registration-container ${className || ''}`}>\n <CompanyRegistrationSuccess\n company={registeredCompany}\n />\n </div>\n );\n }\n\n return (\n <div className={`company-registration-container ${className || ''}`}>\n <CompanyRegistrationForm\n onSuccess={handleSuccess}\n onError={handleError}\n slots={slots}\n />\n </div>\n );\n};"],"names":["FieldTypeEnum","FormInputs","memo","loading","values","fields","errors","className","regionOptions","countryOptions","onChange","onBlur","onFocus","slots","fieldIdPrefix","itemClassName","translations","useText","fieldSections","getSectionTitle","sectionKey","formatRegionValue","item","regionCode","_a","regionId","_b","_c","_d","formatStreetValue","renderSlot","errorMessage","slotName","slot","contextValue","jsx","Slot","selectElement","valueMessage","options","country","option","Fragment","Field","classes","Picker","inputElement","inputType","Input","renderSectionFields","sectionFields","field","streetValue","regionValue","renderSection","sectionTitle","jsxs","Form","showFormLoader","name","children","fieldsConfig","onSubmit","formRef","useRef","handleSubmit","event","handleChange","target","value","useCountryAndRegionFields","defaultCountry","formName","countriesData","setCountriesData","useState","inputChange","setInputChange","savedData","disableField","setDisableField","loadingCountries","setLoadingCountries","regionsData","setRegionsData","useEffect","getCountries","availableCountries","countriesWithRequiredRegion","optionalZipCountries","error","selectedCountry","regions","region","useMemo","isRequiredRegion","isRequiredPostCode","hasRegions","handleInputChange","useCallback","prev","updatedData","getCompanyFieldsConfig","formData","getLabel","key","getPlaceholder","label","commonConfig","flattenObjectsArray","arr","acc","obj","validateNumeric","validateAlphanumeric","validateAlphanumWithSpaces","validateAlpha","validateEmail","validatePhone","validateUrl","validatePostalCode","validateName","validateLength","minLength","maxLength","length","validationFields","configs","errorsList","requiredFieldError","lengthTextError","numericError","alphaNumWithSpacesError","alphaNumericError","alphaError","emailError","phoneError","postalCodeError","urlError","nameError","fieldName","defaultFields","trimmedValue","validateRulesConfig","min","max","validation","getValidationTranslations","createValidationConfig","validateField","fieldCode","config","fieldConfig","stringValue","validationConfig","validateAllFields","firstField","hasErrors","fieldErrors","result","hasRegionId","hasRegionCode","hasRegion","validateSingleField","validateFormData","createFieldHandlers","setFormData","formTranslations","setFieldErrors","updated","handleStreetChange","currentStreet","newStreet","handleStreetLine2Change","handleRegionTextChange","handleRegionCodeChange","handleRegionDropdownChange","selectedRegion","handleCountryChange","handleGenericFieldChange","useCompanyRegistrationForm","onSuccess","onError","isSubmitting","setIsSubmitting","setDefaultCountry","loadingStoreConfig","setLoadingStoreConfig","handleCompanyFormChange","formValues","setFormValues","getStoreConfig","validateForm","fieldHandlers","isValid","formElement","rawFormValues","finalFormValues","formIsValid","emailValidation","validateCompanyEmail","createCompany","errorMessages","CompanyRegistrationForm","hideActionFormButtons","handleBlur","handleFormSubmit","Button","CompanyRegistrationSuccess","company","countryName","setCountryName","line","index","CompanyRegistration","isAuthenticated","onRedirectLogin","onRedirectAccount","state","setState","registeredCompany","setRegisteredCompany","active","allowCompanyRegistration","redirectState","isCompanyUser","handleSuccess","handleError"],"mappings":"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"}
1
+ {"version":3,"file":"CompanyRegistration.js","sources":["/@dropins/storefront-company-management/src/types/form.types.ts","/@dropins/storefront-company-management/src/components/CompanyRegistrationForm/Form/FormInputs/FormInputs.tsx","/@dropins/storefront-company-management/src/components/CompanyRegistrationForm/Form/Form.tsx","/@dropins/storefront-company-management/src/hooks/useCountryAndRegionFields.tsx","/@dropins/storefront-company-management/src/components/CompanyRegistrationForm/Form/getCompanyFieldsConfig.ts","/@dropins/storefront-company-management/src/components/CompanyRegistrationForm/Form/fieldValidationRules.ts","/@dropins/storefront-company-management/src/components/CompanyRegistrationForm/Form/formValidation.ts","/@dropins/storefront-company-management/src/components/CompanyRegistrationForm/Form/fieldHandlers.ts","/@dropins/storefront-company-management/src/hooks/useCompanyRegistrationForm.ts","/@dropins/storefront-company-management/src/components/CompanyRegistrationForm/CompanyRegistrationForm.tsx","/@dropins/storefront-company-management/src/components/CompanyRegistrationSuccess/CompanyRegistrationSuccess.tsx","/@dropins/storefront-company-management/src/containers/CompanyRegistration/CompanyRegistration.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CompanyFormData } from '@/company-management/data/models/company';\n\nexport enum FieldTypeEnum {\n TEXT = 'TEXT',\n EMAIL = 'EMAIL',\n TEL = 'TEL',\n SELECT = 'SELECT',\n HIDDEN = 'HIDDEN',\n}\n\nexport interface FieldsProps {\n code: string;\n name: string;\n id: string;\n required: boolean;\n label: string;\n options: { isDefault: boolean; text: string; value: string }[];\n className?: string;\n defaultValue: string | boolean | number;\n fieldType: FieldTypeEnum;\n isHidden: boolean;\n customUpperCode: string;\n validateRules?: Record<string, string | number | boolean>[];\n placeholder?: string;\n disabled?: boolean;\n isRequiredRegion?: boolean;\n isRequiredPostCode?: boolean;\n maxlength?: number;\n}\n\nexport interface CompanyFormInputsContext {\n formData: CompanyFormData;\n formActions: {\n handleChange: (field: keyof CompanyFormData, value: string | string[]) => void;\n };\n}\n\nexport interface CompanyFormSectionContext {\n formData: CompanyFormData;\n handleInputChange: (values: Record<string, string | string[] | number | boolean>) => void;\n isSubmitting: boolean;\n errors: string[];\n}\n\nexport interface CompanyFormSlots {\n // Individual field slots - pattern: CompanyFormInput_{fieldCode}\n // Examples: CompanyFormInput_companyName, CompanyFormInput_companyEmail, etc.\n // Each slot is a function that receives context and returns JSX\n [key: string]: (context?: any) => any;\n}\n\nexport interface FormProps {\n regionOptions?: { text: string; value: string }[];\n countryOptions?: { text: string; value: string }[];\n fieldIdPrefix?: string;\n slots?: CompanyFormSlots;\n fieldsConfig?: FieldsProps[];\n values?: Record<string, string | number | boolean | string[]>;\n errors?: Record<string, string>;\n name?: string;\n className?: string;\n children?: any;\n /** Show loading spinner (for initial data loading like countries/store config) */\n loading?: boolean;\n /** Show loading spinner centered (legacy, use loading instead) */\n showFormLoader?: boolean;\n /** Show submitting overlay (form stays visible but disabled with spinner on top) */\n submitting?: boolean;\n onSubmit?: (event: SubmitEvent, isValid: boolean) => Promise<void | null | undefined>;\n onChange?: (values: Record<string, string | string[] | number | boolean>) => void;\n onBlur?: (event: Event) => void;\n}\n\nexport interface FormInputsProps {\n className?: string;\n errors?: Record<string, string>;\n values?: Record<string, string | number | boolean | string[]>;\n formData?: Record<string, string | number | boolean>;\n fields?: FieldsProps[];\n loading?: boolean;\n regionOptions?: { text: string; value: string }[];\n countryOptions?: { text: string; value: string }[];\n onChange?: (event: Event) => void;\n handleInputChange?: (event: Event) => void;\n onBlur?: (event: Event) => void;\n onFocus?: (event: Event) => void;\n fieldIdPrefix?: string;\n slots?: CompanyFormSlots;\n}","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent, memo } from 'preact/compat';\nimport { Field, Input, Picker } from '@adobe-commerce/elsie/components';\nimport { classes, Slot } from '@adobe-commerce/elsie/lib';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { FormInputsProps, FieldsProps, FieldTypeEnum } from '../../../../types/form.types';\n\nexport const FormInputs: FunctionComponent<FormInputsProps> = memo(({\n loading,\n values = {},\n fields,\n errors = {},\n className = '',\n regionOptions,\n countryOptions,\n onChange,\n onBlur,\n onFocus,\n slots,\n fieldIdPrefix,\n}) => {\n const itemClassName = `${className}__field`;\n\n const translations = useText({\n selectCountry: 'Company.FormText.selectCountry',\n selectRegion: 'Company.FormText.selectRegion',\n selectCountryFirst: 'Company.FormText.selectCountryFirst',\n country: 'Company.shared.fields.country',\n stateProvince: 'Company.shared.fields.stateProvince',\n 'Company.Registration.companyInformation': 'Company.shared.fields.companyInformation',\n 'Company.Registration.legalAddress': 'Company.shared.fields.legalAddress', \n 'Company.Registration.companyAdmin': 'Company.shared.fields.companyAdmin',\n });\n\n // Define field sections for organizing form\n const fieldSections = {\n CompanyInformationSection: ['companyName', 'legalName', 'companyEmail', 'vatTaxId', 'resellerId'],\n LegalAddressSection: ['street', 'streetLine2', 'city', 'countryCode', 'region', 'postcode', 'addressTelephone'],\n CompanyAdministratorSection: ['adminEmail', 'adminFirstname', 'adminLastname', 'adminJobTitle', 'adminWorkTelephone', 'adminGender']\n };\n\n const getSectionTitle = (sectionKey: string) => {\n const titles = {\n CompanyInformationSection: 'Company.Registration.companyInformation',\n LegalAddressSection: 'Company.Registration.legalAddress', \n CompanyAdministratorSection: 'Company.Registration.companyAdmin'\n };\n return titles[sectionKey as keyof typeof titles];\n };\n\n // Format region value for SELECT fields using \"regionCode,regionId\" format\n const formatRegionValue = (item: FieldsProps) => {\n if ((item.code === 'region' || item.code === 'regionCode') && item.fieldType === FieldTypeEnum.SELECT) {\n const regionCode = values['regionCode']?.toString() || '';\n const regionId = values['regionId']?.toString() || '';\n if (regionCode && regionId) {\n return `${regionCode},${regionId}`;\n }\n if (values[item.code]?.toString().includes(',')) {\n // If region value is already in \"code,id\" format, use it\n return values[item.code]?.toString();\n }\n return '';\n }\n return null;\n };\n\n // Format street value handling array mapping for street and streetLine2 fields\n const formatStreetValue = (item: FieldsProps) => {\n if (item.code === 'street') {\n return Array.isArray(values.street) ? (values.street[0] || '') : (values.street?.toString() || '');\n } else if (item.code === 'streetLine2') {\n return Array.isArray(values.street) ? (values.street[1] || '') : '';\n }\n return null;\n };\n\n\n // Render slot function for individual fields\n const renderSlot = (item: FieldsProps, errorMessage?: string) => {\n const slotName = `CompanyFormInput_${item.code}`;\n const slot = slots?.[slotName];\n if (!slot) return null;\n\n const contextValue = {\n inputName: item.code,\n handleOnChange: onChange || (() => {}),\n errorMessage,\n errors: Object.values(errors),\n formData: values,\n fieldConfig: {\n required: item.required,\n disabled: item.disabled || loading,\n placeholder: item.placeholder || item.label,\n label: item.label,\n },\n };\n return (\n <Slot\n data-testid={`companyFormInput_${item.code}`}\n name={slotName}\n slot={slot}\n context={contextValue}\n />\n );\n };\n\n // Select/Picker element renderer\n const selectElement = (item: FieldsProps, valueMessage: string, errorMessage: string) => {\n let options = item.options;\n \n // Special handling for country and region fields\n if (item.code === 'countryCode' || item.code === 'country_code') {\n options = countryOptions?.map(country => ({\n value: country.value,\n text: country.text,\n isDefault: false,\n })) || [];\n } else if (item.code === 'region' || item.code === 'regionCode') {\n options = regionOptions?.map(option => ({ \n text: option.text, \n value: option.value, \n isDefault: false \n })) || [];\n }\n\n return (\n <>\n {renderSlot(item, errorMessage) ?? (\n <Field\n key={item.id}\n error={errorMessage}\n className={classes([\n itemClassName,\n `${itemClassName}--${item.id}`,\n [`${itemClassName}--${item.id}-hidden`, item.isHidden],\n item.className,\n ])}\n data-testid={`${className}--${item.id}`}\n disabled={loading}\n >\n <Picker\n aria-label={item.label}\n aria-required={item.required ? 'true' : 'false'}\n id={fieldIdPrefix ? `${fieldIdPrefix}_${item.code}` : item.code}\n required={item?.required}\n name={item.customUpperCode || item.code}\n floatingLabel={`${item.label} ${item.required ? '*' : ''}`}\n placeholder={item.label}\n options={options}\n onBlur={onBlur}\n onFocus={onFocus}\n handleSelect={onChange}\n defaultValue={valueMessage}\n value={valueMessage}\n />\n </Field>\n )}\n </>\n );\n };\n\n // Input element renderer\n const inputElement = (item: FieldsProps, valueMessage: string, errorMessage: string) => {\n let inputType = 'text';\n \n if (item.fieldType === FieldTypeEnum.EMAIL) {\n inputType = 'email';\n } else if (item.fieldType === FieldTypeEnum.TEL) {\n inputType = 'tel';\n }\n\n return (\n <>\n {renderSlot(item, errorMessage) ?? (\n <Field\n key={item.id}\n error={errorMessage}\n className={classes([\n itemClassName,\n `${itemClassName}--${item.id}`,\n [`${itemClassName}--${item.id}-hidden`, item.isHidden],\n item.className,\n ])}\n data-testid={`${className}--${item.id}`}\n disabled={loading}\n >\n <Input\n aria-label={item.label}\n aria-required={item.required ? 'true' : 'false'}\n id={fieldIdPrefix ? `${fieldIdPrefix}_${item.code}` : item.code}\n type={inputType}\n name={item.customUpperCode}\n value={valueMessage ?? item.defaultValue}\n placeholder={item.label}\n floatingLabel={`${item.label} ${item.required ? '*' : ''}`}\n maxLength={item.maxlength}\n onBlur={onBlur}\n onFocus={onFocus}\n onChange={onChange}\n />\n </Field>\n \n )}\n </>\n );\n };\n\n\n\n // Render fields for a specific section\n const renderSectionFields = (sectionFields: string[]) => {\n return fields\n ?.filter(field => sectionFields.includes(field.code) && !field.isHidden)\n .map(item => {\n // Render the field\n let valueMessage = values[item.code]?.toString() || '';\n \n // Special handling for street fields - street array mapping\n const streetValue = formatStreetValue(item);\n if (streetValue !== null) {\n valueMessage = streetValue;\n }\n \n // Special handling for region field - use \"regionCode,regionId\" format for Picker\n const regionValue = formatRegionValue(item);\n if (regionValue !== null) {\n valueMessage = regionValue;\n }\n \n const errorMessage = errors[item.customUpperCode || item.code] || '';\n\n // For region field, respect the fieldType (which changes based on hasRegions)\n if (item.code === 'region' || item.code === 'regionCode') {\n if (item.fieldType === FieldTypeEnum.SELECT) {\n return selectElement(item, valueMessage, errorMessage);\n }\n return inputElement(item, valueMessage, errorMessage);\n }\n if (item.fieldType === FieldTypeEnum.SELECT || item.options?.length > 0) {\n return selectElement(item, valueMessage, errorMessage);\n }\n return inputElement(item, valueMessage, errorMessage);\n });\n };\n\n // Render individual section \n const renderSection = (sectionKey: keyof typeof fieldSections) => {\n const sectionFields = fieldSections[sectionKey];\n const sectionTitle = getSectionTitle(sectionKey);\n \n // Check if section has any visible fields\n const hasVisibleFields = fields?.some(field => \n sectionFields.includes(field.code) && !field.isHidden\n );\n \n if (!hasVisibleFields) return null;\n \n // Render section with title and fields\n return (\n <div key={`section-${sectionKey}`} className={`${className}__section`}>\n <h3 className={`${className}__section-title`}>{translations[sectionTitle]}</h3>\n {renderSectionFields(sectionFields)}\n </div>\n );\n };\n\n return (\n <div className={`${className}__inputs`}>\n {renderSection('CompanyInformationSection')}\n {renderSection('LegalAddressSection')}\n {renderSection('CompanyAdministratorSection')}\n </div>\n );\n});","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useRef, useEffect } from 'preact/hooks';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { ProgressSpinner } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { FormProps } from '../../../types/form.types';\nimport { FormInputs } from './FormInputs/FormInputs';\nimport './Form.css';\n\nexport const Form: FunctionComponent<FormProps> = ({\n showFormLoader,\n slots,\n name = 'companyForm',\n loading,\n submitting,\n children,\n className = 'company-form',\n fieldsConfig = [],\n values = {},\n errors = {},\n onSubmit,\n onChange,\n onBlur,\n regionOptions,\n countryOptions,\n fieldIdPrefix,\n}) => {\n const formRef = useRef<HTMLFormElement>(null);\n\n const translations = useText({\n loading: 'Company.FormText.loading',\n submitting: 'Company.FormText.submitting',\n });\n\n // Scroll to top of page when submitting starts\n useEffect(() => {\n if (submitting) {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n }\n }, [submitting]);\n\n const handleSubmit = async (event: SubmitEvent) => {\n event.preventDefault();\n \n if (onSubmit) {\n await onSubmit(event, true);\n }\n };\n\n // Show centered spinner only during initial data loading (countries, store config)\n if (showFormLoader || loading) {\n return (\n <div className={classes(['company-form-loader'])} data-testid=\"company-form-loader\">\n <ProgressSpinner size=\"large\" />\n <div className=\"company-form-loader__text\">\n {translations.loading}\n </div>\n </div>\n );\n }\n\n const handleChange = (event: Event) => {\n const target = event.target as HTMLInputElement;\n const { name, value } = target;\n \n if (onChange) {\n onChange({ [name]: value });\n }\n };\n\n return (\n <div className=\"company-form-container\">\n <form\n id={name}\n ref={formRef}\n className={classes(['company-form', className, submitting && 'company-form--submitting'])}\n onSubmit={handleSubmit}\n noValidate\n >\n <FormInputs\n className={className}\n fields={fieldsConfig}\n values={values}\n errors={errors}\n loading={submitting}\n onChange={handleChange}\n onBlur={onBlur}\n slots={slots}\n regionOptions={regionOptions}\n countryOptions={countryOptions}\n fieldIdPrefix={fieldIdPrefix}\n />\n {children}\n </form>\n \n {/* Submitting overlay - covers form with spinner, scrolls to top so it's visible */}\n {submitting && (\n <div \n className=\"company-form__submitting-overlay\"\n data-testid=\"company-form-submitting-overlay\"\n >\n <ProgressSpinner size=\"large\" />\n <div className=\"company-form__submitting-text\">\n {translations.submitting}\n </div>\n </div>\n )}\n </div>\n );\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useCallback, useEffect, useMemo, useState } from 'preact/hooks';\nimport { getCountries } from '@/company-management/api/getCountries';\nimport { Country } from '@/company-management/data/models/country';\nimport { CompanyFormData } from '@/company-management/data/models/company';\n\ninterface CountriesData {\n availableCountries: Country[];\n countriesWithRequiredRegion: string[];\n optionalZipCountries: string[];\n}\n\ninterface UseCountryAndRegionFieldsOptions {\n defaultCountry?: string;\n formName?: string;\n}\n\nexport const useCountryAndRegionFields = (options: UseCountryAndRegionFieldsOptions = {}) => {\n const { defaultCountry = 'US', formName = 'company_registration' } = options;\n const [countriesData, setCountriesData] = useState<CountriesData | null>(null);\n const [inputChange, setInputChange] = useState<Partial<CompanyFormData>>(() => {\n // Check session storage first, like storefront-account does\n try {\n const savedData = sessionStorage.getItem(`${formName}_formData`);\n return savedData\n ? { countryCode: JSON.parse(savedData)?.countryCode }\n : { countryCode: defaultCountry };\n } catch (error) {\n // If parsing fails, fall back to default country\n return { countryCode: defaultCountry };\n }\n });\n const [disableField, setDisableField] = useState(true);\n const [loadingCountries, setLoadingCountries] = useState(true);\n const [regionsData, setRegionsData] = useState<any[]>([]);\n\n useEffect(() => {\n setDisableField(true);\n setLoadingCountries(true);\n getCountries().then(({\n availableCountries,\n countriesWithRequiredRegion,\n optionalZipCountries,\n }) => {\n setCountriesData({\n availableCountries,\n countriesWithRequiredRegion,\n optionalZipCountries,\n });\n setDisableField(false);\n setLoadingCountries(false);\n }).catch((error) => {\n console.error('Failed to load countries:', error);\n setDisableField(false);\n setLoadingCountries(false);\n });\n }, []);\n\n // Load regions when country changes (matching EditCompanyProfile pattern)\n useEffect(() => {\n if (inputChange?.countryCode && countriesData) {\n const selectedCountry = countriesData.availableCountries.find(\n country => country.value === inputChange.countryCode\n );\n \n if (selectedCountry?.availableRegions && selectedCountry.availableRegions.length > 0) {\n const regions = selectedCountry.availableRegions.map((region: { id: number; code: string; name: string }) => ({\n text: region.name,\n value: `${region.code},${region.id}`,\n id: region.id,\n code: region.code,\n }));\n setRegionsData(regions);\n } else {\n setRegionsData([]);\n }\n } else {\n setRegionsData([]);\n }\n }, [inputChange?.countryCode, countriesData]);\n\n const countryOptions = useMemo(() => {\n return countriesData?.availableCountries || [];\n }, [countriesData]);\n\n const isRequiredRegion = useMemo(() => {\n if (!inputChange?.countryCode || !countriesData) return false;\n return countriesData.countriesWithRequiredRegion.includes(inputChange.countryCode as string);\n }, [inputChange?.countryCode, countriesData]);\n\n const isRequiredPostCode = useMemo(() => {\n if (!inputChange?.countryCode || !countriesData) return true;\n return !countriesData.optionalZipCountries.includes(inputChange.countryCode as string);\n }, [inputChange?.countryCode, countriesData]);\n\n // Memoized options for region dropdown (matching EditCompanyProfile pattern)\n const regionOptions = useMemo(() => {\n return regionsData;\n }, [regionsData]);\n\n // Check if region should be a dropdown (has options) or text input (no options)\n const hasRegions = useMemo(() => {\n return regionOptions.length > 0;\n }, [regionOptions.length]);\n\n const handleInputChange = useCallback((field: keyof CompanyFormData, value: string | string[]) => {\n setInputChange(prev => {\n const updatedData = {\n ...prev,\n [field]: value,\n };\n\n // When country changes, clear region data (matching EditCompanyProfile pattern)\n if (field === 'countryCode') {\n updatedData.regionCode = '';\n updatedData.regionId = undefined;\n }\n\n return updatedData;\n });\n }, []);\n\n return {\n countryOptions,\n regionOptions,\n isRequiredRegion,\n isRequiredPostCode,\n disableField,\n loadingCountries,\n hasRegions,\n handleInputChange,\n inputChange,\n };\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FieldsProps, FieldTypeEnum } from '../../../types/form.types';\nimport { CompanyFormData } from '../../../data/models/company';\n\nexport interface CompanyFieldsConfigOptions {\n formData?: Partial<CompanyFormData>;\n isRequiredRegion?: boolean;\n isRequiredPostCode?: boolean;\n hasRegions?: boolean;\n disableField?: boolean;\n translations: Record<string, string>;\n}\n\nexport const getCompanyFieldsConfig = (\n options: CompanyFieldsConfigOptions\n): FieldsProps[] => {\n const { \n formData, \n isRequiredRegion = false, \n isRequiredPostCode = false, \n hasRegions = false, \n disableField = false,\n translations = {}\n } = options;\n \n // Helper function to get translated label\n const getLabel = (key: string) => {\n return translations?.[key] || key;\n };\n\n // Helper function to get translated placeholder using existing field labels\n const getPlaceholder = (key: string) => {\n const label = getLabel(key);\n \n // Create placeholder text from label\n if (key === 'countryCode' || key === 'region' || key === 'adminGender') {\n return `Select ${label.toLowerCase()}`;\n }\n return `Enter ${label.toLowerCase()}`;\n };\n\n // Common configuration for all fields\n const commonConfig = {\n isRequiredRegion,\n isRequiredPostCode,\n };\n \n return [\n // Company Information Section\n {\n code: 'companyName',\n name: 'companyName',\n id: 'companyName',\n label: getLabel('companyName'),\n placeholder: getPlaceholder('companyName'),\n required: true,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'companyName',\n defaultValue: formData?.companyName || '',\n options: [],\n maxlength: 40,\n ...commonConfig,\n validateRules: [],\n },\n {\n code: 'legalName',\n name: 'legalName',\n id: 'legalName',\n label: getLabel('legalName'),\n placeholder: getPlaceholder('legalName'),\n required: false,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'legalName',\n defaultValue: formData?.legalName || '',\n options: [],\n maxlength: 80,\n validateRules: [],\n ...commonConfig\n },\n {\n code: 'companyEmail',\n name: 'companyEmail',\n id: 'companyEmail',\n label: getLabel('companyEmail'),\n placeholder: getPlaceholder('companyEmail'),\n required: true,\n fieldType: FieldTypeEnum.EMAIL,\n isHidden: false,\n customUpperCode: 'companyEmail',\n defaultValue: formData?.companyEmail || '',\n options: [],\n maxlength: 254,\n validateRules: [\n { INPUT_VALIDATION: 'email' },\n { MIN_TEXT_LENGTH: 5 },\n { MAX_TEXT_LENGTH: 254 }\n ],\n ...commonConfig,\n },\n {\n code: 'vatTaxId',\n name: 'vatTaxId',\n id: 'vatTaxId',\n label: getLabel('vatTaxId'),\n placeholder: getPlaceholder('vatTaxId'),\n required: false,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'vatTaxId',\n defaultValue: formData?.vatTaxId || '',\n options: [],\n maxlength: 40,\n validateRules: [],\n ...commonConfig,\n },\n {\n code: 'resellerId',\n name: 'resellerId',\n id: 'resellerId',\n label: getLabel('resellerId'),\n placeholder: getPlaceholder('resellerId'),\n required: false,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'resellerId',\n defaultValue: formData?.resellerId || '',\n options: [],\n maxlength: 40,\n validateRules: [],\n ...commonConfig,\n },\n\n // Legal Address Section\n {\n code: 'street',\n name: 'street',\n id: 'street',\n label: getLabel('street'),\n placeholder: getPlaceholder('street'),\n required: true,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'street',\n defaultValue: Array.isArray(formData?.street) ? formData.street[0] : formData?.street || '',\n options: [],\n validateRules: [],\n ...commonConfig,\n },\n {\n code: 'streetLine2',\n name: 'streetLine2',\n id: 'streetLine2',\n label: getLabel('streetLine2'),\n placeholder: getPlaceholder('streetLine2'),\n required: false,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'streetLine2',\n defaultValue: Array.isArray(formData?.street) ? formData.street[1] : '',\n options: [],\n validateRules: [],\n ...commonConfig,\n },\n {\n code: 'city',\n name: 'city',\n id: 'city',\n label: getLabel('city'),\n placeholder: getPlaceholder('city'),\n required: true,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'city',\n defaultValue: formData?.city || '',\n options: [],\n validateRules: [],\n ...commonConfig,\n },\n {\n code: 'countryCode',\n name: 'countryCode',\n id: 'countryCode',\n label: getLabel('country'),\n placeholder: getPlaceholder('country'),\n required: true,\n disabled: disableField,\n fieldType: FieldTypeEnum.SELECT,\n isHidden: false,\n customUpperCode: 'countryCode',\n defaultValue: formData?.countryCode || '',\n options: [], \n validateRules: [],\n },\n {\n code: 'region',\n name: 'region',\n id: 'region',\n label: getLabel('stateProvince'),\n placeholder: getPlaceholder('stateProvince'),\n required: isRequiredRegion,\n disabled: false, \n fieldType: hasRegions ? FieldTypeEnum.SELECT : FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'region',\n defaultValue: formData?.regionCode || '',\n options: [], \n },\n {\n code: 'postcode',\n name: 'postcode',\n id: 'postcode',\n label: getLabel('postalCode'),\n placeholder: getPlaceholder('postalCode'),\n required: isRequiredPostCode,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'postcode',\n defaultValue: formData?.postcode || '',\n options: [],\n validateRules: [\n { INPUT_VALIDATION: 'postal-code' },\n { MIN_TEXT_LENGTH: 3 },\n { MAX_TEXT_LENGTH: 20 }\n ],\n ...commonConfig,\n },\n {\n code: 'addressTelephone',\n name: 'addressTelephone',\n id: 'addressTelephone',\n label: getLabel('telephone'),\n placeholder: getPlaceholder('telephone'),\n required: true,\n fieldType: FieldTypeEnum.TEL,\n isHidden: false,\n customUpperCode: 'addressTelephone',\n defaultValue: formData?.addressTelephone || '',\n options: [],\n validateRules: [\n { INPUT_VALIDATION: 'phone' },\n { MIN_TEXT_LENGTH: 1 },\n { MAX_TEXT_LENGTH: 20 }\n ],\n ...commonConfig,\n },\n\n // Administrator Section\n {\n code: 'adminJobTitle',\n name: 'adminJobTitle',\n id: 'adminJobTitle',\n label: getLabel('adminJobTitle'),\n placeholder: getPlaceholder('adminJobTitle'),\n required: false,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'adminJobTitle',\n defaultValue: formData?.adminJobTitle || '',\n options: [],\n validateRules: [],\n ...commonConfig,\n },\n {\n code: 'adminWorkTelephone',\n name: 'adminWorkTelephone',\n id: 'adminWorkTelephone',\n label: getLabel('adminWorkTelephone'),\n placeholder: getPlaceholder('adminWorkTelephone'),\n required: false,\n fieldType: FieldTypeEnum.TEL,\n isHidden: false,\n customUpperCode: 'adminWorkTelephone',\n defaultValue: formData?.adminWorkTelephone || '',\n options: [],\n validateRules: [\n { INPUT_VALIDATION: 'phone' },\n { MIN_TEXT_LENGTH: 1 },\n { MAX_TEXT_LENGTH: 20 }\n ],\n ...commonConfig,\n },\n {\n code: 'adminEmail',\n name: 'adminEmail',\n id: 'adminEmail',\n label: getLabel('adminEmail'),\n placeholder: getPlaceholder('adminEmail'),\n required: true,\n fieldType: FieldTypeEnum.EMAIL,\n isHidden: false,\n customUpperCode: 'adminEmail',\n defaultValue: formData?.adminEmail || '',\n options: [],\n validateRules: [\n { INPUT_VALIDATION: 'email' },\n { MIN_TEXT_LENGTH: 5 },\n { MAX_TEXT_LENGTH: 254 }\n ],\n ...commonConfig,\n },\n {\n code: 'adminFirstname',\n name: 'adminFirstname',\n id: 'adminFirstname',\n label: getLabel('adminFirstname'),\n placeholder: getPlaceholder('adminFirstname'),\n required: true,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'adminFirstname',\n defaultValue: formData?.adminFirstname || '',\n options: [],\n validateRules: [\n { INPUT_VALIDATION: 'name' },\n { MIN_TEXT_LENGTH: 1 },\n { MAX_TEXT_LENGTH: 255 }\n ],\n ...commonConfig,\n },\n {\n code: 'adminLastname',\n name: 'adminLastname',\n id: 'adminLastname',\n label: getLabel('adminLastname'),\n placeholder: getPlaceholder('adminLastname'),\n required: true,\n fieldType: FieldTypeEnum.TEXT,\n isHidden: false,\n customUpperCode: 'adminLastname',\n defaultValue: formData?.adminLastname || '',\n options: [],\n validateRules: [\n { INPUT_VALIDATION: 'name' },\n { MIN_TEXT_LENGTH: 1 },\n { MAX_TEXT_LENGTH: 255 }\n ],\n ...commonConfig,\n },\n {\n code: 'adminGender',\n name: 'adminGender',\n id: 'adminGender',\n label: getLabel('adminGender'),\n placeholder: getPlaceholder('adminGender'),\n required: false,\n fieldType: FieldTypeEnum.SELECT,\n isHidden: false,\n customUpperCode: 'adminGender',\n defaultValue: formData?.adminGender?.toString() || '',\n options: [\n { value: '1', text: 'Male', isDefault: true },\n { value: '2', text: 'Female', isDefault: false },\n { value: '0', text: 'Not Specified', isDefault: false },\n ],\n validateRules: [],\n ...commonConfig,\n },\n ];\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\ntype ErrorsList = Record<string, string>;\n\nexport type ValidationFieldsConfig = {\n validateRules?: Record<string, string | number | boolean>[];\n code?: string;\n customUpperCode: string;\n required: boolean;\n};\n\nexport type TranslationList = {\n requiredFieldError: string;\n lengthTextError: string;\n numericError: string;\n alphaNumWithSpacesError: string;\n alphaNumericError: string;\n alphaError: string;\n emailError: string;\n phoneError: string;\n postalCodeError: string;\n urlError: string;\n nameError: string;\n};\n\nenum ConfigEnumLength {\n MIN_TEXT_LENGTH = 'MIN_TEXT_LENGTH',\n MAX_TEXT_LENGTH = 'MAX_TEXT_LENGTH',\n}\n\nexport enum InputValidation {\n Numeric = 'numeric',\n AlphanumWithSpaces = 'alphanum-with-spaces',\n Alphanumeric = 'alphanumeric',\n Alpha = 'alpha',\n Email = 'email',\n Phone = 'phone',\n PostalCode = 'postal-code',\n Length = 'length',\n Url = 'url',\n Name = 'name',\n}\n\nconst flattenObjectsArray = (arr: Record<string, string | number | boolean>[]): Record<string, string | number | boolean> =>\n arr.reduce((acc, obj) => ({ ...acc, ...obj }), {});\n\nexport const validateNumeric = (value: string): boolean =>\n /^[0-9]+$/.test(value);\n\nexport const validateAlphanumeric = (value: string): boolean =>\n /^[a-zA-Z0-9]+$/.test(value);\n\nexport const validateAlphanumWithSpaces = (value: string): boolean =>\n /^[a-zA-Z0-9\\s]+$/.test(value);\n\nexport const validateAlpha = (value: string): boolean =>\n /^[a-zA-Z]+$/.test(value);\n\nexport const validateEmail = (value: string): boolean =>\n /^[a-z0-9,!#$%&'*+/=?^_`{|}~-]+(\\.[a-z0-9,!#$%&'*+/=?^_`{|}~-]+)*@([a-z0-9-]+\\.)+[a-z]{2,}$/i.test(\n value\n );\n\nexport const validatePhone = (value: string): boolean =>\n /(?:[\\d\\s+\\-()]{1,20})/u.test(value);\n\nexport const validateUrl = (value: string): boolean =>\n /^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/i.test(value);\n\nexport const validatePostalCode = (value: string): boolean => {\n return /^[A-Z0-9\\s-]{3,10}$/i.test(value);\n};\n\nexport const validateName = (value: string): boolean => {\n return /^(?:[\\p{L}\\p{M},\\-_.'`&\\s\\d]){1,255}$/u.test(value);\n};\n\nexport const validateLength = (\n value: string,\n minLength: number,\n maxLength: number\n): boolean => {\n const length = value.length;\n return length >= minLength && length <= maxLength;\n};\n\nexport const validationFields = (\n value: string,\n configs: ValidationFieldsConfig,\n translations: TranslationList,\n errorsList: ErrorsList\n) => {\n const {\n requiredFieldError,\n lengthTextError,\n numericError,\n alphaNumWithSpacesError,\n alphaNumericError,\n alphaError,\n emailError,\n phoneError,\n postalCodeError,\n urlError,\n nameError,\n } = translations;\n\n const fieldName = configs?.customUpperCode as string;\n const defaultFields = { [fieldName]: '' };\n\n if (errorsList[fieldName]) {\n delete errorsList[fieldName];\n }\n\n const trimmedValue = value?.trim() || '';\n \n if (configs?.required && (!trimmedValue || trimmedValue === 'false')) {\n return { [fieldName]: requiredFieldError };\n }\n\n if (!configs?.required && !trimmedValue) {\n return defaultFields;\n }\n\n if (!configs?.validateRules?.length) return defaultFields;\n\n const validateRulesConfig = flattenObjectsArray(configs?.validateRules);\n\n const min = Number(validateRulesConfig[ConfigEnumLength.MIN_TEXT_LENGTH]) ?? 1;\n const max = Number(validateRulesConfig[ConfigEnumLength.MAX_TEXT_LENGTH]) ?? 255;\n\n // Use trimmed value for length validation\n if (!validateLength(trimmedValue, min, max)) {\n return {\n [fieldName]: lengthTextError.replace('{min}', min.toString()).replace('{max}', max.toString()),\n };\n }\n\n const validationMap = {\n [InputValidation.Numeric]: {\n validate: validateNumeric,\n error: numericError,\n },\n [InputValidation.AlphanumWithSpaces]: {\n validate: validateAlphanumWithSpaces,\n error: alphaNumWithSpacesError,\n },\n [InputValidation.Alphanumeric]: {\n validate: validateAlphanumeric,\n error: alphaNumericError,\n },\n [InputValidation.Alpha]: {\n validate: validateAlpha,\n error: alphaError,\n },\n [InputValidation.Email]: {\n validate: validateEmail,\n error: emailError,\n },\n [InputValidation.Phone]: {\n validate: validatePhone,\n error: phoneError,\n },\n [InputValidation.PostalCode]: {\n validate: (value: string) => validatePostalCode(value), \n error: postalCodeError,\n },\n [InputValidation.Url]: {\n validate: validateUrl,\n error: urlError,\n },\n [InputValidation.Name]: {\n validate: validateName,\n error: nameError,\n },\n };\n\n const validation =\n validationMap[\n validateRulesConfig['INPUT_VALIDATION'] as keyof typeof validationMap\n ];\n\n if (\n validation &&\n !validation.validate(trimmedValue) &&\n !errorsList[fieldName]?.length\n ) {\n return { [fieldName]: validation.error };\n }\n\n return defaultFields;\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { validationFields, ValidationFieldsConfig, TranslationList } from './fieldValidationRules';\nimport { FieldsProps } from '../../../types/form.types';\n\n// Extract validation-related translations from the complete translations object\nconst getValidationTranslations = (translations: any): TranslationList => ({\n requiredFieldError: translations.requiredFieldError,\n lengthTextError: translations.lengthTextError,\n numericError: translations.numericError,\n alphaNumWithSpacesError: translations.alphaNumWithSpacesError,\n alphaNumericError: translations.alphaNumericError,\n alphaError: translations.alphaError,\n emailError: translations.emailError,\n phoneError: translations.phoneError,\n postalCodeError: translations.postalCodeError,\n urlError: translations.urlError,\n nameError: translations.nameError,\n});\n\nexport type ValidationResult = {\n isValid: boolean;\n fieldErrors: Record<string, string>;\n};\n\nexport type FormValidationConfig = {\n fieldsConfig: FieldsProps[];\n translations: TranslationList;\n};\n\nconst createValidationConfig = (\n fieldsConfig: FieldsProps[],\n translations: any\n): FormValidationConfig => ({\n fieldsConfig,\n translations: getValidationTranslations(translations),\n});\n\nexport const validateField = (\n fieldCode: string,\n value: string | string[] | number | boolean,\n config: FormValidationConfig\n): string => {\n const { fieldsConfig, translations } = config;\n const fieldConfig = fieldsConfig.find(field => field.code === fieldCode);\n \n if (!fieldConfig) return '';\n\n const stringValue = Array.isArray(value) ? value.join('') : value.toString();\n \n const validationConfig: ValidationFieldsConfig = {\n validateRules: fieldConfig.validateRules || [],\n customUpperCode: fieldConfig.customUpperCode,\n required: fieldConfig.required,\n };\n\n const result = validationFields(\n stringValue,\n validationConfig,\n translations,\n {}\n );\n\n return result[fieldConfig.customUpperCode] || '';\n};\n\nexport const validateAllFields = (\n formData: Record<string, string | string[] | number | boolean>,\n config: FormValidationConfig\n): ValidationResult => {\n const { fieldsConfig, translations } = config;\n \n // Read the required flags from fieldsConfig (they are the same for all fields)\n const firstField = fieldsConfig[0];\n const isRequiredRegion = firstField?.isRequiredRegion || false;\n const isRequiredPostCode = firstField?.isRequiredPostCode || false;\n let hasErrors = false;\n const fieldErrors: Record<string, string> = {};\n\n // Validate all configured fields\n Object.entries(formData).forEach(([key, value]) => {\n const fieldConfig = fieldsConfig.find(field => field.code === key);\n if (!fieldConfig) return;\n\n const stringValue = Array.isArray(value) ? value.join('') : value.toString();\n \n const validationConfig: ValidationFieldsConfig = {\n validateRules: fieldConfig.validateRules,\n customUpperCode: fieldConfig.customUpperCode,\n required: fieldConfig.required,\n };\n\n const result = validationFields(\n stringValue,\n validationConfig,\n translations,\n {}\n );\n\n if (result[fieldConfig.customUpperCode]) {\n fieldErrors[fieldConfig.customUpperCode] = result[fieldConfig.customUpperCode];\n hasErrors = true;\n }\n });\n\n // Additional specific validation for dynamic requirements\n const hasRegionId = typeof formData.regionId === 'number' && formData.regionId > 0;\n const hasRegionCode = formData.regionCode && formData.regionCode.toString().trim();\n const hasRegion = formData.region && formData.region.toString().trim();\n \n if (isRequiredRegion && !hasRegionId && !hasRegionCode && !hasRegion) {\n fieldErrors.region = translations.requiredFieldError;\n hasErrors = true;\n }\n \n if (isRequiredPostCode && !formData.postcode.toString().trim()) {\n fieldErrors.postcode = translations.requiredFieldError;\n hasErrors = true;\n }\n\n return {\n isValid: !hasErrors,\n fieldErrors\n };\n};\n\nexport const updateFieldError = (\n currentErrors: Record<string, string>,\n fieldCode: string,\n errorMessage: string\n): Record<string, string> => {\n return {\n ...currentErrors,\n [fieldCode]: errorMessage\n };\n};\n\n// Convenience functions that handle config creation internally\nexport const validateSingleField = (\n fieldCode: string,\n value: string | string[] | number | boolean,\n fieldsConfig: FieldsProps[],\n translations: any\n): string => {\n const config = createValidationConfig(fieldsConfig, translations);\n return validateField(fieldCode, value, config);\n};\n\nexport const validateFormData = (\n formData: Record<string, string | string[] | number | boolean>,\n fieldsConfig: FieldsProps[],\n translations: any\n): ValidationResult => {\n const config = createValidationConfig(fieldsConfig, translations);\n return validateAllFields(formData, config);\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport React from 'react';\nimport { CompanyFormData } from '../../../data/models/company';\nimport { validateSingleField } from './formValidation';\nimport { FieldsProps } from '../../../types/form.types';\n\nexport type FieldChangeHandler = (key: string, value: string | string[] | number | boolean) => void;\nexport type ValidationHandler = (fieldCode: string, value: string | string[] | number | boolean) => void;\n\nexport interface FieldHandlersConfig {\n setFormData: React.Dispatch<React.SetStateAction<CompanyFormData>>;\n hasRegions: boolean;\n regionOptions: any[];\n fieldsConfig: FieldsProps[];\n formTranslations: any;\n setFieldErrors?: React.Dispatch<React.SetStateAction<Record<string, string>>>;\n}\n\nexport const createFieldHandlers = (config: FieldHandlersConfig) => {\n const { setFormData, hasRegions, regionOptions, fieldsConfig, formTranslations, setFieldErrors } = config;\n\n // Validation helper\n const validateField = (fieldCode: string, value: string | string[] | number | boolean) => {\n const errorMessage = validateSingleField(fieldCode, value, fieldsConfig, formTranslations);\n if (setFieldErrors && errorMessage) {\n setFieldErrors((prev: Record<string, string>) => ({\n ...prev,\n [fieldCode]: errorMessage\n }));\n } else if (setFieldErrors) {\n setFieldErrors((prev: Record<string, string>) => {\n const updated = { ...prev };\n delete updated[fieldCode];\n return updated;\n });\n }\n };\n\n const handleStreetChange = (value: string | string[]) => {\n setFormData(prev => {\n // Ensure prev.street is always treated as an array\n const currentStreet = Array.isArray(prev.street) ? prev.street : [prev.street || '', ''];\n const newStreet = Array.isArray(value) ? value : [value, currentStreet[1] || ''];\n return {\n ...prev,\n street: newStreet\n };\n });\n validateField('street', value);\n };\n\n const handleStreetLine2Change = (value: string) => {\n setFormData(prev => {\n // Ensure prev.street is always treated as an array\n const currentStreet = Array.isArray(prev.street) ? prev.street : [prev.street || '', ''];\n const newStreet = [currentStreet[0] || '', value];\n return {\n ...prev,\n street: newStreet\n };\n });\n validateField('streetLine2', value);\n };\n\n const handleRegionTextChange = (value: string) => {\n setFormData(prev => ({\n ...prev,\n region: value,\n regionCode: '',\n regionId: undefined\n }));\n validateField('region', value);\n };\n\n const handleRegionCodeChange = (value: string) => {\n setFormData(prev => ({\n ...prev,\n regionCode: value,\n ...(hasRegions ? {} : { regionId: undefined })\n }));\n validateField('regionCode', value);\n };\n\n const handleRegionDropdownChange = (value: string | number) => {\n const regionId = typeof value === 'string' ? parseInt(value, 10) || undefined : value;\n \n setFormData(prev => {\n const updated = { ...prev, regionId };\n \n // Find corresponding region code\n if (regionId && regionOptions.length > 0) {\n const selectedRegion = regionOptions.find((option: any) => \n option.id === regionId || option.value === regionId?.toString()\n );\n if (selectedRegion && selectedRegion.code) {\n updated.regionCode = selectedRegion.code;\n }\n }\n \n return updated;\n });\n validateField('regionId', value);\n };\n\n const handleCountryChange = (value: string) => {\n setFormData(prev => ({\n ...prev,\n countryCode: value,\n regionCode: '',\n regionId: undefined,\n region: ''\n }));\n validateField('countryCode', value);\n // Clear region errors when country changes since required status may change\n if (setFieldErrors) {\n setFieldErrors((prev: Record<string, string>) => {\n const updated = { ...prev };\n delete updated.region;\n delete updated.regionCode;\n delete updated.regionId;\n return updated;\n });\n }\n };\n\n const handleGenericFieldChange = (key: string, value: string | string[] | number | boolean) => {\n setFormData(prev => ({\n ...prev,\n [key]: value\n }));\n validateField(key, value);\n };\n\n // Main input change handler that delegates to specific handlers\n const handleInputChangeFromValues = (values: Record<string, string | string[] | number | boolean>) => {\n Object.entries(values).forEach(([key, value]) => {\n switch (key) {\n case 'street':\n handleStreetChange(value as string | string[]);\n break;\n case 'streetLine2':\n handleStreetLine2Change(value as string);\n break;\n case 'region':\n handleRegionTextChange(value as string);\n break;\n case 'regionCode':\n handleRegionCodeChange(value as string);\n break;\n case 'regionId':\n handleRegionDropdownChange(value as string | number);\n break;\n case 'countryCode':\n handleCountryChange(value as string);\n break;\n default:\n handleGenericFieldChange(key, value);\n break;\n }\n });\n };\n\n // DOM event handler that delegates to specific handlers\n const handleInputChange = (event: Event) => {\n const target = event.target as HTMLInputElement | HTMLSelectElement;\n if (!target) return;\n \n const { name, value } = target;\n \n switch (name) {\n case 'street':\n handleStreetChange(value);\n break;\n case 'streetLine2':\n handleStreetLine2Change(value);\n break;\n case 'region':\n if (hasRegions) {\n handleRegionDropdownChange(value);\n } else {\n handleRegionTextChange(value);\n }\n break;\n case 'regionCode':\n handleRegionCodeChange(value);\n break;\n case 'countryCode':\n handleCountryChange(value);\n break;\n default:\n handleGenericFieldChange(name, value);\n break;\n }\n };\n\n return {\n handleInputChange,\n handleInputChangeFromValues,\n handleStreetChange,\n handleStreetLine2Change,\n handleRegionTextChange,\n handleRegionCodeChange,\n handleRegionDropdownChange,\n handleCountryChange,\n handleGenericFieldChange,\n };\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useState, useMemo, useEffect } from 'preact/hooks';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nimport { createCompany } from '../api/createCompany/createCompany';\nimport { getStoreConfig } from '../api/getStoreConfig/getStoreConfig';\nimport { validateCompanyEmail } from '../api/validateCompanyEmail/validateCompanyEmail';\nimport { useCountryAndRegionFields } from './useCountryAndRegionFields';\nimport { getCompanyFieldsConfig } from '../components/CompanyRegistrationForm/Form/getCompanyFieldsConfig';\nimport { createFieldHandlers } from '../components/CompanyRegistrationForm/Form/fieldHandlers';\nimport { validateFormData, validateSingleField } from '../components/CompanyRegistrationForm/Form/formValidation';\n\nexport interface UseCompanyRegistrationFormProps {\n onSuccess?: (company: any) => void;\n onError?: (errors: string[]) => void;\n}\n\nexport interface UseCompanyRegistrationFormReturn {\n // Form state\n formValues: Record<string, string | number | boolean | string[]>;\n fieldErrors: Record<string, string>;\n isSubmitting: boolean;\n loadingStoreConfig: boolean;\n \n // Form configuration\n fieldsConfig: any[];\n \n // From useCountryAndRegionFields\n countryOptions: any[];\n regionOptions: any[];\n loadingCountries: boolean;\n \n // Form handlers\n handleInputChange: (values: Record<string, string | string[] | number | boolean>) => void;\n handleBlur: (event: Event) => void;\n handleFormSubmit: (event: SubmitEvent, isValid: boolean) => Promise<void>;\n \n // Translations\n translations: Record<string, string>;\n formTranslations: Record<string, string>;\n}\n\nexport const useCompanyRegistrationForm = ({\n onSuccess,\n onError,\n}: UseCompanyRegistrationFormProps): UseCompanyRegistrationFormReturn => {\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [fieldErrors, setFieldErrors] = useState<Record<string, string>>({});\n const [defaultCountry, setDefaultCountry] = useState('US');\n const [loadingStoreConfig, setLoadingStoreConfig] = useState(true);\n\n const {\n countryOptions,\n regionOptions,\n isRequiredRegion,\n isRequiredPostCode,\n hasRegions,\n loadingCountries,\n disableField,\n handleInputChange: handleCompanyFormChange,\n } = useCountryAndRegionFields({\n defaultCountry,\n formName: 'companyRegistration',\n });\n\n\n const [formValues, setFormValues] = useState<Record<string, string | number | boolean | string[]>>({\n countryCode: defaultCountry,\n region: '',\n regionCode: '',\n regionId: '',\n street: ['', ''],\n });\n\n\n // Fetch store config to get default country\n useEffect(() => {\n const fetchStoreConfig = async () => {\n try {\n setLoadingStoreConfig(true);\n const storeConfig = await getStoreConfig();\n const country = storeConfig.defaultCountry || 'US';\n setDefaultCountry(country);\n setFormValues(prev => ({ ...prev, countryCode: country }));\n } catch (error) {\n console.error('Failed to load store config:', error);\n // Keep default fallback country 'US'\n } finally {\n setLoadingStoreConfig(false);\n }\n };\n\n fetchStoreConfig();\n }, []);\n\n // Initialize the hook with default country when component mounts\n useEffect(() => {\n if (defaultCountry && !loadingStoreConfig) {\n handleCompanyFormChange('countryCode', defaultCountry);\n }\n }, [defaultCountry, handleCompanyFormChange, loadingStoreConfig]);\n\n const formTranslations = useText({\n requiredFieldError: 'Company.shared.validation.required',\n lengthTextError: 'Company.FormText.lengthTextError',\n numericError: 'Company.FormText.numericError',\n alphaNumWithSpacesError: 'Company.FormText.alphaNumWithSpacesError',\n alphaNumericError: 'Company.FormText.alphaNumericError',\n alphaError: 'Company.FormText.alphaError',\n emailError: 'Company.shared.validation.invalidEmail',\n phoneError: 'Company.shared.validation.phoneInvalid',\n postalCodeError: 'Company.shared.validation.postalCodeInvalid',\n urlError: 'Company.FormText.urlError',\n nameError: 'Company.FormText.nameError',\n });\n\n const translations = useText({\n title: 'Company.shared.fields.title',\n submitButton: 'Company.shared.fields.submit',\n submittingButton: 'Company.shared.fields.submitting',\n cancelButton: 'Company.shared.buttons.cancel',\n createCompanyError: 'Company.shared.fields.createCompanyError',\n unexpectedError: 'Company.shared.fields.unexpectedError',\n emailNotAvailable: 'Company.shared.validation.emailNotAvailable',\n // Field labels for placeholder generation\n companyName: 'Company.shared.fields.companyName',\n legalName: 'Company.shared.fields.legalName',\n companyEmail: 'Company.shared.fields.companyEmail',\n vatTaxId: 'Company.shared.fields.vatTaxId',\n resellerId: 'Company.shared.fields.resellerId',\n street: 'Company.shared.fields.street',\n streetLine2: 'Company.shared.fields.streetLine2',\n city: 'Company.shared.fields.city',\n country: 'Company.shared.fields.country',\n stateProvince: 'Company.shared.fields.stateProvince',\n postalCode: 'Company.shared.fields.postalCode',\n telephone: 'Company.shared.fields.telephone',\n adminJobTitle: 'Company.shared.fields.adminJobTitle',\n adminWorkTelephone: 'Company.shared.fields.adminWorkTelephone',\n adminEmail: 'Company.shared.fields.adminEmail',\n adminFirstname: 'Company.shared.fields.adminFirstname',\n adminLastname: 'Company.shared.fields.adminLastname',\n adminGender: 'Company.shared.fields.adminGender',\n });\n\n // Generate fields config\n const fieldsConfig = useMemo(() => {\n const config = getCompanyFieldsConfig({\n formData: {\n countryCode: formValues.countryCode as string,\n regionCode: formValues.regionCode as string,\n regionId: formValues.regionId as number,\n },\n isRequiredRegion,\n isRequiredPostCode,\n hasRegions,\n disableField,\n translations,\n });\n \n return config.map((field: any) => {\n if (field.code === 'region') {\n return {\n ...field,\n required: isRequiredRegion,\n disabled: loadingCountries,\n fieldType: hasRegions ? 'SELECT' : 'TEXT',\n options: hasRegions ? regionOptions.map(region => ({\n text: region.text,\n value: region.value,\n isDefault: false,\n })) : [],\n };\n }\n if (field.code === 'postcode') {\n return {\n ...field,\n required: true,\n };\n }\n if (field.code === 'countryCode') {\n return {\n ...field,\n disabled: disableField || loadingCountries,\n options: countryOptions.map(country => ({\n text: country.text,\n value: country.value,\n isDefault: false,\n })),\n };\n }\n return field;\n });\n }, [isRequiredRegion, isRequiredPostCode, hasRegions, loadingCountries, disableField, countryOptions, regionOptions, formValues.countryCode, formValues.regionCode, formValues.regionId, translations]);\n\n const validateForm = (formData: any): boolean => {\n const validation = validateFormData(formData, fieldsConfig, formTranslations);\n setFieldErrors(validation.fieldErrors);\n \n return validation.isValid;\n };\n\n // Create field handlers\n const fieldHandlers = useMemo(() => createFieldHandlers({\n setFormData: setFormValues as any,\n hasRegions,\n regionOptions,\n fieldsConfig,\n formTranslations,\n setFieldErrors,\n }), [hasRegions, regionOptions, fieldsConfig, formTranslations]);\n\n const handleInputChange = (values: Record<string, string | string[] | number | boolean>) => {\n // Use the field handlers to process the values\n fieldHandlers.handleInputChangeFromValues(values);\n \n // Handle special cases that need additional processing\n Object.entries(values).forEach(([key, value]) => {\n if (key === 'countryCode') {\n handleCompanyFormChange('countryCode', value as string);\n }\n });\n };\n\n const handleBlur = (event: Event) => {\n const target = event.target as HTMLInputElement;\n const { name, value } = target;\n \n // Find the field configuration\n const fieldConfig = fieldsConfig.find(field => field.customUpperCode === name);\n \n if (fieldConfig) {\n // Validate this specific field using field code\n const validation = validateSingleField(fieldConfig.code, value, fieldsConfig, formTranslations);\n \n // Update field errors - clear if valid, set if invalid\n setFieldErrors(prev => ({\n ...prev,\n [name]: validation || ''\n }));\n }\n };\n\n const handleFormSubmit = async (event: SubmitEvent, isValid: boolean) => {\n // Get form data from the form\n const formElement = event.target as HTMLFormElement;\n const formData = new FormData(formElement);\n const rawFormValues: Record<string, any> = {};\n \n for (const [key, value] of formData.entries()) {\n rawFormValues[key] = value;\n }\n\n const finalFormValues = {\n ...rawFormValues,\n ...formValues \n };\n\n const formIsValid = validateForm(finalFormValues);\n \n if (!isValid || !formIsValid) {\n return;\n }\n\n setIsSubmitting(true);\n\n try {\n // Validate company email availability before creating the company\n const emailValidation = await validateCompanyEmail(finalFormValues.companyEmail as string);\n if (!emailValidation.isValid) {\n setFieldErrors(prev => ({\n ...prev,\n companyEmail: emailValidation.error || translations.emailNotAvailable,\n }));\n setIsSubmitting(false);\n return;\n }\n const result = await createCompany(finalFormValues);\n \n if (result.success && result.company) {\n onSuccess?.(result.company);\n } else {\n const errorMessages = result.errors || [translations.createCompanyError];\n onError?.(errorMessages);\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : translations.unexpectedError;\n onError?.([errorMessage]);\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return {\n // Form state\n formValues,\n fieldErrors,\n isSubmitting,\n loadingStoreConfig,\n \n // Form configuration\n fieldsConfig,\n \n // From useCountryAndRegionFields\n countryOptions,\n regionOptions,\n loadingCountries,\n \n // Form handlers\n handleInputChange,\n handleBlur,\n handleFormSubmit,\n \n // Translations\n translations,\n formTranslations,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { Button, InLineAlert } from '@adobe-commerce/elsie/components';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Form } from './Form/Form';\nimport { CompanyFormSlots } from '../../types/form.types';\nimport { Company } from '../../data/models/company';\nimport { useCompanyRegistrationForm } from '../../hooks/useCompanyRegistrationForm';\nimport { InLineAlertProps } from '../../types/companyProfile.types';\nimport '@adobe-commerce/storefront-design/dist/css/base.css';\nimport './CompanyRegistrationForm.css';\n\nexport interface CompanyRegistrationFormProps {\n onSuccess?: (company: Company) => void;\n onError?: (errors: string[]) => void;\n className?: string;\n slots?: CompanyFormSlots;\n hideActionFormButtons?: boolean;\n inLineAlertProps?: InLineAlertProps;\n}\n\nexport const CompanyRegistrationForm: FunctionComponent<CompanyRegistrationFormProps> = ({\n onSuccess,\n onError,\n className = '',\n slots,\n hideActionFormButtons = false,\n inLineAlertProps,\n}) => {\n const {\n // Form state\n formValues,\n fieldErrors,\n isSubmitting,\n loadingStoreConfig,\n \n // Form configuration\n fieldsConfig,\n \n // From useCountryAndRegionFields\n countryOptions,\n regionOptions,\n loadingCountries,\n \n // Form handlers\n handleInputChange,\n handleBlur,\n handleFormSubmit,\n \n // Translations\n translations,\n } = useCompanyRegistrationForm({\n onSuccess,\n onError,\n });\n\n // Show loading state while initial data is being fetched\n const isInitialLoading = loadingStoreConfig || loadingCountries;\n\n return (\n <div className={classes(['company-form-wrapper', className])}>\n <h2>{translations.title}</h2>\n {inLineAlertProps?.text && (\n <InLineAlert\n className=\"company-form-wrapper__notification\"\n type={inLineAlertProps.type}\n variant=\"secondary\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n data-testid=\"companyRegistrationFormAlert\"\n />\n )}\n <Form\n regionOptions={regionOptions}\n countryOptions={countryOptions}\n slots={slots}\n className=\"company-registration-form\"\n name=\"companyRegistrationForm\"\n fieldsConfig={fieldsConfig}\n values={formValues}\n errors={fieldErrors}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onSubmit={handleFormSubmit}\n loading={isInitialLoading}\n submitting={isSubmitting}\n >\n {/* Submit Button Section */}\n {!hideActionFormButtons && (\n <div className={classes(['company-form-wrapper__buttons'])}>\n <Button\n type=\"submit\"\n disabled={isSubmitting || isInitialLoading}\n className=\"company-form-wrapper__submit\"\n >\n {translations.submitButton}\n </Button>\n </div>\n )}\n </Form>\n </div>\n );\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { getCountries } from '@/company-management/api/getCountries';\nimport { Company } from '@/company-management/data/models/company';\nimport '@adobe-commerce/storefront-design/dist/css/base.css';\nimport './CompanyRegistrationSuccess.css';\n\n\nexport interface CompanyRegistrationSuccessProps {\n company: Company;\n}\n\nexport const CompanyRegistrationSuccess: FunctionComponent<CompanyRegistrationSuccessProps> = ({\n company\n}) => {\n const [countryName, setCountryName] = useState<string>('');\n\n const translations = useText({\n pendingApproval: 'Company.CompanyRegistration.success.pendingApproval',\n companyDetails: 'Company.CompanyRegistration.success.companyDetails',\n companyName: 'Company.shared.fields.companyName',\n companyEmail: 'Company.shared.fields.companyEmail',\n legalName: 'Company.shared.fields.legalName',\n vatTaxId: 'Company.shared.fields.vatTaxId',\n resellerId: 'Company.shared.fields.resellerId',\n address: 'Company.shared.fields.legalAddress',\n street: 'Company.shared.fields.street',\n city: 'Company.shared.fields.city',\n stateProvince: 'Company.shared.fields.stateProvince',\n postcode: 'Company.shared.fields.postcode',\n country: 'Company.shared.fields.country',\n telephone: 'Company.shared.fields.telephone',\n companyAdmin: 'Company.shared.fields.companyAdmin',\n adminFirstname: 'Company.shared.fields.adminFirstname',\n adminLastname: 'Company.shared.fields.adminLastname',\n adminEmail: 'Company.shared.fields.adminEmail',\n adminJobTitle: 'Company.shared.fields.adminJobTitle',\n adminWorkTelephone: 'Company.shared.fields.adminWorkTelephone',\n });\n\n // Fetch country name based on country code\n useEffect(() => {\n const fetchCountryName = async () => {\n if (company.legalAddress?.countryCode) {\n try {\n const { availableCountries } = await getCountries();\n const country = availableCountries.find(c => c.value === company.legalAddress?.countryCode);\n if (country) {\n setCountryName(country.text);\n }\n } catch (error) {\n console.error('Failed to fetch countries:', error);\n // Fallback to country code if API fails\n setCountryName(company.legalAddress.countryCode);\n }\n }\n };\n\n fetchCountryName();\n }, [company.legalAddress?.countryCode]); \n\n return (\n <div className={`company-registration-success`}>\n <div className=\"company-registration-success__header\">\n <p className=\"company-registration-success__pending\">\n {translations.pendingApproval}\n </p>\n </div>\n\n <div className=\"company-registration-success__details\">\n <h2 className=\"company-registration-success__details-title\">\n {translations.companyDetails}\n </h2>\n \n <div className=\"company-registration-success__grid\">\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.companyName}:\n </span>\n <span className=\"company-registration-success__value\">{company.name}</span>\n </div>\n\n {company.legalName && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.legalName}:\n </span>\n <span className=\"company-registration-success__value\">{company.legalName}</span>\n </div>\n )}\n\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.companyEmail}:\n </span>\n <span className=\"company-registration-success__value\">{company.email}</span>\n </div>\n\n \n\n {company.vatTaxId && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.vatTaxId}:\n </span>\n <span className=\"company-registration-success__value\">{company.vatTaxId}</span>\n </div>\n )}\n\n {company.resellerId && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.resellerId}:\n </span>\n <span className=\"company-registration-success__value\">{company.resellerId}</span>\n </div>\n )}\n\n {/* Address Information */}\n {company.legalAddress && (\n <>\n <div className=\"company-registration-success__section-header\">\n <h3>{translations.address}</h3>\n </div>\n\n {company.legalAddress.street && company.legalAddress.street[0] && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.street}:\n </span>\n <span className=\"company-registration-success__value\">\n {company.legalAddress.street.map((line: string, index: number) => (\n <div key={index}>{line}</div>\n ))}\n </span>\n </div>\n )}\n\n {company.legalAddress.city && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.city}:\n </span>\n <span className=\"company-registration-success__value\">{company.legalAddress.city}</span>\n </div>\n )}\n\n {company.legalAddress.countryCode && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.country}:\n </span>\n <span className=\"company-registration-success__value\">{countryName || company.legalAddress.countryCode}</span>\n </div>\n )}\n\n {company.legalAddress.region && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.stateProvince}:\n </span>\n <span className=\"company-registration-success__value\">\n {company.legalAddress.region.region || company.legalAddress.region.regionCode}\n </span>\n </div>\n )}\n\n {company.legalAddress.postcode && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.postcode}:\n </span>\n <span className=\"company-registration-success__value\">{company.legalAddress.postcode}</span>\n </div>\n )}\n\n \n\n {company.legalAddress.telephone && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.telephone}:\n </span>\n <span className=\"company-registration-success__value\">{company.legalAddress.telephone}</span>\n </div>\n )}\n </>\n )}\n\n {/* Company Admin Information */}\n {company.companyAdmin && (\n <>\n <div className=\"company-registration-success__section-header\">\n <h3>{translations.companyAdmin}</h3>\n </div>\n\n {company.companyAdmin.jobTitle && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.adminJobTitle}:\n </span>\n <span className=\"company-registration-success__value\">{company.companyAdmin.jobTitle}</span>\n </div>\n )}\n\n {company.companyAdmin.telephone && (\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.adminWorkTelephone}:\n </span>\n <span className=\"company-registration-success__value\">{company.companyAdmin.telephone}</span>\n </div>\n )}\n\n <div className=\"company-registration-success__item\">\n <span className=\"company-registration-success__label\">\n {translations.adminEmail}:\n </span>\n <span className=\"company-registration-success__value\">{company.companyAdmin.email}</span>\n </div>\n </>\n )}\n\n </div>\n </div>\n </div>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useState, useEffect } from 'preact/hooks';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { CompanyRegistrationForm } from '@/company-management/components/CompanyRegistrationForm';\nimport { CompanyRegistrationSuccess } from '@/company-management/components/CompanyRegistrationSuccess';\nimport { CompanyFormSlots } from '@/company-management/types/form.types';\nimport { Company } from '@/company-management/data/models/company';\nimport { allowCompanyRegistration } from '../../api/allowCompanyRegistration';\nimport { isCompanyUser } from '../../api/isCompanyUser';\nimport { useInLineAlert } from '../../hooks/useInLineAlert';\n\nexport interface CompanyRegistrationProps {\n isAuthenticated?: boolean;\n onRedirectLogin?: () => void;\n onRedirectAccount?: () => void;\n onSuccess?: (company: Company) => void;\n onError?: (errors: string[]) => void;\n className?: string;\n slots?: CompanyFormSlots;\n}\n\ntype CompanyRegistrationState = 'loading' | 'redirect-login' | 'redirect-account' | 'show-form' | 'success';\n\nexport const CompanyRegistration: Container<CompanyRegistrationProps> = ({\n isAuthenticated = false,\n onRedirectLogin,\n onRedirectAccount,\n onSuccess,\n onError,\n className,\n slots,\n}) => {\n const [state, setState] = useState<CompanyRegistrationState>('loading');\n const [registeredCompany, setRegisteredCompany] = useState<Company | null>(null);\n const { inLineAlertProps, showError, clearAlert } = useInLineAlert();\n\n useEffect(() => {\n let active = true;\n (async () => {\n try {\n const canRegister = await allowCompanyRegistration();\n \n if (!canRegister) {\n // Provide status logging since company registration link is always visible\n // and backend configuration is not exposed to frontend users\n if (active) {\n const redirectState = isAuthenticated ? 'redirect-account' : 'redirect-login';\n const destination = isAuthenticated ? 'account dashboard' : 'login page';\n console.log(`Company registration disabled - redirecting to ${destination}`);\n setState(redirectState);\n }\n return;\n }\n\n if (isAuthenticated) {\n try {\n const belongsToCompany = await isCompanyUser();\n if (belongsToCompany) {\n if (active) {\n console.log('User already belongs to a company - redirecting to account dashboard');\n setState('redirect-account');\n }\n return;\n }\n } catch (error) {\n console.error('Error checking company membership - redirecting to account dashboard:', error);\n if (active) setState('redirect-account');\n return;\n }\n }\n\n if (active) setState('show-form');\n } catch (error) {\n console.error('Error checking B2B status:', error);\n if (active) setState(isAuthenticated ? 'redirect-account' : 'redirect-login');\n }\n })();\n return () => { active = false; };\n }, [isAuthenticated]);\n\n // Handle redirects\n useEffect(() => {\n if (state === 'redirect-login' && onRedirectLogin) {\n onRedirectLogin();\n }\n if (state === 'redirect-account' && onRedirectAccount) {\n onRedirectAccount();\n }\n }, [state, onRedirectLogin, onRedirectAccount]);\n\n const handleSuccess = (company: Company) => {\n clearAlert();\n setState('success');\n setRegisteredCompany(company);\n onSuccess?.(company);\n };\n\n const handleError = (errors: string[]) => {\n // Display error message in the UI\n const errorMessage = errors.join('. ');\n showError(errorMessage, false); // Don't auto-hide error messages\n onError?.(errors);\n };\n\n if (state === 'loading' || state === 'redirect-login' || state === 'redirect-account') {\n return null;\n }\n\n if (state === 'success' && registeredCompany) {\n return (\n <div className={`company-registration-container ${className || ''}`}>\n <CompanyRegistrationSuccess\n company={registeredCompany}\n />\n </div>\n );\n }\n\n return (\n <div className={`company-registration-container ${className || ''}`}>\n <CompanyRegistrationForm\n onSuccess={handleSuccess}\n onError={handleError}\n slots={slots}\n inLineAlertProps={inLineAlertProps}\n />\n </div>\n );\n};"],"names":["FieldTypeEnum","FormInputs","memo","loading","values","fields","errors","className","regionOptions","countryOptions","onChange","onBlur","onFocus","slots","fieldIdPrefix","itemClassName","translations","useText","fieldSections","getSectionTitle","sectionKey","formatRegionValue","item","regionCode","_a","regionId","_b","_c","_d","formatStreetValue","renderSlot","errorMessage","slotName","slot","contextValue","jsx","Slot","selectElement","valueMessage","options","country","option","Fragment","Field","classes","Picker","inputElement","inputType","Input","renderSectionFields","sectionFields","field","streetValue","regionValue","renderSection","sectionTitle","jsxs","Form","showFormLoader","name","submitting","children","fieldsConfig","onSubmit","formRef","useRef","useEffect","handleSubmit","event","ProgressSpinner","handleChange","target","value","useCountryAndRegionFields","defaultCountry","formName","countriesData","setCountriesData","useState","inputChange","setInputChange","savedData","disableField","setDisableField","loadingCountries","setLoadingCountries","regionsData","setRegionsData","getCountries","availableCountries","countriesWithRequiredRegion","optionalZipCountries","error","selectedCountry","regions","region","useMemo","isRequiredRegion","isRequiredPostCode","hasRegions","handleInputChange","useCallback","prev","updatedData","getCompanyFieldsConfig","formData","getLabel","key","getPlaceholder","label","commonConfig","flattenObjectsArray","arr","acc","obj","validateNumeric","validateAlphanumeric","validateAlphanumWithSpaces","validateAlpha","validateEmail","validatePhone","validateUrl","validatePostalCode","validateName","validateLength","minLength","maxLength","length","validationFields","configs","errorsList","requiredFieldError","lengthTextError","numericError","alphaNumWithSpacesError","alphaNumericError","alphaError","emailError","phoneError","postalCodeError","urlError","nameError","fieldName","defaultFields","trimmedValue","validateRulesConfig","min","max","validation","getValidationTranslations","createValidationConfig","validateField","fieldCode","config","fieldConfig","stringValue","validationConfig","validateAllFields","firstField","hasErrors","fieldErrors","result","hasRegionId","hasRegionCode","hasRegion","validateSingleField","validateFormData","createFieldHandlers","setFormData","formTranslations","setFieldErrors","updated","handleStreetChange","currentStreet","newStreet","handleStreetLine2Change","handleRegionTextChange","handleRegionCodeChange","handleRegionDropdownChange","selectedRegion","handleCountryChange","handleGenericFieldChange","useCompanyRegistrationForm","onSuccess","onError","isSubmitting","setIsSubmitting","setDefaultCountry","loadingStoreConfig","setLoadingStoreConfig","handleCompanyFormChange","formValues","setFormValues","getStoreConfig","validateForm","fieldHandlers","isValid","formElement","rawFormValues","finalFormValues","formIsValid","emailValidation","validateCompanyEmail","createCompany","errorMessages","CompanyRegistrationForm","hideActionFormButtons","inLineAlertProps","handleBlur","handleFormSubmit","isInitialLoading","InLineAlert","Button","CompanyRegistrationSuccess","company","countryName","setCountryName","c","line","index","CompanyRegistration","isAuthenticated","onRedirectLogin","onRedirectAccount","state","setState","registeredCompany","setRegisteredCompany","showError","clearAlert","useInLineAlert","active","allowCompanyRegistration","redirectState","isCompanyUser","handleSuccess","handleError"],"mappings":"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"}
@@ -374,7 +374,9 @@ declare const _default: {
374
374
  "selectCountry": "Please select a country",
375
375
  "selectRegion": "Please select a region, state or province",
376
376
  "selectCountryFirst": "Please select a country first",
377
- "companyNameLengthError": "Company name must be between {min} and {max} characters."
377
+ "companyNameLengthError": "Company name must be between {min} and {max} characters.",
378
+ "loading": "Loading...",
379
+ "submitting": "Registering your company..."
378
380
  },
379
381
  "AcceptInvitation": {
380
382
  "title": "Accept Company Invitation",
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name": "@dropins/storefront-company-management", "version": "1.0.0-beta23", "@dropins/tools": "^1.6.0-beta3", "license": "SEE LICENSE IN LICENSE.md"}
1
+ {"name": "@dropins/storefront-company-management", "version": "1.0.0-beta24", "@dropins/tools": "^1.6.0-beta3", "license": "SEE LICENSE IN LICENSE.md"}
package/render.js CHANGED
@@ -7,11 +7,11 @@ All Rights Reserved. */
7
7
  .company-team-form__card{position:relative}.company-team-form__card.is-working .company-team-form__content{pointer-events:none}.company-team-form__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff9;display:flex;align-items:center;justify-content:center;z-index:1}.company-team-form__content .dropin-field[required] .dropin-field__label:after{content:" *";color:var(--color-alert-800, #c5281c)}.acm-structure-toolbar-card{overflow:visible}.acm-structure-toolbar-card--spaced{margin-bottom:var(--spacing-small)}.acm-structure-toolbar{display:flex;flex-wrap:wrap;gap:var(--spacing-xsmall);align-items:center;padding:var(--spacing-xsmall)}.acm-structure-toolbar>*{flex:0 1 auto;min-width:0}.acm-structure-toolbar button,.acm-structure-toolbar [role=button]{display:inline-flex;width:auto;flex:0 1 auto;min-width:0}.acm-structure-message-card{margin-bottom:var(--spacing-small)}.acm-structure-tree-card{position:relative}.acm-structure-tree-card.is-working .acm-structure-tree-content{pointer-events:none}.acm-structure-working{display:inline-flex;gap:var(--spacing-xsmall);align-items:center}.acm-structure-tree-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff9;display:flex;align-items:center;justify-content:center;z-index:1;pointer-events:all}.acm-structure-modal-content{display:grid;gap:var(--spacing-small)}.acm-structure-modal-title{margin:0}.acm-structure-modal-actions{display:flex;gap:var(--spacing-xsmall);justify-content:flex-end}.acm-structure-expander-button{min-width:18px;min-height:18px}.acm-structure-description-button{margin-left:var(--spacing-xsmall);padding:0 var(--spacing-xsmall)}.acm-structure-row{display:flex;align-items:center;gap:var(--spacing-small);padding:var(--spacing-small) var(--spacing-small);position:relative;transition:background-color .2s ease;border-radius:var(--shape-border-radius-2)}.acm-structure-tree-card .acm-tree__item{border:var(--shape-border-width-1) solid var(--color-neutral-300);border-radius:var(--shape-border-radius-2);margin-bottom:0;padding-left:0!important}.acm-structure-tree-card .acm-tree__group{padding:var(--spacing-small);margin:0}.acm-structure-tree-card>.acm-tree>.acm-tree__item>.acm-tree__group{padding:var(--spacing-medium)}.acm-structure-tree-card .acm-tree__group .acm-tree__group{padding-left:var(--spacing-small)}.acm-structure-tree-card .acm-tree__group>.acm-tree__item{margin-bottom:var(--spacing-xsmall)}.acm-structure-tree-card .acm-tree__group>.acm-tree__item:last-child{margin-bottom:0}.acm-structure-expander{width:24px;height:24px;border:none;border-radius:var(--shape-border-radius-1);background:transparent;position:relative;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:var(--type-body-1-default-font-size);color:var(--color-neutral-700);flex-shrink:0;padding:0;transition:background-color .2s ease}.acm-structure-expander:hover{background:var(--color-neutral-100)}.acm-structure-expander--placeholder{visibility:hidden}.acm-structure-expander-wrapper{margin-left:auto}.acm-structure-handle{width:24px;height:28px;display:flex;align-items:center;justify-content:center;cursor:grab;flex-shrink:0;background-image:url("data:image/svg+xml,%3csvg%20width='24'%20height='28'%20viewBox='0%200%2024%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3c!--%20Up%20chevron%20--%3e%3cpath%20d='M6%206L12%201L18%206'%20stroke='currentColor'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c!--%20Two%20horizontal%20lines%20--%3e%3cline%20x1='6'%20y1='11'%20x2='18'%20y2='11'%20stroke='currentColor'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cline%20x1='6'%20y1='16'%20x2='18'%20y2='16'%20stroke='currentColor'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3c!--%20Down%20chevron%20--%3e%3cpath%20d='M6%2021L12%2027L18%2021'%20stroke='currentColor'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center;background-size:24px 28px;position:relative;opacity:.4}.acm-structure-handle:after{content:"";position:absolute;right:calc(-1 * (var(--spacing-small) / 2) - 1px);top:50%;transform:translateY(-50%);width:2px;height:47px;background:currentColor;opacity:.5}.acm-structure-row[draggable=true] .acm-structure-handle:active{cursor:grabbing}@media (hover: none) and (pointer: coarse){.acm-structure-handle,.acm-structure-handle:after{display:none}}.acm-structure-icon{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;overflow:visible;background-repeat:no-repeat;background-position:center;background-size:24px 24px;opacity:.5;margin-right:calc(-1 * var(--spacing-xsmall))}.acm-structure-icon.is-user{background-image:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20vector-effect='non-scaling-stroke'%20d='M11.8052%2014.4968C10.8552%2014.4968%209.9752%2014.0268%209.4452%2013.2368L9.4152%2013.1868L9.3852%2013.1268C8.1352%2011.2268%207.5352%208.96681%207.6852%206.68681C7.7552%204.42681%209.6052%202.61681%2011.8652%202.60681H12.0052C14.2752%202.47681%2016.2152%204.21681%2016.3452%206.47681C16.3452%206.55681%2016.3452%206.62681%2016.3452%206.70681C16.4852%208.94681%2015.9052%2011.1768%2014.6852%2013.0568L14.6052%2013.1768C14.0552%2013.9868%2013.1352%2014.4668%2012.1652%2014.4768H12.0052C11.9352%2014.4768%2011.8652%2014.4868%2011.7952%2014.4868L11.8052%2014.4968Z'%20stroke='currentColor'%20stroke-width='1.5'%3e%3c/path%3e%3cpath%20vector-effect='non-scaling-stroke'%20d='M4.3252%2021.5469C4.3552%2020.4169%204.4752%2019.2869%204.6752%2018.1769C4.8952%2017.1669%206.4752%2016.0269%208.9052%2015.1569C9.2352%2015.0369%209.4852%2014.7869%209.5952%2014.4569L9.8052%2014.0269'%20stroke='currentColor'%20stroke-width='1.5'%3e%3c/path%3e%3cpath%20vector-effect='non-scaling-stroke'%20d='M14.425%2014.4069L14.165%2014.1569C14.375%2014.5969%2014.725%2014.9569%2015.155%2015.1869C16.945%2015.7969%2019.125%2016.9569%2019.375%2018.2069C19.585%2019.3069%2019.685%2020.4269%2019.675%2021.5369'%20stroke='currentColor'%20stroke-width='1.5'%3e%3c/path%3e%3c/svg%3e")}.acm-structure-icon.is-team{background-image:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20vector-effect='non-scaling-stroke'%20d='M10.6047%2010.011L10.4765%2010.2749C10.4093%2010.4774%2010.2566%2010.6307%2010.0551%2010.7044C9.43878%2010.926%208.91201%2011.1763%208.49707%2011.4375M13.4262%2010.2442L13.2674%2010.0908C13.3957%2010.3608%2013.6094%2010.5817%2013.872%2010.7228C14.3816%2010.8972%2014.9429%2011.145%2015.4124%2011.4375M11.8262%2010.2994C11.246%2010.2994%2010.7085%2010.011%2010.3849%209.52631L10.3665%209.49563L10.3482%209.45882C9.5848%208.29306%209.21837%206.90642%209.30998%205.50751C9.35273%204.12087%2010.4826%203.01033%2011.8628%203.00419H11.9483C13.3347%202.92443%2014.5195%203.99202%2014.5989%205.37866C14.5989%205.42775%2014.5989%205.4707%2014.5989%205.51978C14.6844%206.89415%2014.3302%208.26238%2013.5851%209.41587L13.5362%209.4895C13.2003%209.98648%2012.6384%2010.281%2012.046%2010.2871H11.9483C11.9056%2010.2871%2011.8628%2010.2933%2011.8201%2010.2933L11.8262%2010.2994Z'%20stroke='currentColor'%20stroke-width='1.5'%20stroke-linejoin='round'%3e%3c/path%3e%3cpath%20vector-effect='non-scaling-stroke'%20d='M1.125%2020.7002C1.14332%2020.0069%201.21661%2019.3136%201.33875%2018.6325C1.47312%2018.0128%202.43807%2017.3134%203.92214%2016.7796C4.12368%2016.7059%204.27636%2016.5525%204.34354%2016.3501L4.47179%2016.0862M7.29326%2016.3194L7.13447%2016.166C7.26272%2016.436%207.47648%2016.6569%207.73909%2016.798C8.83229%2017.1722%2010.1637%2017.884%2010.3164%2018.6509C10.4446%2019.3258%2010.5057%2020.013%2010.4996%2020.6941M5.69325%2016.3746C5.11306%2016.3746%204.57562%2016.0862%204.25193%2015.6015L4.23361%2015.5708L4.21529%2015.534C3.45188%2014.3683%203.08544%2012.9816%203.17705%2011.5827C3.2198%2010.1961%204.34965%209.08553%205.72989%209.07939H5.8154C7.20175%208.99963%208.38656%2010.0672%208.46596%2011.4539C8.46596%2011.5029%208.46596%2011.5459%208.46596%2011.595C8.55146%2012.9693%208.19724%2014.3376%207.45215%2015.4911L7.40329%2015.5647C7.06739%2016.0617%206.50552%2016.3562%205.91311%2016.3623H5.8154C5.77264%2016.3623%205.72989%2016.3685%205.68714%2016.3685L5.69325%2016.3746Z'%20stroke='currentColor'%20stroke-width='1.5'%20stroke-linejoin='round'%3e%3c/path%3e%3cpath%20vector-effect='non-scaling-stroke'%20d='M13.5%2020.7002C13.5183%2020.0069%2013.5916%2019.3136%2013.7138%2018.6325C13.8481%2018.0128%2014.8131%2017.3134%2016.2971%2016.7796C16.4987%2016.7059%2016.6514%2016.5525%2016.7185%2016.3501L16.8468%2016.0862M19.6683%2016.3194L19.5095%2016.166C19.6377%2016.436%2019.8515%2016.6569%2020.1141%2016.798C21.2073%2017.1722%2022.5387%2017.884%2022.6914%2018.6509C22.8196%2019.3258%2022.8807%2020.013%2022.8746%2020.6941M18.0682%2016.3746C17.4881%2016.3746%2016.9506%2016.0862%2016.6269%2015.6015L16.6086%2015.5708L16.5903%2015.534C15.8269%2014.3683%2015.4604%2012.9816%2015.552%2011.5827C15.5948%2010.1961%2016.7246%209.08553%2018.1049%209.07939H18.1904C19.5767%208.99963%2020.7616%2010.0672%2020.841%2011.4539C20.841%2011.5029%2020.841%2011.5459%2020.841%2011.595C20.9265%2012.9693%2020.5722%2014.3376%2019.8271%2015.4911L19.7783%2015.5647C19.4424%2016.0617%2018.8805%2016.3562%2018.2881%2016.3623H18.1904C18.1476%2016.3623%2018.1049%2016.3685%2018.0621%2016.3685L18.0682%2016.3746Z'%20stroke='currentColor'%20stroke-width='1.5'%20stroke-linejoin='round'%3e%3c/path%3e%3c/svg%3e")}.acm-structure-icon.is-root{width:48px;height:48px;background-size:40px 40px;opacity:1;color:var(--color-neutral-900)}.acm-structure-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.acm-structure-label{font-weight:600;font-size:var(--type-body-1-default-font-size);color:var(--color-neutral-900);line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acm-structure-description{font-size:var(--type-caption-1-default-font-size);color:var(--color-neutral-700);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acm-structure-count{font-size:var(--type-caption-1-default-font-size);color:var(--color-neutral-900);font-weight:500;flex-shrink:0}.acm-structure-chevron{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid currentColor;display:inline-block;transition:transform .2s ease}.acm-structure-chevron.is-expanded{transform:rotate(180deg)}.acm-structure-modal__backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;display:flex;align-items:center;justify-content:center;z-index:1000}.acm-structure-modal{width:560px;background:var(--color-neutral-0);border-radius:var(--shape-border-radius-1);box-shadow:0 8px 24px #0003;padding:var(--spacing-medium) var(--spacing-medium) var(--spacing-small)}.acm-structure-modal__title{margin:0 0 var(--spacing-small);font-size:var(--type-headline-3-default-font-size)}.acm-structure-modal__body{display:grid;gap:var(--spacing-small)}.acm-structure-modal__body label{display:grid;gap:var(--spacing-xsmall);font-weight:600}.acm-structure-modal__body input,.acm-structure-modal__body textarea,.acm-structure-modal__body select{padding:var(--spacing-xsmall);border:1px solid var(--color-neutral-300);border-radius:var(--shape-border-radius-1);font:inherit}.acm-structure-modal__body .req{color:var(--color-red-600)}.acm-structure-modal__actions{display:flex;gap:var(--spacing-xsmall);margin-top:var(--spacing-small)}.acm-structure-modal__actions .secondary{background:var(--color-neutral-100)}.acm-structure-panel{background:var(--color-neutral-0);border:1px solid var(--color-neutral-200);border-radius:var(--shape-border-radius-1);padding:var(--spacing-medium);margin-bottom:var(--spacing-small)}.acm-structure-panel__title{margin:0 0 var(--spacing-small);font-size:var(--type-headline-3-default-font-size)}.acm-structure-tree-card .acm-tree__item:before,.acm-structure-tree-card .acm-tree__item:after{display:none}.acm-structure-tree-card .acm-tree__item[aria-selected=true]{border-color:var(--color-brand-500);box-shadow:0 0 0 1px var(--color-brand-500)}.acm-structure-tree-card .acm-tree__item[aria-selected=true]>.acm-structure-row .acm-structure-label{background:none;color:var(--color-neutral-900);border-radius:0;padding:0}.acm-structure-tree-card>.acm-tree-root>.acm-tree>.acm-tree__item{margin-bottom:var(--spacing-small)}.acm-structure-tree-card .acm-tree__item[data-level="1"]{background:var(--color-neutral-100)}.acm-structure-tree-card .acm-tree__item[data-level="3"],.acm-structure-tree-card .acm-tree__item[data-level="5"],.acm-structure-tree-card .acm-tree__item[data-level="7"],.acm-structure-tree-card .acm-tree__item[data-level="9"]{background:var(--color-neutral-200)}.acm-structure-tree-card .acm-tree__item[data-level="2"],.acm-structure-tree-card .acm-tree__item[data-level="4"],.acm-structure-tree-card .acm-tree__item[data-level="6"],.acm-structure-tree-card .acm-tree__item[data-level="8"],.acm-structure-tree-card .acm-tree__item[data-level="10"]{background:var(--color-neutral-50)}.acm-structure-tree-card .acm-tree__item[data-level="1"]>.acm-structure-row:hover{background:var(--color-neutral-200)}.acm-structure-tree-card .acm-tree__item[data-level="3"]>.acm-structure-row:hover,.acm-structure-tree-card .acm-tree__item[data-level="5"]>.acm-structure-row:hover,.acm-structure-tree-card .acm-tree__item[data-level="7"]>.acm-structure-row:hover,.acm-structure-tree-card .acm-tree__item[data-level="9"]>.acm-structure-row:hover{background:var(--color-neutral-300)}.acm-structure-tree-card .acm-tree__item[data-level="2"]>.acm-structure-row:hover,.acm-structure-tree-card .acm-tree__item[data-level="4"]>.acm-structure-row:hover,.acm-structure-tree-card .acm-tree__item[data-level="6"]>.acm-structure-row:hover,.acm-structure-tree-card .acm-tree__item[data-level="8"]>.acm-structure-row:hover,.acm-structure-tree-card .acm-tree__item[data-level="10"]>.acm-structure-row:hover{background:var(--color-neutral-200)}.acm-structure-tree-card .acm-tree__item[data-level="1"]:has(>.acm-structure-row:hover){background:var(--color-neutral-200)}.acm-structure-tree-card .acm-tree__item[data-level="3"]:has(>.acm-structure-row:hover),.acm-structure-tree-card .acm-tree__item[data-level="5"]:has(>.acm-structure-row:hover),.acm-structure-tree-card .acm-tree__item[data-level="7"]:has(>.acm-structure-row:hover),.acm-structure-tree-card .acm-tree__item[data-level="9"]:has(>.acm-structure-row:hover){background:var(--color-neutral-300)}.acm-structure-tree-card .acm-tree__item[data-level="2"]:has(>.acm-structure-row:hover),.acm-structure-tree-card .acm-tree__item[data-level="4"]:has(>.acm-structure-row:hover),.acm-structure-tree-card .acm-tree__item[data-level="6"]:has(>.acm-structure-row:hover),.acm-structure-tree-card .acm-tree__item[data-level="8"]:has(>.acm-structure-row:hover),.acm-structure-tree-card .acm-tree__item[data-level="10"]:has(>.acm-structure-row:hover){background:var(--color-neutral-200)}.company-management-company-structure-card{border:0;box-shadow:none}.company-management-company-structure-card__cta{margin-top:40px;display:flex;justify-content:flex-start}.company-management-company-structure-card__cta .dropin-button{width:auto;min-width:200px;max-width:300px}.company-management-company-structure-card__alert{box-shadow:0 1px 2px #00000014;padding:8px 12px;line-height:1.2;display:flex;align-items:center}.company-management-company-structure-card__alert svg{width:16px;height:16px}
8
8
  .dnd-poly-drag-image{opacity:.5!important}.dnd-poly-drag-image.dnd-poly-snapback{transition-property:transform,-webkit-transform!important;transition-duration:.25s!important;transition-timing-function:ease-out!important}@font-face{font-family:dnd-poly-icons;src:url(data:application/octet-stream;base64,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) format("woff"),url(data:application/octet-stream;base64,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) format("truetype")}.dnd-poly-icon:after{position:absolute;right:-16px;top:-16px;font-size:1em;width:1em;line-height:1em;border-radius:1em;padding:5px;font-family:dnd-poly-icons;font-style:normal;font-weight:700;text-align:center}.dnd-poly-icon.dnd-poly-none:after{content:"";color:#fff;background-color:red}.dnd-poly-icon.dnd-poly-copy:after{content:"";color:#fff;background-color:green}.dnd-poly-icon.dnd-poly-move:after{content:"";color:#fff;background-color:#00f}.dnd-poly-icon.dnd-poly-link:after{content:"";color:#fff;background-color:#ff0}.acm-tree-root{display:block}.acm-tree,.acm-tree__group{list-style:none;margin:0;padding-left:0}.acm-tree__item{position:relative;padding-left:0}.acm-tree__item[aria-selected=true]>.acm-structure-row .acm-structure-label,.acm-tree__item[aria-selected=true]>.acm-tree__row .acm-tree__label{background:var(--color-neutral-100);color:var(--color-neutral-800);border-radius:var(--shape-border-radius-1);padding:var(--spacing-xsmall) var(--spacing-small)}.acm-tree__item:before{content:"";position:absolute;left:var(--spacing-xsmall);top:0;bottom:0;border-left:1px dashed var(--color-neutral-300);pointer-events:none}.acm-tree__item:after{content:"";position:absolute;left:var(--spacing-xsmall);top:var(--spacing-small);width:var(--spacing-medium);height:var(--spacing-xsmall);border-bottom:1px dashed var(--color-neutral-300);pointer-events:none}.acm-tree__group>.acm-tree__item:last-child:before{bottom:var(--spacing-small)}.acm-tree-root{--acm-tree-indent: var(--spacing-medium)}.acm-tree__item[data-level="1"]{padding-left:0}.acm-tree__item[data-level="1"]:before,.acm-tree__item[data-level="1"]:after{display:none}.acm-tree>.acm-tree__item[data-level="1"]{margin-top:var(--spacing-xsmall)}.acm-tree__item[data-level]:not([data-level="1"]){padding-left:var(--spacing-medium)}.acm-tree__item[draggable=true]{cursor:move}.acm-tree__item[draggable=true]:active{cursor:grabbing}
9
9
  .company-user-form__card{position:relative}.company-user-form__card.is-working .company-user-form__content{pointer-events:none}.company-user-form__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff9;display:flex;align-items:center;justify-content:center;z-index:1}.company-user-form__content .dropin-field[required] .dropin-field__label:after{content:" *";color:var(--color-alert-800, #c5281c)}
10
- .company-form{display:flex;flex-direction:column}.company-registration-form__inputs{display:grid;gap:var(--spacing-medium)}.company-registration-form__section{display:contents}.company-form [class$=-hidden]{position:absolute;opacity:0;height:0;width:0;overflow:hidden;clip:rect(0,0,0,0);display:none}.company-form-loader{display:flex;align-items:center;justify-content:center;padding:2rem;font-size:1rem;color:#666}.company-form-wrapper{display:flex;flex-direction:column;gap:1rem}.company-form-wrapper__errors{padding:1rem;border:1px solid #dc3545;border-radius:4px;background-color:#f8d7da;color:#721c24}.company-form-wrapper__errors .error-message{margin-bottom:.5rem}.company-form-wrapper__errors .error-message:last-child{margin-bottom:0}.company-form-wrapper__buttons{display:flex;justify-content:end;align-items:center;gap:0 var(--grid-2-gutters);grid-column:span 2;margin-top:var(--spacing-medium)}.company-form-wrapper__submit{min-width:120px}.company-form-section{margin:1.5rem 0 1rem}.company-form-section__title{font-size:1.125rem;font-weight:600;margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid #e5e7eb;color:#374151}.company-registration-success{max-width:600px;margin:0 auto;padding:var(--spacing-big, 24px);background:var(--color-neutral-50, #ffffff);border-radius:var(--shape-border-radius-2, 8px);box-shadow:var(--shadow-2, 0 2px 8px rgba(0, 0, 0, .1))}.company-registration-success__header{text-align:center;margin-bottom:var(--spacing-big, 24px);padding-bottom:var(--spacing-medium, 16px);border-bottom:1px solid var(--color-neutral-300, #e0e0e0)}.company-registration-success__title{color:var(--color-positive-700, #2d7d32);font-size:var(--type-headline-1-font-size, 24px);font-weight:var(--type-headline-1-font-weight, 600);margin:0 0 var(--spacing-small, 12px) 0}.company-registration-success__subtitle{color:var(--color-neutral-800, #333333);font-size:var(--type-body-1-font-size, 16px);margin:0 0 var(--spacing-small, 12px) 0}.company-registration-success__pending{color:var(--color-neutral-600, #666666);font-size:var(--type-body-2-font-size, 14px);margin:0}.company-registration-success__details{background:var(--color-neutral-100, #f5f5f5);padding:var(--spacing-medium, 16px);border-radius:var(--shape-border-radius-1, 4px)}.company-registration-success__details-title{color:var(--color-neutral-800, #333333);font-size:var(--type-headline-2-font-size, 20px);font-weight:var(--type-headline-2-font-weight, 500);margin:0 0 var(--spacing-medium, 16px) 0}.company-registration-success__grid{display:grid;gap:var(--spacing-small, 12px)}.company-registration-success__item{display:grid;grid-template-columns:1fr 2fr;gap:var(--spacing-small, 12px);align-items:start}.company-registration-success__label{color:var(--color-neutral-700, #555555);font-weight:var(--type-body-1-font-weight, 500);font-size:var(--type-body-2-font-size, 14px)}.company-registration-success__value{color:var(--color-neutral-800, #333333);font-size:var(--type-body-2-font-size, 14px)}.company-registration-success__section-header{margin-top:var(--spacing-medium, 16px);margin-bottom:var(--spacing-small, 12px);padding-top:var(--spacing-small, 12px);border-top:1px solid var(--color-neutral-300, #e0e0e0)}.company-registration-success__section-header h3{color:var(--color-neutral-700, #555555);font-size:var(--type-body-1-font-size, 16px);font-weight:var(--type-body-1-font-weight, 600);margin:0}@media (max-width: 768px){.company-registration-success{margin:var(--spacing-small, 12px);padding:var(--spacing-medium, 16px)}.company-registration-success__item{grid-template-columns:1fr;gap:var(--spacing-xsmall, 8px)}.company-registration-success__label{font-weight:var(--type-body-1-font-weight, 600)}}
10
+ .company-form-container{position:relative}.company-form{display:flex;flex-direction:column}.company-form--submitting{opacity:.6;pointer-events:none}.company-registration-form__inputs{display:grid;gap:var(--spacing-medium)}.company-registration-form__section{display:contents}.company-form [class$=-hidden]{position:absolute;opacity:0;height:0;width:0;overflow:hidden;clip:rect(0,0,0,0);display:none}.company-form-loader{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-xxlarge);min-height:200px}.company-form-loader__text{margin-top:var(--spacing-medium);font-size:var(--font-size-medium);color:var(--color-neutral-700)}.company-form__submitting-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#ffffffe6;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;padding-top:var(--spacing-xxlarge);z-index:10;border-radius:var(--shape-border-radius-3)}.company-form__submitting-text{margin-top:var(--spacing-medium);font-size:var(--font-size-medium);color:var(--color-neutral-700);font-weight:var(--font-weight-medium)}.company-form-wrapper{display:flex;flex-direction:column;gap:1rem}.company-form-wrapper__notification{margin-bottom:var(--spacing-small, .5rem)}.company-form-wrapper__errors{padding:1rem;border:1px solid #dc3545;border-radius:4px;background-color:#f8d7da;color:#721c24}.company-form-wrapper__errors .error-message{margin-bottom:.5rem}.company-form-wrapper__errors .error-message:last-child{margin-bottom:0}.company-form-wrapper__buttons{display:flex;justify-content:end;align-items:center;gap:0 var(--grid-2-gutters);grid-column:span 2;margin-top:var(--spacing-medium)}.company-form-wrapper__submit{min-width:120px}.company-form-section{margin:1.5rem 0 1rem}.company-form-section__title{font-size:1.125rem;font-weight:600;margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid #e5e7eb;color:#374151}.company-registration-success{max-width:600px;margin:0 auto;padding:var(--spacing-big, 24px);background:var(--color-neutral-50, #ffffff);border-radius:var(--shape-border-radius-2, 8px);box-shadow:var(--shadow-2, 0 2px 8px rgba(0, 0, 0, .1))}.company-registration-success__header{text-align:center;margin-bottom:var(--spacing-big, 24px);padding-bottom:var(--spacing-medium, 16px);border-bottom:1px solid var(--color-neutral-300, #e0e0e0)}.company-registration-success__title{color:var(--color-positive-700, #2d7d32);font-size:var(--type-headline-1-font-size, 24px);font-weight:var(--type-headline-1-font-weight, 600);margin:0 0 var(--spacing-small, 12px) 0}.company-registration-success__subtitle{color:var(--color-neutral-800, #333333);font-size:var(--type-body-1-font-size, 16px);margin:0 0 var(--spacing-small, 12px) 0}.company-registration-success__pending{color:var(--color-neutral-600, #666666);font-size:var(--type-body-2-font-size, 14px);margin:0}.company-registration-success__details{background:var(--color-neutral-100, #f5f5f5);padding:var(--spacing-medium, 16px);border-radius:var(--shape-border-radius-1, 4px)}.company-registration-success__details-title{color:var(--color-neutral-800, #333333);font-size:var(--type-headline-2-font-size, 20px);font-weight:var(--type-headline-2-font-weight, 500);margin:0 0 var(--spacing-medium, 16px) 0}.company-registration-success__grid{display:grid;gap:var(--spacing-small, 12px)}.company-registration-success__item{display:grid;grid-template-columns:1fr 2fr;gap:var(--spacing-small, 12px);align-items:start}.company-registration-success__label{color:var(--color-neutral-700, #555555);font-weight:var(--type-body-1-font-weight, 500);font-size:var(--type-body-2-font-size, 14px)}.company-registration-success__value{color:var(--color-neutral-800, #333333);font-size:var(--type-body-2-font-size, 14px)}.company-registration-success__section-header{margin-top:var(--spacing-medium, 16px);margin-bottom:var(--spacing-small, 12px);padding-top:var(--spacing-small, 12px);border-top:1px solid var(--color-neutral-300, #e0e0e0)}.company-registration-success__section-header h3{color:var(--color-neutral-700, #555555);font-size:var(--type-body-1-font-size, 16px);font-weight:var(--type-body-1-font-weight, 600);margin:0}@media (max-width: 768px){.company-registration-success{margin:var(--spacing-small, 12px);padding:var(--spacing-medium, 16px)}.company-registration-success__item{grid-template-columns:1fr;gap:var(--spacing-xsmall, 8px)}.company-registration-success__label{font-weight:var(--type-body-1-font-weight, 600)}}
11
11
  .company-profile__title{margin-bottom:var(--spacing-medium)}.account-company-profile-card-short{margin-bottom:var(--spacing-small)}.account-company-profile-card .dropin-card__content{gap:0}.account-company-profile-card__wrapper{display:grid;grid-template-columns:1fr;align-items:start;gap:var(--grid-1-gutters) 0}.account-company-profile-card .account-company-profile-card__actions{margin-left:auto;display:flex;justify-content:space-between;align-items:center;gap:0 var(--grid-2-gutters)}@media (max-width: 300px){.account-company-profile-card .account-company-profile-card__actions{align-items:self-end;flex-direction:column-reverse}}.account-company-profile-card .account-company-profile-card__actions button{cursor:pointer;margin:0;padding:0}.account-company-profile-card__content p{font:var(--type-body-1-default-font);margin:0 var(--spacing-xsmall) 0 0;line-height:var(--spacing-xbig);padding:0}.account-company-profile-card__content p:nth-child(1),.account-company-profile-card__content p:nth-child(2){font:var(--type-body-1-strong-font);font-weight:500;margin:0 var(--spacing-xsmall) var(--spacing-xsmall) 0}.account-company-profile-card__content .company-legal-address{margin-top:var(--spacing-medium)}.account-company-profile-card__content .company-legal-address p{margin-bottom:var(--spacing-xsmall)}.account-company-profile-card__content .company-legal-address p:first-child{font:var(--type-body-1-strong-font);font-weight:500;margin-bottom:var(--spacing-small)}.account-company-profile-card__no-data{text-align:center;color:var(--color-neutral-800);font:var(--type-body-2-default-font);padding:var(--spacing-medium)}.account-company-profile-card__content .company-contacts{margin-top:var(--spacing-medium);padding-top:var(--spacing-medium);border-top:1px solid var(--color-neutral-200)}.account-company-profile-card__content .company-contacts>p:first-child{font:var(--type-body-1-strong-font);font-weight:500;margin-bottom:var(--spacing-small)}.account-company-profile-card__content .company-contact{margin-bottom:var(--spacing-medium);padding:var(--spacing-small);background-color:var(--color-neutral-50);border-radius:var(--shape-border-radius-1)}.account-company-profile-card__content .company-contact p{margin-bottom:var(--spacing-xsmall)}.account-company-profile-card__content .company-contact p:first-child{font-weight:500;color:var(--color-neutral-700)}.account-company-profile-card__content .company-payment-methods{margin-top:var(--spacing-medium);padding-top:var(--spacing-medium);border-top:1px solid var(--color-neutral-200)}.account-company-profile-card__content .company-payment-methods>p:first-child,.account-company-profile-card__content .company-payment-methods>p:nth-child(2){font:var(--type-body-1-strong-font);font-weight:500;margin-bottom:var(--spacing-small)}.account-company-profile-card__content .company-payment-methods p{margin-bottom:var(--spacing-xsmall)}.account-edit-company-profile__title{margin-bottom:var(--spacing-medium)}.account-edit-company-profile .dropin-card__content{gap:0}.account-edit-company-profile .account-edit-company-profile__notification{margin-bottom:var(--spacing-medium)}.account-edit-company-profile .account-edit-company-profile-form__field:nth-child(n+3){grid-column:span 2}.account-edit-company-profile .account-edit-company-profile__actions{display:flex;justify-content:end;align-items:center;gap:0 var(--grid-2-gutters);grid-column:span 2;margin-top:var(--spacing-medium)}.account-edit-company-profile .account-edit-company-profile__actions button{min-width:144px}.account-edit-company-profile-form{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-medium) var(--grid-2-gutters)}@media (max-width: 768px){.account-edit-company-profile-form{grid-template-columns:1fr}.account-edit-company-profile .account-edit-company-profile-form__field:nth-child(n+3){grid-column:span 1}.account-edit-company-profile .account-edit-company-profile__actions{grid-column:span 1;flex-direction:column;gap:var(--spacing-small)}.account-edit-company-profile .account-edit-company-profile__actions button{width:100%}}.account-edit-company-profile-form__section{grid-column:span 2;margin-top:var(--spacing-large);padding-top:var(--spacing-medium);border-top:1px solid var(--color-neutral-200)}.account-edit-company-profile-form__section-title{font:var(--type-headline-2-default-font);color:var(--color-neutral-800);margin-bottom:var(--spacing-medium);padding-bottom:var(--spacing-xsmall)}@media (max-width: 768px){.account-edit-company-profile-form__section{grid-column:span 1}}.account-edit-company-profile__loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#ffffffe6;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--spacing-medium);z-index:10;border-radius:var(--border-radius-medium)}.account-edit-company-profile__loading-text{font:var(--type-body-1-default-font);color:var(--color-neutral-700);font-weight:500}.account-edit-company-profile{position:relative}
12
12
  .company-company-loaders--card-loader{margin-bottom:var(--spacing-small)}.company-company-loaders--picker-loader div:first-child{max-width:200px}.company-company-loaders--picker-loader div:nth-child(3){max-width:400px}.company-credit-skeleton-loader{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
13
13
  .company-accept-invitation-wrapper{display:flex;flex-direction:column;gap:1rem}.company-accept-invitation-loading{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-medium);padding:var(--spacing-large);text-align:center}.company-accept-invitation-wrapper__buttons{display:flex;justify-content:end;align-items:center;gap:0 var(--grid-2-gutters);margin-top:var(--spacing-medium)}.company-accept-invitation-wrapper__submit{min-width:120px}@media (max-width: 767px){.company-accept-invitation-wrapper__buttons{flex-direction:column;gap:var(--spacing-small)}.company-accept-invitation-wrapper__buttons button{width:100%}}
14
14
  .dropin-design{--color-brand-500: #454545;--color-brand-600: #383838;--color-brand-700: #2b2b2b;--color-neutral-50: #ffffff;--color-neutral-100: #fafafa;--color-neutral-200: #f5f5f5;--color-neutral-300: #e8e8e8;--color-neutral-400: #d6d6d6;--color-neutral-500: #b8b8b8;--color-neutral-600: #8f8f8f;--color-neutral-700: #666666;--color-neutral-800: #3d3d3d;--color-neutral-900: #292929;--color-positive-200: #eff5ef;--color-positive-500: #7fb078;--color-positive-800: #53824c;--color-informational-200: #eeeffb;--color-informational-500: #6978d9;--color-informational-800: #5d6dd6;--color-warning-200: #fdf3e9;--color-warning-500: #e79f5c;--color-warning-800: #ad5c00;--color-alert-200: #ffebeb;--color-alert-500: #db7070;--color-alert-800: #bf4545;--color-opacity-16: rgba(255, 255, 255, .16);--color-opacity-24: rgba(255, 255, 255, .24);--color-action-button-active: #ffffff;--color-action-button-hover: #e8e8e8;--color-button-active: #2b2b2b;--color-button-focus: #d6d6d6;--color-button-hover: #383838;--grid-1-columns: 4;--grid-1-margins: 0;--grid-1-gutters: 16px;--grid-2-columns: 12;--grid-2-margins: 0;--grid-2-gutters: 16px;--grid-3-columns: 12;--grid-3-margins: 0;--grid-3-gutters: 24px;--grid-4-columns: 12;--grid-4-margins: 0;--grid-4-gutters: 24px;--grid-5-columns: 12;--grid-5-margins: 0;--grid-5-gutters: 24px;--shape-border-radius-1: 3px;--shape-border-radius-2: 8px;--shape-border-radius-3: 24px;--shape-border-width-1: 1px;--shape-border-width-2: 1.5px;--shape-border-width-3: 2px;--shape-border-width-4: 4px;--shape-shadow-1: 0 0 16px 0 rgba(0,0,0,.16);--shape-shadow-2: 0 2px 16px 0 rgba(0,0,0,.16);--shape-shadow-3: 0 2px 3px 0 rgba(0,0,0,.16);--shape-icon-stroke-1: 1px;--shape-icon-stroke-2: 1.5px;--shape-icon-stroke-3: 2px;--shape-icon-stroke-4: 4px;--spacing-xxsmall: 4px;--spacing-xsmall: 8px;--spacing-small: 16px;--spacing-medium: 24px;--spacing-big: 32px;--spacing-xbig: 40px;--spacing-xxbig: 48px;--spacing-large: 64px;--spacing-xlarge: 72px;--spacing-xxlarge: 96px;--spacing-huge: 120px;--spacing-xhuge: 144px;--spacing-xxhuge: 192px;--type-base-font-family: system-ui, sans-serif;--type-display-1-font: normal normal 300 60px/72px var(--type-base-font-family);--type-display-1-letter-spacing: .04em;--type-display-2-font: normal normal 300 48px/56px var(--type-base-font-family);--type-display-2-letter-spacing: .04em;--type-display-3-font: normal normal 300 34px/40px var(--type-base-font-family);--type-display-3-letter-spacing: .04em;--type-headline-1-font: normal normal 400 24px/32px var(--type-base-font-family);--type-headline-1-letter-spacing: .04em;--type-headline-2-default-font: normal normal 300 20px/24px var(--type-base-font-family);--type-headline-2-default-letter-spacing: .04em;--type-headline-2-strong-font: normal normal 400 20px/24px var(--type-base-font-family);--type-headline-2-strong-letter-spacing: .04em;--type-body-1-default-font: normal normal 300 16px/24px var(--type-base-font-family);--type-body-1-default-letter-spacing: .04em;--type-body-1-strong-font: normal normal 400 16px/24px var(--type-base-font-family);--type-body-1-strong-letter-spacing: .04em;--type-body-1-emphasized-font: normal normal 700 16px/24px var(--type-base-font-family);--type-body-1-emphasized-letter-spacing: .04em;--type-body-2-default-font: normal normal 300 14px/20px var(--type-base-font-family);--type-body-2-default-letter-spacing: .04em;--type-body-2-strong-font: normal normal 400 14px/20px var(--type-base-font-family);--type-body-2-strong-letter-spacing: .04em;--type-body-2-emphasized-font: normal normal 700 14px/20px var(--type-base-font-family);--type-body-2-emphasized-letter-spacing: .04em;--type-button-1-font: normal normal 400 20px/26px var(--type-base-font-family);--type-button-1-letter-spacing: .08em;--type-button-2-font: normal normal 400 16px/24px var(--type-base-font-family);--type-button-2-letter-spacing: .08em;--type-details-caption-1-font: normal normal 400 12px/16px var(--type-base-font-family);--type-details-caption-1-letter-spacing: .08em;--type-details-caption-2-font: normal normal 300 12px/16px var(--type-base-font-family);--type-details-caption-2-letter-spacing: .08em;--type-details-overline-font: normal normal 700 12px/20px var(--type-base-font-family);--type-details-overline-letter-spacing: .16em}
15
15
  .company-management-company-credit-grid{display:grid;grid-template-columns:1fr;gap:16px}@media only screen and (min-width: 768px){.company-management-company-credit-grid{grid-template-columns:1fr 1fr 1fr}}.company-management-company-credit-grid .company-management-company-credit-negative{color:#eb550c}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.company-management-company-credit-history-table{font-size:smaller}.company-management-company-credit-history-table thead th{white-space:normal;word-wrap:break-word;overflow-wrap:break-word;min-width:auto}.paginationContainer{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-medium);margin-top:var(--spacing-medium);flex-wrap:wrap}.paginationButtons{display:flex;align-items:center;gap:var(--spacing-xxsmall);flex-wrap:wrap}.paginationButton{min-width:var(--spacing-big);height:var(--spacing-big);padding:var(--spacing-xxsmall) var(--spacing-xsmall)}.paginationEllipsis{padding:var(--spacing-xxsmall) var(--spacing-xsmall);display:inline-flex;align-items:center;justify-content:center;min-width:var(--spacing-big)}.pageSizeSelector{display:flex;align-items:center;gap:var(--spacing-xsmall)}.company-management-price-normal{font-weight:400}.company-management-company-credit-history-no-data-alert{margin-top:var(--spacing-medium);border-color:var(--color-neutral-400)}@media only screen and (max-width: 767px){.paginationContainer{flex-direction:column;align-items:stretch;gap:var(--spacing-small)}.paginationButtons{justify-content:center;order:2}.pageSizeSelector{justify-content:center;order:3}}`,{styleId:"company-management"});
16
- import{jsx as a}from"@dropins/tools/preact-jsx-runtime.js";import{Render as n}from"@dropins/tools/lib.js";import{useState as i,useEffect as l}from"@dropins/tools/preact-hooks.js";import{UIProvider as c}from"@dropins/tools/components.js";import{events as d}from"@dropins/tools/event-bus.js";const m={shared:{fields:{companyName:"Company Name",companyEmail:"Company Email",email:"Email",legalName:"Legal Name",vatTaxId:"VAT/Tax ID",resellerId:"Reseller ID",accountInformation:"Account Information",legalAddress:"Legal Address",streetAddress:"Street Address",city:"City",country:"Country",stateProvince:"State/Province",zipPostalCode:"ZIP/Postal Code",phoneNumber:"Phone Number",status:"Status",region:"Region",postalCode:"Postal Code",jobTitle:"Job Title",workPhoneNumber:"Work Phone Number",userRole:"User Role",title:"New Company",companyInformation:"Company Information",street:"Street Address",streetLine2:"Street Address Line 2",postcode:"ZIP/Postal Code",telephone:"Phone Number",companyAdmin:"Company Administrator",adminJobTitle:"Job Title",adminWorkTelephone:"Work Phone Number",adminEmail:"Email",adminFirstname:"First Name",adminLastname:"Last Name",adminGender:"Gender",address:"Address",submit:"Register Company",submitting:"Registering...",required:"Required",createCompanyError:"Failed to create company. Please try again.",unexpectedError:"An unexpected error occurred. Please try again."},buttons:{edit:"Edit",cancel:"Cancel",save:"Save Changes",saving:"Saving...",close:"Close",confirm:"Confirm"},validation:{required:"This field is required",invalidEmail:"Please enter a valid email address",companyNameRequired:"Company name is required",emailRequired:"Email is required",emailNotAvailable:"This email is already used by another company",phoneInvalid:"Please enter a valid phone number",postalCodeInvalid:"Please enter a valid postal code",companyNameLengthError:"Company name must not exceed 40 characters",legalNameLengthError:"Legal name must not exceed 80 characters",vatTaxIdLengthError:"VAT/Tax ID must not exceed 40 characters",resellerIdLengthError:"Reseller ID must not exceed 40 characters",roleNameRequired:"This is a required field.",roleNameExists:"User role with this name already exists. Enter a different name to save this role."},messages:{loading:"Loading...",noData:"No data available",error:"An error occurred",success:"Operation completed successfully"},loading:"Loading...",ariaLabels:{editButton:"Edit company profile",cancelButton:"Cancel editing",saveButton:"Save company profile changes",closeButton:"Close dialog"}},CompanyProfile:{containerTitle:"Company Profile",editCompanyProfile:{containerTitle:"Edit Company Profile",companySuccess:"Company profile updated successfully",companyError:"Failed to update company profile",buttonSecondary:"Cancel",buttonPrimary:"Save Changes"},companyProfileCard:{noDataMessage:"Company profile not available. Please contact your administrator.",contacts:"Contacts",companyAdministrator:"Company Administrator",salesRepresentative:"Sales Representative",paymentInformation:"Payment Information",availablePaymentMethods:"Available Payment Methods",shippingInformation:"Shipping Information",availableShippingMethods:"Available Shipping Methods",noPaymentMethods:"This company has no payment methods. Please contact store administrator.",noShippingMethods:"This company has no shipping methods. Please contact store administrator.",companyDetails:"Company Details",addressInformation:"Address Information"},messages:{loadError:"Failed to load company profile",updateError:"Failed to update company profile",loadingProfile:"Loading company profile...",savingProfile:"Saving company profile...",noDataToUpdate:"No data to update"}},CompanyStructure:{containerTitle:"Company Structure",shared:{buttons:{addUser:"Add User",addTeam:"Add Team",editSelected:"Edit",remove:"Remove",ok:"OK",cancel:"Cancel",close:"Close",save:"Save",deleting:"Deleting…",removing:"Removing…",expandAll:"Expand All",collapseAll:"Collapse All"},titles:{addUser:"Add User",editUser:"Edit User",addTeam:"Add Team",editTeam:"Edit Team"},fields:{jobTitle:"Job Title",userRole:"User Role",firstName:"First Name",lastName:"Last Name",email:"Email",workPhoneNumber:"Work Phone Number",status:"Status",teamTitle:"Team Title",description:"Description"},options:{selectRole:"Select role…",active:"Active",inactive:"Inactive",companyAdministrator:"Company Administrator",delete:"Delete",expand:"Expand",collapse:"Collapse"},ariaLabels:{addUser:"Add user",addTeam:"Add team",editSelected:"Edit selected",removeSelected:"Remove selected",showDescription:"Show description",companyStructureActions:"Company structure actions",expandAllNodes:"Expand all nodes",collapseAllNodes:"Collapse all nodes"},messages:{processing:"Processing…",teamDescription:"Team description"},validation:{firstNameRequired:"First name is required",lastNameRequired:"Last name is required",emailRequired:"Email is required",emailInvalid:"Enter a valid email",jobTitleRequired:"Job title is required",workPhoneRequired:"Work phone number is required",selectRole:"Select a role",teamTitleRequired:"Team title is required",firstNameMaxLength:"First name must not exceed 255 characters",lastNameMaxLength:"Last name must not exceed 255 characters",emailMaxLength:"Email must not exceed 254 characters",jobTitleMaxLength:"Job title must not exceed 255 characters",telephoneMaxLength:"Phone number must not exceed 20 characters",teamNameMaxLength:"Team title must not exceed 40 characters",teamDescriptionMaxLength:"Team description must not exceed 1000 characters"}},messages:{loadError:"Failed to load company structure",updateError:"Failed to update company structure",noStructureData:"No structure data.",cannotDeleteUser:"Cannot Delete User",cannotDeleteTeam:"Cannot Delete This Team",removeUserConfirm:"Remove this user from Company structure?",deleteTeamConfirm:"Delete this team?",removeItemsConfirm:"Remove {count} item(s)?",removeUserMessage:"Removing a user changes the account status to Inactive. The user's content is still available to the Company administrator, but the user cannot log in.",cannotDeleteUserMessage:"This user has active users or teams assigned to it and cannot be deleted. Please unassign the users or teams first.",cannotDeleteTeamMessage:"This team has active users or teams assigned to it and cannot be deleted. Please unassign the users or teams first.",removeItemsMessage:"This action will remove the selected items from the company structure.",deleteTeamMessage:"This action cannot be undone. Are you sure you want to delete this team?",failedToMoveItem:"Failed to move item",createUserError:"Failed to create user. You may not have permission to perform this action.",createTeamError:"Failed to create team. You may not have permission to perform this action.",saveUserError:"An error occurred while saving the user.",saveTeamError:"An error occurred while saving the team.",createUserSuccess:"The customer was successfully created.",updateUserSuccess:"The customer was successfully updated.",createTeamSuccess:"The team was successfully created.",updateTeamSuccess:"The team was successfully updated.",removeUserSuccess:"User was successfully removed from company structure.",deleteTeamSuccess:"Team was successfully deleted.",removeMultipleSuccess:"{count} item(s) were successfully removed.",moveUserSuccess:"User was successfully moved.",moveTeamSuccess:"Team was successfully moved.",loadRolesError:"Failed to load roles",fetchPermissionsError:"Failed to fetch permissions"}},CompanyUsers:{filters:{showAll:"Show All Users",showActive:"Show Active Users",showInactive:"Show Inactive Users"},columns:{id:"ID",name:"Name",email:"Email",role:"Role",team:"Team",status:"Status",actions:"Actions"},status:{active:"Active",inactive:"Inactive"},emptyTeam:"-",pagination:{itemsRange:"Items {start}-{end} of {total}",itemsPerPage:"Items per page:",show:"Show",perPage:"per page",previous:"Previous",next:"Next",pageInfo:"Page {current} of {total}"},emptyActions:"",noUsersFound:"No users found.",actions:{manage:"Manage",edit:"Edit",addNewUser:"Add New User"},ariaLabels:{loadingUsers:"Loading company users",usersTable:"Company users table",filterOptions:"User filter options",paginationNav:"Pagination navigation",pageNavigation:"Page navigation",pageSizeSelector:"Items per page selector",previousPageFull:"Go to previous page, current page {current}",nextPageFull:"Go to next page, current page {current}",currentPage:"Current page {current} of {total}",showingUsers:"Showing {count} users",dataLoaded:"Loaded {count} users",dataError:"Failed to load users.",manageUser:"Manage user {name}",editUser:"Edit user {name}"},managementModal:{title:"Manage user",setActiveText:`Reactivate the user's account by selecting "Set as Active".`,setInactiveText:`Temporarily lock the user's account by selecting "Set as Inactive".`,deleteText:`Permanently delete the user's account and all associated content by selecting "Delete". This action cannot be reverted.`,setActiveButton:"Set as Active",setInactiveButton:"Set as Inactive",settingActiveButton:"Setting Active...",settingInactiveButton:"Setting Inactive...",deleteButton:"Delete",deletingButton:"Deleting...",cancelButton:"Cancel",setActiveErrorGeneric:"An unexpected error occurred while setting user as active.",setActiveErrorSpecific:"Failed to set user as active.",setInactiveErrorGeneric:"An unexpected error occurred while setting user as inactive.",setInactiveErrorSpecific:"Failed to set user as inactive.",deleteErrorGeneric:"An unexpected error occurred.",deleteErrorSpecific:"Failed to delete user.",setActiveSuccess:"User was successfully activated.",setInactiveSuccess:"User was successfully deactivated.",deleteSuccess:"User was successfully deleted.",ariaLabels:{closeModal:"Close modal",modalDescription:"User management options including setting as inactive or deleting the user account"}}},CompanyRegistration:{success:{pendingApproval:"Thank you! We're reviewing your request and will contact you soon.",companyDetails:"Company Information"}},CustomerCompanyInfo:{individualUserMessage:"You don't have a company account yet.",createAccountCta:"Create a Company Account"},CompanyCredit:{title:"Company Credit",creditAvailable:"Available Credit",creditLimit:"Credit Limit",outstandingBalance:"Outstanding Balance",messages:{loadError:"Failed to load company credit"}},CompanyCreditHistory:{title:"Credit History",columns:{date:"Date",operation:"Operation",amount:"Amount",outstandingBalance:"Outstanding Balance",availableCredit:"Available Credit",creditLimit:"Credit Limit",customReference:"Custom Reference Number",updatedBy:"Updated By"},pagination:{itemsRange:"Items {start} to {end} of {total}",itemsPerPage:"Items per page:",show:"Show",perPage:"per page"},ariaLabels:{dataLoaded:"Loaded {count} credit history entries",dataError:"Failed to load credit history entries. Please try again.",loadingHistory:"Loading credit history",historyTable:"Credit history table",paginationNav:"Pagination navigation",pageNavigation:"Page navigation",pageSizeSelector:"Items per page selector",previousPage:"Previous page",nextPage:"Next page",goToPage:"Go to page {page}",currentPage:"Current page {page}",showingHistory:"Showing {count} credit history entries"}},EditRoleAndPermission:{createTitle:"Add New Role",editTitle:"Edit Role",roleInformation:"Role Information",roleName:"Role Name",rolePermissions:"Role Permissions",permissionsDescription:"Granting permissions does not affect which features are available for your company account. The merchant must enable features to make them available for your account.",expandAll:"Expand All",collapseAll:"Collapse All",saveRole:"Save Role"},FormText:{requiredFieldError:"This is a required field.",numericError:"Only numeric values are allowed.",alphaNumWithSpacesError:"Only alphanumeric characters and spaces are allowed.",alphaNumericError:"Only alphanumeric characters are allowed.",alphaError:"Only alphabetic characters are allowed.",emailError:"Please enter a valid email address.",phoneError:"Please enter a valid phone number.",postalCodeError:"Please enter a valid postal code.",lengthTextError:"Text length must be between {min} and {max} characters.",urlError:"Please enter a valid URL",nameError:"Please enter a valid name",selectCountry:"Please select a country",selectRegion:"Please select a region, state or province",selectCountryFirst:"Please select a country first",companyNameLengthError:"Company name must be between {min} and {max} characters."},AcceptInvitation:{title:"Accept Company Invitation",loadingText:"Processing your invitation...",successMessage:"You have successfully accepted the invitation to the company.",myAccountButton:"My Account",loginButton:"Go to Login",invalidLinkError:"Invalid invitation link. Please check the URL and try again.",companyDisabledError:"Company functionality is not enabled. Please contact the store administrator.",expiredLinkError:"This invitation link has expired or is no longer valid.",genericError:"An error occurred while processing your invitation. Please try again."},RolesAndPermissions:{containerTitle:"Company Roles & Permissions",noAccess:{title:"Access Restricted",message:"You do not have permission to view roles and permissions. Please contact your company administrator."},error:{title:"Error Loading Roles",message:"An error occurred while loading roles and permissions. Please try again."},deleteModal:{title:"Delete This Role?",message:"This action cannot be undone. Are you sure you want to delete this role?",confirm:"Delete",cancel:"Cancel"},cannotDeleteModal:{title:"Cannot Delete Role",message:"This role cannot be deleted because users are assigned to it. Reassign the users to another role to continue.",ok:"OK"},alerts:{createSuccess:'Role "{roleName}" created successfully!',createError:"Failed to create role. Please try again.",createErrorPermissions:"Failed to create role. Please check your permissions and try again.",updateSuccess:'Role "{roleName}" updated successfully!',updateError:"Failed to update role. Please try again.",updateErrorPermissions:"Failed to update role. Please check your permissions and try again.",deleteError:"Failed to delete role. Please try again."}},RoleAndPermissionTable:{addNewRole:"Add New Role",columnId:"ID",columnRole:"Role",columnUsers:"Users",columnActions:"Actions",editButton:"Edit",duplicateButton:"Duplicate",deleteButton:"Delete",viewOnlyLabel:"View Only",systemRoleLabel:"System Role",itemCount:"Item(s)",itemsRange:"Items {start}-{end} of {total}",show:"Show",perPage:"per page",deleteRole:{success:'You have deleted role "{roleName}".'}},Table:{sortedAscending:"Sorted ascending by {label}",sortedDescending:"Sorted descending by {label}",sortBy:"Sort by {label}"}},u={Company:m},p={default:u},g=({children:t})=>{const[r,o]=i("en_US");return l(()=>{const e=d.on("locale",s=>{o(s)},{eager:!0});return()=>{e==null||e.off()}},[]),a(c,{lang:r,langDefinitions:p,children:t})},C=new n(a(g,{}));export{C as render};
16
+ import{jsx as a}from"@dropins/tools/preact-jsx-runtime.js";import{Render as n}from"@dropins/tools/lib.js";import{useState as i,useEffect as l}from"@dropins/tools/preact-hooks.js";import{UIProvider as c}from"@dropins/tools/components.js";import{events as d}from"@dropins/tools/event-bus.js";const m={shared:{fields:{companyName:"Company Name",companyEmail:"Company Email",email:"Email",legalName:"Legal Name",vatTaxId:"VAT/Tax ID",resellerId:"Reseller ID",accountInformation:"Account Information",legalAddress:"Legal Address",streetAddress:"Street Address",city:"City",country:"Country",stateProvince:"State/Province",zipPostalCode:"ZIP/Postal Code",phoneNumber:"Phone Number",status:"Status",region:"Region",postalCode:"Postal Code",jobTitle:"Job Title",workPhoneNumber:"Work Phone Number",userRole:"User Role",title:"New Company",companyInformation:"Company Information",street:"Street Address",streetLine2:"Street Address Line 2",postcode:"ZIP/Postal Code",telephone:"Phone Number",companyAdmin:"Company Administrator",adminJobTitle:"Job Title",adminWorkTelephone:"Work Phone Number",adminEmail:"Email",adminFirstname:"First Name",adminLastname:"Last Name",adminGender:"Gender",address:"Address",submit:"Register Company",submitting:"Registering...",required:"Required",createCompanyError:"Failed to create company. Please try again.",unexpectedError:"An unexpected error occurred. Please try again."},buttons:{edit:"Edit",cancel:"Cancel",save:"Save Changes",saving:"Saving...",close:"Close",confirm:"Confirm"},validation:{required:"This field is required",invalidEmail:"Please enter a valid email address",companyNameRequired:"Company name is required",emailRequired:"Email is required",emailNotAvailable:"This email is already used by another company",phoneInvalid:"Please enter a valid phone number",postalCodeInvalid:"Please enter a valid postal code",companyNameLengthError:"Company name must not exceed 40 characters",legalNameLengthError:"Legal name must not exceed 80 characters",vatTaxIdLengthError:"VAT/Tax ID must not exceed 40 characters",resellerIdLengthError:"Reseller ID must not exceed 40 characters",roleNameRequired:"This is a required field.",roleNameExists:"User role with this name already exists. Enter a different name to save this role."},messages:{loading:"Loading...",noData:"No data available",error:"An error occurred",success:"Operation completed successfully"},loading:"Loading...",ariaLabels:{editButton:"Edit company profile",cancelButton:"Cancel editing",saveButton:"Save company profile changes",closeButton:"Close dialog"}},CompanyProfile:{containerTitle:"Company Profile",editCompanyProfile:{containerTitle:"Edit Company Profile",companySuccess:"Company profile updated successfully",companyError:"Failed to update company profile",buttonSecondary:"Cancel",buttonPrimary:"Save Changes"},companyProfileCard:{noDataMessage:"Company profile not available. Please contact your administrator.",contacts:"Contacts",companyAdministrator:"Company Administrator",salesRepresentative:"Sales Representative",paymentInformation:"Payment Information",availablePaymentMethods:"Available Payment Methods",shippingInformation:"Shipping Information",availableShippingMethods:"Available Shipping Methods",noPaymentMethods:"This company has no payment methods. Please contact store administrator.",noShippingMethods:"This company has no shipping methods. Please contact store administrator.",companyDetails:"Company Details",addressInformation:"Address Information"},messages:{loadError:"Failed to load company profile",updateError:"Failed to update company profile",loadingProfile:"Loading company profile...",savingProfile:"Saving company profile...",noDataToUpdate:"No data to update"}},CompanyStructure:{containerTitle:"Company Structure",shared:{buttons:{addUser:"Add User",addTeam:"Add Team",editSelected:"Edit",remove:"Remove",ok:"OK",cancel:"Cancel",close:"Close",save:"Save",deleting:"Deleting…",removing:"Removing…",expandAll:"Expand All",collapseAll:"Collapse All"},titles:{addUser:"Add User",editUser:"Edit User",addTeam:"Add Team",editTeam:"Edit Team"},fields:{jobTitle:"Job Title",userRole:"User Role",firstName:"First Name",lastName:"Last Name",email:"Email",workPhoneNumber:"Work Phone Number",status:"Status",teamTitle:"Team Title",description:"Description"},options:{selectRole:"Select role…",active:"Active",inactive:"Inactive",companyAdministrator:"Company Administrator",delete:"Delete",expand:"Expand",collapse:"Collapse"},ariaLabels:{addUser:"Add user",addTeam:"Add team",editSelected:"Edit selected",removeSelected:"Remove selected",showDescription:"Show description",companyStructureActions:"Company structure actions",expandAllNodes:"Expand all nodes",collapseAllNodes:"Collapse all nodes"},messages:{processing:"Processing…",teamDescription:"Team description"},validation:{firstNameRequired:"First name is required",lastNameRequired:"Last name is required",emailRequired:"Email is required",emailInvalid:"Enter a valid email",jobTitleRequired:"Job title is required",workPhoneRequired:"Work phone number is required",selectRole:"Select a role",teamTitleRequired:"Team title is required",firstNameMaxLength:"First name must not exceed 255 characters",lastNameMaxLength:"Last name must not exceed 255 characters",emailMaxLength:"Email must not exceed 254 characters",jobTitleMaxLength:"Job title must not exceed 255 characters",telephoneMaxLength:"Phone number must not exceed 20 characters",teamNameMaxLength:"Team title must not exceed 40 characters",teamDescriptionMaxLength:"Team description must not exceed 1000 characters"}},messages:{loadError:"Failed to load company structure",updateError:"Failed to update company structure",noStructureData:"No structure data.",cannotDeleteUser:"Cannot Delete User",cannotDeleteTeam:"Cannot Delete This Team",removeUserConfirm:"Remove this user from Company structure?",deleteTeamConfirm:"Delete this team?",removeItemsConfirm:"Remove {count} item(s)?",removeUserMessage:"Removing a user changes the account status to Inactive. The user's content is still available to the Company administrator, but the user cannot log in.",cannotDeleteUserMessage:"This user has active users or teams assigned to it and cannot be deleted. Please unassign the users or teams first.",cannotDeleteTeamMessage:"This team has active users or teams assigned to it and cannot be deleted. Please unassign the users or teams first.",removeItemsMessage:"This action will remove the selected items from the company structure.",deleteTeamMessage:"This action cannot be undone. Are you sure you want to delete this team?",failedToMoveItem:"Failed to move item",createUserError:"Failed to create user. You may not have permission to perform this action.",createTeamError:"Failed to create team. You may not have permission to perform this action.",saveUserError:"An error occurred while saving the user.",saveTeamError:"An error occurred while saving the team.",createUserSuccess:"The customer was successfully created.",updateUserSuccess:"The customer was successfully updated.",createTeamSuccess:"The team was successfully created.",updateTeamSuccess:"The team was successfully updated.",removeUserSuccess:"User was successfully removed from company structure.",deleteTeamSuccess:"Team was successfully deleted.",removeMultipleSuccess:"{count} item(s) were successfully removed.",moveUserSuccess:"User was successfully moved.",moveTeamSuccess:"Team was successfully moved.",loadRolesError:"Failed to load roles",fetchPermissionsError:"Failed to fetch permissions"}},CompanyUsers:{filters:{showAll:"Show All Users",showActive:"Show Active Users",showInactive:"Show Inactive Users"},columns:{id:"ID",name:"Name",email:"Email",role:"Role",team:"Team",status:"Status",actions:"Actions"},status:{active:"Active",inactive:"Inactive"},emptyTeam:"-",pagination:{itemsRange:"Items {start}-{end} of {total}",itemsPerPage:"Items per page:",show:"Show",perPage:"per page",previous:"Previous",next:"Next",pageInfo:"Page {current} of {total}"},emptyActions:"",noUsersFound:"No users found.",actions:{manage:"Manage",edit:"Edit",addNewUser:"Add New User"},ariaLabels:{loadingUsers:"Loading company users",usersTable:"Company users table",filterOptions:"User filter options",paginationNav:"Pagination navigation",pageNavigation:"Page navigation",pageSizeSelector:"Items per page selector",previousPageFull:"Go to previous page, current page {current}",nextPageFull:"Go to next page, current page {current}",currentPage:"Current page {current} of {total}",showingUsers:"Showing {count} users",dataLoaded:"Loaded {count} users",dataError:"Failed to load users.",manageUser:"Manage user {name}",editUser:"Edit user {name}"},managementModal:{title:"Manage user",setActiveText:`Reactivate the user's account by selecting "Set as Active".`,setInactiveText:`Temporarily lock the user's account by selecting "Set as Inactive".`,deleteText:`Permanently delete the user's account and all associated content by selecting "Delete". This action cannot be reverted.`,setActiveButton:"Set as Active",setInactiveButton:"Set as Inactive",settingActiveButton:"Setting Active...",settingInactiveButton:"Setting Inactive...",deleteButton:"Delete",deletingButton:"Deleting...",cancelButton:"Cancel",setActiveErrorGeneric:"An unexpected error occurred while setting user as active.",setActiveErrorSpecific:"Failed to set user as active.",setInactiveErrorGeneric:"An unexpected error occurred while setting user as inactive.",setInactiveErrorSpecific:"Failed to set user as inactive.",deleteErrorGeneric:"An unexpected error occurred.",deleteErrorSpecific:"Failed to delete user.",setActiveSuccess:"User was successfully activated.",setInactiveSuccess:"User was successfully deactivated.",deleteSuccess:"User was successfully deleted.",ariaLabels:{closeModal:"Close modal",modalDescription:"User management options including setting as inactive or deleting the user account"}}},CompanyRegistration:{success:{pendingApproval:"Thank you! We're reviewing your request and will contact you soon.",companyDetails:"Company Information"}},CustomerCompanyInfo:{individualUserMessage:"You don't have a company account yet.",createAccountCta:"Create a Company Account"},CompanyCredit:{title:"Company Credit",creditAvailable:"Available Credit",creditLimit:"Credit Limit",outstandingBalance:"Outstanding Balance",messages:{loadError:"Failed to load company credit"}},CompanyCreditHistory:{title:"Credit History",columns:{date:"Date",operation:"Operation",amount:"Amount",outstandingBalance:"Outstanding Balance",availableCredit:"Available Credit",creditLimit:"Credit Limit",customReference:"Custom Reference Number",updatedBy:"Updated By"},pagination:{itemsRange:"Items {start} to {end} of {total}",itemsPerPage:"Items per page:",show:"Show",perPage:"per page"},ariaLabels:{dataLoaded:"Loaded {count} credit history entries",dataError:"Failed to load credit history entries. Please try again.",loadingHistory:"Loading credit history",historyTable:"Credit history table",paginationNav:"Pagination navigation",pageNavigation:"Page navigation",pageSizeSelector:"Items per page selector",previousPage:"Previous page",nextPage:"Next page",goToPage:"Go to page {page}",currentPage:"Current page {page}",showingHistory:"Showing {count} credit history entries"}},EditRoleAndPermission:{createTitle:"Add New Role",editTitle:"Edit Role",roleInformation:"Role Information",roleName:"Role Name",rolePermissions:"Role Permissions",permissionsDescription:"Granting permissions does not affect which features are available for your company account. The merchant must enable features to make them available for your account.",expandAll:"Expand All",collapseAll:"Collapse All",saveRole:"Save Role"},FormText:{requiredFieldError:"This is a required field.",numericError:"Only numeric values are allowed.",alphaNumWithSpacesError:"Only alphanumeric characters and spaces are allowed.",alphaNumericError:"Only alphanumeric characters are allowed.",alphaError:"Only alphabetic characters are allowed.",emailError:"Please enter a valid email address.",phoneError:"Please enter a valid phone number.",postalCodeError:"Please enter a valid postal code.",lengthTextError:"Text length must be between {min} and {max} characters.",urlError:"Please enter a valid URL",nameError:"Please enter a valid name",selectCountry:"Please select a country",selectRegion:"Please select a region, state or province",selectCountryFirst:"Please select a country first",companyNameLengthError:"Company name must be between {min} and {max} characters.",loading:"Loading...",submitting:"Registering your company..."},AcceptInvitation:{title:"Accept Company Invitation",loadingText:"Processing your invitation...",successMessage:"You have successfully accepted the invitation to the company.",myAccountButton:"My Account",loginButton:"Go to Login",invalidLinkError:"Invalid invitation link. Please check the URL and try again.",companyDisabledError:"Company functionality is not enabled. Please contact the store administrator.",expiredLinkError:"This invitation link has expired or is no longer valid.",genericError:"An error occurred while processing your invitation. Please try again."},RolesAndPermissions:{containerTitle:"Company Roles & Permissions",noAccess:{title:"Access Restricted",message:"You do not have permission to view roles and permissions. Please contact your company administrator."},error:{title:"Error Loading Roles",message:"An error occurred while loading roles and permissions. Please try again."},deleteModal:{title:"Delete This Role?",message:"This action cannot be undone. Are you sure you want to delete this role?",confirm:"Delete",cancel:"Cancel"},cannotDeleteModal:{title:"Cannot Delete Role",message:"This role cannot be deleted because users are assigned to it. Reassign the users to another role to continue.",ok:"OK"},alerts:{createSuccess:'Role "{roleName}" created successfully!',createError:"Failed to create role. Please try again.",createErrorPermissions:"Failed to create role. Please check your permissions and try again.",updateSuccess:'Role "{roleName}" updated successfully!',updateError:"Failed to update role. Please try again.",updateErrorPermissions:"Failed to update role. Please check your permissions and try again.",deleteError:"Failed to delete role. Please try again."}},RoleAndPermissionTable:{addNewRole:"Add New Role",columnId:"ID",columnRole:"Role",columnUsers:"Users",columnActions:"Actions",editButton:"Edit",duplicateButton:"Duplicate",deleteButton:"Delete",viewOnlyLabel:"View Only",systemRoleLabel:"System Role",itemCount:"Item(s)",itemsRange:"Items {start}-{end} of {total}",show:"Show",perPage:"per page",deleteRole:{success:'You have deleted role "{roleName}".'}},Table:{sortedAscending:"Sorted ascending by {label}",sortedDescending:"Sorted descending by {label}",sortBy:"Sort by {label}"}},u={Company:m},p={default:u},g=({children:t})=>{const[o,r]=i("en_US");return l(()=>{const e=d.on("locale",s=>{r(s)},{eager:!0});return()=>{e==null||e.off()}},[]),a(c,{lang:o,langDefinitions:p,children:t})},C=new n(a(g,{}));export{C as render};
17
17
  //# sourceMappingURL=render.js.map
package/render.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sources":["/@dropins/storefront-company-management/src/render/Provider.tsx","/@dropins/storefront-company-management/src/render/render.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { UIProvider } from '@adobe-commerce/elsie/components';\nimport { Lang } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\n\nimport en_US from '../i18n/en_US.json';\n\n// Langs\nconst langDefinitions = {\n default: en_US,\n};\n\ninterface CompanyProviderProps {\n children?: any;\n}\n\nexport const Provider: FunctionComponent<CompanyProviderProps> = ({\n children,\n}) => {\n const [lang, setLang] = useState<Lang>('en_US');\n\n // Events\n useEffect(() => {\n const localeEvent = events.on(\n 'locale',\n (locale: string) => {\n setLang(locale as Lang);\n },\n { eager: true }\n );\n return () => {\n localeEvent?.off();\n };\n }, []);\n\n return (\n <UIProvider lang={lang} langDefinitions={langDefinitions}>\n {children}\n </UIProvider>\n );\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Render } from '@adobe-commerce/elsie/lib';\nimport { Provider } from './Provider';\n\nexport const render = new Render(<Provider />);\n"],"names":["langDefinitions","en_US","Provider","children","lang","setLang","useState","useEffect","localeEvent","events","locale","jsx","UIProvider","render","Render"],"mappings":"u7cA0BMA,EAAkB,CACtB,QAASC,CACX,EAMaC,EAAoD,CAAC,CAChE,SAAAC,CACF,IAAM,CACJ,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAe,OAAO,EAG9C,OAAAC,EAAU,IAAM,CACd,MAAMC,EAAcC,EAAO,GACzB,SACCC,GAAmB,CAClBL,EAAQK,CAAc,CACxB,EACA,CAAE,MAAO,EAAA,CAAK,EAEhB,MAAO,IAAM,CACXF,GAAA,MAAAA,EAAa,KACf,CACF,EAAG,CAAA,CAAE,EAGHG,EAACC,EAAA,CAAW,KAAAR,EAAY,gBAAAJ,EACrB,SAAAG,CAAA,CACH,CAEJ,ECtCaU,EAAS,IAAIC,EAAOH,EAACT,IAAS,CAAE"}
1
+ {"version":3,"file":"render.js","sources":["/@dropins/storefront-company-management/src/render/Provider.tsx","/@dropins/storefront-company-management/src/render/render.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { UIProvider } from '@adobe-commerce/elsie/components';\nimport { Lang } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\n\nimport en_US from '../i18n/en_US.json';\n\n// Langs\nconst langDefinitions = {\n default: en_US,\n};\n\ninterface CompanyProviderProps {\n children?: any;\n}\n\nexport const Provider: FunctionComponent<CompanyProviderProps> = ({\n children,\n}) => {\n const [lang, setLang] = useState<Lang>('en_US');\n\n // Events\n useEffect(() => {\n const localeEvent = events.on(\n 'locale',\n (locale: string) => {\n setLang(locale as Lang);\n },\n { eager: true }\n );\n return () => {\n localeEvent?.off();\n };\n }, []);\n\n return (\n <UIProvider lang={lang} langDefinitions={langDefinitions}>\n {children}\n </UIProvider>\n );\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Render } from '@adobe-commerce/elsie/lib';\nimport { Provider } from './Provider';\n\nexport const render = new Render(<Provider />);\n"],"names":["langDefinitions","en_US","Provider","children","lang","setLang","useState","useEffect","localeEvent","events","locale","jsx","UIProvider","render","Render"],"mappings":"q/cA0BMA,EAAkB,CACtB,QAASC,CACX,EAMaC,EAAoD,CAAC,CAChE,SAAAC,CACF,IAAM,CACJ,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAe,OAAO,EAG9C,OAAAC,EAAU,IAAM,CACd,MAAMC,EAAcC,EAAO,GACzB,SACCC,GAAmB,CAClBL,EAAQK,CAAc,CACxB,EACA,CAAE,MAAO,EAAA,CAAK,EAEhB,MAAO,IAAM,CACXF,GAAA,MAAAA,EAAa,KACf,CACF,EAAG,CAAA,CAAE,EAGHG,EAACC,EAAA,CAAW,KAAAR,EAAY,gBAAAJ,EACrB,SAAAG,CAAA,CACH,CAEJ,ECtCaU,EAAS,IAAIC,EAAOH,EAACT,IAAS,CAAE"}
@@ -62,8 +62,12 @@ export interface FormProps {
62
62
  name?: string;
63
63
  className?: string;
64
64
  children?: any;
65
+ /** Show loading spinner (for initial data loading like countries/store config) */
65
66
  loading?: boolean;
67
+ /** Show loading spinner centered (legacy, use loading instead) */
66
68
  showFormLoader?: boolean;
69
+ /** Show submitting overlay (form stays visible but disabled with spinner on top) */
70
+ submitting?: boolean;
67
71
  onSubmit?: (event: SubmitEvent, isValid: boolean) => Promise<void | null | undefined>;
68
72
  onChange?: (values: Record<string, string | string[] | number | boolean>) => void;
69
73
  onBlur?: (event: Event) => void;