@salesforce/webapp-template-app-react-b2e-experimental 1.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/LICENSE.txt +82 -0
  2. package/dist/.a4drules/build-validation.md +81 -0
  3. package/dist/.a4drules/code-quality.md +150 -0
  4. package/dist/.a4drules/graphql/tools/knowledge/lds-explore-graphql-schema.md +227 -0
  5. package/dist/.a4drules/graphql/tools/knowledge/lds-generate-graphql-mutationquery.md +212 -0
  6. package/dist/.a4drules/graphql/tools/knowledge/lds-generate-graphql-readquery.md +185 -0
  7. package/dist/.a4drules/graphql/tools/knowledge/lds-guide-graphql.md +205 -0
  8. package/dist/.a4drules/graphql/tools/schemas/shared.graphqls +1150 -0
  9. package/dist/.a4drules/graphql.md +408 -0
  10. package/dist/.a4drules/images.md +13 -0
  11. package/dist/.a4drules/react.md +361 -0
  12. package/dist/.a4drules/react_image_processing.md +45 -0
  13. package/dist/.a4drules/skills/install-feature/SKILL.md +67 -0
  14. package/dist/.a4drules/skills/install-feature/scripts/copy-feature-assets.sh +36 -0
  15. package/dist/.a4drules/typescript.md +224 -0
  16. package/dist/.forceignore +15 -0
  17. package/dist/.husky/pre-commit +4 -0
  18. package/dist/.prettierignore +11 -0
  19. package/dist/.prettierrc +17 -0
  20. package/dist/CHANGELOG.md +479 -0
  21. package/dist/README.md +18 -0
  22. package/dist/config/project-scratch-def.json +13 -0
  23. package/dist/force-app/main/default/applications/Property_Management.app-meta.xml +26 -0
  24. package/dist/force-app/main/default/data/Application__c.json +124 -0
  25. package/dist/force-app/main/default/data/Maintenance_Request__c.json +514 -0
  26. package/dist/force-app/main/default/data/Maintenance_Worker__c.json +304 -0
  27. package/dist/force-app/main/default/data/Notification__c.json +214 -0
  28. package/dist/force-app/main/default/data/Property__c.json +654 -0
  29. package/dist/force-app/main/default/data/Tenant__c.json +184 -0
  30. package/dist/force-app/main/default/data/data-plan.json +38 -0
  31. package/dist/force-app/main/default/objects/Application__c/Application__c.object-meta.xml +67 -0
  32. package/dist/force-app/main/default/objects/Application__c/fields/Employment__c.field-meta.xml +10 -0
  33. package/dist/force-app/main/default/objects/Application__c/fields/Property__c.field-meta.xml +15 -0
  34. package/dist/force-app/main/default/objects/Application__c/fields/References__c.field-meta.xml +10 -0
  35. package/dist/force-app/main/default/objects/Application__c/fields/Start_Date__c.field-meta.xml +9 -0
  36. package/dist/force-app/main/default/objects/Application__c/fields/Status__c.field-meta.xml +42 -0
  37. package/dist/force-app/main/default/objects/Application__c/fields/User__c.field-meta.xml +15 -0
  38. package/dist/force-app/main/default/objects/Maintenance_Request__c/Maintenance_Request__c.object-meta.xml +67 -0
  39. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Actual_Cost__c.field-meta.xml +13 -0
  40. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Completed__c.field-meta.xml +11 -0
  41. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Description__c.field-meta.xml +12 -0
  42. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Est_Cost__c.field-meta.xml +13 -0
  43. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Priority__c.field-meta.xml +32 -0
  44. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Property__c.field-meta.xml +15 -0
  45. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Scheduled__c.field-meta.xml +11 -0
  46. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Status__c.field-meta.xml +42 -0
  47. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Tenant_Home__c.field-meta.xml +11 -0
  48. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/Type__c.field-meta.xml +42 -0
  49. package/dist/force-app/main/default/objects/Maintenance_Request__c/fields/User__c.field-meta.xml +15 -0
  50. package/dist/force-app/main/default/objects/Maintenance_Worker__c/Maintenance_Worker__c.object-meta.xml +66 -0
  51. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/Certifications__c.field-meta.xml +12 -0
  52. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/Employment_Type__c.field-meta.xml +32 -0
  53. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/Hourly_Rate__c.field-meta.xml +13 -0
  54. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/IsActive__c.field-meta.xml +11 -0
  55. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/Location__c.field-meta.xml +13 -0
  56. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/Phone__c.field-meta.xml +11 -0
  57. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/Rating__c.field-meta.xml +14 -0
  58. package/dist/force-app/main/default/objects/Maintenance_Worker__c/fields/Type__c.field-meta.xml +57 -0
  59. package/dist/force-app/main/default/objects/Notification__c/Notification__c.object-meta.xml +67 -0
  60. package/dist/force-app/main/default/objects/Notification__c/fields/Is_Read__c.field-meta.xml +10 -0
  61. package/dist/force-app/main/default/objects/Notification__c/fields/Message__c.field-meta.xml +11 -0
  62. package/dist/force-app/main/default/objects/Notification__c/fields/Priority__c.field-meta.xml +36 -0
  63. package/dist/force-app/main/default/objects/Notification__c/fields/Related_Object_Type__c.field-meta.xml +12 -0
  64. package/dist/force-app/main/default/objects/Notification__c/fields/Related_Record_Id__c.field-meta.xml +12 -0
  65. package/dist/force-app/main/default/objects/Notification__c/fields/Title__c.field-meta.xml +12 -0
  66. package/dist/force-app/main/default/objects/Notification__c/fields/Type__c.field-meta.xml +36 -0
  67. package/dist/force-app/main/default/objects/Notification__c/fields/User__c.field-meta.xml +14 -0
  68. package/dist/force-app/main/default/objects/Property__c/Property__c.object-meta.xml +66 -0
  69. package/dist/force-app/main/default/objects/Property__c/fields/Address__c.field-meta.xml +13 -0
  70. package/dist/force-app/main/default/objects/Property__c/fields/Agent__c.field-meta.xml +15 -0
  71. package/dist/force-app/main/default/objects/Property__c/fields/Available_Date__c.field-meta.xml +11 -0
  72. package/dist/force-app/main/default/objects/Property__c/fields/Bathrooms__c.field-meta.xml +14 -0
  73. package/dist/force-app/main/default/objects/Property__c/fields/Bedrooms__c.field-meta.xml +14 -0
  74. package/dist/force-app/main/default/objects/Property__c/fields/Deposit__c.field-meta.xml +13 -0
  75. package/dist/force-app/main/default/objects/Property__c/fields/Description__c.field-meta.xml +12 -0
  76. package/dist/force-app/main/default/objects/Property__c/fields/Features__c.field-meta.xml +38 -0
  77. package/dist/force-app/main/default/objects/Property__c/fields/Hero_Image__c.field-meta.xml +11 -0
  78. package/dist/force-app/main/default/objects/Property__c/fields/Lease_Term__c.field-meta.xml +14 -0
  79. package/dist/force-app/main/default/objects/Property__c/fields/Monthly_Rent__c.field-meta.xml +13 -0
  80. package/dist/force-app/main/default/objects/Property__c/fields/Parking__c.field-meta.xml +14 -0
  81. package/dist/force-app/main/default/objects/Property__c/fields/Pet_Friendly__c.field-meta.xml +11 -0
  82. package/dist/force-app/main/default/objects/Property__c/fields/Sq_Ft__c.field-meta.xml +14 -0
  83. package/dist/force-app/main/default/objects/Property__c/fields/Status__c.field-meta.xml +37 -0
  84. package/dist/force-app/main/default/objects/Property__c/fields/Tour_URL__c.field-meta.xml +11 -0
  85. package/dist/force-app/main/default/objects/Property__c/fields/Type__c.field-meta.xml +37 -0
  86. package/dist/force-app/main/default/objects/Property__c/fields/Utilities__c.field-meta.xml +38 -0
  87. package/dist/force-app/main/default/objects/Property__c/fields/Year_Built__c.field-meta.xml +14 -0
  88. package/dist/force-app/main/default/objects/Tenant__c/Tenant__c.object-meta.xml +67 -0
  89. package/dist/force-app/main/default/objects/Tenant__c/fields/End_Date__c.field-meta.xml +11 -0
  90. package/dist/force-app/main/default/objects/Tenant__c/fields/Property__c.field-meta.xml +15 -0
  91. package/dist/force-app/main/default/objects/Tenant__c/fields/Start_Date__c.field-meta.xml +11 -0
  92. package/dist/force-app/main/default/objects/Tenant__c/fields/Status__c.field-meta.xml +37 -0
  93. package/dist/force-app/main/default/objects/Tenant__c/fields/User_Status__c.field-meta.xml +42 -0
  94. package/dist/force-app/main/default/objects/Tenant__c/fields/User__c.field-meta.xml +15 -0
  95. package/dist/force-app/main/default/permissionsets/Property_Management_Access.permissionset-meta.xml +453 -0
  96. package/dist/force-app/main/default/tabs/Application__c.tab-meta.xml +6 -0
  97. package/dist/force-app/main/default/tabs/Maintenance_Request__c.tab-meta.xml +7 -0
  98. package/dist/force-app/main/default/tabs/Maintenance_Worker__c.tab-meta.xml +6 -0
  99. package/dist/force-app/main/default/tabs/Notification__c.tab-meta.xml +6 -0
  100. package/dist/force-app/main/default/tabs/Property__c.tab-meta.xml +7 -0
  101. package/dist/force-app/main/default/tabs/Tenant__c.tab-meta.xml +7 -0
  102. package/dist/force-app/main/default/webapplications/appreactb2e/.prettierignore +9 -0
  103. package/dist/force-app/main/default/webapplications/appreactb2e/.prettierrc +11 -0
  104. package/dist/force-app/main/default/webapplications/appreactb2e/appreactb2e.webapplication-meta.xml +7 -0
  105. package/dist/force-app/main/default/webapplications/appreactb2e/build/vite.config.d.ts +2 -0
  106. package/dist/force-app/main/default/webapplications/appreactb2e/build/vite.config.js +76 -0
  107. package/dist/force-app/main/default/webapplications/appreactb2e/e2e/app.spec.ts +24 -0
  108. package/dist/force-app/main/default/webapplications/appreactb2e/eslint.config.js +113 -0
  109. package/dist/force-app/main/default/webapplications/appreactb2e/index.html +13 -0
  110. package/dist/force-app/main/default/webapplications/appreactb2e/package-lock.json +7157 -0
  111. package/dist/force-app/main/default/webapplications/appreactb2e/package.json +45 -0
  112. package/dist/force-app/main/default/webapplications/appreactb2e/playwright.config.ts +24 -0
  113. package/dist/force-app/main/default/webapplications/appreactb2e/scripts/rewrite-e2e-assets.mjs +23 -0
  114. package/dist/force-app/main/default/webapplications/appreactb2e/src/api/graphql-operations-types.ts +127 -0
  115. package/dist/force-app/main/default/webapplications/appreactb2e/src/api/utils/query/highRevenueAccountsQuery.graphql +29 -0
  116. package/dist/force-app/main/default/webapplications/appreactb2e/src/app.tsx +22 -0
  117. package/dist/force-app/main/default/webapplications/appreactb2e/src/appLayout.tsx +29 -0
  118. package/dist/force-app/main/default/webapplications/appreactb2e/src/assets/icons/book.svg +3 -0
  119. package/dist/force-app/main/default/webapplications/appreactb2e/src/assets/icons/copy.svg +4 -0
  120. package/dist/force-app/main/default/webapplications/appreactb2e/src/assets/icons/rocket.svg +3 -0
  121. package/dist/force-app/main/default/webapplications/appreactb2e/src/assets/icons/star.svg +3 -0
  122. package/dist/force-app/main/default/webapplications/appreactb2e/src/assets/images/codey-1.png +0 -0
  123. package/dist/force-app/main/default/webapplications/appreactb2e/src/assets/images/codey-2.png +0 -0
  124. package/dist/force-app/main/default/webapplications/appreactb2e/src/assets/images/codey-3.png +0 -0
  125. package/dist/force-app/main/default/webapplications/appreactb2e/src/assets/images/vibe-codey.svg +194 -0
  126. package/dist/force-app/main/default/webapplications/appreactb2e/src/pages/About.tsx +12 -0
  127. package/dist/force-app/main/default/webapplications/appreactb2e/src/pages/Home.tsx +12 -0
  128. package/dist/force-app/main/default/webapplications/appreactb2e/src/pages/NotFound.tsx +18 -0
  129. package/dist/force-app/main/default/webapplications/appreactb2e/src/routes.tsx +28 -0
  130. package/dist/force-app/main/default/webapplications/appreactb2e/src/styles/global.css +13 -0
  131. package/dist/force-app/main/default/webapplications/appreactb2e/tsconfig.json +36 -0
  132. package/dist/force-app/main/default/webapplications/appreactb2e/tsconfig.node.json +13 -0
  133. package/dist/force-app/main/default/webapplications/appreactb2e/vite-env.d.ts +1 -0
  134. package/dist/force-app/main/default/webapplications/appreactb2e/vite.config.ts +85 -0
  135. package/dist/force-app/main/default/webapplications/appreactb2e/vitest-env.d.ts +2 -0
  136. package/dist/force-app/main/default/webapplications/appreactb2e/vitest.config.ts +11 -0
  137. package/dist/force-app/main/default/webapplications/appreactb2e/vitest.setup.ts +1 -0
  138. package/dist/force-app/main/default/webapplications/appreactb2e/webapplication.json +7 -0
  139. package/dist/jest.config.js +6 -0
  140. package/dist/package.json +37 -0
  141. package/dist/scripts/apex/hello.apex +10 -0
  142. package/dist/scripts/soql/account.soql +6 -0
  143. package/dist/sfdx-project.json +12 -0
  144. package/package.json +34 -0
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "base-react-app",
3
+ "private": true,
4
+ "version": "1.0.0",
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "tsc -b && vite build",
9
+ "build:e2e": "npm run build && node scripts/rewrite-e2e-assets.mjs",
10
+ "lint": "eslint .",
11
+ "preview": "vite preview",
12
+ "test": "vitest"
13
+ },
14
+ "dependencies": {
15
+ "@salesforce/webapp-experimental": "*",
16
+ "@tailwindcss/vite": "^4.1.17",
17
+ "react": "^19.2.0",
18
+ "react-dom": "^19.2.0",
19
+ "react-router": "^7.10.1",
20
+ "tailwindcss": "^4.1.17"
21
+ },
22
+ "devDependencies": {
23
+ "@eslint/js": "^9.39.1",
24
+ "@salesforce/vite-plugin-webapp-experimental": "*",
25
+ "@testing-library/jest-dom": "^6.6.3",
26
+ "@testing-library/react": "^16.1.0",
27
+ "@testing-library/user-event": "^14.5.2",
28
+ "@types/node": "^24.10.1",
29
+ "@types/react": "^19.2.5",
30
+ "@types/react-dom": "^19.2.3",
31
+ "@vitejs/plugin-react": "^5.1.1",
32
+ "@vitest/ui": "^4.0.17",
33
+ "eslint": "^9.39.1",
34
+ "eslint-plugin-react-hooks": "^7.0.1",
35
+ "eslint-plugin-react-refresh": "^0.4.24",
36
+ "globals": "^16.5.0",
37
+ "jsdom": "^25.0.1",
38
+ "typescript": "~5.9.3",
39
+ "typescript-eslint": "^8.46.4",
40
+ "vite": "^7.2.4",
41
+ "vitest": "^4.0.17",
42
+ "@playwright/test": "^1.49.0",
43
+ "serve": "^14.2.5"
44
+ }
45
+ }
@@ -0,0 +1,24 @@
1
+ import { defineConfig, devices } from '@playwright/test';
2
+
3
+ const E2E_PORT = 5175;
4
+
5
+ export default defineConfig({
6
+ testDir: './e2e',
7
+ fullyParallel: true,
8
+ forbidOnly: !!process.env.CI,
9
+ retries: process.env.CI ? 2 : 0,
10
+ workers: process.env.CI ? 1 : undefined,
11
+ reporter: 'html',
12
+ use: {
13
+ baseURL: `http://localhost:${E2E_PORT}`,
14
+ trace: 'on-first-retry',
15
+ },
16
+ projects: [{ name: 'chromium', use: { ...devices['Desktop Chrome'] } }],
17
+ webServer: {
18
+ // Serve built dist/ with static server so e2e works in CI without SF org (vite preview runs plugin and can fail)
19
+ command: `npx serve dist -l ${E2E_PORT}`,
20
+ url: `http://localhost:${E2E_PORT}`,
21
+ reuseExistingServer: !process.env.CI,
22
+ timeout: process.env.CI ? 120_000 : 60_000,
23
+ },
24
+ });
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Prepares dist/ for e2e: root-relative asset paths + SPA fallback for serve.
3
+ */
4
+ import { readFileSync, writeFileSync } from 'node:fs';
5
+ import { join, dirname } from 'node:path';
6
+ import { fileURLToPath } from 'node:url';
7
+
8
+ const __dirname = dirname(fileURLToPath(import.meta.url));
9
+ const distDir = join(__dirname, '..', 'dist');
10
+
11
+ // Rewrite index.html so asset paths are root-relative (/assets/...)
12
+ const indexPath = join(distDir, 'index.html');
13
+ let html = readFileSync(indexPath, 'utf8');
14
+ html = html.replace(/(src|href)="[^"]*\/assets\//g, '$1="/assets/');
15
+ writeFileSync(indexPath, html);
16
+
17
+ // SPA fallback so /about, /non-existent-route etc. serve index.html
18
+ writeFileSync(
19
+ join(distDir, 'serve.json'),
20
+ JSON.stringify({
21
+ rewrites: [{ source: '**', destination: '/index.html' }],
22
+ })
23
+ );
@@ -0,0 +1,127 @@
1
+ export type Maybe<T> = T | null;
2
+ export type InputMaybe<T> = Maybe<T>;
3
+ export type Exact<T extends { [key: string]: unknown }> = {
4
+ [K in keyof T]: T[K];
5
+ };
6
+ export type MakeOptional<T, K extends keyof T> = Omit<T, K> & {
7
+ [SubKey in K]?: Maybe<T[SubKey]>;
8
+ };
9
+ export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & {
10
+ [SubKey in K]: Maybe<T[SubKey]>;
11
+ };
12
+ export type MakeEmpty<
13
+ T extends { [key: string]: unknown },
14
+ K extends keyof T,
15
+ > = { [_ in K]?: never };
16
+ export type Incremental<T> =
17
+ | T
18
+ | {
19
+ [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never;
20
+ };
21
+ /** All built-in and custom scalars, mapped to their actual values */
22
+ export type Scalars = {
23
+ ID: { input: string; output: string };
24
+ String: { input: string; output: string };
25
+ Boolean: { input: boolean; output: boolean };
26
+ Int: { input: number; output: number };
27
+ Float: { input: number; output: number };
28
+ Base64: { input: any; output: any };
29
+ /** An arbitrary precision signed decimal */
30
+ BigDecimal: { input: any; output: any };
31
+ /** An arbitrary precision signed integer */
32
+ BigInteger: { input: any; output: any };
33
+ /** An 8-bit signed integer */
34
+ Byte: { input: any; output: any };
35
+ /** A UTF-16 code unit; a character on Unicode's BMP */
36
+ Char: { input: any; output: any };
37
+ Currency: { input: any; output: any };
38
+ Date: { input: any; output: any };
39
+ DateTime: { input: any; output: any };
40
+ Double: { input: any; output: any };
41
+ Email: { input: any; output: any };
42
+ EncryptedString: { input: any; output: any };
43
+ /** Can be set to an ID or a Reference to the result of another mutation operation. */
44
+ IdOrRef: { input: any; output: any };
45
+ JSON: { input: any; output: any };
46
+ Latitude: { input: any; output: any };
47
+ /** A 64-bit signed integer */
48
+ Long: { input: any; output: any };
49
+ LongTextArea: { input: any; output: any };
50
+ Longitude: { input: any; output: any };
51
+ MultiPicklist: { input: any; output: any };
52
+ Percent: { input: any; output: any };
53
+ PhoneNumber: { input: any; output: any };
54
+ Picklist: { input: any; output: any };
55
+ RichTextArea: { input: any; output: any };
56
+ /** A 16-bit signed integer */
57
+ Short: { input: any; output: any };
58
+ TextArea: { input: any; output: any };
59
+ Time: { input: any; output: any };
60
+ Url: { input: any; output: any };
61
+ };
62
+
63
+ export enum DataType {
64
+ Address = 'ADDRESS',
65
+ Anytype = 'ANYTYPE',
66
+ Base64 = 'BASE64',
67
+ Boolean = 'BOOLEAN',
68
+ Combobox = 'COMBOBOX',
69
+ Complexvalue = 'COMPLEXVALUE',
70
+ Currency = 'CURRENCY',
71
+ Date = 'DATE',
72
+ Datetime = 'DATETIME',
73
+ Double = 'DOUBLE',
74
+ Email = 'EMAIL',
75
+ Encryptedstring = 'ENCRYPTEDSTRING',
76
+ Int = 'INT',
77
+ Json = 'JSON',
78
+ Junctionidlist = 'JUNCTIONIDLIST',
79
+ Location = 'LOCATION',
80
+ Long = 'LONG',
81
+ Multipicklist = 'MULTIPICKLIST',
82
+ Percent = 'PERCENT',
83
+ Phone = 'PHONE',
84
+ Picklist = 'PICKLIST',
85
+ Reference = 'REFERENCE',
86
+ String = 'STRING',
87
+ Textarea = 'TEXTAREA',
88
+ Time = 'TIME',
89
+ Url = 'URL',
90
+ }
91
+
92
+ export enum FieldExtraTypeInfo {
93
+ ExternalLookup = 'EXTERNAL_LOOKUP',
94
+ ImageUrl = 'IMAGE_URL',
95
+ IndirectLookup = 'INDIRECT_LOOKUP',
96
+ Personname = 'PERSONNAME',
97
+ Plaintextarea = 'PLAINTEXTAREA',
98
+ Richtextarea = 'RICHTEXTAREA',
99
+ SwitchablePersonname = 'SWITCHABLE_PERSONNAME',
100
+ }
101
+
102
+ export enum ResultOrder {
103
+ Asc = 'ASC',
104
+ Desc = 'DESC',
105
+ }
106
+
107
+ export type GetHighRevenueAccountsQueryVariables = Exact<{
108
+ minRevenue?: InputMaybe<Scalars['Currency']['input']>;
109
+ }>;
110
+
111
+ export type GetHighRevenueAccountsQuery = {
112
+ uiapi: {
113
+ query: {
114
+ Account?: {
115
+ edges?: Array<{
116
+ node?: {
117
+ Id: string;
118
+ Name?: { value?: string | null } | null;
119
+ AnnualRevenue?: { value?: any | null } | null;
120
+ Industry?: { value?: any | null } | null;
121
+ Website?: { value?: any | null } | null;
122
+ } | null;
123
+ } | null> | null;
124
+ } | null;
125
+ };
126
+ };
127
+ };
@@ -0,0 +1,29 @@
1
+ query GetHighRevenueAccounts($minRevenue: Currency) {
2
+ uiapi {
3
+ query {
4
+ Account(
5
+ where: { AnnualRevenue: { gt: $minRevenue } }
6
+ orderBy: { AnnualRevenue: { order: DESC } }
7
+ first: 50
8
+ ) {
9
+ edges {
10
+ node {
11
+ Id
12
+ Name {
13
+ value
14
+ }
15
+ AnnualRevenue {
16
+ value
17
+ }
18
+ Industry {
19
+ value
20
+ }
21
+ Website {
22
+ value
23
+ }
24
+ }
25
+ }
26
+ }
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,22 @@
1
+ import { createBrowserRouter, RouterProvider } from 'react-router';
2
+ import { routes } from '@/routes';
3
+ import { StrictMode } from 'react';
4
+ import { createRoot } from 'react-dom/client';
5
+ import './styles/global.css';
6
+
7
+ // Match Vite base so client-side routes work when deployed under a path (e.g. /lwr/application/ai/c-webapp2/).
8
+ // When served at root (e.g. e2e with static serve), use '/' so routes match.
9
+ const base = (import.meta.env.BASE_URL ?? '/').replace(/\/$/, '') || '/';
10
+ const basename =
11
+ typeof window !== 'undefined' &&
12
+ (window.location.pathname === '/' ||
13
+ !window.location.pathname.startsWith('/lwr/'))
14
+ ? '/'
15
+ : base;
16
+ const router = createBrowserRouter(routes, { basename });
17
+
18
+ createRoot(document.getElementById('root')!).render(
19
+ <StrictMode>
20
+ <RouterProvider router={router} />
21
+ </StrictMode>
22
+ );
@@ -0,0 +1,29 @@
1
+ import { Outlet, NavLink } from 'react-router';
2
+
3
+ const navLinkClass = ({ isActive }: { isActive: boolean }) =>
4
+ `text-sm font-medium ${isActive ? 'text-gray-900' : 'text-gray-600 hover:text-gray-900'}`;
5
+
6
+ export default function AppLayout() {
7
+ return (
8
+ <>
9
+ <nav className="sticky top-0 z-10 border-b border-gray-200 bg-white">
10
+ <div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
11
+ <div className="flex h-14 items-center gap-8">
12
+ <NavLink to="/" end className={navLinkClass}>
13
+ Home
14
+ </NavLink>
15
+ <NavLink to="/about" className={navLinkClass}>
16
+ About
17
+ </NavLink>
18
+ <NavLink to="/does-not-exist" className={navLinkClass}>
19
+ 404
20
+ </NavLink>
21
+ </div>
22
+ </div>
23
+ </nav>
24
+ <main>
25
+ <Outlet />
26
+ </main>
27
+ </>
28
+ );
29
+ }
@@ -0,0 +1,3 @@
1
+ <svg width="14" height="12" viewBox="0 0 14 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M13.4935 0.000188828L13.9735 0.533522V10.5069L13.4935 11.0402H8.21348L7.36015 11.8935H6.61348L5.76015 11.0402H0.48015L0.000149727 10.5069V0.533522L0.48015 0.000188828H5.97348L6.34682 0.160189L6.98682 0.800188L7.62682 0.160189L8.00015 0.000188828H13.4935ZM6.50682 10.3469V1.76019L5.76015 1.01352H1.01348V10.0269H5.97348L6.29348 10.1869L6.50682 10.3469ZM13.0135 10.0269V1.01352H8.21348L7.52015 1.70685V10.2935L7.62682 10.1869L8.00015 10.0269H13.0135ZM5.01348 3.04019V4.00019H1.97348V3.04019H5.01348ZM5.01348 7.04019V8.00019H1.97348V7.04019H5.01348ZM1.97348 5.01352V6.02686H5.01348V5.01352H1.97348ZM12.0001 3.04019V4.00019H9.01348V3.04019H12.0001ZM9.01348 5.01352V6.02686H12.0001V5.01352H9.01348ZM9.01348 7.04019V8.00019H12.0001V7.04019H9.01348Z" fill="#0250D9"/>
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M5 5L6.25 3.75H13.0175L17.5 8.2325V17.5L16.25 18.75H6.25L5 17.5V5ZM16.25 8.75L12.5 5H6.25V17.5H16.25V8.75Z" fill="#2E2E2E"/>
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M3.75 1.25L2.5 2.5V15L3.75 16.25V2.5H11.7675L10.5175 1.25H3.75Z" fill="#2E2E2E"/>
4
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M13.4935 0.000149727L13.9735 0.480149C13.9735 2.15126 13.5646 3.80459 12.7468 5.44015C12.0713 6.7557 11.1468 8.05348 9.97348 9.33348V13.4935L9.49348 13.9735H6.50682L6.13348 13.8668L0.16015 7.84015L0.000149727 7.46682V4.48015L0.48015 4.00015H4.64015C5.92015 2.82682 7.21793 1.90237 8.53348 1.22682C10.169 0.409039 11.8224 0.000149727 13.4935 0.000149727ZM1.01348 4.96015V7.30682L1.38682 7.68015C2.06237 6.72015 2.80904 5.81348 3.62682 4.96015H1.01348ZM6.66682 12.9601H8.96015V10.3468C8.14237 11.1646 7.25348 11.9113 6.29348 12.5868L6.66682 12.9601ZM5.54682 11.8401C6.40015 11.2713 7.23571 10.6135 8.05348 9.86682C9.33348 8.62237 10.3824 7.36015 11.2002 6.08015C12.2668 4.37348 12.8535 2.68459 12.9601 1.01348C11.289 1.12015 9.60015 1.70682 7.89348 2.77348C6.61348 3.59126 5.35126 4.64015 4.10682 5.92015C3.36015 6.73793 2.70237 7.57348 2.13348 8.42682L5.54682 11.8401ZM2.98682 13.9735H0.000149727V10.9868H1.01348V12.9601H2.98682V13.9735ZM9.76015 6.29348C9.51126 6.64904 9.17348 6.88015 8.74682 6.98682C8.35571 7.05793 7.98237 6.98682 7.62682 6.77348C7.30682 6.52459 7.09348 6.20459 6.98682 5.81348C6.91571 5.38682 6.98682 5.01348 7.20015 4.69348C7.44904 4.33793 7.76904 4.12459 8.16015 4.05348C8.58682 3.94682 8.96015 4.01793 9.28015 4.26682C9.63571 4.48015 9.84904 4.80015 9.92015 5.22682C10.0268 5.61793 9.97348 5.97348 9.76015 6.29348Z" fill="#066AFE"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="14" height="13" viewBox="0 0 14 13" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M5.70684 0.533125C5.8135 0.319791 5.9735 0.177569 6.18684 0.106458C6.40017 0.0353467 6.6135 0.0353467 6.82684 0.106458C7.04017 0.177569 7.20017 0.319791 7.30684 0.533125L8.8535 3.62646L12.2135 4.10646C12.4624 4.14201 12.6579 4.26646 12.8002 4.47979C12.9424 4.65757 13.0135 4.8709 13.0135 5.11979C13.0135 5.33312 12.9246 5.5109 12.7468 5.65312L10.2935 8.05312L10.8802 11.4665C10.9157 11.6798 10.8624 11.8931 10.7202 12.1065C10.5779 12.2842 10.4002 12.4087 10.1868 12.4798C9.9735 12.5509 9.76017 12.5331 9.54684 12.4265L6.50684 10.8265L3.46684 12.4265C3.2535 12.5331 3.04017 12.5509 2.82684 12.4798C2.6135 12.4087 2.43572 12.2842 2.2935 12.1065C2.15128 11.8931 2.09795 11.6798 2.1335 11.4665L2.72017 8.05312L0.266836 5.65312C0.0890582 5.5109 0.000169277 5.33312 0.000169277 5.11979C0.000169277 4.8709 0.0712804 4.65757 0.213503 4.47979C0.355725 4.26646 0.55128 4.14201 0.800169 4.10646L4.16017 3.62646L5.70684 0.533125ZM6.50684 1.17312L5.06684 4.10646C4.92461 4.3909 4.6935 4.56868 4.3735 4.63979L1.12017 5.06646L3.46684 7.35979C3.71572 7.60868 3.80461 7.87535 3.7335 8.15979L3.20017 11.4131L6.08017 9.86646C6.36461 9.72424 6.64906 9.72424 6.9335 9.86646L9.8135 11.4131L9.28017 8.15979C9.24461 7.87535 9.3335 7.60868 9.54684 7.35979L11.8935 5.06646L8.64017 4.63979C8.32017 4.56868 8.08906 4.3909 7.94684 4.10646L6.50684 1.17312Z" fill="#066AFE"/>
3
+ </svg>