@salesforce/webapp-template-app-react-sample-b2e-experimental 1.48.3 → 1.50.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.
- package/dist/CHANGELOG.md +16 -0
- package/dist/force-app/main/default/data/Property__c.json +2 -2
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/api/dashboard.ts +170 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/api/maintenance.ts +221 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/api/properties.ts +157 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/api/utils.ts +4 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/appLayout.tsx +20 -8
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/appliances.svg +13 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/dashboard.svg +4 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/downgraph.svg +3 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/electrical.svg +41 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/files.svg +7 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/hvac.svg +79 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/maintenance.svg +4 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/pest.svg +5 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/plumbing.svg +7 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/properties.svg +14 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/support.svg +6 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/upgraph.svg +3 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/users.svg +8 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/zen-logo.svg +5 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/AnalyticsTile.tsx +29 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ApplicationCard.tsx +43 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/IssuesDonutChart.tsx +66 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/MaintenanceRequestCard.tsx +71 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/MaintenanceTable.tsx +110 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/PriorityBadge.tsx +29 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/PropertyCard.tsx +61 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/StatCard.tsx +52 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/StatusBadge.tsx +37 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/TopBar.tsx +72 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/UserAvatar.tsx +35 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/VerticalNav.tsx +54 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ui/alert.tsx +69 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ui/button.tsx +67 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ui/card.tsx +92 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ui/dialog.tsx +143 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ui/field.tsx +222 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ui/index.ts +72 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ui/input.tsx +19 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ui/label.tsx +19 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ui/pagination.tsx +112 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ui/select.tsx +183 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ui/separator.tsx +26 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ui/skeleton.tsx +14 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ui/spinner.tsx +15 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ui/table.tsx +87 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components/ui/tabs.tsx +78 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/components.json +18 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/lib/types.ts +57 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/lib/utils.ts +6 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/pages/Home.tsx +163 -10
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/pages/Maintenance.tsx +176 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/pages/Properties.tsx +94 -0
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/routes.tsx +19 -7
- package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/styles/global.css +160 -0
- package/dist/package.json +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
|
3
|
+
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
4
|
+
viewBox="0 0 512 512" xml:space="preserve">
|
|
5
|
+
<g>
|
|
6
|
+
<g>
|
|
7
|
+
<path d="M408.49,193.586c-38.366-34.559-88.566-54.508-142.291-56.752V10.199C266.199,4.566,261.633,0,256,0
|
|
8
|
+
c-5.633,0-10.199,4.566-10.199,10.199v126.634c-53.725,2.245-103.925,22.193-142.291,56.752
|
|
9
|
+
c-41.083,37.008-63.708,86.297-63.708,138.79c0,5.633,4.566,10.199,10.199,10.199h118.284
|
|
10
|
+
c5.513,39.678,42.747,70.459,87.715,70.459s82.202-30.781,87.715-70.459h118.284c5.633,0,10.199-4.566,10.199-10.199
|
|
11
|
+
C472.199,279.883,449.573,230.594,408.49,193.586z M256,392.636c-33.583,0-61.56-21.674-67.047-50.061h134.093
|
|
12
|
+
C317.56,370.961,289.583,392.636,256,392.636z M60.527,322.177c5.917-91.967,91.33-165.163,195.473-165.163
|
|
13
|
+
s189.556,73.196,195.473,165.163H60.527z"/>
|
|
14
|
+
</g>
|
|
15
|
+
</g>
|
|
16
|
+
<g>
|
|
17
|
+
<g>
|
|
18
|
+
<path d="M254.924,429.21c-5.633,0-10.199,4.566-10.199,10.199v62.392c0,5.633,4.566,10.199,10.199,10.199
|
|
19
|
+
c5.633,0,10.199-4.566,10.199-10.199v-62.392C265.123,433.776,260.557,429.21,254.924,429.21z"/>
|
|
20
|
+
</g>
|
|
21
|
+
</g>
|
|
22
|
+
<g>
|
|
23
|
+
<g>
|
|
24
|
+
<path d="M381.687,445.438l-2.481-2.482c-3.983-3.983-10.441-3.983-14.425,0c-3.983,3.983-3.983,10.441,0,14.425l2.482,2.482
|
|
25
|
+
c1.992,1.992,4.602,2.987,7.212,2.987s5.221-0.995,7.212-2.987C385.67,455.88,385.67,449.422,381.687,445.438z"/>
|
|
26
|
+
</g>
|
|
27
|
+
</g>
|
|
28
|
+
<g>
|
|
29
|
+
<g>
|
|
30
|
+
<path d="M356.8,420.55l-19.229-19.23c-3.983-3.983-10.441-3.983-14.425,0c-3.983,3.983-3.983,10.441,0,14.425l19.23,19.23
|
|
31
|
+
c1.992,1.992,4.602,2.987,7.212,2.987s5.221-0.995,7.212-2.987C360.783,430.992,360.783,424.534,356.8,420.55z"/>
|
|
32
|
+
</g>
|
|
33
|
+
</g>
|
|
34
|
+
<g>
|
|
35
|
+
<g>
|
|
36
|
+
<path d="M185.441,404.363c-3.982-3.983-10.44-3.983-14.424,0L126.9,448.48c-3.983,3.983-3.983,10.441,0,14.425
|
|
37
|
+
c1.992,1.992,4.602,2.987,7.212,2.987s5.221-0.995,7.212-2.987l44.118-44.118C189.424,414.805,189.424,408.347,185.441,404.363z"
|
|
38
|
+
/>
|
|
39
|
+
</g>
|
|
40
|
+
</g>
|
|
41
|
+
</svg>
|
package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/files.svg
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg width="26" height="26" viewBox="0 0 26 26" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.6875 2.4375H17.0625L21.9375 7.3125V21.9375C21.9375 22.835 21.21 23.5625 20.3125 23.5625H5.6875C4.79004 23.5625 4.0625 22.835 4.0625 21.9375V4.0625C4.0625 3.16504 4.79004 2.4375 5.6875 2.4375Z" stroke="#65185C" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
+
<path d="M8.9375 17.0625H12.1875" stroke="#65185C" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
+
<path d="M8.9375 13.8125H17.0625" stroke="#65185C" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
+
<path d="M8.9375 10.5625H17.0625" stroke="#65185C" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
6
|
+
<path d="M17.0625 2.4375V7.3125H21.9375" stroke="#65185C" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7
|
+
</svg>
|
package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/hvac.svg
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
|
3
|
+
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
4
|
+
viewBox="0 0 512 512" xml:space="preserve">
|
|
5
|
+
<g>
|
|
6
|
+
<g>
|
|
7
|
+
<path d="M482.815,93.937H29.185C13.093,93.937,0,107.029,0,123.123v265.755c0,16.093,13.093,29.186,29.185,29.186h453.63
|
|
8
|
+
c16.092,0,29.185-13.093,29.185-29.186V123.123C512,107.029,498.907,93.937,482.815,93.937z M482.815,397.665H29.185
|
|
9
|
+
c-4.845,0-8.787-3.942-8.787-8.788V123.123c0-4.845,3.942-8.788,8.787-8.788h453.63c4.845,0,8.787,3.942,8.787,8.788v265.755h0
|
|
10
|
+
C491.602,393.722,487.66,397.665,482.815,397.665z"/>
|
|
11
|
+
</g>
|
|
12
|
+
</g>
|
|
13
|
+
<g>
|
|
14
|
+
<g>
|
|
15
|
+
<path d="M165.227,138.709c-64.674,0-117.291,52.617-117.291,117.291s52.617,117.291,117.291,117.291S282.518,320.674,282.518,256
|
|
16
|
+
S229.901,138.709,165.227,138.709z M165.227,352.892c-53.427,0-96.892-43.466-96.892-96.892c0-53.426,43.466-96.892,96.892-96.892
|
|
17
|
+
c53.426,0,96.892,43.466,96.892,96.892C262.12,309.427,218.654,352.892,165.227,352.892z"/>
|
|
18
|
+
</g>
|
|
19
|
+
</g>
|
|
20
|
+
<g>
|
|
21
|
+
<g>
|
|
22
|
+
<path d="M252.137,262.786c-4.959-7.802-13.735-11.878-22.893-10.65c-11.264,1.517-22.867,0.816-33.891-2.002
|
|
23
|
+
c-1.243-5.677-4.005-10.79-7.84-14.892c1.022-2.523,2.468-4.881,4.257-6.924c7.147-8.16,11.081-18.629,11.081-29.475
|
|
24
|
+
c0-16.945-13.258-30.862-30.184-31.684l-24.291-1.179c-9.244-0.453-17.627,4.364-21.904,12.56
|
|
25
|
+
c-4.276,8.196-3.424,17.833,2.224,25.151c6.784,8.789,11.772,18.574,14.875,29.144c-4.704,4.049-8.212,9.444-9.922,15.585
|
|
26
|
+
c-2.285,0.198-4.6,0.078-6.844-0.367c-10.64-2.107-21.672-0.283-31.066,5.141c-14.675,8.472-20.099,26.913-12.347,41.981
|
|
27
|
+
l11.124,21.627c4.07,7.911,11.968,12.71,20.788,12.71c0.346,0,0.694-0.007,1.041-0.021c9.236-0.395,17.155-5.951,20.67-14.502
|
|
28
|
+
c4.25-10.345,10.288-19.619,17.974-27.634c2.942,0.902,6.063,1.389,9.298,1.389c2.924,0,5.754-0.405,8.446-1.147
|
|
29
|
+
c1.567,2.072,2.812,4.394,3.646,6.848c3.495,10.269,10.593,18.911,19.985,24.333c4.998,2.885,10.461,4.264,15.855,4.264
|
|
30
|
+
c10.443,0,20.627-5.167,26.675-14.561l13.167-20.447C257.068,280.262,257.096,270.587,252.137,262.786z M118.148,307.238
|
|
31
|
+
c-0.608,1.481-1.788,1.836-2.67,1.874c-0.882,0.035-2.089-0.215-2.821-1.639l-11.124-21.626
|
|
32
|
+
c-2.767-5.379-0.83-11.962,4.407-14.986c5.111-2.951,11.115-3.943,16.901-2.798c3.914,0.775,7.946,1.007,11.937,0.719
|
|
33
|
+
c0.934,2.318,2.133,4.501,3.56,6.513C129.792,284.674,123.018,295.385,118.148,307.238z M164.289,268.347
|
|
34
|
+
c-6.29,0-11.408-5.118-11.408-11.408s5.118-11.407,11.408-11.407s11.407,5.117,11.407,11.407S170.579,268.347,164.289,268.347z
|
|
35
|
+
M176.422,214.879c-2.8,3.198-5.136,6.819-6.93,10.688c-1.694-0.28-3.431-0.432-5.204-0.432c-0.578,0-1.151,0.017-1.723,0.048
|
|
36
|
+
c-3.845-12.279-9.783-23.67-17.721-33.954c-0.978-1.267-0.697-2.466-0.288-3.25c0.409-0.784,1.206-1.696,2.829-1.623l24.291,1.179
|
|
37
|
+
c6.042,0.294,10.774,5.261,10.774,11.309C182.452,204.744,180.31,210.439,176.422,214.879z M234.912,276.991l-13.168,20.448
|
|
38
|
+
c-3.273,5.085-9.942,6.699-15.181,3.676c-5.111-2.951-8.972-7.652-10.873-13.239c-1.421-4.174-3.49-8.141-6.072-11.73
|
|
39
|
+
c1.318-1.734,2.462-3.605,3.407-5.59c12.734,2.905,26.019,3.537,38.94,1.798c1.581-0.216,2.482,0.627,2.957,1.374
|
|
40
|
+
C235.396,274.474,235.779,275.645,234.912,276.991z"/>
|
|
41
|
+
</g>
|
|
42
|
+
</g>
|
|
43
|
+
<g>
|
|
44
|
+
<g>
|
|
45
|
+
<path d="M456.924,141.769H321.275c-5.632,0-10.199,4.566-10.199,10.199s4.567,10.199,10.199,10.199h135.649
|
|
46
|
+
c5.632,0,10.199-4.566,10.199-10.199S462.556,141.769,456.924,141.769z"/>
|
|
47
|
+
</g>
|
|
48
|
+
</g>
|
|
49
|
+
<g>
|
|
50
|
+
<g>
|
|
51
|
+
<path d="M456.924,193.785H321.275c-5.632,0-10.199,4.566-10.199,10.199s4.567,10.199,10.199,10.199h135.649
|
|
52
|
+
c5.632,0,10.199-4.566,10.199-10.199S462.556,193.785,456.924,193.785z"/>
|
|
53
|
+
</g>
|
|
54
|
+
</g>
|
|
55
|
+
<g>
|
|
56
|
+
<g>
|
|
57
|
+
<path d="M456.924,245.801H321.275c-5.632,0-10.199,4.566-10.199,10.199c0,5.633,4.567,10.199,10.199,10.199h135.649
|
|
58
|
+
c5.632,0,10.199-4.566,10.199-10.199C467.124,250.367,462.556,245.801,456.924,245.801z"/>
|
|
59
|
+
</g>
|
|
60
|
+
</g>
|
|
61
|
+
<g>
|
|
62
|
+
<g>
|
|
63
|
+
<path d="M456.924,297.817H321.275c-5.632,0-10.199,4.566-10.199,10.199c0,5.633,4.567,10.199,10.199,10.199h135.649
|
|
64
|
+
c5.632,0,10.199-4.566,10.199-10.199C467.124,302.383,462.556,297.817,456.924,297.817z"/>
|
|
65
|
+
</g>
|
|
66
|
+
</g>
|
|
67
|
+
<g>
|
|
68
|
+
<g>
|
|
69
|
+
<path d="M416.128,349.833h-94.853c-5.632,0-10.199,4.566-10.199,10.199c0,5.633,4.567,10.199,10.199,10.199h94.853
|
|
70
|
+
c5.632,0,10.199-4.566,10.199-10.199C426.327,354.399,421.76,349.833,416.128,349.833z"/>
|
|
71
|
+
</g>
|
|
72
|
+
</g>
|
|
73
|
+
<g>
|
|
74
|
+
<g>
|
|
75
|
+
<path d="M456.924,349.833h-5.1c-5.632,0-10.199,4.566-10.199,10.199c0,5.633,4.567,10.199,10.199,10.199h5.1
|
|
76
|
+
c5.632,0,10.199-4.566,10.199-10.199C467.124,354.399,462.556,349.833,456.924,349.833z"/>
|
|
77
|
+
</g>
|
|
78
|
+
</g>
|
|
79
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="23" height="23" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M15.3233 4.2421C14.9328 4.63263 14.9328 5.26579 15.3233 5.65632L16.6243 6.95728C17.0148 7.34781 17.648 7.34781 18.0385 6.95728L20.7184 4.27732C21.7407 6.41824 21.3665 9.05942 19.5936 10.8326C18.1819 12.2442 16.2196 12.7685 14.398 12.4084L6.46306 20.3433C5.21342 21.5929 3.18702 21.5927 1.9373 20.3433C0.687675 19.0936 0.687668 17.0672 1.9373 15.8175L9.87085 7.88398C9.5099 6.06172 10.0351 4.09855 11.4473 2.68633C13.2209 0.913 15.8629 0.5384 18.004 1.56145L15.3233 4.2421ZM5.25808 17.0225C5.04894 16.8135 4.70978 16.8129 4.50056 17.0218C4.29143 17.231 4.29146 17.5708 4.50056 17.78C4.70977 17.9892 5.04954 17.9892 5.25877 17.78C5.46772 17.5708 5.46721 17.2316 5.25808 17.0225Z" fill="white"/>
|
|
3
|
+
<path d="M20.7184 4.27732L21.6209 3.84644L21.0114 2.57012L20.0113 3.57021L20.7184 4.27732ZM19.5936 10.8326L20.3007 11.5397L20.3007 11.5396L19.5936 10.8326ZM14.398 12.4084L14.5919 11.4273L14.0683 11.3238L13.6909 11.7013L14.398 12.4084ZM6.46306 20.3433L7.17015 21.0504L7.17017 21.0504L6.46306 20.3433ZM1.9373 20.3433L1.23018 21.0504L1.23027 21.0505L1.9373 20.3433ZM1.9373 15.8175L1.2302 15.1104L1.23018 15.1104L1.9373 15.8175ZM9.87085 7.88398L10.578 8.59109L10.9555 8.2135L10.8518 7.68968L9.87085 7.88398ZM11.4473 2.68633L10.7403 1.97918L10.7402 1.97923L11.4473 2.68633ZM18.004 1.56145L18.7111 2.26856L19.7109 1.26876L18.4351 0.659163L18.004 1.56145ZM5.25808 17.0225L5.96519 16.3154L5.96499 16.3152L5.25808 17.0225ZM4.50056 17.0218L3.79397 16.3142L3.79335 16.3148L4.50056 17.0218ZM4.50056 17.78L3.79326 18.4869L3.79346 18.4871L4.50056 17.78ZM5.25877 17.78L5.96577 18.4872L5.96639 18.4866L5.25877 17.78ZM15.3233 4.2421L14.6162 3.535C13.8351 4.31605 13.8351 5.58238 14.6162 6.36342L15.3233 5.65632L16.0304 4.94921L15.3233 4.2421ZM15.3233 5.65632L14.6162 6.36342L15.9172 7.66439L16.6243 6.95728L17.3314 6.25018L16.0304 4.94921L15.3233 5.65632ZM16.6243 6.95728L15.9172 7.66439C16.6982 8.44544 17.9645 8.44544 18.7456 7.66439L18.0385 6.95728L17.3314 6.25018L16.6243 6.95728ZM18.0385 6.95728L18.7456 7.66439L21.4256 4.98443L20.7184 4.27732L20.0113 3.57021L17.3314 6.25018L18.0385 6.95728ZM20.7184 4.27732L19.816 4.70821C20.6616 6.47911 20.3501 8.66157 18.8864 10.1255L19.5936 10.8326L20.3007 11.5396C22.3828 9.45726 22.8198 6.35736 21.6209 3.84644L20.7184 4.27732ZM19.5936 10.8326L18.8865 10.1254C17.721 11.2909 16.1009 11.7256 14.5919 11.4273L14.398 12.4084L14.2041 13.3894C16.3384 13.8113 18.6428 13.1975 20.3007 11.5397L19.5936 10.8326ZM14.398 12.4084L13.6909 11.7013L5.75596 19.6362L6.46306 20.3433L7.17017 21.0504L15.1051 13.1155L14.398 12.4084ZM6.46306 20.3433L5.75597 19.6362C4.89691 20.4952 3.5036 20.4952 2.64434 19.6361L1.9373 20.3433L1.23027 21.0505C2.87044 22.6903 5.52994 22.6905 7.17015 21.0504L6.46306 20.3433ZM1.9373 20.3433L2.64443 19.6362C1.7853 18.777 1.7853 17.3838 2.64443 16.5246L1.9373 15.8175L1.23018 15.1104C-0.409959 16.7507 -0.409948 19.4102 1.23018 21.0504L1.9373 20.3433ZM1.9373 15.8175L2.64441 16.5246L10.578 8.59109L9.87085 7.88398L9.16374 7.17687L1.2302 15.1104L1.9373 15.8175ZM9.87085 7.88398L10.8518 7.68968C10.5529 6.18064 10.9882 4.55969 12.1544 3.39343L11.4473 2.68633L10.7402 1.97923C9.08209 3.6374 8.46691 5.9428 8.88991 8.07828L9.87085 7.88398ZM11.4473 2.68633L12.1544 3.39349C13.6188 1.92924 15.802 1.61761 17.5728 2.46374L18.004 1.56145L18.4351 0.659163C15.9238 -0.540807 12.823 -0.10324 10.7403 1.97918L11.4473 2.68633ZM18.004 1.56145L17.2968 0.854344L14.6162 3.535L15.3233 4.2421L16.0304 4.94921L18.7111 2.26856L18.004 1.56145ZM5.25808 17.0225L5.96499 16.3152C5.36673 15.7173 4.39495 15.7141 3.79397 16.3142L4.50056 17.0218L5.20716 17.7294C5.0246 17.9117 4.73114 17.9097 4.55117 17.7298L5.25808 17.0225ZM4.50056 17.0218L3.79335 16.3148C3.19375 16.9146 3.19398 17.8873 3.79326 18.4869L4.50056 17.78L5.20787 17.0731C5.38894 17.2543 5.38911 17.5474 5.20778 17.7288L4.50056 17.0218ZM4.50056 17.78L3.79346 18.4871C4.3933 19.087 5.36614 19.0867 5.96577 18.4872L5.25877 17.78L4.55177 17.0728C4.73293 16.8917 5.02625 16.8915 5.20767 17.0729L4.50056 17.78ZM5.25877 17.78L5.96639 18.4866C6.56635 17.8858 6.56367 16.9139 5.96519 16.3154L5.25808 17.0225L4.55097 17.7296C4.37076 17.5494 4.36909 17.2558 4.55115 17.0734L5.25877 17.78Z" fill="#65185C"/>
|
|
4
|
+
</svg>
|
package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/pest.svg
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<?xml version='1.0' encoding='iso-8859-1'?>
|
|
2
|
+
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
|
3
|
+
<svg fill="#000000" height="800px" width="800px" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 463 463" xmlns:xlink="http://www.w3.org/1999/xlink" enable-background="new 0 0 463 463">
|
|
4
|
+
<path d="m355.256,145.405c-34.083-19.724-60.085-50.573-73.704-87.254 4.229-2.018 8.958-3.151 13.947-3.151h15.971c0.008,0 0.015,0.002 0.023,0.002 0.051,0 0.102-0.008 0.153-0.009 0.234-0.005 0.465-0.017 0.693-0.042 0.079-0.009 0.157-0.025 0.236-0.036 0.216-0.031 0.43-0.07 0.639-0.119 0.034-0.008 0.069-0.011 0.103-0.019l25.941-6.485c6.912-1.729 11.74-7.912 11.74-15.037v-11.509c0-7.125-4.828-13.309-11.741-15.037l-25.94-6.485c-0.04-0.01-0.081-0.014-0.121-0.024-0.146-0.034-0.293-0.062-0.442-0.087-0.11-0.019-0.221-0.037-0.331-0.051-0.124-0.015-0.25-0.026-0.376-0.035-0.136-0.01-0.271-0.018-0.406-0.021-0.047,2.45463e-15-0.093-0.006-0.142-0.006h-98.745c-10.551,0-20.471,4.109-27.931,11.569l-56.97,56.971c-4.449,4.449-5.768,11.079-3.36,16.892s8.028,9.568 14.32,9.568h29.187v9h-0.5c-8.547,0-15.5,6.953-15.5,15.5v22.273c0,10.239-2.784,20.291-8.052,29.069l-20.639,34.398c-12.632,21.054-19.31,45.161-19.31,69.714v132.546c0,30.603 24.897,55.5 55.5,55.5h96c30.603,0 55.5-24.897 55.5-55.5v-132.546c0-24.553-6.677-48.66-19.31-69.714l-20.639-34.398c-5.268-8.778-8.052-18.83-8.052-29.069v-22.273c0-8.547-6.953-15.5-15.5-15.5h-0.5v-9h8.5c4.142,0 7.5-3.358 7.5-7.5 0-7.219 2.369-13.893 6.365-19.292 15.273,37.82 42.778,69.577 78.378,90.18 1.183,0.685 2.475,1.01 3.75,1.01 2.589,0 5.108-1.343 6.498-3.745 2.076-3.586 0.852-8.174-2.733-10.248zm-19.257-123.659v11.508c0,0.23-0.156,0.43-0.378,0.485l-16.622,4.155v-20.788l16.621,4.155c0.224,0.055 0.379,0.255 0.379,0.485zm-199.828,191.212l20.639-34.398c5.073-8.455 8.32-17.844 9.585-27.56h33.604v144.037c-1.835-0.565-3.396-1.343-5.197-2.244-4.268-2.135-9.579-4.792-19.346-4.792-9.765,0-15.076,2.658-19.343,4.793-3.721,1.862-6.409,3.207-12.631,3.207-6.225,0-8.914-1.345-12.636-3.208-3.02-1.511-6.572-3.279-11.847-4.186v-13.652c-4.26326e-14-21.836 5.938-43.274 17.172-61.997zm71.328,186.042c4.687,0 8.5,3.813 8.5,8.5v8.5h-17v-8.5c0-4.687 3.813-8.5 8.5-8.5zm48,49h-96c-22.332,0-40.5-18.168-40.5-40.5v-103.517c1.808,0.564 3.356,1.334 5.136,2.225 4.268,2.135 9.58,4.792 19.347,4.792 9.766,0 15.076-2.658 19.344-4.793 3.721-1.862 6.409-3.207 12.63-3.207 6.224,0 8.912,1.345 12.634,3.208 3.032,1.517 6.6,3.293 11.909,4.196v73.096c0,0.575 0.071,1.132 0.193,1.669-9.39,3.081-16.193,11.924-16.193,22.331v16c0,4.142 3.358,7.5 7.5,7.5h32c4.142,0 7.5-3.358 7.5-7.5v-16c0-10.407-6.803-19.25-16.193-22.331 0.122-0.537 0.193-1.094 0.193-1.669v-73.117c5.241-0.91 8.776-2.671 11.785-4.176 3.723-1.862 6.413-3.208 12.639-3.208 6.241,0 8.937,1.346 12.668,3.21 4.273,2.134 9.592,4.79 19.37,4.79s15.097-2.656 19.371-4.79c1.791-0.895 3.347-1.668 5.168-2.233v103.524c-0.001,22.332-18.169,40.5-40.501,40.5zm23.329-235.042c11.234,18.724 17.172,40.162 17.172,61.997v13.65c-5.286,0.906-8.844,2.674-11.87,4.185-3.731,1.864-6.427,3.21-12.668,3.21-6.241,0-8.937-1.346-12.668-3.21-4.273-2.134-9.592-4.79-19.37-4.79-9.768,0-15.081,2.657-19.349,4.792-1.76,0.881-3.293,1.643-5.074,2.205v-143.997h33.604c1.265,9.715 4.512,19.104 9.585,27.56l20.638,34.398zm-30.829-93.458v16.5h-81v-16.5c0-0.276 0.224-0.5 0.5-0.5h80c0.276,0 0.5,0.224 0.5,0.5zm-16-15.5h-49v-9h49v9zm16.592-24h-109.778c-0.179,0-0.334,0-0.462-0.309-0.127-0.309-0.018-0.418 0.108-0.545l56.971-56.971c4.628-4.627 10.78-7.175 17.324-7.175h91.245v25h-8.5c-23.64,0-43.302,17.359-46.908,40z"/>
|
|
5
|
+
</svg>
|
package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/plumbing.svg
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<?xml version='1.0' encoding='iso-8859-1'?>
|
|
2
|
+
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
|
3
|
+
<svg fill="#000000" height="800px" width="800px" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 463 463" xmlns:xlink="http://www.w3.org/1999/xlink" enable-background="new 0 0 463 463">
|
|
4
|
+
<g>
|
|
5
|
+
<path d="m447,341.234v-17.734c0-79.126-64.374-143.5-143.5-143.5h-113.734c-3.138-9.29-11.93-16-22.266-16-4.687,0-8.5-3.813-8.5-8.5v-8.5h0.5c4.142,0 7.5-3.358 7.5-7.5s-3.358-7.5-7.5-7.5h-16.5v-27.077l47.496,9.543c1.786,0.357 3.582,0.533 5.365,0.533 6.219,0 12.28-2.137 17.192-6.165 6.321-5.182 9.947-12.842 9.947-21.016s-3.625-15.833-9.946-21.016c-6.322-5.183-14.544-7.236-22.558-5.632l-50.889,10.177c-4.123-6.796-11.593-11.347-20.107-11.347s-15.984,4.551-20.107,11.348l-50.889-10.178c-8.013-1.602-16.237,0.45-22.558,5.632-6.321,5.182-9.946,12.842-9.946,21.016s3.625,15.834 9.947,21.016c4.913,4.028 10.975,6.166 17.192,6.166 1.781,0 3.575-0.176 5.357-0.532l47.504-9.443v26.975h-16.5c-4.142,0-7.5,3.358-7.5,7.5s3.358,7.5 7.5,7.5h0.5v8.5c0,4.687-3.813,8.5-8.5,8.5-10.336,0-19.128,6.71-22.266,16h-25.734c-12.958,0-23.5,10.542-23.5,23.5v64c0,12.958 10.542,23.5 23.5,23.5h25.734c3.138,9.29 11.93,16 22.266,16h96c10.336,0 19.128-6.71 22.266-16h113.734c17.92,0 32.5,14.58 32.5,32.5v17.734c-9.29,3.138-16,11.93-16,22.266v16c0,12.958 10.542,23.5 23.5,23.5h96c12.958,0 23.5-10.542 23.5-23.5v-16c0-10.336-6.71-19.128-16-22.266zm-253.563-265.355c3.589-0.719 7.274,0.201 10.107,2.523 2.832,2.322 4.456,5.753 4.456,9.416s-1.625,7.094-4.457,9.416c-2.832,2.322-6.516,3.242-10.1,2.524l-50.443-10.135v-3.657l50.437-10.087zm-73.937-.879c4.687,0 8.5,3.813 8.5,8.5v16.5h-17v-16.5c0-4.687 3.813-8.5 8.5-8.5zm-73.937,24.757c-3.592,0.719-7.275-0.202-10.106-2.523-2.832-2.322-4.457-5.754-4.457-9.416s1.624-7.094 4.456-9.416c2.832-2.322 6.515-3.243 10.107-2.523l50.437,10.088v3.765l-50.437,10.025zm65.437,15.243h17v17h-17v-17zm-96,152.5v-64c0-4.687 3.813-8.5 8.5-8.5h24.5v81h-24.5c-4.687,0-8.5-3.813-8.5-8.5zm161,16c0,4.687-3.813,8.5-8.5,8.5h-96c-4.68,0-8.488-3.803-8.499-8.481 0-0.007 0.001-0.013 0.001-0.019 0-0.013-0.002-0.026-0.002-0.039v-95.923c0-0.013 0.002-0.026 0.002-0.039 0-0.007-0.001-0.013-0.001-0.019 0.011-4.677 3.819-8.48 8.499-8.48 12.958,0 23.5-10.542 23.5-23.5v-8.5h49v8.5c0,12.958 10.542,23.5 23.5,23.5 4.687,0 8.5,3.813 8.5,8.5v96zm127.5-7.5h-112.5v-81h112.5c70.855,0 128.5,57.645 128.5,128.5v16.5h-81v-16.5c0-26.191-21.309-47.5-47.5-47.5zm144.5,103.5c0,4.687-3.813,8.5-8.5,8.5h-96c-4.687,0-8.5-3.813-8.5-8.5v-16c0-4.687 3.813-8.5 8.5-8.5h96c4.687,0 8.5,3.813 8.5,8.5v16z"/>
|
|
6
|
+
</g>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg width="22" height="19" viewBox="0 0 22 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M2 1H10C10.5523 1 11 1.44772 11 2V18H2C1.44771 18 1 17.5523 1 17V2L1.00488 1.89746C1.05621 1.39333 1.48232 1 2 1Z" stroke="#65185C" stroke-width="2"/>
|
|
3
|
+
<rect x="11" y="6" width="10" height="12" rx="1" stroke="#65185C" stroke-width="2"/>
|
|
4
|
+
<rect x="4" y="5" width="1" height="2" fill="#65185C"/>
|
|
5
|
+
<rect x="4" y="9" width="1" height="2" fill="#65185C"/>
|
|
6
|
+
<rect x="14" y="9" width="1" height="2" fill="#65185C"/>
|
|
7
|
+
<rect x="4" y="13" width="1" height="2" fill="#65185C"/>
|
|
8
|
+
<rect x="14" y="13" width="1" height="2" fill="#65185C"/>
|
|
9
|
+
<rect x="7" y="5" width="1" height="2" fill="#65185C"/>
|
|
10
|
+
<rect x="7" y="9" width="1" height="2" fill="#65185C"/>
|
|
11
|
+
<rect x="17" y="9" width="1" height="2" fill="#65185C"/>
|
|
12
|
+
<rect x="7" y="13" width="1" height="2" fill="#65185C"/>
|
|
13
|
+
<rect x="17" y="13" width="1" height="2" fill="#65185C"/>
|
|
14
|
+
</svg>
|
package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/support.svg
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg width="29" height="26" viewBox="0 0 29 26" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M19.5527 0C21.2096 0 22.5527 1.34315 22.5527 3C22.5527 4.33981 21.6742 5.47321 20.4619 5.8584V7.59668H21.1436C21.52 7.59668 21.825 7.90189 21.8252 8.27832C21.8252 8.65488 21.5201 8.95996 21.1436 8.95996H20.4619V9.45605C20.5332 9.43077 20.6095 9.41504 20.6895 9.41504H21.1436C21.5201 9.41504 21.8252 9.72012 21.8252 10.0967C21.8252 10.4732 21.5201 10.7783 21.1436 10.7783H20.6895C20.6094 10.7783 20.5333 10.7617 20.4619 10.7363V10.7783C20.4619 11.2804 20.0548 11.6875 19.5527 11.6875C19.0507 11.6875 18.6436 11.2804 18.6436 10.7783V5.8584C17.4314 5.47314 16.5527 4.33973 16.5527 3C16.5527 1.34319 17.8959 6.597e-05 19.5527 0Z" fill="#65185C"/>
|
|
3
|
+
<path d="M4.83026 11.8751C5.30856 11.599 5.92015 11.7629 6.19629 12.2411L10.6963 20.0354C10.9724 20.5137 10.8086 21.1253 10.3303 21.4014L6.86616 23.4014L1.36616 13.8751L4.83026 11.8751Z" stroke="#65185C" stroke-width="2"/>
|
|
4
|
+
<path d="M6.6967 13.1071C7.24397 10.8192 10.6795 9.38939 12.9169 11.1772C13.7165 11.8161 14.4866 12.5518 15.4677 12.8433L17.6936 13.5047C18.6747 13.7962 19.5067 14.4526 20.0185 15.339L20.2215 15.6907M20.2215 15.6907L20.0706 15.7778C19.1194 16.327 17.9843 16.4609 16.9314 16.1481L14.6194 15.4612M20.2215 15.6907L24.131 13.4336C24.254 13.3625 24.4009 13.3452 24.5371 13.3857L25.5608 13.6899C26.5896 13.9956 26.7533 15.3838 25.8238 15.9205L20.7503 18.8497C19.7991 19.3989 18.6639 19.5327 17.611 19.2199L12.658 17.7482C11.3376 17.3559 10.3531 17.9243 9.6967 18.3033" stroke="#65185C" stroke-width="2"/>
|
|
5
|
+
<rect x="4.96484" y="14.1072" width="1" height="1" rx="0.5" transform="rotate(60 4.96484 14.1072)" fill="#65185C"/>
|
|
6
|
+
</svg>
|
package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/upgraph.svg
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.2117 3.35392C11.1612 3.23142 11.0637 3.13392 10.9412 3.08342C10.8802 3.05792 10.8152 3.04492 10.7502 3.04492H8.2957C8.0192 3.04492 7.7957 3.26842 7.7957 3.54492C7.7957 3.82142 8.0192 4.04492 8.2957 4.04492H9.5427L6.8637 6.7229L5.1722 5.0309C4.98469 4.84342 4.65319 4.84342 4.46519 5.0309L1.39619 8.1014C1.20119 8.2969 1.20119 8.6134 1.39669 8.8084C1.49419 8.9059 1.62219 8.9549 1.75019 8.9549C1.87819 8.9549 2.00619 8.9059 2.10369 8.8084L4.81869 6.0919L6.5097 7.7834C6.7052 7.9789 7.0217 7.9789 7.2172 7.7834L10.2502 4.75142V5.9999C10.2502 6.2764 10.4737 6.4999 10.7502 6.4999C11.0267 6.4999 11.2502 6.2764 11.2502 5.9999V3.54492C11.2502 3.47992 11.2367 3.41492 11.2117 3.35392Z" fill="#114C50"/>
|
|
3
|
+
</svg>
|
package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/users.svg
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg width="16" height="19" viewBox="0 0 16 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M8 1.5L8.00006 0.5H7.99995L8 1.5ZM13.5967 6.56836L12.6015 6.66614L12.6826 7.49179L13.509 7.56451L13.5967 6.56836ZM13.4844 9.09375V10.0938V9.09375ZM2.40137 6.56836L2.49054 7.56438L3.31559 7.49051L3.39658 6.66612L2.40137 6.56836ZM8 1.5L7.99994 2.5C10.3989 2.50015 12.3717 4.32767 12.6015 6.66614L13.5967 6.56836L14.5919 6.47058C14.2626 3.11875 11.4383 0.500219 8.00006 0.5L8 1.5ZM13.5967 6.56836L13.509 7.56451C13.6446 7.57644 13.75 7.69093 13.75 7.82812H14.75H15.75C15.75 6.6431 14.8414 5.67402 13.6843 5.57221L13.5967 6.56836ZM14.75 7.82812H13.75C13.75 7.97483 13.6311 8.09375 13.4844 8.09375V9.09375V10.0938C14.7356 10.0938 15.75 9.0794 15.75 7.82812H14.75ZM13.4844 9.09375V8.09375H2.51562V9.09375V10.0938H13.4844V9.09375ZM2.51562 9.09375V8.09375C2.36892 8.09375 2.25 7.97483 2.25 7.82812H1.25H0.25C0.25 9.0794 1.26435 10.0938 2.51562 10.0938V9.09375ZM1.25 7.82812H2.25C2.25 7.69089 2.35531 7.57648 2.49054 7.56438L2.40137 6.56836L2.31219 5.57234C1.1566 5.67581 0.25 6.64446 0.25 7.82812H1.25ZM2.40137 6.56836L3.39658 6.66612C3.62626 4.32802 5.60062 2.50011 8.00005 2.5L8 1.5L7.99995 0.5C4.56208 0.500164 1.73548 3.11823 1.40616 6.47059L2.40137 6.56836Z" fill="#65185C"/>
|
|
3
|
+
<line x1="8.25" y1="1" x2="8.25" y2="3.5" stroke="#65185C" stroke-width="2" stroke-linecap="round"/>
|
|
4
|
+
<line x1="13.25" y1="3.66421" x2="11.6642" y2="5.25" stroke="#65185C" stroke-width="2" stroke-linecap="round"/>
|
|
5
|
+
<line x1="4.33579" y1="5.25" x2="2.75" y2="3.66421" stroke="#65185C" stroke-width="2" stroke-linecap="round"/>
|
|
6
|
+
<path d="M4 11C5.90288 13.8543 10.0971 13.8543 12 11" stroke="#65185C" stroke-width="2" stroke-linecap="round"/>
|
|
7
|
+
<path d="M1 18C4.70577 13.7648 11.2942 13.7648 15 18" stroke="#65185C" stroke-width="2" stroke-linecap="round"/>
|
|
8
|
+
</svg>
|
package/dist/force-app/main/default/webapplications/appreactsampleb2e/src/assets/icons/zen-logo.svg
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="40" height="40" rx="8" fill="black" fill-opacity="0.2"/>
|
|
3
|
+
<path d="M10 31V16.3333C13.4868 16.6744 19.9209 18.0046 20.3194 20.5969C20.4604 21.5144 20.45 31 20.45 31M13.4972 31L13.7641 13.9457C13.7641 10.1 25.95 9 25.95 9V31" stroke="white" stroke-width="1.5"/>
|
|
4
|
+
<path d="M29.2494 31.0001V23.4681C25.2137 22.8637 21.6875 23.9923 19.3778 25.2149C18.3982 25.7334 17.6374 26.2688 17.1494 26.6961V31.0001" stroke="white" stroke-width="1.5"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
interface AnalyticsTileProps {
|
|
4
|
+
title: string;
|
|
5
|
+
value: number | string;
|
|
6
|
+
onClick?: () => void;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const AnalyticsTile: React.FC<AnalyticsTileProps> = ({ title, value, onClick }) => {
|
|
10
|
+
return (
|
|
11
|
+
<div
|
|
12
|
+
className={`bg-white rounded-lg shadow p-6 text-center ${
|
|
13
|
+
onClick ? "cursor-pointer hover:shadow-lg transition-shadow" : ""
|
|
14
|
+
}`}
|
|
15
|
+
onClick={onClick}
|
|
16
|
+
role={onClick ? "button" : undefined}
|
|
17
|
+
tabIndex={onClick ? 0 : undefined}
|
|
18
|
+
onKeyDown={(e) => {
|
|
19
|
+
if (onClick && (e.key === "Enter" || e.key === " ")) {
|
|
20
|
+
e.preventDefault();
|
|
21
|
+
onClick();
|
|
22
|
+
}
|
|
23
|
+
}}
|
|
24
|
+
>
|
|
25
|
+
<h3 className="text-sm font-medium text-gray-600 mb-2">{title}</h3>
|
|
26
|
+
<p className="text-3xl font-bold text-gray-900">{value}</p>
|
|
27
|
+
</div>
|
|
28
|
+
);
|
|
29
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Card } from "@/components/ui/card";
|
|
3
|
+
import { Button } from "@/components/ui/button";
|
|
4
|
+
import type { Application } from "../lib/types.js";
|
|
5
|
+
|
|
6
|
+
interface ApplicationCardProps {
|
|
7
|
+
application: Application;
|
|
8
|
+
onApprove: (id: string) => void;
|
|
9
|
+
onReject: (id: string) => void;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const ApplicationCard: React.FC<ApplicationCardProps> = ({
|
|
13
|
+
application,
|
|
14
|
+
onApprove,
|
|
15
|
+
onReject,
|
|
16
|
+
}) => {
|
|
17
|
+
return (
|
|
18
|
+
<Card className="p-4 mb-3">
|
|
19
|
+
<div className="flex items-start justify-between gap-4">
|
|
20
|
+
<div className="flex items-start gap-3 flex-1">
|
|
21
|
+
<span className="text-yellow-500 text-xl">🟡</span>
|
|
22
|
+
<div className="flex-1 min-w-0">
|
|
23
|
+
<h4 className="font-semibold text-gray-900 truncate">
|
|
24
|
+
{application.applicantName} - {application.propertyAddress}
|
|
25
|
+
</h4>
|
|
26
|
+
<p className="text-sm text-gray-600 mt-1">Submitted: {application.submittedDate}</p>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
<div className="flex gap-2 flex-shrink-0">
|
|
30
|
+
<Button
|
|
31
|
+
onClick={() => onApprove(application.id)}
|
|
32
|
+
className="bg-green-600 hover:bg-green-700"
|
|
33
|
+
>
|
|
34
|
+
Approve
|
|
35
|
+
</Button>
|
|
36
|
+
<Button onClick={() => onReject(application.id)} variant="destructive">
|
|
37
|
+
Reject
|
|
38
|
+
</Button>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
</Card>
|
|
42
|
+
);
|
|
43
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { PieChart, Pie, Cell, ResponsiveContainer } from "recharts";
|
|
3
|
+
import { Card } from "@/components/ui/card";
|
|
4
|
+
import { MoreVertical } from "lucide-react";
|
|
5
|
+
|
|
6
|
+
interface ChartData {
|
|
7
|
+
name: string;
|
|
8
|
+
value: number;
|
|
9
|
+
color: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface IssuesDonutChartProps {
|
|
13
|
+
data: ChartData[];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const IssuesDonutChart: React.FC<IssuesDonutChartProps> = ({ data }) => {
|
|
17
|
+
const total = data.reduce((sum, item) => sum + item.value, 0);
|
|
18
|
+
const mainPercentage = total > 0 ? Math.round((data[0]?.value / total) * 100) : 0;
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<Card className="p-4 border-gray-200 shadow-sm flex flex-col relative">
|
|
22
|
+
{/* Three-dot menu */}
|
|
23
|
+
<button className="absolute top-4 right-4 p-1 hover:bg-gray-100 rounded-md transition-colors z-10">
|
|
24
|
+
<MoreVertical className="w-4 h-4 text-gray-400" />
|
|
25
|
+
</button>
|
|
26
|
+
|
|
27
|
+
<h3 className="text-sm font-medium text-primary-purple mb-2 uppercase tracking-wide">
|
|
28
|
+
Top Maintenance Issues
|
|
29
|
+
</h3>
|
|
30
|
+
<div className="relative flex items-center justify-center">
|
|
31
|
+
<ResponsiveContainer width="100%" height={300}>
|
|
32
|
+
<PieChart>
|
|
33
|
+
<Pie
|
|
34
|
+
data={data}
|
|
35
|
+
cx="50%"
|
|
36
|
+
cy="50%"
|
|
37
|
+
innerRadius={70}
|
|
38
|
+
outerRadius={110}
|
|
39
|
+
paddingAngle={2}
|
|
40
|
+
dataKey="value"
|
|
41
|
+
>
|
|
42
|
+
{data.map((entry, index) => (
|
|
43
|
+
<Cell key={`cell-${index}`} fill={entry.color} />
|
|
44
|
+
))}
|
|
45
|
+
</Pie>
|
|
46
|
+
</PieChart>
|
|
47
|
+
</ResponsiveContainer>
|
|
48
|
+
{/* Center text */}
|
|
49
|
+
<div className="absolute inset-0 flex items-center justify-center">
|
|
50
|
+
<div className="text-center">
|
|
51
|
+
<div className="text-5xl font-bold text-primary-purple">{mainPercentage}%</div>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
{/* Legend */}
|
|
56
|
+
<div className="mt-6 grid grid-cols-2 gap-3">
|
|
57
|
+
{data.map((item, index) => (
|
|
58
|
+
<div key={index} className="flex items-center gap-2">
|
|
59
|
+
<div className="w-3 h-3 rounded-full" style={{ backgroundColor: item.color }}></div>
|
|
60
|
+
<span className="text-sm text-gray-700">{item.name}</span>
|
|
61
|
+
</div>
|
|
62
|
+
))}
|
|
63
|
+
</div>
|
|
64
|
+
</Card>
|
|
65
|
+
);
|
|
66
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Card } from "@/components/ui/card";
|
|
3
|
+
import { Button } from "@/components/ui/button";
|
|
4
|
+
import type { MaintenanceRequest } from "../lib/types.js";
|
|
5
|
+
|
|
6
|
+
interface MaintenanceRequestCardProps {
|
|
7
|
+
request: MaintenanceRequest;
|
|
8
|
+
onView: (id: string) => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const priorityConfig = {
|
|
12
|
+
"high (same day)": { color: "text-red-500", label: "HIGH (SAME DAY)", emoji: "🔴" },
|
|
13
|
+
standard: { color: "text-yellow-500", label: "STANDARD", emoji: "🟡" },
|
|
14
|
+
// Legacy values
|
|
15
|
+
emergency: { color: "text-red-500", label: "EMERGENCY", emoji: "🔴" },
|
|
16
|
+
high: { color: "text-orange-500", label: "HIGH", emoji: "🟠" },
|
|
17
|
+
medium: { color: "text-yellow-500", label: "MEDIUM", emoji: "🟡" },
|
|
18
|
+
low: { color: "text-green-500", label: "LOW", emoji: "🟢" },
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const issueIcons: Record<string, string> = {
|
|
22
|
+
Plumbing: "💧",
|
|
23
|
+
HVAC: "❄️",
|
|
24
|
+
Electrical: "🔌",
|
|
25
|
+
Appliance: "🔧",
|
|
26
|
+
Pest: "🐛",
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export const MaintenanceRequestCard: React.FC<MaintenanceRequestCardProps> = ({
|
|
30
|
+
request,
|
|
31
|
+
onView,
|
|
32
|
+
}) => {
|
|
33
|
+
const priority = priorityConfig[request.priority];
|
|
34
|
+
const issueIcon = issueIcons[request.issueType] || "🔧";
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<Card className="p-4 mb-3">
|
|
38
|
+
<div className="space-y-2">
|
|
39
|
+
<div className="flex items-start justify-between gap-4">
|
|
40
|
+
<div className="flex items-start gap-2 flex-1">
|
|
41
|
+
<span className={`${priority.color} font-bold text-sm`}>
|
|
42
|
+
{priority.emoji} {priority.label}
|
|
43
|
+
</span>
|
|
44
|
+
<span className="text-gray-700 font-medium">{request.propertyAddress}</span>
|
|
45
|
+
</div>
|
|
46
|
+
<span className="text-sm text-gray-500 uppercase">{request.status}</span>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<div className="flex items-center gap-2">
|
|
50
|
+
<span className="text-xl">{issueIcon}</span>
|
|
51
|
+
<span className="text-sm text-gray-700">
|
|
52
|
+
{request.issueType} - {request.description}
|
|
53
|
+
</span>
|
|
54
|
+
</div>
|
|
55
|
+
|
|
56
|
+
{request.assignedWorker && (
|
|
57
|
+
<div className="text-sm text-gray-600">👷 Assigned to: {request.assignedWorker}</div>
|
|
58
|
+
)}
|
|
59
|
+
|
|
60
|
+
{request.scheduledDateTime && (
|
|
61
|
+
<div className="flex items-center justify-between">
|
|
62
|
+
<div className="text-sm text-gray-600">📅 Scheduled: {request.scheduledDateTime}</div>
|
|
63
|
+
<Button onClick={() => onView(request.id)} variant="outline" size="sm">
|
|
64
|
+
View
|
|
65
|
+
</Button>
|
|
66
|
+
</div>
|
|
67
|
+
)}
|
|
68
|
+
</div>
|
|
69
|
+
</Card>
|
|
70
|
+
);
|
|
71
|
+
};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { useNavigate } from "react-router";
|
|
3
|
+
import { Card } from "@/components/ui/card";
|
|
4
|
+
import { Button } from "@/components/ui/button";
|
|
5
|
+
import type { MaintenanceRequest } from "../lib/types.js";
|
|
6
|
+
import PlumbingIcon from "../assets/icons/plumbing.svg";
|
|
7
|
+
import HVACIcon from "../assets/icons/hvac.svg";
|
|
8
|
+
import ElectricalIcon from "../assets/icons/electrical.svg";
|
|
9
|
+
import AppliancesIcon from "../assets/icons/appliances.svg";
|
|
10
|
+
import PestIcon from "../assets/icons/pest.svg";
|
|
11
|
+
|
|
12
|
+
interface MaintenanceTableProps {
|
|
13
|
+
requests: MaintenanceRequest[];
|
|
14
|
+
onView?: (id: string) => void;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const issueIcons: Record<string, string> = {
|
|
18
|
+
Plumbing: PlumbingIcon,
|
|
19
|
+
HVAC: HVACIcon,
|
|
20
|
+
Electrical: ElectricalIcon,
|
|
21
|
+
Appliance: AppliancesIcon,
|
|
22
|
+
Pest: PestIcon,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const issueIconColors: Record<string, string> = {
|
|
26
|
+
Plumbing: "bg-purple-100",
|
|
27
|
+
HVAC: "bg-purple-100",
|
|
28
|
+
Electrical: "bg-purple-100",
|
|
29
|
+
Appliance: "bg-purple-100",
|
|
30
|
+
Pest: "bg-purple-100",
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export const MaintenanceTable: React.FC<MaintenanceTableProps> = ({ requests }) => {
|
|
34
|
+
const navigate = useNavigate();
|
|
35
|
+
|
|
36
|
+
const handleSeeAll = () => {
|
|
37
|
+
navigate("/maintenance");
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<Card className="p-6 border-gray-200 shadow-sm">
|
|
42
|
+
<div className="flex items-center justify-between mb-6">
|
|
43
|
+
<h2 className="text-lg font-semibold text-primary-purple uppercase tracking-wide">
|
|
44
|
+
Maintenance Requests
|
|
45
|
+
</h2>
|
|
46
|
+
<Button variant="link" onClick={handleSeeAll} className="cursor-pointer">
|
|
47
|
+
See All
|
|
48
|
+
</Button>
|
|
49
|
+
</div>
|
|
50
|
+
<div className="space-y-4">
|
|
51
|
+
{requests.length === 0 ? (
|
|
52
|
+
<div className="text-center py-8 text-gray-500">No maintenance requests</div>
|
|
53
|
+
) : (
|
|
54
|
+
requests.slice(0, 5).map((request) => (
|
|
55
|
+
<div
|
|
56
|
+
key={request.id}
|
|
57
|
+
className="flex items-center p-4 bg-gray-50 rounded-lg hover:bg-gray-100 transition-colors"
|
|
58
|
+
>
|
|
59
|
+
{/* Icon - Fixed width */}
|
|
60
|
+
<div
|
|
61
|
+
className={`flex items-center justify-center w-12 h-12 ${issueIconColors[request.issueType] || "bg-purple-100"} rounded-lg flex-shrink-0`}
|
|
62
|
+
>
|
|
63
|
+
{issueIcons[request.issueType] ? (
|
|
64
|
+
<img
|
|
65
|
+
src={issueIcons[request.issueType]}
|
|
66
|
+
alt={request.issueType}
|
|
67
|
+
className="w-6 h-6"
|
|
68
|
+
/>
|
|
69
|
+
) : (
|
|
70
|
+
<span className="text-2xl">🔧</span>
|
|
71
|
+
)}
|
|
72
|
+
</div>
|
|
73
|
+
|
|
74
|
+
{/* Issue Type and Address - Fixed width */}
|
|
75
|
+
<div className="ml-4 w-64 flex-shrink-0">
|
|
76
|
+
<div className="flex items-center gap-2 mb-1">
|
|
77
|
+
<h3 className="font-semibold text-gray-900">{request.issueType}</h3>
|
|
78
|
+
<span className="text-gray-500">|</span>
|
|
79
|
+
<span className="text-sm text-gray-600 truncate">
|
|
80
|
+
{request.propertyAddress.split(",")[0]}
|
|
81
|
+
</span>
|
|
82
|
+
</div>
|
|
83
|
+
<p className="text-sm text-gray-500">Request ID: {request.id.substring(0, 8)}...</p>
|
|
84
|
+
</div>
|
|
85
|
+
|
|
86
|
+
{/* Issue description - Fixed width */}
|
|
87
|
+
<div className="ml-4 w-80 flex-shrink-0">
|
|
88
|
+
<p className="text-sm text-gray-700 truncate">
|
|
89
|
+
{request.description || "No description"}
|
|
90
|
+
</p>
|
|
91
|
+
</div>
|
|
92
|
+
|
|
93
|
+
{/* Tenant - Fixed width */}
|
|
94
|
+
<div className="ml-4 w-48 flex-shrink-0 flex items-center gap-2">
|
|
95
|
+
<div className="w-8 h-8 bg-gray-300 rounded-full flex items-center justify-center flex-shrink-0">
|
|
96
|
+
<span className="text-sm font-medium text-gray-700">
|
|
97
|
+
{request.tenantName?.charAt(0) || "?"}
|
|
98
|
+
</span>
|
|
99
|
+
</div>
|
|
100
|
+
<span className="text-sm text-gray-700 font-medium truncate">
|
|
101
|
+
{request.tenantName || "Unknown"}
|
|
102
|
+
</span>
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
))
|
|
106
|
+
)}
|
|
107
|
+
</div>
|
|
108
|
+
</Card>
|
|
109
|
+
);
|
|
110
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
interface PriorityBadgeProps {
|
|
4
|
+
priority: "emergency" | "high" | "medium" | "low";
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export const PriorityBadge: React.FC<PriorityBadgeProps> = ({ priority }) => {
|
|
8
|
+
const styles = {
|
|
9
|
+
emergency: "bg-red-100 text-red-700 border-red-200",
|
|
10
|
+
high: "bg-red-100 text-red-700 border-red-200",
|
|
11
|
+
medium: "bg-orange-100 text-orange-700 border-orange-200",
|
|
12
|
+
low: "bg-blue-100 text-blue-700 border-blue-200",
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const labels = {
|
|
16
|
+
emergency: "Emergency",
|
|
17
|
+
high: "High Priority",
|
|
18
|
+
medium: "Medium Priority",
|
|
19
|
+
low: "Low Priority",
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<span
|
|
24
|
+
className={`inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium border ${styles[priority]}`}
|
|
25
|
+
>
|
|
26
|
+
{labels[priority]}
|
|
27
|
+
</span>
|
|
28
|
+
);
|
|
29
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { Property } from "../lib/types.js";
|
|
3
|
+
|
|
4
|
+
interface PropertyCardProps {
|
|
5
|
+
property: Property;
|
|
6
|
+
onClick?: (property: Property) => void;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const PropertyCard: React.FC<PropertyCardProps> = ({ property, onClick }) => {
|
|
10
|
+
const handleClick = () => {
|
|
11
|
+
if (onClick) {
|
|
12
|
+
onClick(property);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
// Truncate description to approximately 3 lines (around 150 characters)
|
|
17
|
+
const truncatedDescription = property.description
|
|
18
|
+
? property.description.length > 150
|
|
19
|
+
? property.description.substring(0, 150) + "..."
|
|
20
|
+
: property.description
|
|
21
|
+
: "No description available.";
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<div
|
|
25
|
+
className="bg-white rounded-lg shadow-md overflow-hidden hover:shadow-lg transition-shadow cursor-pointer"
|
|
26
|
+
onClick={handleClick}
|
|
27
|
+
>
|
|
28
|
+
{/* Hero Image */}
|
|
29
|
+
<div className="relative h-48 bg-gray-200">
|
|
30
|
+
{property.heroImage ? (
|
|
31
|
+
<img
|
|
32
|
+
src={property.heroImage}
|
|
33
|
+
alt={property.name}
|
|
34
|
+
className="w-full h-full object-cover"
|
|
35
|
+
/>
|
|
36
|
+
) : (
|
|
37
|
+
<div className="w-full h-full flex items-center justify-center text-gray-400">
|
|
38
|
+
<span className="text-4xl">🏠</span>
|
|
39
|
+
</div>
|
|
40
|
+
)}
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
{/* Card Content */}
|
|
44
|
+
<div className="p-6">
|
|
45
|
+
{/* Property Name */}
|
|
46
|
+
<h3 className="text-xl font-bold text-gray-900 mb-2">{property.name}</h3>
|
|
47
|
+
|
|
48
|
+
{/* Address */}
|
|
49
|
+
<p className="text-sm text-gray-600 mb-4">{property.address}</p>
|
|
50
|
+
|
|
51
|
+
{/* Description */}
|
|
52
|
+
<p className="text-sm text-gray-700 mb-4 line-clamp-3">{truncatedDescription}</p>
|
|
53
|
+
|
|
54
|
+
{/* Since Year */}
|
|
55
|
+
{property.createdDate && (
|
|
56
|
+
<p className="text-sm text-gray-500 font-medium">Since {property.createdDate}</p>
|
|
57
|
+
)}
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
);
|
|
61
|
+
};
|