@salesforce/ui-bundle-template-app-react-sample-b2x 1.117.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. package/LICENSE.txt +82 -0
  2. package/README.md +52 -0
  3. package/dist/.forceignore +15 -0
  4. package/dist/.husky/pre-commit +4 -0
  5. package/dist/.prettierignore +11 -0
  6. package/dist/.prettierrc +17 -0
  7. package/dist/AGENT.md +193 -0
  8. package/dist/CHANGELOG.md +2128 -0
  9. package/dist/README.md +112 -0
  10. package/dist/config/project-scratch-def.json +13 -0
  11. package/dist/eslint.config.js +7 -0
  12. package/dist/force-app/main/default/classes/MaintenanceRequestTriggerHandler.cls +69 -0
  13. package/dist/force-app/main/default/classes/MaintenanceRequestTriggerHandler.cls-meta.xml +5 -0
  14. package/dist/force-app/main/default/classes/MaintenanceRequestTriggerHandler_Test.cls +308 -0
  15. package/dist/force-app/main/default/classes/MaintenanceRequestTriggerHandler_Test.cls-meta.xml +5 -0
  16. package/dist/force-app/main/default/classes/TenantTriggerHandler.cls +77 -0
  17. package/dist/force-app/main/default/classes/TenantTriggerHandler.cls-meta.xml +5 -0
  18. package/dist/force-app/main/default/classes/TenantTriggerHandler_Test.cls +100 -0
  19. package/dist/force-app/main/default/classes/TenantTriggerHandler_Test.cls-meta.xml +5 -0
  20. package/dist/force-app/main/default/classes/UIBundleAuthUtils.cls +68 -0
  21. package/dist/force-app/main/default/classes/UIBundleAuthUtils.cls-meta.xml +5 -0
  22. package/dist/force-app/main/default/classes/UIBundleChangePassword.cls +77 -0
  23. package/dist/force-app/main/default/classes/UIBundleChangePassword.cls-meta.xml +5 -0
  24. package/dist/force-app/main/default/classes/UIBundleForgotPassword.cls +71 -0
  25. package/dist/force-app/main/default/classes/UIBundleForgotPassword.cls-meta.xml +5 -0
  26. package/dist/force-app/main/default/classes/UIBundleLogin.cls +105 -0
  27. package/dist/force-app/main/default/classes/UIBundleLogin.cls-meta.xml +5 -0
  28. package/dist/force-app/main/default/classes/UIBundleRegistration.cls +162 -0
  29. package/dist/force-app/main/default/classes/UIBundleRegistration.cls-meta.xml +5 -0
  30. package/dist/force-app/main/default/cspTrustedSites/GitHub_Avatars.cspTrustedSite-meta.xml +15 -0
  31. package/dist/force-app/main/default/cspTrustedSites/Google_Fonts.cspTrustedSite-meta.xml +15 -0
  32. package/dist/force-app/main/default/cspTrustedSites/Google_Fonts_Static.cspTrustedSite-meta.xml +15 -0
  33. package/dist/force-app/main/default/cspTrustedSites/OpenStreetMap_Nominatim.cspTrustedSite-meta.xml +15 -0
  34. package/dist/force-app/main/default/cspTrustedSites/OpenStreetMap_Tiles.cspTrustedSite-meta.xml +15 -0
  35. package/dist/force-app/main/default/cspTrustedSites/Open_Meteo_API.cspTrustedSite-meta.xml +15 -0
  36. package/dist/force-app/main/default/cspTrustedSites/Pexels_Images.cspTrustedSite-meta.xml +15 -0
  37. package/dist/force-app/main/default/cspTrustedSites/Pexels_Videos.cspTrustedSite-meta.xml +15 -0
  38. package/dist/force-app/main/default/cspTrustedSites/Unsplash_Images.cspTrustedSite-meta.xml +15 -0
  39. package/dist/force-app/main/default/data/Agent__c.json +79 -0
  40. package/dist/force-app/main/default/data/Application__c.json +124 -0
  41. package/dist/force-app/main/default/data/Contact.json +44 -0
  42. package/dist/force-app/main/default/data/KPI_Snapshot__c.json +160 -0
  43. package/dist/force-app/main/default/data/Lease__c.json +9442 -0
  44. package/dist/force-app/main/default/data/Maintenance_Request__c.json +514 -0
  45. package/dist/force-app/main/default/data/Maintenance_Worker__c.json +304 -0
  46. package/dist/force-app/main/default/data/Notification__c.json +214 -0
  47. package/dist/force-app/main/default/data/Payment__c.json +1024 -0
  48. package/dist/force-app/main/default/data/Property_Cost__c.json +484 -0
  49. package/dist/force-app/main/default/data/Property_Feature__c.json +169 -0
  50. package/dist/force-app/main/default/data/Property_Image__c.json +148 -0
  51. package/dist/force-app/main/default/data/Property_Listing__c.json +130 -0
  52. package/dist/force-app/main/default/data/Property_Management_Company__c.json +70 -0
  53. package/dist/force-app/main/default/data/Property_Owner__c.json +184 -0
  54. package/dist/force-app/main/default/data/Property_Sale__c.json +246 -0
  55. package/dist/force-app/main/default/data/Property__c.json +704 -0
  56. package/dist/force-app/main/default/data/Tenant__c.json +184 -0
  57. package/dist/force-app/main/default/data/data-plan.json +110 -0
  58. package/dist/force-app/main/default/data/prepare-import-unique-fields.js +85 -0
  59. package/dist/force-app/main/default/digitalExperienceConfigs/propertyrentalapp1.digitalExperienceConfig-meta.xml +8 -0
  60. package/dist/force-app/main/default/digitalExperiences/site/propertyrentalapp1/propertyrentalapp1.digitalExperience-meta.xml +11 -0
  61. package/dist/force-app/main/default/digitalExperiences/site/propertyrentalapp1/sfdc_cms__site/propertyrentalapp1/_meta.json +5 -0
  62. package/dist/force-app/main/default/digitalExperiences/site/propertyrentalapp1/sfdc_cms__site/propertyrentalapp1/content.json +10 -0
  63. package/dist/force-app/main/default/layouts/Application__c-Application Layout.layout-meta.xml +58 -0
  64. package/dist/force-app/main/default/layouts/KPI_Snapshot__c-KPI Snapshot Layout.layout-meta.xml +87 -0
  65. package/dist/force-app/main/default/layouts/Lease__c-Lease Layout.layout-meta.xml +83 -0
  66. package/dist/force-app/main/default/layouts/Maintenance_Request__c-Maintenance Request Layout.layout-meta.xml +89 -0
  67. package/dist/force-app/main/default/layouts/Maintenance_Worker__c-Maintenance Worker Layout.layout-meta.xml +66 -0
  68. package/dist/force-app/main/default/layouts/Payment__c-Payment Layout.layout-meta.xml +88 -0
  69. package/dist/force-app/main/default/layouts/Property_Cost__c-Property Cost Layout.layout-meta.xml +88 -0
  70. package/dist/force-app/main/default/layouts/Property_Feature__c-Property Feature Layout.layout-meta.xml +80 -0
  71. package/dist/force-app/main/default/layouts/Property_Image__c-Property Image Layout.layout-meta.xml +75 -0
  72. package/dist/force-app/main/default/layouts/Property_Listing__c-Property Listing Layout.layout-meta.xml +92 -0
  73. package/dist/force-app/main/default/layouts/Property_Management_Company__c-Property Management Company Layout.layout-meta.xml +75 -0
  74. package/dist/force-app/main/default/layouts/Property_Owner__c-Property Owner Layout.layout-meta.xml +67 -0
  75. package/dist/force-app/main/default/layouts/Property_Sale__c-Property Sale Layout.layout-meta.xml +87 -0
  76. package/dist/force-app/main/default/layouts/Property__c-Property Layout.layout-meta.xml +130 -0
  77. package/dist/force-app/main/default/layouts/Tenant__c-Tenant Layout.layout-meta.xml +58 -0
  78. package/dist/force-app/main/default/networks/propertyrentalapp.network-meta.xml +60 -0
  79. package/dist/force-app/main/default/objects/Agent__c/Agent__c.object-meta.xml +66 -0
  80. package/dist/force-app/main/default/objects/Agent__c/fields/Agent_Type__c.field-meta.xml +37 -0
  81. package/dist/force-app/main/default/objects/Agent__c/fields/Availability__c.field-meta.xml +37 -0
  82. package/dist/force-app/main/default/objects/Agent__c/fields/Emergency_Alt__c.field-meta.xml +11 -0
  83. package/dist/force-app/main/default/objects/Agent__c/fields/Language__c.field-meta.xml +42 -0
  84. package/dist/force-app/main/default/objects/Agent__c/fields/License_Expiry__c.field-meta.xml +11 -0
  85. package/dist/force-app/main/default/objects/Agent__c/fields/License_Number__c.field-meta.xml +14 -0
  86. package/dist/force-app/main/default/objects/Agent__c/fields/Office_Location__c.field-meta.xml +42 -0
  87. package/dist/force-app/main/default/objects/Agent__c/fields/Territory__c.field-meta.xml +42 -0
  88. package/dist/force-app/main/default/objects/Application__c/Application__c.object-meta.xml +67 -0
  89. package/dist/force-app/main/default/objects/Application__c/fields/Employment__c.field-meta.xml +10 -0
  90. package/dist/force-app/main/default/objects/Application__c/fields/Property__c.field-meta.xml +15 -0
  91. package/dist/force-app/main/default/objects/Application__c/fields/References__c.field-meta.xml +10 -0
  92. package/dist/force-app/main/default/objects/Application__c/fields/Start_Date__c.field-meta.xml +9 -0
  93. package/dist/force-app/main/default/objects/Application__c/fields/Status__c.field-meta.xml +47 -0
  94. package/dist/force-app/main/default/objects/Application__c/fields/User__c.field-meta.xml +15 -0
  95. package/dist/force-app/main/default/objects/KPI_Snapshot__c/KPI_Snapshot__c.object-meta.xml +65 -0
  96. package/dist/force-app/main/default/objects/KPI_Snapshot__c/fields/Previous_Month_Sales__c.field-meta.xml +12 -0
  97. package/dist/force-app/main/default/objects/KPI_Snapshot__c/fields/Sales_MoM_Change__c.field-meta.xml +18 -0
  98. package/dist/force-app/main/default/objects/KPI_Snapshot__c/fields/Snapshot_Date__c.field-meta.xml +10 -0
  99. package/dist/force-app/main/default/objects/KPI_Snapshot__c/fields/Total_Properties__c.field-meta.xml +13 -0
  100. package/dist/force-app/main/default/objects/KPI_Snapshot__c/fields/Total_Sales_Amount__c.field-meta.xml +12 -0
  101. package/dist/force-app/main/default/objects/KPI_Snapshot__c/fields/Total_Sales_Count__c.field-meta.xml +13 -0
  102. package/dist/force-app/main/default/objects/KPI_Snapshot__c/fields/Units_Available__c.field-meta.xml +13 -0
  103. package/dist/force-app/main/default/objects/KPI_Snapshot__c/fields/Units_Occupied__c.field-meta.xml +13 -0
  104. package/dist/force-app/main/default/objects/Lease__c/Lease__c.object-meta.xml +67 -0
  105. package/dist/force-app/main/default/objects/Lease__c/fields/End_Date__c.field-meta.xml +10 -0
  106. package/dist/force-app/main/default/objects/Lease__c/fields/Lease_Status__c.field-meta.xml +36 -0
  107. package/dist/force-app/main/default/objects/Lease__c/fields/Monthly_Rent__c.field-meta.xml +12 -0
  108. package/dist/force-app/main/default/objects/Lease__c/fields/Property__c.field-meta.xml +15 -0
  109. package/dist/force-app/main/default/objects/Lease__c/fields/Security_Deposit__c.field-meta.xml +12 -0
  110. package/dist/force-app/main/default/objects/Lease__c/fields/Start_Date__c.field-meta.xml +10 -0
  111. package/dist/force-app/main/default/objects/Lease__c/fields/Tenant__c.field-meta.xml +14 -0
  112. package/dist/force-app/main/default/objects/Lease__c/validationRules/End_Date_After_Start_Date.validationRule-meta.xml +10 -0
  113. package/dist/force-app/main/default/objects/Maintenance_Request__c/Maintenance_Request__c.object-meta.xml +73 -0
  114. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Actual_Cost__c.field-meta.xml +13 -0
  115. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Assigned_Worker__c.field-meta.xml +15 -0
  116. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Completed__c.field-meta.xml +11 -0
  117. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Description__c.field-meta.xml +12 -0
  118. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Est_Cost__c.field-meta.xml +13 -0
  119. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Priority__c.field-meta.xml +32 -0
  120. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Property__c.field-meta.xml +15 -0
  121. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Scheduled__c.field-meta.xml +11 -0
  122. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Status__c.field-meta.xml +42 -0
  123. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Tenant_Home__c.field-meta.xml +11 -0
  124. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Type__c.field-meta.xml +62 -0
  125. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/User__c.field-meta.xml +15 -0
  126. package/dist/force-app/main/default/objects/Maintenance_Worker__c/Maintenance_Worker__c.object-meta.xml +71 -0
  127. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/Certifications__c.field-meta.xml +12 -0
  128. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/Employment_Type__c.field-meta.xml +32 -0
  129. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/Hourly_Rate__c.field-meta.xml +13 -0
  130. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/IsActive__c.field-meta.xml +11 -0
  131. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/Location__c.field-meta.xml +13 -0
  132. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/Phone__c.field-meta.xml +11 -0
  133. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/Rating__c.field-meta.xml +14 -0
  134. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/Type__c.field-meta.xml +57 -0
  135. package/dist/force-app/main/default/objects/Notification__c/Notification__c.object-meta.xml +67 -0
  136. package/dist/force-app/main/default/objects/Notification__c/fields/Is_Read__c.field-meta.xml +10 -0
  137. package/dist/force-app/main/default/objects/Notification__c/fields/Message__c.field-meta.xml +11 -0
  138. package/dist/force-app/main/default/objects/Notification__c/fields/Priority__c.field-meta.xml +36 -0
  139. package/dist/force-app/main/default/objects/Notification__c/fields/Related_Object_Type__c.field-meta.xml +12 -0
  140. package/dist/force-app/main/default/objects/Notification__c/fields/Related_Record_Id__c.field-meta.xml +12 -0
  141. package/dist/force-app/main/default/objects/Notification__c/fields/Title__c.field-meta.xml +12 -0
  142. package/dist/force-app/main/default/objects/Notification__c/fields/Type__c.field-meta.xml +36 -0
  143. package/dist/force-app/main/default/objects/Notification__c/fields/User__c.field-meta.xml +14 -0
  144. package/dist/force-app/main/default/objects/Payment__c/Payment__c.object-meta.xml +67 -0
  145. package/dist/force-app/main/default/objects/Payment__c/fields/Amount__c.field-meta.xml +12 -0
  146. package/dist/force-app/main/default/objects/Payment__c/fields/Lease__c.field-meta.xml +15 -0
  147. package/dist/force-app/main/default/objects/Payment__c/fields/Notes__c.field-meta.xml +11 -0
  148. package/dist/force-app/main/default/objects/Payment__c/fields/Payment_Date__c.field-meta.xml +10 -0
  149. package/dist/force-app/main/default/objects/Payment__c/fields/Payment_Method__c.field-meta.xml +41 -0
  150. package/dist/force-app/main/default/objects/Payment__c/fields/Payment_Status__c.field-meta.xml +36 -0
  151. package/dist/force-app/main/default/objects/Property_Cost__c/Property_Cost__c.object-meta.xml +67 -0
  152. package/dist/force-app/main/default/objects/Property_Cost__c/fields/Cost_Amount__c.field-meta.xml +12 -0
  153. package/dist/force-app/main/default/objects/Property_Cost__c/fields/Cost_Category__c.field-meta.xml +56 -0
  154. package/dist/force-app/main/default/objects/Property_Cost__c/fields/Cost_Date__c.field-meta.xml +11 -0
  155. package/dist/force-app/main/default/objects/Property_Cost__c/fields/Description__c.field-meta.xml +12 -0
  156. package/dist/force-app/main/default/objects/Property_Cost__c/fields/Property__c.field-meta.xml +15 -0
  157. package/dist/force-app/main/default/objects/Property_Cost__c/fields/Vendor__c.field-meta.xml +12 -0
  158. package/dist/force-app/main/default/objects/Property_Cost__c/validationRules/Cost_Amount_Limit.validationRule-meta.xml +10 -0
  159. package/dist/force-app/main/default/objects/Property_Feature__c/Property_Feature__c.object-meta.xml +65 -0
  160. package/dist/force-app/main/default/objects/Property_Feature__c/fields/Description__c.field-meta.xml +11 -0
  161. package/dist/force-app/main/default/objects/Property_Feature__c/fields/Display_on_Listing__c.field-meta.xml +10 -0
  162. package/dist/force-app/main/default/objects/Property_Feature__c/fields/Feature_Category__c.field-meta.xml +51 -0
  163. package/dist/force-app/main/default/objects/Property_Feature__c/fields/Property__c.field-meta.xml +15 -0
  164. package/dist/force-app/main/default/objects/Property_Image__c/Property_Image__c.object-meta.xml +65 -0
  165. package/dist/force-app/main/default/objects/Property_Image__c/fields/Alt_Text__c.field-meta.xml +12 -0
  166. package/dist/force-app/main/default/objects/Property_Image__c/fields/Display_Order__c.field-meta.xml +13 -0
  167. package/dist/force-app/main/default/objects/Property_Image__c/fields/Image_Type__c.field-meta.xml +41 -0
  168. package/dist/force-app/main/default/objects/Property_Image__c/fields/Image_URL__c.field-meta.xml +10 -0
  169. package/dist/force-app/main/default/objects/Property_Image__c/fields/Property__c.field-meta.xml +15 -0
  170. package/dist/force-app/main/default/objects/Property_Listing__c/Property_Listing__c.object-meta.xml +65 -0
  171. package/dist/force-app/main/default/objects/Property_Listing__c/fields/Display_Order__c.field-meta.xml +13 -0
  172. package/dist/force-app/main/default/objects/Property_Listing__c/fields/Featured__c.field-meta.xml +10 -0
  173. package/dist/force-app/main/default/objects/Property_Listing__c/fields/Listing_Price__c.field-meta.xml +12 -0
  174. package/dist/force-app/main/default/objects/Property_Listing__c/fields/Listing_Status__c.field-meta.xml +41 -0
  175. package/dist/force-app/main/default/objects/Property_Listing__c/fields/Marketing_Description__c.field-meta.xml +11 -0
  176. package/dist/force-app/main/default/objects/Property_Listing__c/fields/Property__c.field-meta.xml +15 -0
  177. package/dist/force-app/main/default/objects/Property_Listing__c/fields/Short_Description__c.field-meta.xml +12 -0
  178. package/dist/force-app/main/default/objects/Property_Management_Company__c/Property_Management_Company__c.object-meta.xml +65 -0
  179. package/dist/force-app/main/default/objects/Property_Management_Company__c/fields/Active__c.field-meta.xml +10 -0
  180. package/dist/force-app/main/default/objects/Property_Management_Company__c/fields/Company_Code__c.field-meta.xml +13 -0
  181. package/dist/force-app/main/default/objects/Property_Management_Company__c/fields/Email__c.field-meta.xml +10 -0
  182. package/dist/force-app/main/default/objects/Property_Management_Company__c/fields/Phone__c.field-meta.xml +10 -0
  183. package/dist/force-app/main/default/objects/Property_Management_Company__c/fields/Primary_Contact__c.field-meta.xml +14 -0
  184. package/dist/force-app/main/default/objects/Property_Owner__c/Property_Owner__c.object-meta.xml +65 -0
  185. package/dist/force-app/main/default/objects/Property_Owner__c/fields/Address__c.field-meta.xml +10 -0
  186. package/dist/force-app/main/default/objects/Property_Owner__c/fields/Email__c.field-meta.xml +11 -0
  187. package/dist/force-app/main/default/objects/Property_Owner__c/fields/Phone__c.field-meta.xml +10 -0
  188. package/dist/force-app/main/default/objects/Property_Sale__c/Property_Sale__c.object-meta.xml +67 -0
  189. package/dist/force-app/main/default/objects/Property_Sale__c/fields/Buyer_Tenant__c.field-meta.xml +13 -0
  190. package/dist/force-app/main/default/objects/Property_Sale__c/fields/Payment_Method__c.field-meta.xml +41 -0
  191. package/dist/force-app/main/default/objects/Property_Sale__c/fields/Property__c.field-meta.xml +15 -0
  192. package/dist/force-app/main/default/objects/Property_Sale__c/fields/Reference_Number__c.field-meta.xml +12 -0
  193. package/dist/force-app/main/default/objects/Property_Sale__c/fields/Sale_Amount__c.field-meta.xml +12 -0
  194. package/dist/force-app/main/default/objects/Property_Sale__c/fields/Sale_Date__c.field-meta.xml +10 -0
  195. package/dist/force-app/main/default/objects/Property_Sale__c/fields/Sale_Status__c.field-meta.xml +36 -0
  196. package/dist/force-app/main/default/objects/Property_Sale__c/fields/Sale_Type__c.field-meta.xml +51 -0
  197. package/dist/force-app/main/default/objects/Property__c/Property__c.object-meta.xml +71 -0
  198. package/dist/force-app/main/default/objects/Property__c/fields/Address__c.field-meta.xml +13 -0
  199. package/dist/force-app/main/default/objects/Property__c/fields/Agent__c.field-meta.xml +15 -0
  200. package/dist/force-app/main/default/objects/Property__c/fields/Available_Date__c.field-meta.xml +11 -0
  201. package/dist/force-app/main/default/objects/Property__c/fields/Bathrooms__c.field-meta.xml +14 -0
  202. package/dist/force-app/main/default/objects/Property__c/fields/Bedrooms__c.field-meta.xml +14 -0
  203. package/dist/force-app/main/default/objects/Property__c/fields/Coordinates__c.field-meta.xml +12 -0
  204. package/dist/force-app/main/default/objects/Property__c/fields/Deposit__c.field-meta.xml +13 -0
  205. package/dist/force-app/main/default/objects/Property__c/fields/Description__c.field-meta.xml +12 -0
  206. package/dist/force-app/main/default/objects/Property__c/fields/Features__c.field-meta.xml +38 -0
  207. package/dist/force-app/main/default/objects/Property__c/fields/Hero_Image__c.field-meta.xml +11 -0
  208. package/dist/force-app/main/default/objects/Property__c/fields/Lease_Term__c.field-meta.xml +14 -0
  209. package/dist/force-app/main/default/objects/Property__c/fields/Monthly_Rent__c.field-meta.xml +13 -0
  210. package/dist/force-app/main/default/objects/Property__c/fields/Parking__c.field-meta.xml +14 -0
  211. package/dist/force-app/main/default/objects/Property__c/fields/Pet_Friendly__c.field-meta.xml +11 -0
  212. package/dist/force-app/main/default/objects/Property__c/fields/Sq_Ft__c.field-meta.xml +14 -0
  213. package/dist/force-app/main/default/objects/Property__c/fields/Status__c.field-meta.xml +37 -0
  214. package/dist/force-app/main/default/objects/Property__c/fields/Tour_URL__c.field-meta.xml +11 -0
  215. package/dist/force-app/main/default/objects/Property__c/fields/Type__c.field-meta.xml +37 -0
  216. package/dist/force-app/main/default/objects/Property__c/fields/Utilities__c.field-meta.xml +38 -0
  217. package/dist/force-app/main/default/objects/Property__c/fields/Year_Built__c.field-meta.xml +14 -0
  218. package/dist/force-app/main/default/objects/Tenant__c/Tenant__c.object-meta.xml +67 -0
  219. package/dist/force-app/main/default/objects/Tenant__c/fields/End_Date__c.field-meta.xml +11 -0
  220. package/dist/force-app/main/default/objects/Tenant__c/fields/Property__c.field-meta.xml +15 -0
  221. package/dist/force-app/main/default/objects/Tenant__c/fields/Start_Date__c.field-meta.xml +11 -0
  222. package/dist/force-app/main/default/objects/Tenant__c/fields/Status__c.field-meta.xml +37 -0
  223. package/dist/force-app/main/default/objects/Tenant__c/fields/User_Status__c.field-meta.xml +42 -0
  224. package/dist/force-app/main/default/objects/Tenant__c/fields/User__c.field-meta.xml +15 -0
  225. package/dist/force-app/main/default/package.xml +20 -0
  226. package/dist/force-app/main/default/permissionsets/Property_Management_Access.permissionset-meta.xml +633 -0
  227. package/dist/force-app/main/default/permissionsets/Tenant_Maintenance_Access.permissionset-meta.xml +137 -0
  228. package/dist/force-app/main/default/sites/propertyrentalapp.site-meta.xml +31 -0
  229. package/dist/force-app/main/default/triggers/MaintenanceRequestTrigger.trigger +5 -0
  230. package/dist/force-app/main/default/triggers/MaintenanceRequestTrigger.trigger-meta.xml +5 -0
  231. package/dist/force-app/main/default/triggers/TenantTrigger.trigger +8 -0
  232. package/dist/force-app/main/default/triggers/TenantTrigger.trigger-meta.xml +5 -0
  233. package/dist/force-app/main/default/uiBundles/propertyrentalapp/.forceignore +15 -0
  234. package/dist/force-app/main/default/uiBundles/propertyrentalapp/.graphqlrc.yml +2 -0
  235. package/dist/force-app/main/default/uiBundles/propertyrentalapp/.prettierignore +9 -0
  236. package/dist/force-app/main/default/uiBundles/propertyrentalapp/.prettierrc +11 -0
  237. package/dist/force-app/main/default/uiBundles/propertyrentalapp/CHANGELOG.md +10 -0
  238. package/dist/force-app/main/default/uiBundles/propertyrentalapp/README.md +35 -0
  239. package/dist/force-app/main/default/uiBundles/propertyrentalapp/codegen.yml +95 -0
  240. package/dist/force-app/main/default/uiBundles/propertyrentalapp/components.json +18 -0
  241. package/dist/force-app/main/default/uiBundles/propertyrentalapp/e2e/app.spec.ts +17 -0
  242. package/dist/force-app/main/default/uiBundles/propertyrentalapp/eslint.config.js +169 -0
  243. package/dist/force-app/main/default/uiBundles/propertyrentalapp/index.html +18 -0
  244. package/dist/force-app/main/default/uiBundles/propertyrentalapp/package.json +74 -0
  245. package/dist/force-app/main/default/uiBundles/propertyrentalapp/playwright.config.ts +24 -0
  246. package/dist/force-app/main/default/uiBundles/propertyrentalapp/propertyrentalapp.uibundle-meta.xml +8 -0
  247. package/dist/force-app/main/default/uiBundles/propertyrentalapp/scripts/get-graphql-schema.mjs +68 -0
  248. package/dist/force-app/main/default/uiBundles/propertyrentalapp/scripts/rewrite-e2e-assets.mjs +23 -0
  249. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/applications/applicationApi.ts +54 -0
  250. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/graphql-operations-types.ts +16005 -0
  251. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/graphqlClient.ts +25 -0
  252. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/leads/leadApi.ts +78 -0
  253. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/maintenanceRequests/maintenanceRequestApi.ts +74 -0
  254. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/maintenanceRequests/query/maintenanceRequests.graphql +60 -0
  255. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/properties/propertyDetailGraphQL.ts +75 -0
  256. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/properties/propertyNodeUtils.ts +29 -0
  257. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/properties/propertySearchService.ts +56 -0
  258. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/properties/query/distinctPropertyStatus.graphql +19 -0
  259. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/properties/query/distinctPropertyType.graphql +19 -0
  260. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/properties/query/listingById.graphql +29 -0
  261. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/properties/query/propertyAddressesByIds.graphql +17 -0
  262. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/properties/query/propertyDetailById.graphql +124 -0
  263. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/properties/query/searchProperties.graphql +85 -0
  264. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/query/tenantAccess.graphql +13 -0
  265. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/api/tenantApi.ts +12 -0
  266. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/app.tsx +43 -0
  267. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/appLayout.tsx +24 -0
  268. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/assets/icons/appliances.svg +13 -0
  269. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/assets/icons/book.svg +3 -0
  270. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/assets/icons/copy.svg +4 -0
  271. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/assets/icons/electrical.svg +39 -0
  272. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/assets/icons/hvac.svg +78 -0
  273. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/assets/icons/pest.svg +5 -0
  274. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/assets/icons/plumbing.svg +7 -0
  275. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/assets/icons/rocket.svg +3 -0
  276. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/assets/icons/star.svg +3 -0
  277. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/assets/icons/zen-logo.svg +5 -0
  278. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/assets/images/codey-1.png +0 -0
  279. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/assets/images/codey-2.png +0 -0
  280. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/assets/images/codey-3.png +0 -0
  281. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/assets/images/vibe-codey.svg +194 -0
  282. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/SkeletonPrimitives.tsx +36 -0
  283. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/alerts/status-alert.tsx +49 -0
  284. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/dashboard/WeatherWidget.tsx +235 -0
  285. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/layout/TopBar.tsx +133 -0
  286. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/layout/VerticalNav.tsx +97 -0
  287. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/layouts/card-layout.tsx +29 -0
  288. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/maintenanceRequests/MaintenanceRequestIcon.tsx +46 -0
  289. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/maintenanceRequests/MaintenanceRequestList.tsx +52 -0
  290. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/maintenanceRequests/MaintenanceRequestListItem.tsx +74 -0
  291. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/maintenanceRequests/MaintenanceSummaryDetailsModal.tsx +92 -0
  292. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/maintenanceRequests/StatusBadge.tsx +36 -0
  293. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/properties/PropertyListingCard.tsx +178 -0
  294. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/properties/PropertyMap.tsx +186 -0
  295. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/properties/PropertySearchFilters.tsx +315 -0
  296. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/alert.tsx +76 -0
  297. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/badge.tsx +48 -0
  298. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/breadcrumb.tsx +109 -0
  299. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/button.tsx +67 -0
  300. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/calendar.tsx +232 -0
  301. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/card.tsx +103 -0
  302. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/checkbox.tsx +32 -0
  303. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/collapsible.tsx +33 -0
  304. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/datePicker.tsx +127 -0
  305. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/dialog.tsx +162 -0
  306. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/field.tsx +237 -0
  307. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/index.ts +84 -0
  308. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/input.tsx +19 -0
  309. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/label.tsx +22 -0
  310. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/pagination.tsx +132 -0
  311. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/popover.tsx +89 -0
  312. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/select.tsx +193 -0
  313. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/separator.tsx +26 -0
  314. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/skeleton.tsx +14 -0
  315. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/sonner.tsx +20 -0
  316. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/spinner.tsx +16 -0
  317. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/table.tsx +114 -0
  318. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/components/ui/tabs.tsx +88 -0
  319. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/api/userProfileApi.ts +95 -0
  320. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/authHelpers.ts +73 -0
  321. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/authenticationConfig.ts +61 -0
  322. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/context/AuthContext.tsx +95 -0
  323. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/footers/footer-link.tsx +36 -0
  324. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/forms/auth-form.tsx +81 -0
  325. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/forms/submit-button.tsx +49 -0
  326. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/hooks/form.tsx +120 -0
  327. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/hooks/useCountdownTimer.ts +266 -0
  328. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/hooks/useRetryWithBackoff.ts +109 -0
  329. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/layout/card-skeleton.tsx +38 -0
  330. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/layout/centered-page-layout.tsx +87 -0
  331. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/layouts/AuthAppLayout.tsx +12 -0
  332. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/layouts/TenantRoute.tsx +22 -0
  333. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/layouts/authenticationRouteLayout.tsx +21 -0
  334. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/layouts/privateRouteLayout.tsx +44 -0
  335. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/pages/ChangePassword.tsx +107 -0
  336. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/pages/ForgotPassword.tsx +73 -0
  337. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/pages/Login.tsx +97 -0
  338. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/pages/Profile.tsx +161 -0
  339. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/pages/Register.tsx +133 -0
  340. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/pages/ResetPassword.tsx +107 -0
  341. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/sessionTimeout/SessionTimeoutValidator.tsx +602 -0
  342. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/sessionTimeout/sessionTimeService.ts +149 -0
  343. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/sessionTimeout/sessionTimeoutConfig.ts +77 -0
  344. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/authentication/utils/helpers.ts +121 -0
  345. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/__examples__/api/accountSearchService.ts +46 -0
  346. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/__examples__/api/query/distinctAccountIndustries.graphql +19 -0
  347. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/__examples__/api/query/distinctAccountTypes.graphql +19 -0
  348. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/__examples__/api/query/getAccountDetail.graphql +121 -0
  349. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/__examples__/api/query/searchAccounts.graphql +51 -0
  350. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/__examples__/pages/AccountObjectDetailPage.tsx +357 -0
  351. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/__examples__/pages/AccountSearch.tsx +312 -0
  352. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/__examples__/pages/Home.tsx +34 -0
  353. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/api/objectSearchService.ts +84 -0
  354. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/components/ActiveFilters.tsx +89 -0
  355. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/components/FilterContext.tsx +83 -0
  356. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/components/ObjectBreadcrumb.tsx +66 -0
  357. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/components/PaginationControls.tsx +109 -0
  358. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/components/SearchBar.tsx +41 -0
  359. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/components/SortControl.tsx +143 -0
  360. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/components/filters/BooleanFilter.tsx +78 -0
  361. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/components/filters/DateFilter.tsx +128 -0
  362. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/components/filters/DateRangeFilter.tsx +70 -0
  363. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/components/filters/FilterFieldWrapper.tsx +33 -0
  364. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/components/filters/MultiSelectFilter.tsx +97 -0
  365. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/components/filters/NumericRangeFilter.tsx +163 -0
  366. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/components/filters/SearchFilter.tsx +50 -0
  367. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/components/filters/SelectFilter.tsx +97 -0
  368. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/components/filters/TextFilter.tsx +91 -0
  369. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/hooks/useAsyncData.ts +54 -0
  370. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/hooks/useCachedAsyncData.ts +184 -0
  371. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/hooks/useDebouncedCallback.ts +34 -0
  372. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/hooks/useObjectSearchParams.ts +252 -0
  373. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/utils/debounce.ts +25 -0
  374. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/utils/fieldUtils.ts +29 -0
  375. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/utils/filterUtils.ts +395 -0
  376. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/features/object-search/utils/sortUtils.ts +38 -0
  377. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/hooks/useGeocode.ts +33 -0
  378. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/hooks/useMaintenanceRequests.ts +43 -0
  379. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/hooks/usePropertyDetail.ts +63 -0
  380. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/hooks/usePropertyMapMarkers.ts +181 -0
  381. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/hooks/useTenantAccess.ts +38 -0
  382. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/hooks/useWeather.ts +311 -0
  383. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/lib/utils.ts +6 -0
  384. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/navigationMenu.tsx +80 -0
  385. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/pages/Application.tsx +235 -0
  386. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/pages/Contact.tsx +247 -0
  387. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/pages/Dashboard.tsx +45 -0
  388. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/pages/Home.tsx +507 -0
  389. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/pages/Maintenance.tsx +330 -0
  390. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/pages/NotFound.tsx +14 -0
  391. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/pages/PropertyDetails.tsx +356 -0
  392. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/pages/PropertySearch.tsx +472 -0
  393. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/pages/PropertySearchPlaceholder.tsx +49 -0
  394. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-01.jpg +0 -0
  395. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-02.jpg +0 -0
  396. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-03.jpg +0 -0
  397. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-04.jpg +0 -0
  398. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-05.jpg +0 -0
  399. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-06.jpg +0 -0
  400. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-07.jpg +0 -0
  401. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-08.jpg +0 -0
  402. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-09.jpg +0 -0
  403. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-10.jpg +0 -0
  404. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-11.jpg +0 -0
  405. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-12.jpg +0 -0
  406. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-13.jpg +0 -0
  407. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-14.jpg +0 -0
  408. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-15.jpg +0 -0
  409. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-16.jpg +0 -0
  410. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-17.jpg +0 -0
  411. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-18.jpg +0 -0
  412. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-19.jpg +0 -0
  413. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-20.jpg +0 -0
  414. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-21.jpg +0 -0
  415. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-22.jpg +0 -0
  416. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-23.jpg +0 -0
  417. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-24.jpg +0 -0
  418. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/public/property-25.jpg +0 -0
  419. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/router-utils.tsx +35 -0
  420. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/routes.tsx +130 -0
  421. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/styles/global.css +229 -0
  422. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/types/leaflet.d.ts +17 -0
  423. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/types/searchResults.ts +229 -0
  424. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/utils/geocode.ts +90 -0
  425. package/dist/force-app/main/default/uiBundles/propertyrentalapp/src/utils/propertyListingPaginationUtils.ts +18 -0
  426. package/dist/force-app/main/default/uiBundles/propertyrentalapp/tsconfig.json +42 -0
  427. package/dist/force-app/main/default/uiBundles/propertyrentalapp/tsconfig.node.json +13 -0
  428. package/dist/force-app/main/default/uiBundles/propertyrentalapp/ui-bundle.json +7 -0
  429. package/dist/force-app/main/default/uiBundles/propertyrentalapp/vite-env.d.ts +1 -0
  430. package/dist/force-app/main/default/uiBundles/propertyrentalapp/vite.config.ts +106 -0
  431. package/dist/force-app/main/default/uiBundles/propertyrentalapp/vitest-env.d.ts +2 -0
  432. package/dist/force-app/main/default/uiBundles/propertyrentalapp/vitest.config.ts +11 -0
  433. package/dist/force-app/main/default/uiBundles/propertyrentalapp/vitest.setup.ts +1 -0
  434. package/dist/jest.config.js +6 -0
  435. package/dist/package-lock.json +9995 -0
  436. package/dist/package.json +40 -0
  437. package/dist/scripts/apex/hello.apex +10 -0
  438. package/dist/scripts/graphql-search.sh +191 -0
  439. package/dist/scripts/prepare-import-unique-fields.js +122 -0
  440. package/dist/scripts/setup-cli.mjs +563 -0
  441. package/dist/scripts/sf-project-setup.mjs +66 -0
  442. package/dist/scripts/soql/account.soql +6 -0
  443. package/dist/sfdx-project.json +12 -0
  444. package/package.json +43 -0
