@salesforce/webapp-template-app-react-sample-b2e-experimental 1.74.0 → 1.75.1

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 (46) hide show
  1. package/dist/CHANGELOG.md +16 -0
  2. package/dist/force-app/main/default/webapplications/appreactsampleb2e/package.json +5 -5
  3. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/api/applications.ts +3 -3
  4. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/api/dashboard.ts +1 -1
  5. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/api/graphql-operations-types.ts +329 -0
  6. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/api/maintenance.ts +1 -1
  7. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/api/properties.ts +1 -4
  8. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ApplicationCard.tsx +2 -2
  9. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ApplicationDetailsModal.tsx +1 -1
  10. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/FiltersFromApi.tsx +4 -6
  11. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/IssuesDonutChart.tsx +1 -1
  12. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/MaintenanceDetailsModal.tsx +1 -1
  13. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/MaintenanceRequestCard.tsx +2 -2
  14. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/MaintenanceTable.tsx +2 -2
  15. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/PropertyDetailsModal.tsx +1 -1
  16. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/StatCard.tsx +1 -1
  17. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/dashboard/GlobalSearchBar.tsx +2 -2
  18. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/filters/FilterFieldRange.tsx +1 -1
  19. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/filters/FilterFieldSelect.tsx +2 -2
  20. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/filters/FilterFieldText.tsx +1 -1
  21. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/filters/ListPageFilterRow.tsx +1 -1
  22. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/list/ListPageWithFilters.tsx +1 -1
  23. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/features/global-search/components/detail/DetailForm.tsx +1 -1
  24. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/features/global-search/components/search/GlobalSearchInput.tsx +1 -1
  25. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/features/global-search/components/search/SearchResultCard.tsx +1 -1
  26. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/features/global-search/pages/DetailPage.tsx +1 -1
  27. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/features/global-search/pages/GlobalSearch.tsx +1 -1
  28. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/hooks/useListPage.ts +3 -5
  29. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/index.ts +4 -8
  30. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/lib/applicationColumns.ts +1 -1
  31. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/lib/filterUtils.ts +3 -5
  32. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/lib/listFilters.ts +1 -1
  33. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/lib/listPageConfig.ts +1 -1
  34. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/lib/maintenanceColumns.ts +1 -1
  35. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/lib/maintenanceWorkerColumns.ts +1 -1
  36. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/lib/propertyColumns.ts +1 -1
  37. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/pages/Home.tsx +3 -5
  38. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/pages/Properties.tsx +4 -5
  39. package/dist/package.json +1 -1
  40. package/package.json +3 -3
  41. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/features/global-search/api/index.ts +0 -19
  42. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/features/global-search/components/detail/formatted/index.ts +0 -6
  43. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/features/global-search/hooks/index.ts +0 -22
  44. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/features/global-search/types/index.ts +0 -5
  45. package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/features/global-search/utils/index.ts +0 -59
  46. /package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/{constants.ts → features/global-search/constants.ts} +0 -0
package/dist/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.75.1](https://github.com/salesforce-experience-platform-emu/webapps/compare/v1.75.0...v1.75.1) (2026-03-05)
7
+
8
+ **Note:** Version bump only for package @salesforce/webapp-template-base-sfdx-project-experimental
9
+
10
+
11
+
12
+
13
+
14
+ # [1.75.0](https://github.com/salesforce-experience-platform-emu/webapps/compare/v1.74.0...v1.75.0) (2026-03-05)
15
+
16
+ **Note:** Version bump only for package @salesforce/webapp-template-base-sfdx-project-experimental
17
+
18
+
19
+
20
+
21
+
6
22
  # [1.74.0](https://github.com/salesforce-experience-platform-emu/webapps/compare/v1.73.1...v1.74.0) (2026-03-05)
7
23
 
8
24
  **Note:** Version bump only for package @salesforce/webapp-template-base-sfdx-project-experimental
@@ -15,9 +15,9 @@
15
15
  "graphql:schema": "node scripts/get-graphql-schema.mjs"
16
16
  },
17
17
  "dependencies": {
18
- "@salesforce/agentforce-conversation-client": "^1.74.0",
19
- "@salesforce/sdk-data": "^1.74.0",
20
- "@salesforce/webapp-experimental": "^1.74.0",
18
+ "@salesforce/agentforce-conversation-client": "^1.75.1",
19
+ "@salesforce/sdk-data": "^1.75.1",
20
+ "@salesforce/webapp-experimental": "^1.75.1",
21
21
  "@tailwindcss/vite": "^4.1.17",
22
22
  "@tanstack/react-form": "^1.28.4",
23
23
  "class-variance-authority": "^0.7.1",
@@ -29,7 +29,7 @@
29
29
  "react-dom": "^19.2.0",
30
30
  "react-router": "^7.10.1",
31
31
  "shadcn": "^3.8.5",
32
- "tailwind-merge": "^3.4.0",
32
+ "tailwind-merge": "^3.5.0",
33
33
  "tailwindcss": "^4.1.17",
34
34
  "tw-animate-css": "^1.4.0",
35
35
  "zod": "^4.3.6"
@@ -42,7 +42,7 @@
42
42
  "@graphql-eslint/eslint-plugin": "^4.1.0",
43
43
  "@graphql-tools/utils": "^11.0.0",
44
44
  "@playwright/test": "^1.49.0",
45
- "@salesforce/vite-plugin-webapp-experimental": "^1.74.0",
45
+ "@salesforce/vite-plugin-webapp-experimental": "^1.75.1",
46
46
  "@testing-library/jest-dom": "^6.6.3",
47
47
  "@testing-library/react": "^16.1.0",
48
48
  "@testing-library/user-event": "^14.5.2",
@@ -4,7 +4,7 @@ import type {
4
4
  GetApplicationsQuery,
5
5
  UpdateApplicationStatusMutationVariables,
6
6
  UpdateApplicationStatusMutation,
7
- } from "./graphql-operations-types.js";
7
+ } from "./graphql-operations-types";
8
8
 
