From eb5662a70779ab9d9f2f8dc2d2fb4e0e4ff07706 Mon Sep 17 00:00:00 2001 From: Justin Horst Date: Thu, 12 Mar 2026 11:46:22 -0400 Subject: [PATCH] @ W-21164311 Mobile sample app (#39) * Add native-mobile-rental-tenant-app sample Made-with: Cursor * Add digitalExperiences metadata to native-mobile-rental-tenant-app - Vibes app metadata (rental_app_metadata): tabs, theme, toolbar - Vibes screens: Home, Tenants, Properties with MCF/SharedUI components - Update README and samples docs Made-with: Cursor * Update digitalExperiences to CAMA format from cama-mcp-server - Replace Vibes format (rental_app, vibesAppMetadata, vibesScreen) with CAMA format (rentalApp, camaAppMetadata, camaScreen) - Add camaBuildMetadata, camaECDefinition - Add rentalApp.digitalExperience-meta.xml - Source: khawkins/cama-mcp-server branch apply_metadata_updates - Update README and samples docs Made-with: Cursor * update readme --- samples/README.md | 11 + .../.forceignore | 15 + .../.gitignore | 20 + .../native-mobile-rental-tenant-app/README.md | 9 + .../config/project-scratch-def.json | 10 + .../appMetadata/_meta.json | 5 + .../appMetadata/content.json | 41 ++ .../buildMetadata/_meta.json | 5 + .../buildMetadata/content.json | 8 + .../rentalApp/_meta.json | 5 + .../rentalApp/content.json | 5 + .../homeScreen/_meta.json | 5 + .../homeScreen/content.json | 489 +++++++++++++++ .../propertiesScreen/_meta.json | 5 + .../propertiesScreen/content.json | 565 ++++++++++++++++++ .../tenantsScreen/_meta.json | 5 + .../tenantsScreen/content.json | 478 +++++++++++++++ .../rentalApp.digitalExperience-meta.xml | 4 + .../package.json | 13 + .../sfdx-project.json | 12 + 20 files changed, 1710 insertions(+) create mode 100644 samples/native-mobile-rental-tenant-app/.forceignore create mode 100644 samples/native-mobile-rental-tenant-app/.gitignore create mode 100644 samples/native-mobile-rental-tenant-app/README.md create mode 100644 samples/native-mobile-rental-tenant-app/config/project-scratch-def.json create mode 100644 samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaAppMetadata/appMetadata/_meta.json create mode 100644 samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaAppMetadata/appMetadata/content.json create mode 100644 samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaBuildMetadata/buildMetadata/_meta.json create mode 100644 samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaBuildMetadata/buildMetadata/content.json create mode 100644 samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaECDefinition/rentalApp/_meta.json create mode 100644 samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaECDefinition/rentalApp/content.json create mode 100644 samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/homeScreen/_meta.json create mode 100644 samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/homeScreen/content.json create mode 100644 samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/propertiesScreen/_meta.json create mode 100644 samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/propertiesScreen/content.json create mode 100644 samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/tenantsScreen/_meta.json create mode 100644 samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/tenantsScreen/content.json create mode 100644 samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/rentalApp.digitalExperience-meta.xml create mode 100644 samples/native-mobile-rental-tenant-app/package.json create mode 100644 samples/native-mobile-rental-tenant-app/sfdx-project.json diff --git a/samples/README.md b/samples/README.md index aed2c51..9edcd00 100644 --- a/samples/README.md +++ b/samples/README.md @@ -41,3 +41,14 @@ Source is synced from the npm package [@salesforce/webapp-template-app-react-sam ### Version tracking The file `samples/webapp-template-app-react-sample-b2x-experimental/.version` stores the last-synced npm version. The Action compares it to the latest on npm and only creates a PR when they differ. + +## native-mobile-rental-tenant-app + +A sample Custom Agentic Mobile App (CAMA) for rental property tenants. This sample is maintained directly in this repository (not synced from npm). It includes: + +- **digitalExperiences** metadata: CAMA app config (`experience__camaAppMetadata`), build metadata (`experience__camaBuildMetadata`), EC definition (`experience__camaECDefinition`), and screens (`experience__camaScreen`) with tabs (Home, Tenants, Properties), theme, and toolbar settings +- **Source**: Synced from [cama-mcp-server](https://git.soma.salesforce.com/khawkins/cama-mcp-server) (branch `apply_metadata_updates`) + +### How it's used + +The sample appears on the Agentforce Vibes welcome page under the **Mobile** app type. Users can clone it via the welcome page wizard or directly from this repo. diff --git a/samples/native-mobile-rental-tenant-app/.forceignore b/samples/native-mobile-rental-tenant-app/.forceignore new file mode 100644 index 0000000..4ad8486 --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/.forceignore @@ -0,0 +1,15 @@ +# List files or directories below to ignore them when running force:source:push, force:source:pull, and force:source:status +# More information: https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_exclude_source.htm +# + +package.xml + +# LWC configuration files +**/jsconfig.json +**/.eslintrc.json + +# LWC Jest +**/__tests__/** + +node_modules/ +.DS_Store diff --git a/samples/native-mobile-rental-tenant-app/.gitignore b/samples/native-mobile-rental-tenant-app/.gitignore new file mode 100644 index 0000000..55dce46 --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +node_modules/ + +# Salesforce +.sfdx/ +.localdevserver/ + +# IDE +.idea/ +.vscode/ +*.swp +*.swo + +# OS +.DS_Store +Thumbs.db + +# Logs +*.log +npm-debug.log* diff --git a/samples/native-mobile-rental-tenant-app/README.md b/samples/native-mobile-rental-tenant-app/README.md new file mode 100644 index 0000000..f31815b --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/README.md @@ -0,0 +1,9 @@ +# Native Mobile Rental Tenant App + +A sample Custom Agentic Mobile App (CAMA) for property managers and tenants. Use this as a starting point for building native mobile apps with Salesforce Mobile Publisher, MCF (Mobile Component Framework), and SharedUI. + +## Overview + +This sample demonstrates a rental tenant experience—browse properties, submit maintenance requests, pay rent, and communicate with property management—all from a native iOS or Android app. + + diff --git a/samples/native-mobile-rental-tenant-app/config/project-scratch-def.json b/samples/native-mobile-rental-tenant-app/config/project-scratch-def.json new file mode 100644 index 0000000..7635992 --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/config/project-scratch-def.json @@ -0,0 +1,10 @@ +{ + "orgName": "Rental Tenant Dev", + "edition": "Developer", + "features": [], + "settings": { + "mobileSettings": { + "enableS1EncryptedStoragePref2": false + } + } +} diff --git a/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaAppMetadata/appMetadata/_meta.json b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaAppMetadata/appMetadata/_meta.json new file mode 100644 index 0000000..89e4386 --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaAppMetadata/appMetadata/_meta.json @@ -0,0 +1,5 @@ +{ + "apiName": "appMetadata", + "type": "experience__camaAppMetadata", + "path": "appMetadata" +} diff --git a/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaAppMetadata/appMetadata/content.json b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaAppMetadata/appMetadata/content.json new file mode 100644 index 0000000..e60f664 --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaAppMetadata/appMetadata/content.json @@ -0,0 +1,41 @@ +{ + "type": "experience__camaAppMetadata", + "title": "App Metadata", + "contentBody": { + "name": "Homestead", + "description": "Mobile application for managing property rentals, tenant information, lease agreements, and maintenance requests.", + "version": "1.0.0", + "url": "http://login.test1.pc-rnd.salesforce.com/", + "templateID": "1", + "tabs": [ + { + "id": "home", + "label": "Home", + "icon": "house.fill", + "screen": "homeScreen" + }, + { + "id": "tenants", + "label": "Tenants", + "icon": "person.2.fill", + "screen": "tenantsScreen" + }, + { + "id": "properties", + "label": "Properties", + "icon": "building.2.fill", + "screen": "propertiesScreen" + } + ], + "toolbarActions": { + "notifications": false, + "search": false, + "agentforce": false + }, + "theme": { + "accentColor": "#9400D3", + "primaryColor": "#000000", + "secondaryColor": "#B3B3B3" + } + } +} diff --git a/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaBuildMetadata/buildMetadata/_meta.json b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaBuildMetadata/buildMetadata/_meta.json new file mode 100644 index 0000000..f188c58 --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaBuildMetadata/buildMetadata/_meta.json @@ -0,0 +1,5 @@ +{ + "apiName": "buildMetadata", + "type": "experience__camaBuildMetadata", + "path": "buildMetadata" +} diff --git a/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaBuildMetadata/buildMetadata/content.json b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaBuildMetadata/buildMetadata/content.json new file mode 100644 index 0000000..86f0450 --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaBuildMetadata/buildMetadata/content.json @@ -0,0 +1,8 @@ +{ + "type": "experience__camaBuildMetadata", + "title": "Build Metadata", + "contentBody": { + "BiometricOptIn": false, + "NotificationOptIn": false + } +} diff --git a/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaECDefinition/rentalApp/_meta.json b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaECDefinition/rentalApp/_meta.json new file mode 100644 index 0000000..b04fbca --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaECDefinition/rentalApp/_meta.json @@ -0,0 +1,5 @@ +{ + "apiName": "rentalApp", + "type": "experience__camaECDefinition", + "path": "rentalApp" +} diff --git a/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaECDefinition/rentalApp/content.json b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaECDefinition/rentalApp/content.json new file mode 100644 index 0000000..3cb236c --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaECDefinition/rentalApp/content.json @@ -0,0 +1,5 @@ +{ + "type": "experience__camaECDefinition", + "title": "CAMA EC Definition", + "contentBody": {} +} diff --git a/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/homeScreen/_meta.json b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/homeScreen/_meta.json new file mode 100644 index 0000000..c2d0d5d --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/homeScreen/_meta.json @@ -0,0 +1,5 @@ +{ + "apiName": "homeScreen", + "type": "experience__camaScreen", + "path": "homeScreen" +} diff --git a/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/homeScreen/content.json b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/homeScreen/content.json new file mode 100644 index 0000000..2f89f6c --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/homeScreen/content.json @@ -0,0 +1,489 @@ +{ + "type": "experience__camaScreen", + "title": "Home Screen", + "contentBody": { + "view": { + "definition": "homestead/HomeScreen", + "properties": { + "pullToRefresh": true + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/container", + "properties": { + "padding": "$spacing.spacing4", + "backgroundColor": "$colors.surface2" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/card", + "properties": {}, + "regions": { + "components": { + "components": [ + { + "definition": "ui/column", + "properties": { + "width": "fill", + "height": "fill", + "alignment": "start", + "gap": "$spacing.spacing4", + "padding": "$spacing.spacing4" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/text", + "properties": { + "text": "Today", + "style": "titlesFontScale4Semibold", + "color": "$colors.onSurface1" + }, + "regions": {} + }, + { + "definition": "ui/text", + "properties": { + "text": "You have no event.", + "color": "$colors.onSuccess1", + "style": "bodyFontScale2Regular" + }, + "regions": {} + } + ] + } + } + } + ] + } + } + }, + { + "definition": "ui/card", + "properties": {}, + "regions": { + "components": { + "components": [ + { + "definition": "ui/column", + "properties": { + "width": "fill", + "height": "fill", + "alignment": "start", + "gap": "$spacing.spacing4", + "padding": "$spacing.spacing4" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/text", + "properties": { + "text": "Upcoming", + "style": "titlesFontScale4Semibold", + "color": "$colors.onSurface1" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "123 Oak Street", + "subtitle": "Inspection on 01/08/2026" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/nothing" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Scheduled", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "456 Maple Avenue", + "subtitle": "Lease Signing on 01/10/2026" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/nothing" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Scheduled", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "789 Pine Road", + "subtitle": "Maintenance on 01/15/2026" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/nothing" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Requested", + "variant": "error" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "321 Elm Street", + "subtitle": "Rent Collection on 01/20/2026" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/nothing" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Scheduled", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Community Center", + "subtitle": "HOA Meeting on 01/22/2026" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/nothing" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Proposed", + "variant": "warning" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "555 Cedar Lane", + "subtitle": "Background Check" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/nothing" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "In Progress", + "variant": "warning" + }, + "regions": {} + } + ] + } + } + } + ] + } + } + }, + { + "definition": "ui/card", + "properties": {}, + "regions": { + "components": { + "components": [ + { + "definition": "ui/column", + "properties": { + "width": "fill", + "height": "fill", + "alignment": "start", + "gap": "$spacing.spacing4", + "padding": "$spacing.spacing4" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/text", + "properties": { + "text": "Tenants", + "style": "titlesFontScale4Semibold", + "color": "$colors.onSurface1" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Sarah Johnson", + "subtitle": "456 Maple Avenue, Apt 5" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Paid", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Michael Chen", + "subtitle": "789 Pine Road" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Overdue", + "variant": "error" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Emily Davis", + "subtitle": "321 Elm Street, Unit 5B" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Paid", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Robert Williams", + "subtitle": "555 Cedar Lane" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Paid", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Jessica Martinez", + "subtitle": "123 Oak Street, Unit 3C" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Moved Out", + "variant": "warning" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "David Lee", + "subtitle": "456 Maple Avenue, Apt 2" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Signed", + "variant": "lightest" + }, + "regions": {} + } + ] + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + "target": "native__homesteadHome", + "apiName": "uem_homesteadHome" + } +} diff --git a/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/propertiesScreen/_meta.json b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/propertiesScreen/_meta.json new file mode 100644 index 0000000..2446d28 --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/propertiesScreen/_meta.json @@ -0,0 +1,5 @@ +{ + "apiName": "propertiesScreen", + "type": "experience__camaScreen", + "path": "propertiesScreen" +} diff --git a/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/propertiesScreen/content.json b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/propertiesScreen/content.json new file mode 100644 index 0000000..4412998 --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/propertiesScreen/content.json @@ -0,0 +1,565 @@ +{ + "type": "experience__camaScreen", + "title": "Properties Screen", + "contentBody": { + "view": { + "definition": "homestead/PropertiesScreen", + "properties": { + "pullToRefresh": true + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/container", + "properties": { + "padding": "$spacing.spacing4", + "backgroundColor": "$colors.surface2" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/card", + "properties": {}, + "regions": { + "components": { + "components": [ + { + "definition": "ui/baseRow", + "properties": { + "title": "Oak Street Apartments", + "subtitle": "123 Oak Street" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Full", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Maple Avenue Complex", + "subtitle": "456 Maple Avenue" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Partial", + "variant": "warning" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Pine Road House", + "subtitle": "789 Pine Road" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Vacant", + "variant": "lightest" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Cedar Lane Condos", + "subtitle": "555 Cedar Lane" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Full", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Elm Street Tower", + "subtitle": "321 Elm Street" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Partial", + "variant": "warning" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Birch Boulevard Villa", + "subtitle": "234 Birch Boulevard" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Full", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Willow Way Estates", + "subtitle": "890 Willow Way" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Vacant", + "variant": "lightest" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Sunset Plaza", + "subtitle": "567 Sunset Drive" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Full", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Riverside Apartments", + "subtitle": "678 River Road" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Partial", + "variant": "warning" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Lakeside Manor", + "subtitle": "901 Lake Avenue" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Full", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Mountain View Heights", + "subtitle": "112 Mountain Road" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Maintenance", + "variant": "error" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Harbor Point Lofts", + "subtitle": "445 Harbor Street" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Partial", + "variant": "warning" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Garden Terrace", + "subtitle": "223 Garden Lane" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Full", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Park Place Residences", + "subtitle": "334 Park Avenue" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Vacant", + "variant": "lightest" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Hillside Court", + "subtitle": "778 Hill Street" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Full", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Downtown Tower", + "subtitle": "990 Main Street" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Partial", + "variant": "warning" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Bayside Commons", + "subtitle": "101 Bay Road" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Full", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Meadow Brook Village", + "subtitle": "212 Meadow Lane" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/home", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Maintenance", + "variant": "error" + }, + "regions": {} + } + ] + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + "target": "native__homesteadProperties", + "apiName": "uem_homesteadProperties" + } +} diff --git a/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/tenantsScreen/_meta.json b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/tenantsScreen/_meta.json new file mode 100644 index 0000000..fc4592a --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/tenantsScreen/_meta.json @@ -0,0 +1,5 @@ +{ + "apiName": "tenantsScreen", + "type": "experience__camaScreen", + "path": "tenantsScreen" +} diff --git a/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/tenantsScreen/content.json b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/tenantsScreen/content.json new file mode 100644 index 0000000..9100149 --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/experience__camaScreen/tenantsScreen/content.json @@ -0,0 +1,478 @@ +{ + "type": "experience__camaScreen", + "title": "Tenants Screen", + "contentBody": { + "view": { + "definition": "homestead/TenantsScreen", + "properties": { + "pullToRefresh": true + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/container", + "properties": { + "padding": "$spacing.spacing4", + "backgroundColor": "$colors.surface2" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/card", + "properties": {}, + "regions": { + "components": { + "components": [ + { + "definition": "ui/baseRow", + "properties": { + "title": "Sarah Johnson", + "subtitle": "456 Maple Avenue, Apt 5" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Paid", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Michael Chen", + "subtitle": "789 Pine Road" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Overdue", + "variant": "error" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Emily Davis", + "subtitle": "321 Elm Street, Unit 5B" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Paid", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Robert Williams", + "subtitle": "555 Cedar Lane" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Paid", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Jessica Martinez", + "subtitle": "123 Oak Street, Unit 3C" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Moved Out", + "variant": "warning" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "David Lee", + "subtitle": "456 Maple Avenue, Apt 2" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Signed", + "variant": "lightest" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Amanda Thompson", + "subtitle": "789 Pine Road, Unit 7A" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Paid", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Christopher Garcia", + "subtitle": "321 Elm Street, Apt 8" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Overdue", + "variant": "error" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Nicole Anderson", + "subtitle": "555 Cedar Lane, Unit 12B" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Paid", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "James Wilson", + "subtitle": "123 Oak Street, Apt 1A" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Pending", + "variant": "warning" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Rachel Brown", + "subtitle": "456 Maple Avenue, Unit 9C" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Paid", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Kevin Taylor", + "subtitle": "789 Pine Road, Apt 4B" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Signed", + "variant": "lightest" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Stephanie Miller", + "subtitle": "321 Elm Street, Unit 6D" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Paid", + "variant": "success" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Brian Martinez", + "subtitle": "555 Cedar Lane, Apt 10A" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Overdue", + "variant": "error" + }, + "regions": {} + } + ] + } + } + }, + { + "definition": "ui/baseRow", + "properties": { + "title": "Laura Rodriguez", + "subtitle": "123 Oak Street, Unit 11B" + }, + "regions": { + "components": { + "components": [ + { + "definition": "ui/utilityIcon", + "properties": { + "iconName": "utility/user", + "size": "small" + }, + "regions": {} + }, + { + "definition": "ui/badge", + "properties": { + "label": "Paid", + "variant": "success" + }, + "regions": {} + } + ] + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + "target": "native__homesteadTenants", + "apiName": "uem_homesteadTenants" + } +} diff --git a/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/rentalApp.digitalExperience-meta.xml b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/rentalApp.digitalExperience-meta.xml new file mode 100644 index 0000000..b93075a --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/force-app/main/default/digitalExperiences/experiencecontainer/rentalApp/rentalApp.digitalExperience-meta.xml @@ -0,0 +1,4 @@ + + + + diff --git a/samples/native-mobile-rental-tenant-app/package.json b/samples/native-mobile-rental-tenant-app/package.json new file mode 100644 index 0000000..c384ac3 --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/package.json @@ -0,0 +1,13 @@ +{ + "name": "native-mobile-rental-tenant-app", + "version": "1.0.0", + "description": "Sample CAMA app for rental property tenants", + "private": true, + "scripts": { + "build": "echo 'No build required for base project'", + "clean": "echo 'No clean required'", + "lint": "eslint **/{aura,lwc}/**/*.js 2>/dev/null || true", + "test": "echo 'Add tests when ready'" + }, + "devDependencies": {} +} diff --git a/samples/native-mobile-rental-tenant-app/sfdx-project.json b/samples/native-mobile-rental-tenant-app/sfdx-project.json new file mode 100644 index 0000000..cb22612 --- /dev/null +++ b/samples/native-mobile-rental-tenant-app/sfdx-project.json @@ -0,0 +1,12 @@ +{ + "packageDirectories": [ + { + "path": "force-app", + "default": true + } + ], + "name": "RentalTenantApp", + "namespace": "", + "sfdcLoginUrl": "https://login.salesforce.com", + "sourceApiVersion": "66.0" +}