@salesforce/templates 65.4.3 → 65.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/lib/generators/dxpSiteGenerator.d.ts +25 -0
  2. package/lib/generators/dxpSiteGenerator.js +207 -0
  3. package/lib/generators/dxpSiteGenerator.js.map +1 -0
  4. package/lib/generators/flexipageGenerator.d.ts +15 -0
  5. package/lib/generators/flexipageGenerator.js +120 -0
  6. package/lib/generators/flexipageGenerator.js.map +1 -0
  7. package/lib/generators/webApplicationGenerator.d.ts +1 -0
  8. package/lib/generators/webApplicationGenerator.js +41 -17
  9. package/lib/generators/webApplicationGenerator.js.map +1 -1
  10. package/lib/i18n/i18n.d.ts +7 -0
  11. package/lib/i18n/i18n.js +7 -0
  12. package/lib/i18n/i18n.js.map +1 -1
  13. package/lib/templates/dxpsite/build_your_own_lwr/_customSite.xml +28 -0
  14. package/lib/templates/dxpsite/build_your_own_lwr/_digitalExperience.xml +15 -0
  15. package/lib/templates/dxpsite/build_your_own_lwr/_digitalExperienceConfig.xml +8 -0
  16. package/lib/templates/dxpsite/build_your_own_lwr/_network.xml +59 -0
  17. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__appPage/mainAppPage/_meta.json +5 -0
  18. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__appPage/mainAppPage/content.json +12 -0
  19. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__brandingSet/Build_Your_Own_LWR/_meta.json +5 -0
  20. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__brandingSet/Build_Your_Own_LWR/content.json +280 -0
  21. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__languageSettings/languages/_meta.json +5 -0
  22. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__languageSettings/languages/content.json +16 -0
  23. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__mobilePublisherConfig/mobilePublisherConfig/_meta.json +5 -0
  24. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__mobilePublisherConfig/mobilePublisherConfig/content.json +49 -0
  25. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Check_Password/_meta.json +5 -0
  26. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Check_Password/content.json +12 -0
  27. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Error/_meta.json +5 -0
  28. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Error/content.json +12 -0
  29. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Forgot_Password/_meta.json +5 -0
  30. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Forgot_Password/content.json +12 -0
  31. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Home/_meta.json +5 -0
  32. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Home/content.json +12 -0
  33. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Login/_meta.json +5 -0
  34. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Login/content.json +12 -0
  35. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/News_Detail__c/_meta.json +5 -0
  36. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/News_Detail__c/content.json +12 -0
  37. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Register/_meta.json +5 -0
  38. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Register/content.json +12 -0
  39. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Service_Not_Available/_meta.json +5 -0
  40. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Service_Not_Available/content.json +14 -0
  41. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Too_Many_Requests/_meta.json +5 -0
  42. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__route/Too_Many_Requests/content.json +15 -0
  43. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__site/_meta.json +5 -0
  44. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__site/content.json +10 -0
  45. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__theme/Build_Your_Own_LWR/_meta.json +5 -0
  46. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__theme/Build_Your_Own_LWR/content.json +19 -0
  47. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__themeLayout/scopedHeaderAndFooter/_meta.json +5 -0
  48. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__themeLayout/scopedHeaderAndFooter/content.json +87 -0
  49. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__themeLayout/snaThemeLayout/_meta.json +5 -0
  50. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__themeLayout/snaThemeLayout/content.json +27 -0
  51. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/checkPasswordResetEmail/_meta.json +5 -0
  52. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/checkPasswordResetEmail/content.json +93 -0
  53. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/error/_meta.json +5 -0
  54. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/error/content.json +81 -0
  55. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/forgotPassword/_meta.json +5 -0
  56. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/forgotPassword/content.json +96 -0
  57. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/home/_meta.json +5 -0
  58. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/home/content.json +81 -0
  59. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/login/_meta.json +5 -0
  60. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/login/content.json +111 -0
  61. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/newsDetail/_meta.json +5 -0
  62. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/newsDetail/content.json +61 -0
  63. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/register/_meta.json +5 -0
  64. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/register/content.json +99 -0
  65. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/serviceNotAvailable/_meta.json +5 -0
  66. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/serviceNotAvailable/content.json +54 -0
  67. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/tooManyRequests/_meta.json +5 -0
  68. package/lib/templates/dxpsite/build_your_own_lwr/sfdc_cms__view/tooManyRequests/content.json +68 -0
  69. package/lib/templates/flexipage/AppPage/_flexipage.flexipage-meta.xml +118 -0
  70. package/lib/templates/flexipage/HomePage/_flexipage.flexipage-meta.xml +127 -0
  71. package/lib/templates/flexipage/RecordPage/_flexipage.flexipage-meta.xml +337 -0
  72. package/lib/templates/webapplication/reactbasic/.prettierignore +9 -0
  73. package/lib/templates/webapplication/reactbasic/.prettierrc +11 -0
  74. package/lib/templates/webapplication/reactbasic/README.md +73 -0
  75. package/lib/templates/webapplication/reactbasic/eslint.config.js +113 -0
  76. package/lib/templates/webapplication/reactbasic/index.html +2 -1
  77. package/lib/templates/webapplication/reactbasic/package-lock.json +5248 -0
  78. package/lib/templates/webapplication/reactbasic/package.json +29 -19
  79. package/lib/templates/webapplication/reactbasic/src/app.tsx +13 -0
  80. package/lib/templates/webapplication/reactbasic/src/appLayout.tsx +9 -0
  81. package/lib/templates/webapplication/reactbasic/src/assets/icons/book.svg +3 -0
  82. package/lib/templates/webapplication/reactbasic/src/assets/icons/copy.svg +4 -0
  83. package/lib/templates/webapplication/reactbasic/src/assets/icons/rocket.svg +3 -0
  84. package/lib/templates/webapplication/reactbasic/src/assets/icons/star.svg +3 -0
  85. package/lib/templates/webapplication/reactbasic/src/assets/images/codey-1.png +0 -0
  86. package/lib/templates/webapplication/reactbasic/src/assets/images/codey-2.png +0 -0
  87. package/lib/templates/webapplication/reactbasic/src/assets/images/codey-3.png +0 -0
  88. package/lib/templates/webapplication/reactbasic/src/assets/images/vibe-codey.svg +194 -0
  89. package/lib/templates/webapplication/reactbasic/src/pages/About.tsx +9 -10
  90. package/lib/templates/webapplication/reactbasic/src/pages/Home.tsx +12 -15
  91. package/lib/templates/webapplication/reactbasic/src/pages/NotFound.tsx +3 -6
  92. package/lib/templates/webapplication/reactbasic/src/routes.tsx +23 -0
  93. package/lib/templates/webapplication/reactbasic/src/styles/global.css +6 -5
  94. package/lib/templates/webapplication/reactbasic/tsconfig.json +14 -5
  95. package/lib/templates/webapplication/reactbasic/tsconfig.node.json +0 -1
  96. package/lib/templates/webapplication/reactbasic/{src/vite-env.d.ts → vite-env.d.ts} +0 -1
  97. package/lib/templates/webapplication/reactbasic/vite.config.ts +62 -16
  98. package/lib/templates/webapplication/reactbasic/vitest-env.d.ts +2 -0
  99. package/lib/templates/webapplication/reactbasic/vitest.config.ts +11 -0
  100. package/lib/templates/webapplication/reactbasic/vitest.setup.ts +1 -0
  101. package/lib/templates/webapplication/reactbasic/webapp.json +7 -12
  102. package/lib/tsconfig.tsbuildinfo +1 -1
  103. package/lib/utils/types.d.ts +34 -11
  104. package/lib/utils/types.js +16 -10
  105. package/lib/utils/types.js.map +1 -1
  106. package/package.json +7 -4
  107. package/lib/templates/webapplication/reactbasic/postcss.config.js +0 -7
  108. package/lib/templates/webapplication/reactbasic/src/App.tsx +0 -25
  109. package/lib/templates/webapplication/reactbasic/src/components/Navigation.tsx +0 -70
  110. package/lib/templates/webapplication/reactbasic/src/main.tsx +0 -14
  111. package/lib/templates/webapplication/reactbasic/src/routes.ts +0 -20
  112. package/lib/templates/webapplication/reactbasic/src/test-setup/setup.ts +0 -10
  113. package/lib/templates/webapplication/reactbasic/tailwind.config.js +0 -9