@@ -0,0 +1,149 @@
1
+ /**
2
+ * SessionTimeServlet API service
3
+ * Handles communication with the session validation endpoint
4
+ */
5
+
6
+ import { SESSION_CONFIG } from "./sessionTimeoutConfig";
7
+
8
+ /**
9
+ * Response from SessionTimeServlet API
10
+ */
11
+ export interface SessionResponse {
12
+ /** Session phase */
13
+ sp: number;
14
+ /** Seconds remaining in session */
15
+ sr: number;
16
+ }
17
+
18
+ /**
19
+ * Parse the servlet response text into SessionResponse object
20
+ * Handles CSRF protection prefix
21
+ *
22
+ * @param text - Raw response text from servlet
23
+ * @returns Parsed session response, or undefined if parsing fails
24
+ */
25
+ function parseResponseResult(text: string): SessionResponse | undefined {
26
+ let cleanedText = text;
27
+
28
+ // Strip CSRF protection prefix if present
29
+ if (cleanedText.startsWith(SESSION_CONFIG.CSRF_TOKEN)) {
30
+ cleanedText = cleanedText.substring(SESSION_CONFIG.CSRF_TOKEN.length);
31
+ }
32
+
33
+ // Trim whitespace
34
+ cleanedText = cleanedText.trim();
35
+
36
+ try {
37
+ const parsed = JSON.parse(cleanedText) as SessionResponse;
38
+
39
+ // Validate response structure
40
+ if (typeof parsed.sp !== "number" || typeof parsed.sr !== "number") {
41
+ throw new Error("Invalid response structure: missing sp or sr properties");
42
+ }
43
+
44
+ return parsed;
45
+ } catch (error) {
46
+ console.error("[sessionTimeService] Failed to parse response:", error, "Text:", cleanedText);
47
+ }
48
+ }
49
+
50
+ /**
51
+ * Call SessionTimeServlet API
52
+ * Internal function used by both poll and extend functions.
53
+ * Returns undefined on any failure so the session timeout feature
54
+ * never crashes the running application.
55
+ *
56
+ * @param basePath - Community base path (e.g., "/sfsites/c/")
57
+ * @param extend - Whether to extend the session (updateTimedOutSession param)
58
+ * @returns Session response with remaining time, or undefined on failure
59
+ */
60
+ async function callSessionTimeServlet(
61
+ basePath: string,
62
+ extend: boolean = false,
63
+ ): Promise<SessionResponse | undefined> {
64
+ // Build URL with cache-busting timestamp
65
+ const timestamp = Date.now();
66
+ let url = `${basePath}${SESSION_CONFIG.SERVLET_URL}?buster=${timestamp}`;
67
+
68
+ if (extend) {
69
+ url += "&updateTimedOutSession=true";
70
+ }
71
+
72
+ try {
73
+ const response = await fetch(url, {
74
+ method: "GET",
75
+ credentials: "same-origin",
76
+ cache: "no-cache",
77
+ headers: {
78
+ "X-Requested-With": "XMLHttpRequest",
79
+ },
80
+ });
81
+
82
+ if (!response.ok) {
83
+ console.error(`[sessionTimeService] HTTP ${response.status}: ${response.statusText}`);
84
+ return undefined;
85
+ }
86
+
87
+ const contentType = response.headers.get("content-type");
88
+ if (contentType && !contentType.includes("text") && !contentType.includes("json")) {
89
+ console.error(`[sessionTimeService] Unexpected content type: ${contentType}`);
90
+ return undefined;
91
+ }
92
+
93
+ const text = await response.text();
94
+ const parsed = parseResponseResult(text);
95
+ if (!parsed) {
96
+ return undefined;
97
+ }
98
+
99
+ return {
100
+ sp: parsed.sp,
101
+ sr: Math.max(0, parsed.sr - SESSION_CONFIG.LATENCY_BUFFER_SECONDS),
102
+ };
103
+ } catch (error) {
104
+ console.error("[sessionTimeService] API call failed:", error);
105
+ return undefined;
106
+ }
107
+ }
108
+
109
+ /**
110
+ * Poll SessionTimeServlet to check remaining session time
111
+ * Called periodically to monitor session status
112
+ *
113
+ * @param basePath - Community base path (e.g., "/sfsites/c/")
114
+ * @returns Session response with remaining time, or undefined on failure
115
+ *
116
+ * @example
117
+ * const response = await pollSessionTimeServlet('/sfsites/c/');
118
+ * if (response && response.sr <= 300) {
119
+ * showWarning();
120
+ * }
121
+ */
122
+ export async function pollSessionTimeServlet(
123
+ basePath: string,
124
+ ): Promise<SessionResponse | undefined> {
125
+ return callSessionTimeServlet(basePath, false);
126
+ }
127
+
128
+ /**
129
+ * Extend the current session time
130
+ * Called when user clicks "Continue Working" in warning modal
131
+ *
132
+ * @param basePath - Community base path (e.g., "/sfsites/c/")
133
+ * @returns Session response with new remaining time, or undefined on failure
134
+ *
135
+ * @example
136
+ * const response = await extendSessionTime('/sfsites/c/');
137
+ * if (response) {
138
+ * console.log(`Session extended. ${response.sr} seconds remaining.`);
139
+ * }
140
+ */
141
+ export async function extendSessionTime(basePath: string): Promise<SessionResponse | undefined> {
142
+ return callSessionTimeServlet(basePath, true);
143
+ }
144
+
145
+ /**
146
+ * Export parseResponseResult for testing purposes
147
+ * @internal
148
+ */
149
+ export { parseResponseResult };
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Configuration constants for session timeout monitoring
3
+ */
4
+
5
+ // ============================================================================
6
+ // Retry Configuration
7
+ // ============================================================================
8
+
9
+ /** Initial delay for first retry attempt (2 seconds) */
10
+ export const INITIAL_RETRY_DELAY = 2000;
11
+
12
+ /** Maximum number of retry attempts before giving up */
13
+ export const MAX_RETRY_ATTEMPTS = 10;
14
+
15
+ /** Maximum retry delay (30 minutes) */
16
+ export const MAX_RETRY_DELAY = 30 * 60 * 1000;
17
+
18
+ // ============================================================================
19
+ // Session Storage Keys
20
+ // ============================================================================
21
+
22
+ /** sessionStorage keys used by session validator */
23
+ export const STORAGE_KEYS = {
24
+ /** Flag to show session expired message on login page */
25
+ SHOW_SESSION_MESSAGE: "lwrSessionValidator.showSessionMessage",
26
+ } as const;
27
+
28
+ // ============================================================================
29
+ // Servlet Configuration
30
+ // ============================================================================
31
+
32
+ /** SessionTimeServlet configuration */
33
+ export const SESSION_CONFIG = {
34
+ /** Relative URL to SessionTimeServlet */
35
+ SERVLET_URL: "/sfsites/c/_nc_external/system/security/session/SessionTimeServlet",
36
+
37
+ /** Latency buffer to subtract from server response (seconds) */
38
+ LATENCY_BUFFER_SECONDS: 3,
39
+
40
+ /** CSRF protection prefix in servlet responses */
41
+ CSRF_TOKEN: "while(1);\n",
42
+ } as const;
43
+
44
+ // ============================================================================
45
+ // UI Labels
46
+ // ============================================================================
47
+
48
+ /**
49
+ * UI labels for session timeout components
50
+ */
51
+ export const LABELS = {
52
+ /** Title for session warning modal */
53
+ sessionWarningTitle: "Session Timeout Warning",
54
+
55
+ /** Message text in session warning modal */
56
+ sessionWarningMessage:
57
+ "For security, we log you out if you’re inactive for too long. To continue working, click Continue before the time expires.",
58
+
59
+ /** Text for "Continue" button */
60
+ continueButton: "Continue",
61
+
62
+ /** Text for "Log Out" button */
63
+ logoutButton: "Log Out",
64
+
65
+ /** Message shown on login page after session expires */
66
+ invalidSessionMessage: "Your session has expired. Please log in again.",
67
+
68
+ /** Accessibility label for close button */
69
+ closeLabel: "Close",
70
+ } as const;
71
+
72
+ // ============================================================================
73
+ // Session Timeout Configuration
74
+ // ============================================================================
75
+
76
+ /** Session warning time in seconds (30 seconds) */
77
+ export const SESSION_WARNING_TIME = 30;
@@ -0,0 +1,121 @@
1
+ /**
2
+ * MAINTAINABILITY: Robust error extraction.
3
+ * Handles strings, objects, and standard Error instances.
4
+ *
5
+ * @param err - The error object (unknown type)
6
+ * @param fallback - Fallback message if error doesn't have a message property
7
+ * @returns The error message string
8
+ */
9
+ export function getErrorMessage(err: unknown, fallback: string): string {
10
+ if (err instanceof Error) return err.message;
11
+ if (typeof err === "string") return err;
12
+ // Check if it's an object with a message property
13
+ if (typeof err === "object" && err !== null && "message" in err) {
14
+ return String((err as { message: unknown }).message);
15
+ }
16
+ return fallback;
17
+ }
18
+
19
+ /**
20
+ * [Dev Note] Helper to parse the fetch Response.
21
+ * It handles the distinction between success (JSON) and failure (throwing Error).
22
+ */
23
+ export async function handleApiResponse<T = unknown>(
24
+ response: Response,
25
+ fallbackError: string,
26
+ ): Promise<T> {
27
+ // 1. Robustness: Handle 204 No Content gracefully
28
+ if (response.status === 204) {
29
+ return {} as T;
30
+ }
31
+
32
+ let data: any = null;
33
+
34
+ const contentType = response.headers.get("content-type");
35
+ if (contentType?.includes("application/json")) {
36
+ data = await response.json();
37
+ } else {
38
+ // [Dev Note] If Salesforce returns HTML (e.g. standard error page),
39
+ // we consume text to avoid parsing errors.
40
+ await response.text();
41
+ }
42
+
43
+ if (!response.ok) {
44
+ // [Dev Note] Throwing here allows the calling component to catch and
45
+ // display the error via getErrorMessage()
46
+ throw new Error(parseApiResponseError(data, fallbackError));
47
+ }
48
+
49
+ return data as T;
50
+ }
51
+
52
+ /**
53
+ * UI API Record response structure.
54
+ */
55
+ export type RecordResponse = {
56
+ fields: Record<
57
+ string,
58
+ {
59
+ value: string;
60
+ }
61
+ >;
62
+ };
63
+
64
+ /**
65
+ * [Dev Note] GraphQL can return a complex nested structure.
66
+ * This helper flattens it to a simple object for easier form binding.
67
+ *
68
+ * @param data - Extracted payload from the GraphQL response.
69
+ * @param fallbackError - Fallback error message if data is null/undefined or not an object.
70
+ * @throws {Error} If data is not valid.
71
+ * @returns Flattened object with values mapped directly to the fields.
72
+ */
73
+ export function flattenGraphQLRecord<T>(
74
+ data: any,
75
+ fallbackError: string = "An unknown error occurred",
76
+ ): T {
77
+ if (!data || typeof data !== "object") {
78
+ throw new Error(fallbackError);
79
+ }
80
+
81
+ return Object.fromEntries(
82
+ Object.entries(data).map(([key, field]) => [
83
+ key,
84
+ field !== null && typeof field === "object" && "value" in field
85
+ ? (field as { value: unknown }).value
86
+ : (field ?? null),
87
+ ]),
88
+ ) as T;
89
+ }
90
+
91
+ /**
92
+ * [Dev Note] Salesforce APIs may return errors as an array or a single object.
93
+ * This helper standardizes the extraction of the error message string.
94
+ *
95
+ * @param data - The response data.
96
+ * @param fallbackError - Fallback error message if response doesn't have a message property
97
+ * @returns The error message string
98
+ */
99
+ function parseApiResponseError(
100
+ data: any,
101
+ fallbackError: string = "An unknown error occurred",
102
+ ): string {
103
+ if (data?.message) {
104
+ return data.message;
105
+ }
106
+ if (data?.error) {
107
+ return data.error;
108
+ }
109
+ if (data?.errors && Array.isArray(data.errors) && data.errors.length > 0) {
110
+ return data.errors.join(" ") || fallbackError;
111
+ }
112
+ if (Array.isArray(data) && data.length > 0) {
113
+ return (
114
+ data
115
+ .map((e) => e?.message)
116
+ .filter(Boolean)
117
+ .join(" ") || fallbackError
118
+ );
119
+ }
120
+ return fallbackError;
121
+ }
@@ -0,0 +1,46 @@
1
+ import SEARCH_ACCOUNTS_QUERY from "./query/searchAccounts.graphql?raw";
2
+ import DISTINCT_INDUSTRIES_QUERY from "./query/distinctAccountIndustries.graphql?raw";
3
+ import DISTINCT_TYPES_QUERY from "./query/distinctAccountTypes.graphql?raw";
4
+ import {
5
+ searchObjects,
6
+ fetchDistinctValues,
7
+ type ObjectSearchOptions,
8
+ type PicklistOption,
9
+ } from "../../api/objectSearchService";
10
+ import type {
11
+ SearchAccountsQuery,
12
+ SearchAccountsQueryVariables,
13
+ DistinctAccountIndustriesQuery,
14
+ DistinctAccountTypesQuery,
15
+ } from "../../../../api/graphql-operations-types";
16
+
17
+ export type AccountSearchResult = NonNullable<SearchAccountsQuery["uiapi"]["query"]["Account"]>;
18
+
19
+ export type AccountSearchOptions = ObjectSearchOptions<
20
+ SearchAccountsQueryVariables["where"],
21
+ SearchAccountsQueryVariables["orderBy"]
22
+ >;
23
+
24
+ export type { PicklistOption };
25
+
26
+ export async function searchAccounts(
27
+ options: AccountSearchOptions = {},
28
+ ): Promise<AccountSearchResult> {
29
+ return searchObjects<AccountSearchResult, SearchAccountsQuery, SearchAccountsQueryVariables>(
30
+ SEARCH_ACCOUNTS_QUERY,
31
+ "Account",
32
+ options,
33
+ );
34
+ }
35
+
36
+ export async function fetchDistinctIndustries(): Promise<PicklistOption[]> {
37
+ return fetchDistinctValues<DistinctAccountIndustriesQuery>(
38
+ DISTINCT_INDUSTRIES_QUERY,
39
+ "Account",
40
+ "Industry",
41
+ );
42
+ }
43
+
44
+ export async function fetchDistinctTypes(): Promise<PicklistOption[]> {
45
+ return fetchDistinctValues<DistinctAccountTypesQuery>(DISTINCT_TYPES_QUERY, "Account", "Type");
46
+ }
@@ -0,0 +1,19 @@
1
+ query DistinctAccountIndustries {
2
+ uiapi {
3
+ aggregate {
4
+ Account(groupBy: { Industry: { group: true } }) {
5
+ edges {
6
+ node {
7
+ aggregate @optional {
8
+ Industry @optional {
9
+ value
10
+ displayValue
11
+ label
12
+ }
13
+ }
14
+ }
15
+ }
16
+ }
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ query DistinctAccountTypes {
2
+ uiapi {
3
+ aggregate {
4
+ Account(groupBy: { Type: { group: true } }) {
5
+ edges {
6
+ node {
7
+ aggregate @optional {
8
+ Type @optional {
9
+ value
10
+ displayValue
11
+ label
12
+ }
13
+ }
14
+ }
15
+ }
16
+ }
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,121 @@
1
+ query GetAccountDetail($id: ID!) {
2
+ uiapi {
3
+ query {
4
+ Account(where: { Id: { eq: $id } }) {
5
+ edges {
6
+ node {
7
+ Id
8
+ Name @optional {
9
+ value
10
+ displayValue
11
+ }
12
+ Owner @optional {
13
+ Name @optional {
14
+ value
15
+ displayValue
16
+ }
17
+ }
18
+ Phone @optional {
19
+ value
20
+ displayValue
21
+ }
22
+ Fax @optional {
23
+ value
24
+ displayValue
25
+ }
26
+ Parent @optional {
27
+ Name @optional {
28
+ value
29
+ displayValue
30
+ }
31
+ }
32
+ Website @optional {
33
+ value
34
+ displayValue
35
+ }
36
+ Type @optional {
37
+ value
38
+ displayValue
39
+ }
40
+ NumberOfEmployees @optional {
41
+ value
42
+ displayValue
43
+ }
44
+ Industry @optional {
45
+ value
46
+ displayValue
47
+ }
48
+ AnnualRevenue @optional {
49
+ value
50
+ displayValue
51
+ }
52
+ Description @optional {
53
+ value
54
+ displayValue
55
+ }
56
+ BillingStreet @optional {
57
+ value
58
+ displayValue
59
+ }
60
+ BillingCity @optional {
61
+ value
62
+ displayValue
63
+ }
64
+ BillingState @optional {
65
+ value
66
+ displayValue
67
+ }
68
+ BillingPostalCode @optional {
69
+ value
70
+ displayValue
71
+ }
72
+ BillingCountry @optional {
73
+ value
74
+ displayValue
75
+ }
76
+ ShippingStreet @optional {
77
+ value
78
+ displayValue
79
+ }
80
+ ShippingCity @optional {
81
+ value
82
+ displayValue
83
+ }
84
+ ShippingState @optional {
85
+ value
86
+ displayValue
87
+ }
88
+ ShippingPostalCode @optional {
89
+ value
90
+ displayValue
91
+ }
92
+ ShippingCountry @optional {
93
+ value
94
+ displayValue
95
+ }
96
+ CreatedBy @optional {
97
+ Name @optional {
98
+ value
99
+ displayValue
100
+ }
101
+ }
102
+ CreatedDate @optional {
103
+ value
104
+ displayValue
105
+ }
106
+ LastModifiedBy @optional {
107
+ Name @optional {
108
+ value
109
+ displayValue
110
+ }
111
+ }
112
+ LastModifiedDate @optional {
113
+ value
114
+ displayValue
115
+ }
116
+ }
117
+ }
118
+ }
119
+ }
120
+ }
121
+ }
@@ -0,0 +1,51 @@
1
+ query SearchAccounts(
2
+ $first: Int
3
+ $after: String
4
+ $where: Account_Filter
5
+ $orderBy: Account_OrderBy
6
+ ) {
7
+ uiapi {
8
+ query {
9
+ Account(first: $first, after: $after, where: $where, orderBy: $orderBy) {
10
+ edges {
11
+ node {
12
+ Id
13
+ Name @optional {
14
+ value
15
+ displayValue
16
+ }
17
+ Industry @optional {
18
+ value
19
+ displayValue
20
+ }
21
+ Type @optional {
22
+ value
23
+ displayValue
24
+ }
25
+ Phone @optional {
26
+ value
27
+ displayValue
28
+ }
29
+ Owner @optional {
30
+ Name @optional {
31
+ value
32
+ displayValue
33
+ }
34
+ }
35
+ AnnualRevenue @optional {
36
+ value
37
+ displayValue
38
+ }
39
+ }
40
+ }
41
+ pageInfo {
42
+ hasNextPage
43
+ hasPreviousPage
44
+ endCursor
45
+ startCursor
46
+ }
47
+ totalCount
48
+ }
49
+ }
50
+ }
51
+ }