9
9
  // Query to get all applications
10
10
  const GET_APPLICATIONS = gql`
@@ -87,8 +87,8 @@ export async function getApplications(): Promise<Application[]> {
87
87
  .map((edge) => {
88
88
  if (!edge || !edge.node) return null;
89
89
  const node = edge.node;
90
- const firstName = node.User__r?.FirstName?.value || "";
91
- const lastName = node.User__r?.LastName?.value || "";
90
+ const firstName = node.Contact__r?.FirstName?.value || "";
91
+ const lastName = node.Contact__r?.LastName?.value || "";
92
92
  const applicantName = `${firstName} ${lastName}`.trim() || "Unknown";
93
93
 
94
94
  return {
@@ -5,7 +5,7 @@ import type {
5
5
  GetOpenApplicationsQuery,
6
6
  GetOpenApplicationsQueryVariables,
7
7
  GetUserInfoQuery,
8
- } from "./graphql-operations-types.js";
8
+ } from "./graphql-operations-types";
9
9
 
10
10
  // Query to get property counts for dashboard metrics
11
11
  const GET_DASHBOARD_METRICS = gql`
@@ -0,0 +1,329 @@
1
+ export type Maybe<T> = T | null;
2
+ export type InputMaybe<T> = Maybe<T>;
3
+ export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };
4
+ export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };
5
+ export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };
6
+ export type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = {
7
+ [_ in K]?: never;
8
+ };
9
+ export type Incremental<T> =
10
+ | T
11
+ | { [P in keyof T]?: P extends " $fragmentName" | "__typename" ? T[P] : never };
12
+ /** All built-in and custom scalars, mapped to their actual values */
13
+ export type Scalars = {
14
+ ID: { input: string; output: string };
15
+ String: { input: string; output: string };
16
+ Boolean: { input: boolean; output: boolean };
17
+ Int: { input: number; output: number };
18
+ Float: { input: number; output: number };
19
+ Base64: { input: string; output: string };
20
+ Currency: { input: number | string; output: number };
21
+ Date: { input: string; output: string };
22
+ DateTime: { input: string; output: string };
23
+ Double: { input: number | string; output: number };
24
+ Email: { input: string; output: string };
25
+ /** Can be set to an ID or a Reference to the result of another mutation operation. */
26
+ IdOrRef: { input: string; output: string };
27
+ Latitude: { input: number | string; output: number };
28
+ /** A 64-bit signed integer */
29
+ Long: { input: number; output: number };
30
+ LongTextArea: { input: string; output: string };
31
+ Longitude: { input: number | string; output: number };
32
+ MultiPicklist: { input: string; output: string };
33
+ Percent: { input: number | string; output: number };
34
+ PhoneNumber: { input: string; output: string };
35
+ Picklist: { input: string; output: string };
36
+ RichTextArea: { input: string; output: string };
37
+ TextArea: { input: string; output: string };
38
+ Time: { input: string; output: string };
39
+ Url: { input: string; output: string };
40
+ };
41
+
42
+ export type Application__CUpdateInput = {
43
+ Application__c: Application__CUpdateRepresentation;
44
+ Id: Scalars["IdOrRef"]["input"];
45
+ };
46
+
47
+ export type Application__CUpdateRepresentation = {
48
+ OwnerId?: InputMaybe<Scalars["IdOrRef"]["input"]>;
49
+ Status__c?: InputMaybe<Scalars["Picklist"]["input"]>;
50
+ };
51
+
52
+ export enum DataType {
53
+ Address = "ADDRESS",
54
+ Anytype = "ANYTYPE",
55
+ Base64 = "BASE64",
56
+ Boolean = "BOOLEAN",
57
+ Combobox = "COMBOBOX",
58
+ Complexvalue = "COMPLEXVALUE",
59
+ Currency = "CURRENCY",
60
+ Date = "DATE",
61
+ Datetime = "DATETIME",
62
+ Double = "DOUBLE",
63
+ Email = "EMAIL",
64
+ Encryptedstring = "ENCRYPTEDSTRING",
65
+ Int = "INT",
66
+ Json = "JSON",
67
+ Junctionidlist = "JUNCTIONIDLIST",
68
+ Location = "LOCATION",
69
+ Long = "LONG",
70
+ Multipicklist = "MULTIPICKLIST",
71
+ Percent = "PERCENT",
72
+ Phone = "PHONE",
73
+ Picklist = "PICKLIST",
74
+ Reference = "REFERENCE",
75
+ String = "STRING",
76
+ Textarea = "TEXTAREA",
77
+ Time = "TIME",
78
+ Url = "URL",
79
+ }
80
+
81
+ export enum FieldExtraTypeInfo {
82
+ ExternalLookup = "EXTERNAL_LOOKUP",
83
+ ImageUrl = "IMAGE_URL",
84
+ IndirectLookup = "INDIRECT_LOOKUP",
85
+ Personname = "PERSONNAME",
86
+ Plaintextarea = "PLAINTEXTAREA",
87
+ Richtextarea = "RICHTEXTAREA",
88
+ SwitchablePersonname = "SWITCHABLE_PERSONNAME",
89
+ }
90
+
91
+ export type Maintenance_Request__CUpdateInput = {
92
+ Id: Scalars["IdOrRef"]["input"];
93
+ Maintenance_Request__c: Maintenance_Request__CUpdateRepresentation;
94
+ };
95
+
96
+ export type Maintenance_Request__CUpdateRepresentation = {
97
+ OwnerId?: InputMaybe<Scalars["IdOrRef"]["input"]>;
98
+ Status__c?: InputMaybe<Scalars["Picklist"]["input"]>;
99
+ };
100
+
101
+ export enum ResultOrder {
102
+ Asc = "ASC",
103
+ Desc = "DESC",
104
+ }
105
+
106
+ export type GetApplicationsQueryVariables = Exact<{ [key: string]: never }>;
107
+
108
+ export type GetApplicationsQuery = {
109
+ uiapi: {
110
+ query: {
111
+ Application__c?: {
112
+ edges?: Array<{
113
+ node?: {
114
+ Id: string;
115
+ Name?: { value?: string | null } | null;
116
+ Contact__r?: {
117
+ FirstName?: { value?: string | null } | null;
118
+ LastName?: { value?: string | null } | null;
119
+ Name?: { value?: string | null } | null;
120
+ } | null;
121
+ Property__r?: {
122
+ Name?: { value?: string | null } | null;
123
+ Address__c?: { value?: string | null } | null;
124
+ } | null;
125
+ Start_Date__c?: { value?: string | null } | null;
126
+ Status__c?: { value?: string | null } | null;
127
+ Employment__c?: { value?: string | null } | null;
128
+ References__c?: { value?: string | null } | null;
129
+ } | null;
130
+ } | null> | null;
131
+ } | null;
132
+ };
133
+ };
134
+ };
135
+
136
+ export type UpdateApplicationStatusMutationVariables = Exact<{
137
+ input: Application__CUpdateInput;
138
+ }>;
139
+
140
+ export type UpdateApplicationStatusMutation = {
141
+ uiapi: {
142
+ Application__cUpdate?: {
143
+ success?: boolean | null;
144
+ Record?: { Id: string; Status__c?: { value?: string | null } | null } | null;
145
+ } | null;
146
+ };
147
+ };
148
+
149
+ export type GetDashboardMetricsQueryVariables = Exact<{ [key: string]: never }>;
150
+
151
+ export type GetDashboardMetricsQuery = {
152
+ uiapi: {
153
+ query: {
154
+ allProperties?: {
155
+ edges?: Array<{
156
+ node?: { Id: string; Status__c?: { value?: string | null } | null } | null;
157
+ } | null> | null;
158
+ } | null;
159
+ maintenanceRequests?: {
160
+ edges?: Array<{
161
+ node?: { Id: string; Type__c?: { value?: string | null } | null } | null;
162
+ } | null> | null;
163
+ } | null;
164
+ };
165
+ };
166
+ };
167
+
168
+ export type GetOpenApplicationsQueryVariables = Exact<{
169
+ first?: InputMaybe<Scalars["Int"]["input"]>;
170
+ }>;
171
+
172
+ export type GetOpenApplicationsQuery = {
173
+ uiapi: {
174
+ query: {
175
+ Application__c?: {
176
+ edges?: Array<{
177
+ node?: {
178
+ Id: string;
179
+ Name?: { value?: string | null } | null;
180
+ Contact__r?: { Name?: { value?: string | null } | null } | null;
181
+ Property__r?: { Address__c?: { value?: string | null } | null } | null;
182
+ Status__c?: { value?: string | null } | null;
183
+ CreatedDate?: { value?: string | null } | null;
184
+ } | null;
185
+ } | null> | null;
186
+ } | null;
187
+ };
188
+ };
189
+ };
190
+
191
+ export type GetUserInfoQueryVariables = Exact<{ [key: string]: never }>;
192
+
193
+ export type GetUserInfoQuery = {
194
+ uiapi: {
195
+ query: {
196
+ User?: {
197
+ edges?: Array<{
198
+ node?: { Id: string; Name?: { value?: string | null } | null } | null;
199
+ } | null> | null;
200
+ } | null;
201
+ };
202
+ };
203
+ };
204
+
205
+ export type GetMaintenanceRequestsQueryVariables = Exact<{
206
+ first?: InputMaybe<Scalars["Int"]["input"]>;
207
+ }>;
208
+
209
+ export type GetMaintenanceRequestsQuery = {
210
+ uiapi: {
211
+ query: {
212
+ Maintenance_Request__c?: {
213
+ edges?: Array<{
214
+ node?: {
215
+ Id: string;
216
+ Name?: { value?: string | null } | null;
217
+ Property__r?: { Address__c?: { value?: string | null } | null } | null;
218
+ Tenant__r?: {
219
+ Name?: { value?: string | null } | null;
220
+ User__r?: { Name?: { value?: string | null } | null } | null;
221
+ } | null;
222
+ Type__c?: { value?: string | null } | null;
223
+ Priority__c?: { value?: string | null } | null;
224
+ Status__c?: { value?: string | null } | null;
225
+ Description__c?: { value?: string | null } | null;
226
+ Scheduled__c?: { value?: string | null } | null;
227
+ } | null;
228
+ } | null> | null;
229
+ } | null;
230
+ };
231
+ };
232
+ };
233
+
234
+ export type GetAllMaintenanceRequestsQueryVariables = Exact<{
235
+ first?: InputMaybe<Scalars["Int"]["input"]>;
236
+ after?: InputMaybe<Scalars["String"]["input"]>;
237
+ }>;
238
+
239
+ export type GetAllMaintenanceRequestsQuery = {
240
+ uiapi: {
241
+ query: {
242
+ Maintenance_Request__c?: {
243
+ edges?: Array<{
244
+ node?: {
245
+ Id: string;
246
+ Name?: { value?: string | null } | null;
247
+ Description__c?: { value?: string | null } | null;
248
+ Type__c?: { value?: string | null } | null;
249
+ Priority__c?: { value?: string | null } | null;
250
+ Status__c?: { value?: string | null } | null;
251
+ Scheduled__c?: { value?: string | null } | null;
252
+ Property__r?: {
253
+ Address__c?: { value?: string | null } | null;
254
+ Name?: { value?: string | null } | null;
255
+ } | null;
256
+ Tenant__r?: {
257
+ Name?: { value?: string | null } | null;
258
+ User__r?: { Name?: { value?: string | null } | null } | null;
259
+ } | null;
260
+ Owner?: { Name?: { value?: string | null } | null } | Record<PropertyKey, never> | null;
261
+ ContentDocumentLinks?: {
262
+ edges?: Array<{
263
+ node?: {
264
+ ContentDocument?: {
265
+ LatestPublishedVersionId?: { value?: string | null } | null;
266
+ } | null;
267
+ } | null;
268
+ } | null> | null;
269
+ } | null;
270
+ } | null;
271
+ } | null> | null;
272
+ pageInfo: { hasNextPage: boolean; endCursor?: string | null };
273
+ } | null;
274
+ };
275
+ };
276
+ };
277
+
278
+ export type UpdateMaintenanceStatusMutationVariables = Exact<{
279
+ input: Maintenance_Request__CUpdateInput;
280
+ }>;
281
+
282
+ export type UpdateMaintenanceStatusMutation = {
283
+ uiapi: {
284
+ Maintenance_Request__cUpdate?: {
285
+ success?: boolean | null;
286
+ Record?: { Id: string; Status__c?: { value?: string | null } | null } | null;
287
+ } | null;
288
+ };
289
+ };
290
+
291
+ export type GetPropertiesQueryVariables = Exact<{
292
+ first?: InputMaybe<Scalars["Int"]["input"]>;
293
+ after?: InputMaybe<Scalars["String"]["input"]>;
294
+ }>;
295
+
296
+ export type GetPropertiesQuery = {
297
+ uiapi: {
298
+ query: {
299
+ Property__c?: {
300
+ edges?: Array<{
301
+ node?: {
302
+ Id: string;
303
+ Name?: { value?: string | null } | null;
304
+ Address__c?: { value?: string | null } | null;
305
+ Description__c?: { value?: string | null } | null;
306
+ Type__c?: { value?: string | null } | null;
307
+ Status__c?: { value?: string | null } | null;
308
+ Monthly_Rent__c?: { value?: number | null } | null;
309
+ Bedrooms__c?: { value?: number | null } | null;
310
+ Bathrooms__c?: { value?: number | null } | null;
311
+ Sq_Ft__c?: { value?: number | null } | null;
312
+ Year_Built__c?: { value?: number | null } | null;
313
+ Hero_Image__c?: { value?: string | null } | null;
314
+ Deposit__c?: { value?: number | null } | null;
315
+ Parking__c?: { value?: string | null } | null;
316
+ Pet_Friendly__c?: { value?: string | null } | null;
317
+ Available_Date__c?: { value?: string | null } | null;
318
+ Lease_Term__c?: { value?: string | null } | null;
319
+ Features__c?: { value?: string | null } | null;
320
+ Utilities__c?: { value?: string | null } | null;
321
+ Tour_URL__c?: { value?: string | null } | null;
322
+ CreatedDate?: { value?: string | null } | null;
323
+ } | null;
324
+ } | null> | null;
325
+ pageInfo: { hasNextPage: boolean; endCursor?: string | null };
326
+ } | null;
327
+ };
328
+ };
329
+ };
@@ -7,7 +7,7 @@ import type {
7
7
  GetAllMaintenanceRequestsQueryVariables,
8
8
  UpdateMaintenanceStatusMutation,
9
9
  UpdateMaintenanceStatusMutationVariables,
10
- } from "./graphql-operations-types.js";
10
+ } from "./graphql-operations-types";
11
11
 