@@ -0,0 +1,127 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ HomePage FlexiPage Template using home:desktopTemplate
4
+
5
+ Template Variables Available:
6
+ - flexipagename: The name of the FlexiPage
7
+ - masterlabel: The display label
8
+ - description: The page description
9
+ - apiVersion: The Salesforce API version
10
+
11
+ Layout Regions:
12
+ - top: Top region (full width)
13
+ - bottomLeft: Bottom left column
14
+ - bottomRight: Bottom right column
15
+ - sidebar: Right sidebar
16
+ -->
17
+ <FlexiPage xmlns="http://soap.sforce.com/2006/04/metadata">
18
+ <!-- Top Region (full width) -->
19
+ <flexiPageRegions>
20
+ <itemInstances>
21
+ <componentInstance>
22
+ <componentInstanceProperties>
23
+ <name>decorate</name>
24
+ <value>true</value>
25
+ </componentInstanceProperties>
26
+ <componentInstanceProperties>
27
+ <name>richTextValue</name>
28
+ <value>&lt;p&gt;&lt;strong style=&quot;font-size: 24px;&quot;&gt;Welcome!&lt;/strong&gt;&lt;/p&gt;</value>
29
+ </componentInstanceProperties>
30
+ <componentName>flexipage:richText</componentName>
31
+ <identifier>flexipage_richText</identifier>
32
+ </componentInstance>
33
+ </itemInstances>
34
+ <name>top</name>
35
+ <type>Region</type>
36
+ </flexiPageRegions>
37
+
38
+ <!-- Bottom Left Region -->
39
+ <flexiPageRegions>
40
+ <itemInstances>
41
+ <componentInstance>
42
+ <componentInstanceProperties>
43
+ <name>entityNames</name>
44
+ <valueList>
45
+ <valueListItems>
46
+ <value>Account</value>
47
+ </valueListItems>
48
+ <valueListItems>
49
+ <value>Opportunity</value>
50
+ </valueListItems>
51
+ </valueList>
52
+ </componentInstanceProperties>
53
+ <componentInstanceProperties>
54
+ <name>label</name>
55
+ <value>Standard.RecentItems</value>
56
+ </componentInstanceProperties>
57
+ <componentInstanceProperties>
58
+ <name>maxRecords</name>
59
+ <value>5</value>
60
+ </componentInstanceProperties>
61
+ <componentName>flexipage:recentItems</componentName>
62
+ <identifier>flexipage_recentItems</identifier>
63
+ </componentInstance>
64
+ </itemInstances>
65
+ <itemInstances>
66
+ <componentInstance>
67
+ <componentName>home:eventContainer</componentName>
68
+ <identifier>home_eventContainer</identifier>
69
+ </componentInstance>
70
+ </itemInstances>
71
+ <name>bottomLeft</name>
72
+ <type>Region</type>
73
+ </flexiPageRegions>
74
+
75
+ <!-- Bottom Right Region -->
76
+ <flexiPageRegions>
77
+ <itemInstances>
78
+ <componentInstance>
79
+ <componentName>runtime_sales_activities:todayTaskContainer</componentName>
80
+ <identifier>runtime_sales_activities_todayTaskContainer</identifier>
81
+ </componentInstance>
82
+ </itemInstances>
83
+ <itemInstances>
84
+ <componentInstance>
85
+ <componentInstanceProperties>
86
+ <name>context</name>
87
+ <value>NEWS</value>
88
+ </componentInstanceProperties>
89
+ <componentName>forceChatter:exposedFeed</componentName>
90
+ <identifier>forceChatter_exposedFeed</identifier>
91
+ </componentInstance>
92
+ </itemInstances>
93
+ <name>bottomRight</name>
94
+ <type>Region</type>
95
+ </flexiPageRegions>
96
+
97
+ <!-- Sidebar Region -->
98
+ <flexiPageRegions>
99
+ <itemInstances>
100
+ <componentInstance>
101
+ <componentInstanceProperties>
102
+ <name>dashboardName</name>
103
+ <value>Program_Dashboard_sfdcSESv60</value>
104
+ </componentInstanceProperties>
105
+ <componentInstanceProperties>
106
+ <name>height</name>
107
+ <value>450</value>
108
+ </componentInstanceProperties>
109
+ <componentInstanceProperties>
110
+ <name>hideOnError</name>
111
+ <value>true</value>
112
+ </componentInstanceProperties>
113
+ <componentName>desktopDashboards:embeddedDashboard</componentName>
114
+ <identifier>desktopDashboards_embeddedDashboard</identifier>
115
+ </componentInstance>
116
+ </itemInstances>
117
+ <name>sidebar</name>
118
+ <type>Region</type>
119
+ </flexiPageRegions>
120
+
121
+ <description><%= description %></description>
122
+ <masterLabel><%= masterlabel %></masterLabel>
123
+ <template>
124
+ <name>home:desktopTemplate</name>
125
+ </template>
126
+ <type>HomePage</type>
127
+ </FlexiPage>
@@ -0,0 +1,337 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ RecordPage FlexiPage Template
4
+
5
+ Template Variables Available:
6
+ - flexipagename: The name of the FlexiPage
7
+ - masterlabel: The display label
8
+ - description: The page description
9
+ - apiVersion: The Salesforce API version
10
+ - entityName: The SObject API name (e.g., 'Account', 'Rental_Property__c')
11
+ - primaryField: Single primary field API name for dynamic highlights (e.g., 'Name')
12
+ - secondaryFields: Array of secondary field API names for dynamic highlights
13
+ - detailFields: Array of field API names for the Details tab field section
14
+ -->
15
+ <FlexiPage xmlns="http://soap.sforce.com/2006/04/metadata">
16
+ <% if (primaryField) { %>
17
+ <flexiPageRegions>
18
+ <itemInstances>
19
+ <fieldInstance>
20
+ <fieldInstanceProperties>
21
+ <name>uiBehavior</name>
22
+ <value>none</value>
23
+ </fieldInstanceProperties>
24
+ <fieldItem>Record.<%= primaryField %></fieldItem>
25
+ <identifier>Record<%= primaryField.replace(/\./g, '_') %>PrimaryField</identifier>
26
+ </fieldInstance>
27
+ </itemInstances>
28
+ <name>Facet-PrimaryFields</name>
29
+ <type>Facet</type>
30
+ </flexiPageRegions>
31
+ <% } %>
32
+ <% if (secondaryFields && secondaryFields.length > 0) { %>
33
+ <flexiPageRegions>
34
+ <% secondaryFields.forEach((field, index) => { %>
35
+ <itemInstances>
36
+ <fieldInstance>
37
+ <fieldInstanceProperties>
38
+ <name>uiBehavior</name>
39
+ <value>none</value>
40
+ </fieldInstanceProperties>
41
+ <fieldItem>Record.<%= field %></fieldItem>
42
+ <identifier>Record<%= field.replace(/\./g, '_') %>SecondaryField<%= index %></identifier>
43
+ </fieldInstance>
44
+ </itemInstances>
45
+ <% }); %>
46
+ <name>Facet-SecondaryFields</name>
47
+ <type>Facet</type>
48
+ </flexiPageRegions>
49
+ <% } %>
50
+ <flexiPageRegions>
51
+ <itemInstances>
52
+ <componentInstance>
53
+ <componentInstanceProperties>
54
+ <name>actionNames</name>
55
+ <valueList>
56
+ <valueListItems>
57
+ <value>Edit</value>
58
+ </valueListItems>
59
+ <valueListItems>
60
+ <value>Delete</value>
61
+ </valueListItems>
62
+ </valueList>
63
+ </componentInstanceProperties>
64
+ <componentInstanceProperties>
65
+ <name>numVisibleActions</name>
66
+ <value>3</value>
67
+ </componentInstanceProperties>
68
+ <% if (primaryField) { %>
69
+ <componentInstanceProperties>
70
+ <name>primaryField</name>
71
+ <value>Facet-PrimaryFields</value>
72
+ </componentInstanceProperties>
73
+ <% } %>
74
+ <% if (secondaryFields && secondaryFields.length > 0) { %>
75
+ <componentInstanceProperties>
76
+ <name>secondaryFields</name>
77
+ <value>Facet-SecondaryFields</value>
78
+ </componentInstanceProperties>
79
+ <% } %>
80
+ <componentName>record_flexipage:dynamicHighlights</componentName>
81
+ <identifier>record_flexipage_dynamicHighlights</identifier>
82
+ </componentInstance>
83
+ </itemInstances>
84
+ <name>header</name>
85
+ <type>Region</type>
86
+ </flexiPageRegions>
87
+ <flexiPageRegions>
88
+ <itemInstances>
89
+ <componentInstance>
90
+ <componentInstanceProperties>
91
+ <name>relatedListComponentOverride</name>
92
+ <value>NONE</value>
93
+ </componentInstanceProperties>
94
+ <componentInstanceProperties>
95
+ <name>rowsToDisplay</name>
96
+ <value>10</value>
97
+ </componentInstanceProperties>
98
+ <componentInstanceProperties>
99
+ <name>showActionBar</name>
100
+ <value>true</value>
101
+ </componentInstanceProperties>
102
+ <componentName>force:relatedListContainer</componentName>
103
+ <identifier>force_relatedListContainer</identifier>
104
+ </componentInstance>
105
+ </itemInstances>
106
+ <name>relatedTabContent</name>
107
+ <type>Facet</type>
108
+ </flexiPageRegions>
109
+ <!-- Field Section: Detail Fields -->
110
+ <%
111
+ // Use detailFields if provided, otherwise default fields
112
+ const allDetailFields = (detailFields && detailFields.length > 0)
113
+ ? detailFields
114
+ : ['Name', 'OwnerId', 'CreatedById', 'LastModifiedById'];
115
+ // Split fields into two columns
116
+ const midpoint = Math.ceil(allDetailFields.length / 2);
117
+ const column1Fields = allDetailFields.slice(0, midpoint);
118
+ const column2Fields = allDetailFields.slice(midpoint);
119
+ %>
120
+ <!-- Column 1 Fields -->
121
+ <flexiPageRegions>
122
+ <% column1Fields.forEach((field, index) => { %>
123
+ <itemInstances>
124
+ <fieldInstance>
125
+ <fieldInstanceProperties>
126
+ <name>uiBehavior</name>
127
+ <value>none</value>
128
+ </fieldInstanceProperties>
129
+ <fieldItem>Record.<%= field %></fieldItem>
130
+ <identifier>Record<%= field.replace(/\./g, '_') %>Column1Field<%= index %></identifier>
131
+ </fieldInstance>
132
+ </itemInstances>
133
+ <% }); %>
134
+ <name>Facet-FieldSection-Column1</name>
135
+ <type>Facet</type>
136
+ </flexiPageRegions>
137
+ <!-- Column 2 Fields -->
138
+ <% if (column2Fields.length > 0) { %>
139
+ <flexiPageRegions>
140
+ <% column2Fields.forEach((field, index) => { %>
141
+ <itemInstances>
142
+ <fieldInstance>
143
+ <fieldInstanceProperties>
144
+ <name>uiBehavior</name>
145
+ <value>none</value>
146
+ </fieldInstanceProperties>
147
+ <fieldItem>Record.<%= field %></fieldItem>
148
+ <identifier>Record<%= field.replace(/\./g, '_') %>Column2Field<%= index %></identifier>
149
+ </fieldInstance>
150
+ </itemInstances>
151
+ <% }); %>
152
+ <name>Facet-FieldSection-Column2</name>
153
+ <type>Facet</type>
154
+ </flexiPageRegions>
155
+ <% } %>
156
+ <!-- Field Section: Column Facets -->
157
+ <flexiPageRegions>
158
+ <itemInstances>
159
+ <componentInstance>
160
+ <componentInstanceProperties>
161
+ <name>body</name>
162
+ <value>Facet-FieldSection-Column1</value>
163
+ </componentInstanceProperties>
164
+ <componentName>flexipage:column</componentName>
165
+ <identifier>flexipage_column1</identifier>
166
+ </componentInstance>
167
+ </itemInstances>
168
+ <% if (column2Fields.length > 0) { %>
169
+ <itemInstances>
170
+ <componentInstance>
171
+ <componentInstanceProperties>
172
+ <name>body</name>
173
+ <value>Facet-FieldSection-Column2</value>
174
+ </componentInstanceProperties>
175
+ <componentName>flexipage:column</componentName>
176
+ <identifier>flexipage_column2</identifier>
177
+ </componentInstance>
178
+ </itemInstances>
179
+ <% } %>
180
+ <name>Facet-FieldSection-Columns</name>
181
+ <type>Facet</type>
182
+ </flexiPageRegions>
183
+ <!-- Field Section Component -->
184
+ <flexiPageRegions>
185
+ <itemInstances>
186
+ <componentInstance>
187
+ <componentInstanceProperties>
188
+ <name>columns</name>
189
+ <value>Facet-FieldSection-Columns</value>
190
+ </componentInstanceProperties>
191
+ <componentInstanceProperties>
192
+ <name>horizontalAlignment</name>
193
+ <value>false</value>
194
+ </componentInstanceProperties>
195
+ <componentInstanceProperties>
196
+ <name>label</name>
197
+ <value>Information</value>
198
+ </componentInstanceProperties>
199
+ <componentName>flexipage:fieldSection</componentName>
200
+ <identifier>flexipage_fieldSection</identifier>
201
+ </componentInstance>
202
+ </itemInstances>
203
+ <name>detailTabContent</name>
204
+ <type>Facet</type>
205
+ </flexiPageRegions>
206
+ <flexiPageRegions>
207
+ <itemInstances>
208
+ <componentInstance>
209
+ <componentInstanceProperties>
210
+ <name>body</name>
211
+ <value>relatedTabContent</value>
212
+ </componentInstanceProperties>
213
+ <componentInstanceProperties>
214
+ <name>title</name>
215
+ <value>Standard.Tab.relatedLists</value>
216
+ </componentInstanceProperties>
217
+ <componentName>flexipage:tab</componentName>
218
+ <identifier>relatedListsTab</identifier>
219
+ </componentInstance>
220
+ </itemInstances>
221
+ <itemInstances>
222
+ <componentInstance>
223
+ <componentInstanceProperties>
224
+ <name>active</name>
225
+ <value>true</value>
226
+ </componentInstanceProperties>
227
+ <componentInstanceProperties>
228
+ <name>body</name>
229
+ <value>detailTabContent</value>
230
+ </componentInstanceProperties>
231
+ <componentInstanceProperties>
232
+ <name>title</name>
233
+ <value>Standard.Tab.detail</value>
234
+ </componentInstanceProperties>
235
+ <componentName>flexipage:tab</componentName>
236
+ <identifier>detailTab</identifier>
237
+ </componentInstance>
238
+ </itemInstances>
239
+ <name>maintabs</name>
240
+ <type>Facet</type>
241
+ </flexiPageRegions>
242
+ <flexiPageRegions>
243
+ <itemInstances>
244
+ <componentInstance>
245
+ <componentInstanceProperties>
246
+ <name>tabs</name>
247
+ <value>maintabs</value>
248
+ </componentInstanceProperties>
249
+ <componentName>flexipage:tabset</componentName>
250
+ <identifier>flexipage_tabset</identifier>
251
+ </componentInstance>
252
+ </itemInstances>
253
+ <name>main</name>
254
+ <type>Region</type>
255
+ </flexiPageRegions>
256
+ <flexiPageRegions>
257
+ <itemInstances>
258
+ <componentInstance>
259
+ <componentInstanceProperties>
260
+ <name>showLegacyActivityComposer</name>
261
+ <value>false</value>
262
+ </componentInstanceProperties>
263
+ <componentName>runtime_sales_activities:activityPanel</componentName>
264
+ <identifier>runtime_sales_activities_activityPanel</identifier>
265
+ </componentInstance>
266
+ </itemInstances>
267
+ <name>activityTabContent</name>
268
+ <type>Facet</type>
269
+ </flexiPageRegions>
270
+ <flexiPageRegions>
271
+ <itemInstances>
272
+ <componentInstance>
273
+ <componentName>forceChatter:recordFeedContainer</componentName>
274
+ <identifier>forceChatter_recordFeedContainer</identifier>
275
+ </componentInstance>
276
+ </itemInstances>
277
+ <name>feedTabContent</name>
278
+ <type>Facet</type>
279
+ </flexiPageRegions>
280
+ <flexiPageRegions>
281
+ <itemInstances>
282
+ <componentInstance>
283
+ <componentInstanceProperties>
284
+ <name>active</name>
285
+ <value>true</value>
286
+ </componentInstanceProperties>
287
+ <componentInstanceProperties>
288
+ <name>body</name>
289
+ <value>activityTabContent</value>
290
+ </componentInstanceProperties>
291
+ <componentInstanceProperties>
292
+ <name>title</name>
293
+ <value>Standard.Tab.activity</value>
294
+ </componentInstanceProperties>
295
+ <componentName>flexipage:tab</componentName>
296
+ <identifier>activityTab</identifier>
297
+ </componentInstance>
298
+ </itemInstances>
299
+ <itemInstances>
300
+ <componentInstance>
301
+ <componentInstanceProperties>
302
+ <name>body</name>
303
+ <value>feedTabContent</value>
304
+ </componentInstanceProperties>
305
+ <componentInstanceProperties>
306
+ <name>title</name>
307
+ <value>Standard.Tab.collaborate</value>
308
+ </componentInstanceProperties>
309
+ <componentName>flexipage:tab</componentName>
310
+ <identifier>collaborateTab</identifier>
311
+ </componentInstance>
312
+ </itemInstances>
313
+ <name>sidebartabs</name>
314
+ <type>Facet</type>
315
+ </flexiPageRegions>
316
+ <flexiPageRegions>
317
+ <itemInstances>
318
+ <componentInstance>
319
+ <componentInstanceProperties>
320
+ <name>tabs</name>
321
+ <value>sidebartabs</value>
322
+ </componentInstanceProperties>
323
+ <componentName>flexipage:tabset</componentName>
324
+ <identifier>flexipage_tabset2</identifier>
325
+ </componentInstance>
326
+ </itemInstances>
327
+ <name>sidebar</name>
328
+ <type>Region</type>
329
+ </flexiPageRegions>
330
+ <description><%= description %></description>
331
+ <masterLabel><%= masterlabel %></masterLabel>
332
+ <sobjectType><%= entityName %></sobjectType>
333
+ <template>
334
+ <name>flexipage:recordHomeTemplateDesktop</name>
335
+ </template>
336
+ <type>RecordPage</type>
337
+ </FlexiPage>
@@ -0,0 +1,9 @@
1
+ node_modules
2
+ dist
3
+ build
4
+ .vite
5
+ coverage
6
+ *.min.js
7
+ *.min.css
8
+ *.map
9
+ package-lock.json
@@ -0,0 +1,11 @@
1
+ {
2
+ "semi": true,
3
+ "trailingComma": "es5",
4
+ "singleQuote": true,
5
+ "printWidth": 80,
6
+ "tabWidth": 2,
7
+ "useTabs": false,
8
+ "bracketSpacing": true,
9
+ "arrowParens": "avoid",
10
+ "endOfLine": "lf"
11
+ }
@@ -0,0 +1,73 @@
1
+ # React + TypeScript + Vite
2
+
3
+ This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
4
+
5
+ Currently, two official plugins are available:
6
+
7
+ - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh
8
+ - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
9
+
10
+ ## React Compiler
11
+
12
+ The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
13
+
14
+ ## Expanding the ESLint configuration
15
+
16
+ If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
17
+
18
+ ```js
19
+ export default defineConfig([
20
+ globalIgnores(['dist']),
21
+ {
22
+ files: ['**/*.{ts,tsx}'],
23
+ extends: [
24
+ // Other configs...
25
+
26
+ // Remove tseslint.configs.recommended and replace with this
27
+ tseslint.configs.recommendedTypeChecked,
28
+ // Alternatively, use this for stricter rules
29
+ tseslint.configs.strictTypeChecked,
30
+ // Optionally, add this for stylistic rules
31
+ tseslint.configs.stylisticTypeChecked,
32
+
33
+ // Other configs...
34
+ ],
35
+ languageOptions: {
36
+ parserOptions: {
37
+ project: ['./tsconfig.node.json', './tsconfig.app.json'],
38
+ tsconfigRootDir: import.meta.dirname,
39
+ },
40
+ // other options...
41
+ },
42
+ },
43
+ ])
44
+ ```
45
+
46
+ You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
47
+
48
+ ```js
49
+ // eslint.config.js
50
+ import reactX from 'eslint-plugin-react-x'
51
+ import reactDom from 'eslint-plugin-react-dom'
52
+
53
+ export default defineConfig([
54
+ globalIgnores(['dist']),
55
+ {
56
+ files: ['**/*.{ts,tsx}'],
57
+ extends: [
58
+ // Other configs...
59
+ // Enable lint rules for React
60
+ reactX.configs['recommended-typescript'],
61
+ // Enable lint rules for React DOM
62
+ reactDom.configs.recommended,
63
+ ],
64
+ languageOptions: {
65
+ parserOptions: {
66
+ project: ['./tsconfig.node.json', './tsconfig.app.json'],
67
+ tsconfigRootDir: import.meta.dirname,
68
+ },
69
+ // other options...
70
+ },
71
+ },
72
+ ])
73
+ ```
@@ -0,0 +1,113 @@
1
+ import js from '@eslint/js';
2
+ import globals from 'globals';
3
+ import reactHooks from 'eslint-plugin-react-hooks';
4
+ import reactRefresh from 'eslint-plugin-react-refresh';
5
+ import tseslint from '@typescript-eslint/eslint-plugin';
6
+ import tsparser from '@typescript-eslint/parser';
7
+ import react from 'eslint-plugin-react';
8
+
9
+ export default [
10
+ // Global ignores
11
+ {
12
+ ignores: ['build/**/*', 'dist/**/*', 'coverage/**/*'],
13
+ },
14
+ // Config files and build tools (first to avoid inheritance)
15
+ {
16
+ files: ['*.config.{js,ts}', 'vite.config.ts'],
17
+ languageOptions: {
18
+ parser: tsparser,
19
+ parserOptions: {
20
+ ecmaVersion: 'latest',
21
+ sourceType: 'module',
22
+ },
23
+ globals: {
24
+ ...globals.node,
25
+ __dirname: 'readonly',
26
+ process: 'readonly',
27
+ },
28
+ },
29
+ plugins: {
30
+ '@typescript-eslint': tseslint,
31
+ },
32
+ rules: {
33
+ '@typescript-eslint/no-var-requires': 'off',
34
+ },
35
+ },
36
+ // Main TypeScript/React files
37
+ {
38
+ files: ['**/*.{ts,tsx}'],
39
+ ignores: [
40
+ 'coverage',
41
+ 'dist',
42
+ 'node_modules',
43
+ 'build',
44
+ '*.config.{js,ts}',
45
+ 'vite.config.ts',
46
+ ],
47
+ languageOptions: {
48
+ ecmaVersion: 2020,
49
+ sourceType: 'module',
50
+ parser: tsparser,
51
+ parserOptions: {
52
+ ecmaFeatures: {
53
+ jsx: true,
54
+ },
55
+ ecmaVersion: 'latest',
56
+ sourceType: 'module',
57
+ project: './tsconfig.json',
58
+ },
59
+ globals: {
60
+ ...globals.browser,
61
+ JSX: 'readonly',
62
+ },
63
+ },
64
+ plugins: {
65
+ react,
66
+ 'react-hooks': reactHooks,
67
+ 'react-refresh': reactRefresh,
68
+ '@typescript-eslint': tseslint,
69
+ },
70
+ rules: {
71
+ ...js.configs.recommended.rules,
72
+ ...tseslint.configs.recommended.rules,
73
+ ...react.configs.recommended.rules,
74
+ ...reactHooks.configs.recommended.rules,
75
+ 'react/react-in-jsx-scope': 'off',
76
+ 'react/prop-types': 'off',
77
+ 'react/jsx-no-comment-textnodes': 'off',
78
+ 'react/no-unescaped-entities': 'off',
79
+ '@typescript-eslint/no-unused-vars': [
80
+ 'error',
81
+ { argsIgnorePattern: '^_' },
82
+ ],
83
+ '@typescript-eslint/explicit-function-return-type': 'off',
84
+ '@typescript-eslint/explicit-module-boundary-types': 'off',
85
+ '@typescript-eslint/no-explicit-any': 'off',
86
+ },
87
+ settings: {
88
+ react: {
89
+ version: 'detect',
90
+ },
91
+ },
92
+ },
93
+ // Test files
94
+ {
95
+ files: [
96
+ '**/*.test.{ts,tsx}',
97
+ '**/test/**/*.{ts,tsx}',
98
+ 'src/test/**/*.{ts,tsx}',
99
+ ],
100
+ languageOptions: {
101
+ parser: tsparser,
102
+ globals: {
103
+ ...globals.browser,
104
+ ...globals.node,
105
+ global: 'writable',
106
+ JSX: 'readonly',
107
+ },
108
+ },
109
+ rules: {
110
+ '@typescript-eslint/no-explicit-any': 'off',
111
+ },
112
+ },
113
+ ];