diff --git a/README.md b/README.md
index a6696bd..cad2c03 100644
--- a/README.md
+++ b/README.md
@@ -45,6 +45,22 @@ Copy the `force-app/lwc/signals` folder to your project.
> code you can either modify the resulting JS code, or you can grab the Typescript files from the `src` folder
> and set up your project to compile them.
+## Examples
+
+To see a live example, clone this repository, create a scratch org and push the code to it.
+
+The org comes with a pre-built Experience Site that contains the examples.
+
+Go to:
+
+- Setup
+- All Sites
+- Locate the `examples` site
+- Click on `Builder`
+- Publish the site
+
+You can then access the examples by going to the URL of the site.
+
# Usage
## Introduction
diff --git a/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Apex_Resource__c/_meta.json b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Apex_Resource__c/_meta.json
new file mode 100644
index 0000000..e310668
--- /dev/null
+++ b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Apex_Resource__c/_meta.json
@@ -0,0 +1,5 @@
+{
+ "apiName" : "Apex_Resource__c",
+ "type" : "sfdc_cms__route",
+ "path" : "routes"
+}
\ No newline at end of file
diff --git a/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Apex_Resource__c/content.json b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Apex_Resource__c/content.json
new file mode 100644
index 0000000..25cc218
--- /dev/null
+++ b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Apex_Resource__c/content.json
@@ -0,0 +1,11 @@
+{
+ "type" : "sfdc_cms__route",
+ "title" : "Apex Resource",
+ "contentBody" : {
+ "activeViewId" : "Apex_Resource",
+ "configurationTags" : [ ],
+ "pageAccess" : "UseParent",
+ "routeType" : "custom-apex-resource",
+ "urlPrefix" : "apex-resource"
+ }
+}
\ No newline at end of file
diff --git a/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Count_Tracking__c/_meta.json b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Count_Tracking__c/_meta.json
new file mode 100644
index 0000000..52bb6b8
--- /dev/null
+++ b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Count_Tracking__c/_meta.json
@@ -0,0 +1,5 @@
+{
+ "apiName" : "Count_Tracking__c",
+ "type" : "sfdc_cms__route",
+ "path" : "routes"
+}
\ No newline at end of file
diff --git a/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Count_Tracking__c/content.json b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Count_Tracking__c/content.json
new file mode 100644
index 0000000..cac2ff0
--- /dev/null
+++ b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Count_Tracking__c/content.json
@@ -0,0 +1,11 @@
+{
+ "type" : "sfdc_cms__route",
+ "title" : "Count Tracking",
+ "contentBody" : {
+ "activeViewId" : "Count_Tracking",
+ "configurationTags" : [ ],
+ "pageAccess" : "UseParent",
+ "routeType" : "custom-count-tracking",
+ "urlPrefix" : "count-tracking"
+ }
+}
\ No newline at end of file
diff --git a/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Form__c/_meta.json b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Form__c/_meta.json
new file mode 100644
index 0000000..d32031c
--- /dev/null
+++ b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Form__c/_meta.json
@@ -0,0 +1,5 @@
+{
+ "apiName" : "Form__c",
+ "type" : "sfdc_cms__route",
+ "path" : "routes"
+}
\ No newline at end of file
diff --git a/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Form__c/content.json b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Form__c/content.json
new file mode 100644
index 0000000..eb6fa53
--- /dev/null
+++ b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__route/Form__c/content.json
@@ -0,0 +1,11 @@
+{
+ "type" : "sfdc_cms__route",
+ "title" : "Form",
+ "contentBody" : {
+ "activeViewId" : "Form",
+ "configurationTags" : [ ],
+ "pageAccess" : "UseParent",
+ "routeType" : "custom-form",
+ "urlPrefix" : "form"
+ }
+}
\ No newline at end of file
diff --git a/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Apex_Resource/_meta.json b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Apex_Resource/_meta.json
new file mode 100644
index 0000000..e05fed3
--- /dev/null
+++ b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Apex_Resource/_meta.json
@@ -0,0 +1,5 @@
+{
+ "apiName" : "Apex_Resource",
+ "type" : "sfdc_cms__view",
+ "path" : "views"
+}
\ No newline at end of file
diff --git a/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Apex_Resource/content.json b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Apex_Resource/content.json
new file mode 100644
index 0000000..eba3bae
--- /dev/null
+++ b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Apex_Resource/content.json
@@ -0,0 +1,66 @@
+{
+ "type" : "sfdc_cms__view",
+ "title" : "Apex Resource",
+ "contentBody" : {
+ "component" : {
+ "children" : [ {
+ "children" : [ {
+ "attributes" : {
+ "backgroundImageConfig" : "",
+ "backgroundImageOverlay" : "rgba(0,0,0,0)",
+ "componentSpacerSize" : "",
+ "maxContentWidth" : "",
+ "sectionColumnGutterWidth" : "",
+ "sectionConfig" : "{\"UUID\":\"dbcd6107-50a3-41a6-99ee-9055e58472e2\",\"columns\":[{\"UUID\":\"2a39bf1f-19f0-4e1d-b1cd-720683f337e6\",\"columnName\":\"Column 1\",\"columnKey\":\"col1\",\"columnWidth\":\"12\",\"seedComponents\":[]}]}"
+ },
+ "children" : [ {
+ "children" : [ {
+ "attributes" : { },
+ "definition" : "c:listAccounts",
+ "id" : "9ab462db-15a0-487a-9366-b76e47f85256",
+ "type" : "component"
+ }, {
+ "attributes" : { },
+ "definition" : "c:displaySelectedAccount",
+ "id" : "cbce4af0-08f6-484f-ac5f-7a54675d8ee4",
+ "type" : "component"
+ } ],
+ "id" : "2a39bf1f-19f0-4e1d-b1cd-720683f337e6",
+ "name" : "col1",
+ "title" : "Column 1",
+ "type" : "region"
+ } ],
+ "definition" : "community_layout:section",
+ "id" : "dbcd6107-50a3-41a6-99ee-9055e58472e2",
+ "type" : "component"
+ } ],
+ "id" : "d58b05d7-ce2c-4c09-af8d-22518e58b348",
+ "name" : "content",
+ "title" : "Content",
+ "type" : "region"
+ }, {
+ "children" : [ {
+ "attributes" : {
+ "customHeadTags" : "",
+ "description" : "",
+ "pageTitle" : "Apex Resource",
+ "recordId" : "{!recordId}"
+ },
+ "definition" : "community_builder:seoAssistant",
+ "id" : "1b5a027b-51f8-4eb5-a21b-216429516209",
+ "type" : "component"
+ } ],
+ "id" : "a91dc8c6-d472-48c3-b5a2-390cafe8b8eb",
+ "name" : "sfdcHiddenRegion",
+ "title" : "sfdcHiddenRegion",
+ "type" : "region"
+ } ],
+ "definition" : "community_layout:sldsFlexibleLayout",
+ "id" : "6fa5f4dd-543a-4e91-bc80-f82b348826a7",
+ "type" : "component"
+ },
+ "dataProviders" : [ ],
+ "themeLayoutType" : "Inner",
+ "viewType" : "custom-apex-resource"
+ }
+}
\ No newline at end of file
diff --git a/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Count_Tracking/_meta.json b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Count_Tracking/_meta.json
new file mode 100644
index 0000000..aaef5e3
--- /dev/null
+++ b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Count_Tracking/_meta.json
@@ -0,0 +1,5 @@
+{
+ "apiName" : "Count_Tracking",
+ "type" : "sfdc_cms__view",
+ "path" : "views"
+}
\ No newline at end of file
diff --git a/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Count_Tracking/content.json b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Count_Tracking/content.json
new file mode 100644
index 0000000..22d9169
--- /dev/null
+++ b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Count_Tracking/content.json
@@ -0,0 +1,66 @@
+{
+ "type" : "sfdc_cms__view",
+ "title" : "Count Tracking",
+ "contentBody" : {
+ "component" : {
+ "children" : [ {
+ "children" : [ {
+ "attributes" : {
+ "backgroundImageConfig" : "",
+ "backgroundImageOverlay" : "rgba(0,0,0,0)",
+ "componentSpacerSize" : "",
+ "maxContentWidth" : "",
+ "sectionColumnGutterWidth" : "",
+ "sectionConfig" : "{\"UUID\":\"9b7ae578-5e28-4319-8a6f-fa7cd8c1f4d8\",\"columns\":[{\"UUID\":\"2df6bc38-298b-4ff6-9156-78171c206e5e\",\"columnName\":\"Column 1\",\"columnKey\":\"col1\",\"columnWidth\":\"12\",\"seedComponents\":[]}]}"
+ },
+ "children" : [ {
+ "children" : [ {
+ "attributes" : { },
+ "definition" : "c:countChanger",
+ "id" : "b3dc33ba-e99b-4f29-99f6-891c2828b06a",
+ "type" : "component"
+ }, {
+ "attributes" : { },
+ "definition" : "c:countTracker",
+ "id" : "c2889059-3ba8-49c3-82a7-e5b21d40a139",
+ "type" : "component"
+ } ],
+ "id" : "2df6bc38-298b-4ff6-9156-78171c206e5e",
+ "name" : "col1",
+ "title" : "Column 1",
+ "type" : "region"
+ } ],
+ "definition" : "community_layout:section",
+ "id" : "9b7ae578-5e28-4319-8a6f-fa7cd8c1f4d8",
+ "type" : "component"
+ } ],
+ "id" : "e65e4212-e898-4d16-adf4-06b15f519d4d",
+ "name" : "content",
+ "title" : "Content",
+ "type" : "region"
+ }, {
+ "children" : [ {
+ "attributes" : {
+ "customHeadTags" : "",
+ "description" : "",
+ "pageTitle" : "Count Tracking",
+ "recordId" : "{!recordId}"
+ },
+ "definition" : "community_builder:seoAssistant",
+ "id" : "c7b74b85-2f00-45ca-9d81-887326f8c45c",
+ "type" : "component"
+ } ],
+ "id" : "29ca1fda-3e18-4f4b-8cff-860da879d90f",
+ "name" : "sfdcHiddenRegion",
+ "title" : "sfdcHiddenRegion",
+ "type" : "region"
+ } ],
+ "definition" : "community_layout:sldsFlexibleLayout",
+ "id" : "2770faec-6a2e-48f8-9422-23c789a9ff47",
+ "type" : "component"
+ },
+ "dataProviders" : [ ],
+ "themeLayoutType" : "Inner",
+ "viewType" : "custom-count-tracking"
+ }
+}
\ No newline at end of file
diff --git a/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Form/_meta.json b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Form/_meta.json
new file mode 100644
index 0000000..c621bc7
--- /dev/null
+++ b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Form/_meta.json
@@ -0,0 +1,5 @@
+{
+ "apiName" : "Form",
+ "type" : "sfdc_cms__view",
+ "path" : "views"
+}
\ No newline at end of file
diff --git a/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Form/content.json b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Form/content.json
new file mode 100644
index 0000000..0229a89
--- /dev/null
+++ b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/Form/content.json
@@ -0,0 +1,66 @@
+{
+ "type" : "sfdc_cms__view",
+ "title" : "Form",
+ "contentBody" : {
+ "component" : {
+ "children" : [ {
+ "children" : [ {
+ "attributes" : {
+ "backgroundImageConfig" : "",
+ "backgroundImageOverlay" : "rgba(0,0,0,0)",
+ "componentSpacerSize" : "",
+ "maxContentWidth" : "",
+ "sectionColumnGutterWidth" : "",
+ "sectionConfig" : "{\"UUID\":\"ac575fc9-e8bd-4d71-9a95-64bbd334e075\",\"columns\":[{\"UUID\":\"bc5013f2-6be5-4192-8ff2-e2fe1ab10507\",\"columnName\":\"Column 1\",\"columnKey\":\"col1\",\"columnWidth\":\"12\",\"seedComponents\":[]}]}"
+ },
+ "children" : [ {
+ "children" : [ {
+ "attributes" : { },
+ "definition" : "c:contactInfoForm",
+ "id" : "c983b67a-fb8c-4096-935f-98c9372681d2",
+ "type" : "component"
+ }, {
+ "attributes" : { },
+ "definition" : "c:businessCard",
+ "id" : "7649b790-013f-4f2b-9ea0-dc6333eb48fa",
+ "type" : "component"
+ } ],
+ "id" : "bc5013f2-6be5-4192-8ff2-e2fe1ab10507",
+ "name" : "col1",
+ "title" : "Column 1",
+ "type" : "region"
+ } ],
+ "definition" : "community_layout:section",
+ "id" : "ac575fc9-e8bd-4d71-9a95-64bbd334e075",
+ "type" : "component"
+ } ],
+ "id" : "a59ecd35-9aaf-4abf-b118-64226b8e443b",
+ "name" : "content",
+ "title" : "Content",
+ "type" : "region"
+ }, {
+ "children" : [ {
+ "attributes" : {
+ "customHeadTags" : "",
+ "description" : "",
+ "pageTitle" : "Form",
+ "recordId" : "{!recordId}"
+ },
+ "definition" : "community_builder:seoAssistant",
+ "id" : "4dce028e-2be8-418d-9293-0ec7227f2902",
+ "type" : "component"
+ } ],
+ "id" : "d0cf6c30-dd08-4be3-a78e-fe3957d691b2",
+ "name" : "sfdcHiddenRegion",
+ "title" : "sfdcHiddenRegion",
+ "type" : "region"
+ } ],
+ "definition" : "community_layout:sldsFlexibleLayout",
+ "id" : "c0a678a7-9ec0-43bc-b9e8-851c708b9e71",
+ "type" : "component"
+ },
+ "dataProviders" : [ ],
+ "themeLayoutType" : "Inner",
+ "viewType" : "custom-form"
+ }
+}
\ No newline at end of file
diff --git a/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/home/content.json b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/home/content.json
index bde8046..d319916 100644
--- a/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/home/content.json
+++ b/examples/main/default/digitalExperiences/site/examples1/sfdc_cms__view/home/content.json
@@ -19,9 +19,9 @@
"alignment" : "center",
"size" : "standard",
"stretch" : "standard",
- "text" : "Checkout Demo",
+ "text" : "Count Tracker Demo",
"type" : "tertiary",
- "url" : "{\"linkInfo\":{\"pageReference\":{\"type\":\"comm__namedPage\",\"attributes\":{\"name\":\"Checkout__c\"}}}}"
+ "url" : "{\"linkInfo\":{\"pageReference\":{\"type\":\"comm__namedPage\",\"attributes\":{\"name\":\"Count_Tracking__c\"}}}}"
},
"definition" : "dxp_base:button",
"id" : "c4f0a4d8-6c9a-43dc-83fd-1ea9be17ef6a",
@@ -33,7 +33,7 @@
"linkAssistiveText" : "",
"paddingHorizontal" : "none",
"paddingVertical" : "none",
- "text" : "Demonstrates how to create a custom storage solution that implements Undo functionality.",
+ "text" : "Simple demonstration of a component that increases a number and another that reacts to changes.",
"textAlign" : "center",
"textDecoration" : "{}",
"textDisplayInfo" : "{}"
@@ -41,6 +41,87 @@
"definition" : "dxp_base:textBlock",
"id" : "5073049b-5c6f-42a8-a358-3232df2d813a",
"type" : "component"
+ }, {
+ "attributes" : {
+ "alignment" : "center",
+ "size" : "standard",
+ "stretch" : "standard",
+ "text" : "Form Demo",
+ "type" : "tertiary",
+ "url" : "{\"linkInfo\":{\"pageReference\":{\"type\":\"comm__namedPage\",\"attributes\":{\"name\":\"Form__c\"}}}}"
+ },
+ "definition" : "dxp_base:button",
+ "id" : "0f599959-b3d0-4784-98ea-9a0ba0302919",
+ "type" : "component"
+ }, {
+ "attributes" : {
+ "backgroundColor" : "",
+ "isLinkable" : false,
+ "linkAssistiveText" : "",
+ "paddingHorizontal" : "none",
+ "paddingVertical" : "none",
+ "text" : "Demonstrates the ability to track data being updated from a form in a different component",
+ "textAlign" : "center",
+ "textDecoration" : "{}",
+ "textDisplayInfo" : "{}"
+ },
+ "definition" : "dxp_base:textBlock",
+ "id" : "86b5d8e4-2fde-4544-8f4e-291781f4ce2a",
+ "type" : "component"
+ }, {
+ "attributes" : {
+ "alignment" : "center",
+ "size" : "standard",
+ "stretch" : "standard",
+ "text" : "Apex Resource",
+ "type" : "tertiary",
+ "url" : "{\"linkInfo\":{\"pageReference\":{\"type\":\"comm__namedPage\",\"attributes\":{\"name\":\"Apex_Resource__c\"}}}}"
+ },
+ "definition" : "dxp_base:button",
+ "id" : "fd84651a-3d96-4772-adfc-959ef932330c",
+ "type" : "component"
+ }, {
+ "attributes" : {
+ "backgroundColor" : "",
+ "isLinkable" : false,
+ "linkAssistiveText" : "",
+ "paddingHorizontal" : "none",
+ "paddingVertical" : "none",
+ "text" : "Demonstrates: getting data from apex, displaying the selected data in a picklist, and reacting to the currently selected value from a different component.",
+ "textAlign" : "center",
+ "textDecoration" : "{}",
+ "textDisplayInfo" : "{}"
+ },
+ "definition" : "dxp_base:textBlock",
+ "id" : "b953dd8b-3361-4665-9b1e-c2fe7d67d0c9",
+ "type" : "component"
+ }, {
+ "attributes" : {
+ "alignment" : "center",
+ "size" : "standard",
+ "stretch" : "standard",
+ "text" : "Checkout Demo (Kitchen Sink)",
+ "type" : "tertiary",
+ "url" : "{\"linkInfo\":{\"pageReference\":{\"type\":\"comm__namedPage\",\"attributes\":{\"name\":\"Checkout__c\"}}}}"
+ },
+ "definition" : "dxp_base:button",
+ "id" : "24b61e1c-10cd-4ab0-afa6-617ac2d5fd20",
+ "type" : "component"
+ }, {
+ "attributes" : {
+ "backgroundColor" : "",
+ "isLinkable" : false,
+ "linkAssistiveText" : "",
+ "paddingHorizontal" : "none",
+ "paddingVertical" : "none",
+ "text" : "Full solution demo that includes getting and modifying data from Apex, storing data in the local storage, and a custom storage implementation for undo functionality.",
+ "textAlign" : "center",
+ "textDecoration" : "{}",
+ "textDisplayInfo" : "{}"
+ },
+ "definition" : "dxp_base:textBlock",
+ "id" : "5a310b54-42a5-49f2-886e-f97f841f4a27",
+ "type" : "component"
} ],
"id" : "142284b4-88b0-4d00-ad59-6d177998602a",
"name" : "col1",
diff --git a/examples/main/default/profiles/examples Profile.profile-meta.xml b/examples/main/default/profiles/examples Profile.profile-meta.xml
index 4581d68..c963991 100644
--- a/examples/main/default/profiles/examples Profile.profile-meta.xml
+++ b/examples/main/default/profiles/examples Profile.profile-meta.xml
@@ -90,11 +90,11 @@
ResourceController
- false
+ true
ShoppingCartController
- false
+ true
SiteLoginController
@@ -206,4 +206,8 @@
true
Guest User License
+
+ true
+ ViewPrivateStaticResources
+