12
12
  // Query to get recent maintenance requests
13
13
  const GET_MAINTENANCE_REQUESTS = gql`
@@ -1,9 +1,6 @@
1
1
  import { getDataSDK, gql } from "@salesforce/sdk-data";
2
2
  import type { Property } from "../lib/types.js";
3
- import type {
4
- GetPropertiesQueryVariables,
5
- GetPropertiesQuery,
6
- } from "./graphql-operations-types.js";
3
+ import type { GetPropertiesQueryVariables, GetPropertiesQuery } from "./graphql-operations-types";
7
4
 
8
5
  // GraphQL query to get properties with pagination
9
6
  const GET_PROPERTIES_PAGINATED = gql`
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { Card } from "@/components/ui/card";
3
- import { Button } from "@/components/ui/button";
2
+ import { Card } from "./ui/card";
3
+ import { Button } from "./ui/button";
4
4
  import type { Application } from "../lib/types.js";
5
5
 
6
6
  interface ApplicationCardProps {
@@ -1,6 +1,6 @@
1
1
  import React, { useState } from "react";
2
2
  import { X } from "lucide-react";
3
- import { Button } from "@/components/ui/button";
3
+ import { Button } from "./ui/button";
4
4
  import type { Application } from "../lib/types.js";
5
5
 
6
6
  interface ApplicationDetailsModalProps {
@@ -1,10 +1,8 @@
1
1
  import { useState, useCallback } from "react";
2
- import {
3
- useObjectListMetadata,
4
- parseFilterValue,
5
- sanitizeFilterValue,
6
- type FilterCriteria,
7
- } from "@salesforce/webapp-template-feature-react-global-search-experimental";
2
+ import { type FilterCriteria } from "../features/global-search/types/filters/filters";
3
+ import { useObjectListMetadata } from "../features/global-search/hooks/useObjectSearchData";
4
+ import { parseFilterValue } from "../features/global-search/utils/filterUtils";
5
+ import { sanitizeFilterValue } from "../features/global-search/utils/sanitizationUtils";
8
6
 
9
7
  const inputClass =
10
8
  "h-9 rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm focus:outline-none focus:ring-2 focus:ring-primary-purple/20 focus:border-primary-purple";
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { PieChart, Pie, Cell, ResponsiveContainer } from "recharts";
3
- import { Card } from "@/components/ui/card";
3
+ import { Card } from "./ui/card";
4
4
  import { MoreVertical } from "lucide-react";
5
5
 
6
6
  interface ChartData {
@@ -1,6 +1,6 @@
1
1
  import React, { useState } from "react";
2
2
  import { X } from "lucide-react";
3
- import { Button } from "@/components/ui/button";
3
+ import { Button } from "./ui/button";
4
4
  import { PriorityBadge } from "./PriorityBadge.js";
5
5
  import type { MaintenanceRequest } from "../lib/types.js";
6
6
 
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { Card } from "@/components/ui/card";
3
- import { Button } from "@/components/ui/button";
2
+ import { Card } from "./ui/card";
3
+ import { Button } from "./ui/button";
4
4
  import type { MaintenanceRequest } from "../lib/types.js";
5
5
 
6
6
  interface MaintenanceRequestCardProps {
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
2
  import { useNavigate } from "react-router";
3
3
  import { PATHS } from "../lib/routeConfig.js";
4
- import { Card } from "@/components/ui/card";
5
- import { Button } from "@/components/ui/button";
4
+ import { Card } from "./ui/card";
5
+ import { Button } from "./ui/button";
6
6
  import type { MaintenanceRequest } from "../lib/types.js";
7
7
  import PlumbingIcon from "../assets/icons/plumbing.svg";
8
8
  import HVACIcon from "../assets/icons/hvac.svg";
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { X } from "lucide-react";
3
- import { Button } from "@/components/ui/button";
3
+ import { Button } from "./ui/button";
4
4
  import type { Property } from "../lib/types.js";
5
5
 
6
6
  interface PropertyDetailsModalProps {
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { Card } from "@/components/ui/card";
2
+ import { Card } from "./ui/card";
3
3
  import upgraphIcon from "../assets/icons/upgraph.svg";
4
4
  import downgraphIcon from "../assets/icons/downgraph.svg";
5
5
  import { MoreVertical } from "lucide-react";
@@ -1,4 +1,4 @@
1
- import type { ObjectInfoResult } from "@salesforce/webapp-template-feature-react-global-search-experimental";
1
+ import type { ObjectInfoResult } from "../../features/global-search/types/objectInfo/objectInfo.js";
2
2
  import type { SearchableObjectConfig } from "../../lib/globalSearchConstants.js";
3
3
  import {
4
4
  Select,
@@ -6,7 +6,7 @@ import {
6
6
  SelectItem,
7
7
  SelectTrigger,
8
8
  SelectValue,
9
- } from "@/components/ui/select";
9
+ } from "../../components/ui/select";
10
10
 
11
11
  type SearchableObjectApiName = SearchableObjectConfig["objectApiName"];
12
12
 
@@ -1,4 +1,4 @@
1
- import type { Filter } from "@salesforce/webapp-template-feature-react-global-search-experimental";
1
+ import type { Filter } from "../../features/global-search/types/filters/filters";
2
2
  import { getRangeMinKey, getRangeMaxKey } from "../../lib/filterUtils.js";
3
3
 
4
4
  const inputClass =
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import type { Filter } from "@salesforce/webapp-template-feature-react-global-search-experimental";
2
+ import type { Filter } from "../../features/global-search/types/filters/filters";
3
3
  import { ALL_PLACEHOLDER_VALUE, MULTI_VALUE_SEP } from "../../lib/filterUtils.js";
4
4
  import {
5
5
  Select,
@@ -7,7 +7,7 @@ import {
7
7
  SelectItem,
8
8
  SelectTrigger,
9
9
  SelectValue,
10
- } from "@/components/ui/select";
10
+ } from "../../components/ui/select";
11
11
 
12
12
  const TRIGGER_CLASS =
13
13
  "h-9 rounded-md border border-gray-300 bg-white text-sm focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent min-w-[140px] data-[size=default]:h-9";
@@ -1,4 +1,4 @@
1
- import type { Filter } from "@salesforce/webapp-template-feature-react-global-search-experimental";
1
+ import type { Filter } from "../../features/global-search/types/filters/filters";
2
2
 
3
3
  const INPUT_CLASS =
4
4
  "h-9 px-3 rounded-md border border-gray-300 bg-white text-sm focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent min-w-[140px]";
@@ -1,4 +1,4 @@
1
- import type { Filter } from "@salesforce/webapp-template-feature-react-global-search-experimental";
1
+ import type { Filter } from "../../features/global-search/types/filters/filters";
2
2
  import { FilterFieldRange } from "./FilterFieldRange.js";
3
3
  import { FilterFieldSelect } from "./FilterFieldSelect.js";
4
4
  import { FilterFieldText } from "./FilterFieldText.js";
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from "react";
2
- import type { Filter } from "@salesforce/webapp-template-feature-react-global-search-experimental";
2
+ import type { Filter } from "../../features/global-search/types/filters/filters";
3
3
  import { PageContainer } from "../layout/PageContainer.js";
4
4
  import { PageLoadingState } from "../feedback/PageLoadingState.js";
5
5
  import { PageErrorState } from "../feedback/PageErrorState.js";
@@ -13,7 +13,7 @@ import {
13
13
  type PicklistOption,
14
14
  type TransformedLayoutItem,
15
15
  } from "../../utils/layoutTransformUtils";
16
- import { FieldValueDisplay } from "./formatted";
16
+ import { FieldValueDisplay } from "./formatted/FieldValueDisplay";
17
17
  import { Section } from "./Section";
18
18
  import { SectionRow } from "./SectionRow";
19
19
 
@@ -11,7 +11,7 @@ import { Card, CardContent } from "../../../../components/ui/card";
11
11
  import { Input } from "../../../../components/ui/input";
12
12
  import { Button } from "../../../../components/ui/button";
13
13
  import { Search } from "lucide-react";
14
- import { OBJECT_API_NAMES } from "../../../../constants";
14
+ import { OBJECT_API_NAMES } from "../../constants";
15
15
  import { useObjectInfoBatch } from "../../hooks/useObjectInfoBatch";
16
16
 
17
17
  const BROWSE_SEGMENT = "browse__all";
@@ -34,7 +34,7 @@ import {
34
34
  import type { Column, SearchResultRecordData } from "../../types/search/searchResults";
35
35
  import { getNestedFieldValue } from "../../utils/fieldUtils";
36
36
  import ResultCardFields from "./ResultCardFields";
37
- import { OBJECT_API_NAMES } from "../../../../constants";
37
+ import { OBJECT_API_NAMES } from "../../constants";
38
38
 
39
39
  interface SearchResultCardProps {
40
40
  record: SearchResultRecordData;
@@ -6,7 +6,7 @@ import { Alert, AlertDescription, AlertTitle } from "../../../components/ui/aler
6
6
  import { AlertCircle } from "lucide-react";
7
7
  import DetailHeader from "../components/detail/DetailHeader";
8
8
  import { UiApiDetailForm } from "../components/detail/UiApiDetailForm";
9
- import { OBJECT_API_NAMES, DEFAULT_DETAIL_PAGE_TITLE } from "../../../constants";
9
+ import { OBJECT_API_NAMES, DEFAULT_DETAIL_PAGE_TITLE } from "../constants";
10
10
  import { toRecordDisplayNameMetadata } from "../utils/fieldUtils";
11
11
  import { useRecordDetailLayout } from "../hooks/useRecordDetailLayout";
12
12
  import { getGraphQLRecordDisplayName } from "../utils/graphQLNodeFieldUtils";
@@ -13,7 +13,7 @@
13
13
  */
14
14
  import { useMemo, useState, useCallback, useEffect, useRef } from "react";
15
15
  import { useParams } from "react-router";
16
- import { OBJECT_API_NAMES, DEFAULT_PAGE_SIZE } from "../../../constants";
16
+ import { OBJECT_API_NAMES, DEFAULT_PAGE_SIZE } from "../constants";
17
17
  import { useObjectListMetadata } from "../hooks/useObjectSearchData";
18
18
  import { useObjectInfoBatch } from "../hooks/useObjectInfoBatch";
19
19
  import { useRecordListGraphQL } from "../hooks/useRecordListGraphQL";
@@ -1,10 +1,8 @@
1
1
  import { useEffect, useState, useRef, useMemo, useCallback } from "react";
2
2
  import { useSearchParams } from "react-router";
3
- import {
4
- useObjectListMetadata,
5
- useRecordListGraphQL,
6
- type FilterCriteria,
7
- } from "@salesforce/webapp-template-feature-react-global-search-experimental";
3
+ import { useObjectListMetadata } from "../features/global-search/hooks/useObjectSearchData";
4
+ import type { FilterCriteria } from "../features/global-search/types/filters/filters";
5
+ import { useRecordListGraphQL } from "../features/global-search/hooks/useRecordListGraphQL";
8
6
  import { PAGE_SIZE_LIST } from "../lib/constants.js";
9
7
  import {
10
8
  buildFilterCriteriaFromFormValues,
@@ -1,10 +1,6 @@
1
1
  /**
2
- * Package entry for @salesforce/webapp-template-feature-react-global-search-experimental.
3
- * Exports only API, hooks, utils, types, and constants so that consuming apps do not
4
- * pull in the feature's UI (routes, __inherit__ components) which depend on @radix-ui.
2
+ * feature-react-agentforce-conversation-client – ACC Conversation Client
5
3
  */
6
- export * from "./features/global-search/api";
7
- export * from "./features/global-search/hooks";
8
- export * from "./features/global-search/utils";
9
- export * from "./features/global-search/types";
10
- export * from "./constants";
4
+
5
+ export { AgentforceConversationClient } from "./components/AgentforceConversationClient";
6
+ export type { AgentforceConversationClientProps, ResolvedEmbedOptions } from "./types/conversation";
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Column config for Application__c list.
3
3
  */
4
- import type { Column } from "@salesforce/webapp-template-feature-react-global-search-experimental";
4
+ import type { Column } from "../features/global-search/types/search/searchResults";
5
5
 
6
6
  export const APPLICATION_EXTRA_COLUMNS: Column[] = [
7
7
  { fieldApiName: "Name", label: "Name", searchable: true, sortable: true },
@@ -5,11 +5,9 @@
5
5
  import type {
6
6
  Filter,
7
7
  FilterCriteria,
8
- } from "@salesforce/webapp-template-feature-react-global-search-experimental";
9
- import {
10
- parseFilterValue,
11
- sanitizeFilterValue,
12
- } from "@salesforce/webapp-template-feature-react-global-search-experimental";
8
+ } from "../features/global-search/types/filters/filters";
9
+ import { sanitizeFilterValue } from "../features/global-search/utils/sanitizationUtils";
10
+ import { parseFilterValue } from "../features/global-search/utils/filterUtils";
13
11
 
14
12
  /** Delimiter for multi-select form values. Picklist values must not contain this character. */
15
13
  export const MULTI_VALUE_SEP = "|";
@@ -4,7 +4,7 @@
4
4
  * Supports both static filter config and FilterCriteria from the react-global-search filters API.
5
5
  */
6
6
 
7
- import type { FilterCriteria } from "@salesforce/webapp-template-feature-react-global-search-experimental";
7
+ import type { FilterCriteria } from "../features/global-search/types/filters/filters";
8
8
 
9
9
  export type FilterFieldType = "text" | "select";
10
10
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Data-driven config for list pages with filters.
3
3
  */
4
- import type { Column } from "@salesforce/webapp-template-feature-react-global-search-experimental";
4
+ import type { Column } from "../features/global-search/types/search/searchResults";
5
5
  import {
6
6
  MAINTENANCE_OBJECT_API_NAME,
7
7
  MAINTENANCE_WORKER_OBJECT_API_NAME,
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Column config for Maintenance_Request__c list.
3
3
  */
4
- import type { Column } from "@salesforce/webapp-template-feature-react-global-search-experimental";
4
+ import type { Column } from "../features/global-search/types/search/searchResults";
5
5
 
6
6
  export const MAINTENANCE_EXTRA_COLUMNS: Column[] = [
7
7
  { fieldApiName: "Description__c", label: "Description", searchable: true, sortable: false },
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Column config for Maintenance_Worker__c list.
3
3
  */
4
- import type { Column } from "@salesforce/webapp-template-feature-react-global-search-experimental";
4
+ import type { Column } from "../features/global-search/types/search/searchResults";
5
5
 
6
6
  export const MAINTENANCE_WORKER_EXTRA_COLUMNS: Column[] = [
7
7
  { fieldApiName: "Name", label: "Worker Name", searchable: true, sortable: true },
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Property list column config for useRecordListGraphQL.
3
3
  */
4
- import type { Column } from "@salesforce/webapp-template-feature-react-global-search-experimental";
4
+ import type { Column } from "../features/global-search/types/search/searchResults";
5
5
 
6
6
  const PROPERTY_EXTRA_COLUMNS: Column[] = [
7
7
  { fieldApiName: "Description__c", label: "Description", searchable: true, sortable: false },
@@ -1,10 +1,8 @@
1
1
  import { useEffect, useState, useCallback, useMemo } from "react";
2
2
  import { useNavigate } from "react-router";
3
- import {
4
- useObjectInfoBatch,
5
- useObjectListMetadata,
6
- useRecordListGraphQL,
7
- } from "@salesforce/webapp-template-feature-react-global-search-experimental";
3
+ import { useRecordListGraphQL } from "../features/global-search/hooks/useRecordListGraphQL";
4
+ import { useObjectInfoBatch } from "../features/global-search/hooks/useObjectInfoBatch";
5
+ import { useObjectListMetadata } from "../features/global-search/hooks/useObjectSearchData";
8
6
  import { IssuesDonutChart } from "../components/IssuesDonutChart.js";
9
7
  import { MaintenanceTable } from "../components/MaintenanceTable.js";
10
8
  import { GlobalSearchBar } from "../components/dashboard/GlobalSearchBar.js";
@@ -1,10 +1,9 @@
1
1
  import { useEffect, useState, useRef, useMemo, useCallback } from "react";
2
2
  import { useSearchParams } from "react-router";
3
- import {
4
- useObjectListMetadata,
5
- useRecordListGraphQL,
6
- type FilterCriteria,
7
- } from "@salesforce/webapp-template-feature-react-global-search-experimental";
3
+ import { type FilterCriteria } from "../features/global-search/types/filters/filters";
4
+ import { useObjectListMetadata } from "../features/global-search/hooks/useObjectSearchData";
5
+ import { useRecordListGraphQL } from "../features/global-search/hooks/useRecordListGraphQL";
6
+
8
7
  import type { Property } from "../lib/types.js";
9
8
  import { PropertyCard } from "../components/PropertyCard.js";
10
9
  import { PropertyDetailsModal } from "../components/PropertyDetailsModal.js";
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/webapp-template-base-sfdx-project-experimental",
3
- "version": "1.74.0",
3
+ "version": "1.75.1",
4
4
  "description": "Base SFDX project template",
5
5
  "private": true,
6
6
  "files": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/webapp-template-app-react-sample-b2e-experimental",
3
- "version": "1.74.0",
3
+ "version": "1.75.1",
4
4
  "description": "B2E starter app template",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "",
@@ -16,8 +16,8 @@
16
16
  "clean": "rm -rf dist"
17
17
  },
18
18
  "dependencies": {
19
- "@salesforce/webapp-experimental": "^1.74.0",
20
- "@salesforce/webapp-template-feature-react-global-search-experimental": "^1.74.0"
19
+ "@salesforce/webapp-experimental": "^1.75.1",
20
+ "@salesforce/webapp-template-feature-react-global-search-experimental": "^1.75.1"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@testing-library/jest-dom": "^6.6.3",
@@ -1,19 +0,0 @@
1
- /**
2
- * API layer: object metadata (GraphQL), layout + record detail (REST layout + GraphQL record), record list/single (GraphQL).
3
- */
4
- export { objectInfoService } from "./objectInfoService";
5
- export { objectDetailService, extractFieldsFromLayout } from "./objectDetailService";
6
- export type { RecordDetailResult } from "./objectDetailService";
7
- export {
8
- getRecordsGraphQL,
9
- getRecordByIdGraphQL,
10
- buildGetRecordsQuery,
11
- buildWhereFromCriteria,
12
- buildOrderByFromSort,
13
- } from "./recordListGraphQLService";
14
- export type {
15
- RecordListGraphQLResult,
16
- RecordListGraphQLVariables,
17
- RecordListGraphQLOptions,
18
- GraphQLRecordNode,
19
- } from "./recordListGraphQLService";
@@ -1,6 +0,0 @@
1
- export { FieldValueDisplay } from "./FieldValueDisplay";
2
- export { FormattedAddress } from "./FormattedAddress";
3
- export { FormattedEmail } from "./FormattedEmail";
4
- export { FormattedPhone } from "./FormattedPhone";
5
- export { FormattedText } from "./FormattedText";
6
- export { FormattedUrl } from "./FormattedUrl";
@@ -1,22 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // Hooks
3
- // ---------------------------------------------------------------------------
4
- export {
5
- useObjectColumns,
6
- useObjectSearchResults,
7
- useObjectFilters,
8
- useObjectListMetadata,
9
- } from "./useObjectSearchData";
10
- export type { ObjectListMetadata } from "./useObjectSearchData";
11
- export { useRecordListGraphQL } from "./useRecordListGraphQL";
12
- export type {
13
- UseRecordListGraphQLReturn,
14
- UseRecordListGraphQLOptions,
15
- } from "./useRecordListGraphQL";
16
- export { useRecordDetailLayout } from "./useRecordDetailLayout";
17
- export type {
18
- UseRecordDetailLayoutReturn,
19
- UseRecordDetailLayoutParams,
20
- } from "./useRecordDetailLayout";
21
- export { useObjectInfoBatch } from "./useObjectInfoBatch";
22
- export type { UseObjectInfoBatchResult } from "./useObjectInfoBatch";
@@ -1,5 +0,0 @@
1
- export * from "./filters/filters";
2
- export * from "./filters/picklist";
3
- export * from "./objectInfo/objectInfo";
4
- export * from "./recordDetail/recordDetail";
5
- export * from "./search/searchResults";
@@ -1,59 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // Utilities
3
- // ---------------------------------------------------------------------------
4
- export { fetchAndValidate, safeEncodePath } from "./apiUtils";
5
- export type { FetchAndValidateOptions } from "./apiUtils";
6
- export { createFiltersKey } from "./cacheUtils";
7
- export { calculateFieldsToFetch, getSafeKey, isValidSalesforceId } from "./recordUtils";
8
- export {
9
- getNestedFieldValue,
10
- getRecordDisplayName,
11
- toRecordDisplayNameMetadata,
12
- getDisplayValueForLayoutItem,
13
- getDisplayValueForDetailField,
14
- formatAddressFromConstituents,
15
- formatAddressDisplay,
16
- formatDateTimeForDisplay,
17
- isAddressConstituents,
18
- getAddressPartsFromConstituents,
19
- extractFieldValue,
20
- } from "./fieldUtils";
21
- export type {
22
- AddressParts,
23
- LayoutItemDisplayResult,
24
- RecordDisplayNameMetadata,
25
- } from "./fieldUtils";
26
- export { calculateFormData } from "./formDataTransformUtils";
27
- export type { ObjectInfoMetadata } from "./formDataTransformUtils";
28
- export { getTransformedSections } from "./layoutTransformUtils";
29
- export type {
30
- ObjectInfo,
31
- ObjectInfoField,
32
- PicklistOption,
33
- LayoutTransformContext,
34
- TransformedLayoutItem,
35
- TransformedLayoutRow,
36
- TransformedSection,
37
- } from "./layoutTransformUtils";
38
- export { parseFilterValue } from "./filterUtils";
39
- export { sanitizeFilterValue } from "./sanitizationUtils";
40
- export { getFormValueByPath, getUniqueErrors, validateRangeValues, isFormError } from "./formUtils";
41
- export type { FormError } from "./formUtils";
42
- export {
43
- PAGE_SIZE_OPTIONS,
44
- VALID_PAGE_SIZES,
45
- getValidPageSize,
46
- isValidPageSize,
47
- } from "./paginationUtils";
48
- export { isAllowedLinkUrl, ALLOWED_LINK_PROTOCOLS } from "./linkUtils";
49
- export { graphQLNodeToSearchResultRecordData } from "./graphQLRecordAdapter";
50
- export {
51
- getGraphQLNodeValue,
52
- getDisplayValueForLayoutItemFromNode,
53
- getDisplayValueForDetailFieldFromNode,
54
- getGraphQLRecordDisplayName,
55
- } from "./graphQLNodeFieldUtils";
56
- export type {
57
- GraphQLRecordDisplayNameMetadata,
58
- ObjectMetadataForDisplay,
59
- } from "./graphQLNodeFieldUtils";