diff --git a/.github/workflows/sync-react-samples.yml b/.github/workflows/sync-react-samples.yml index 6860ee3..3cddd8c 100644 --- a/.github/workflows/sync-react-samples.yml +++ b/.github/workflows/sync-react-samples.yml @@ -1,6 +1,6 @@ # Syncs React sample packages from npm into samples/: -# - @salesforce/webapp-template-app-react-sample-b2e-experimental -# - @salesforce/webapp-template-app-react-sample-b2x-experimental +# - @salesforce/ui-bundle-template-app-react-sample-b2e +# - @salesforce/ui-bundle-template-app-react-sample-b2x # # Opens a single PR when either (or both) npm package versions have changed. # Same steps as running locally: npm install && npm run sync-react-b2e-sample @@ -37,7 +37,7 @@ jobs: - name: Get latest B2E npm version id: npm-version-b2e run: | - LATEST=$(npm view @salesforce/webapp-template-app-react-sample-b2e-experimental version) + LATEST=$(npm view @salesforce/ui-bundle-template-app-react-sample-b2e version) if [ -z "$LATEST" ]; then echo "ERROR: npm view returned empty version for B2E package" >&2 exit 1 @@ -59,7 +59,7 @@ jobs: - name: Get latest B2X npm version id: npm-version-b2x run: | - LATEST=$(npm view @salesforce/webapp-template-app-react-sample-b2x-experimental version) + LATEST=$(npm view @salesforce/ui-bundle-template-app-react-sample-b2x version) if [ -z "$LATEST" ]; then echo "ERROR: npm view returned empty version for 2x package" >&2 exit 1 @@ -109,11 +109,11 @@ jobs: - name: Install latest B2E package if: steps.skip.outputs.skip != 'true' && steps.skip.outputs.b2e_changed == 'true' - run: npm install @salesforce/webapp-template-app-react-sample-b2e-experimental@latest + run: npm install @salesforce/ui-bundle-template-app-react-sample-b2e@latest - name: Install latest B2X package if: steps.skip.outputs.skip != 'true' && steps.skip.outputs.b2x_changed == 'true' - run: npm install @salesforce/webapp-template-app-react-sample-b2x-experimental@latest + run: npm install @salesforce/ui-bundle-template-app-react-sample-b2x@latest - name: Sync B2E sample if: steps.skip.outputs.skip != 'true' @@ -133,12 +133,12 @@ jobs: if [ "${{ steps.skip.outputs.b2e_changed }}" = "true" ]; then PARTS="${PARTS}b2e-${{ steps.npm-version-b2e.outputs.latest }}" - BODY="${BODY}- **B2E** \`@salesforce/webapp-template-app-react-sample-b2e-experimental\`: ${{ steps.current-version-b2e.outputs.current || 'none' }} → ${{ steps.npm-version-b2e.outputs.latest }}"$'\n' + BODY="${BODY}- **B2E** \`@salesforce/ui-bundle-template-app-react-sample-b2e\`: ${{ steps.current-version-b2e.outputs.current || 'none' }} → ${{ steps.npm-version-b2e.outputs.latest }}"$'\n' fi if [ "${{ steps.skip.outputs.b2x_changed }}" = "true" ]; then if [ -n "$PARTS" ]; then PARTS="${PARTS}-"; fi PARTS="${PARTS}b2x-${{ steps.npm-version-b2x.outputs.latest }}" - BODY="${BODY}- **B2X** \`@salesforce/webapp-template-app-react-sample-b2x-experimental\`: ${{ steps.current-version-b2x.outputs.current || 'none' }} → ${{ steps.npm-version-b2x.outputs.latest }}"$'\n' + BODY="${BODY}- **B2X** \`@salesforce/ui-bundle-template-app-react-sample-b2x\`: ${{ steps.current-version-b2x.outputs.current || 'none' }} → ${{ steps.npm-version-b2x.outputs.latest }}"$'\n' fi echo "branch=chore/sync-react-samples-${PARTS}" >> $GITHUB_OUTPUT diff --git a/.template-versions.json b/.template-versions.json index 1ba6cf1..7ca3945 100644 --- a/.template-versions.json +++ b/.template-versions.json @@ -1,6 +1,6 @@ { - "@salesforce/webapp-template-app-react-sample-b2e-experimental": "1.107.0", - "@salesforce/webapp-template-app-react-sample-b2x-experimental": "1.107.0", + "@salesforce/ui-bundle-template-app-react-sample-b2e": "1.107.0", + "@salesforce/ui-bundle-template-app-react-sample-b2x": "1.107.0", "@salesforce/webapp-template-base-sfdx-project-experimental": "1.107.0", "@salesforce/webapp-template-feature-react-file-upload-experimental": "1.107.0", "@salesforce/webapp-template-feature-react-chart-experimental": "1.107.0", diff --git a/README.md b/README.md index e42c33f..eba39ff 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Browse the repository and copy/paste any rule or skill directly into Agentforce ## Samples -The `samples/` folder contains synced sample apps. For example, `samples/webapp-template-app-react-sample-b2e-experimental/` is kept in sync with the npm package `@salesforce/webapp-template-app-react-sample-b2e-experimental` (nightly and on manual trigger via GitHub Actions). To run the same sync locally from the repo root: +The `samples/` folder contains synced sample apps. For example, `samples/webapp-template-app-react-sample-b2e-experimental/` is kept in sync with the npm package `@salesforce/ui-bundle-template-app-react-sample-b2e` (nightly and on manual trigger via GitHub Actions). To run the same sync locally from the repo root: ```bash npm install diff --git a/package-lock.json b/package-lock.json index 8badc6a..d2dcfc1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,16 @@ { "name": "@salesforce/afv-skills", - "version": "1.5.0", + "version": "1.5.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@salesforce/afv-skills", - "version": "1.5.0", + "version": "1.5.1", "license": "CC-BY-NC-4.0", "devDependencies": { - "@salesforce/webapp-template-app-react-sample-b2e-experimental": "^1.116.6", - "@salesforce/webapp-template-app-react-sample-b2x-experimental": "^1.116.6", + "@salesforce/ui-bundle-template-app-react-sample-b2e": "^1.116.6", + "@salesforce/ui-bundle-template-app-react-sample-b2x": "^1.116.6", "@types/js-yaml": "^4.0.9", "js-yaml": "^4.1.1", "tsx": "^4.21.0" @@ -688,22 +688,22 @@ } }, "node_modules/@salesforce/sdk-core": { - "version": "1.116.6", - "resolved": "https://registry.npmjs.org/@salesforce/sdk-core/-/sdk-core-1.116.6.tgz", - "integrity": "sha512-5IWfcnQRuaOxtWBbGiW00rk6f4ImNrDDnVhqZOphJhRePOvSLqWLirfIIhRK4j00Tr8w0tgn5H+hIAWCRZvIHw==", + "version": "1.117.3", + "resolved": "https://registry.npmjs.org/@salesforce/sdk-core/-/sdk-core-1.117.3.tgz", + "integrity": "sha512-vz029He3j5BNaTWOAtK9Yxb3xj5CwKIZjxUG61T2cf/hCGxidrEftrDl2I0SNJaX4+t4M5QT+0ba6MOI4w8QDw==", "dev": true, "license": "SEE LICENSE IN LICENSE.txt" }, "node_modules/@salesforce/sdk-data": { - "version": "1.116.6", - "resolved": "https://registry.npmjs.org/@salesforce/sdk-data/-/sdk-data-1.116.6.tgz", - "integrity": "sha512-yjc1CQvBYAXWrouMmD3buu35u4DwgUGTaDZKU4//F5vIJJitsmPGrJCLDd0HdBzyu/J+77RuVGZBgsal7+zyZQ==", + "version": "1.117.3", + "resolved": "https://registry.npmjs.org/@salesforce/sdk-data/-/sdk-data-1.117.3.tgz", + "integrity": "sha512-Tx/dy4Sb0toM036nutxr3j0TNKECpJZIi+FHrvO/apGd5fmyvNk9jlaAaC+IDw53vgiWrly+zwuH8EpxA9ssLw==", "dev": true, "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@conduit-client/service-fetch-network": "3.17.0", "@conduit-client/utils": "3.17.0", - "@salesforce/sdk-core": "^1.116.6" + "@salesforce/sdk-core": "^1.117.3" } }, "node_modules/@salesforce/ts-types": { @@ -716,15 +716,15 @@ "node": ">=18.0.0" } }, - "node_modules/@salesforce/webapp-experimental": { - "version": "1.116.6", - "resolved": "https://registry.npmjs.org/@salesforce/webapp-experimental/-/webapp-experimental-1.116.6.tgz", - "integrity": "sha512-bbWVK70rv5Y+e26NLyTB2McTZ3MCQFe+NEYZDW/T4FCaAZ3Y57u1HYzgr8p4iWKlu7DU4V1sNTUGjt01mrN0Dg==", + "node_modules/@salesforce/ui-bundle": { + "version": "1.117.3", + "resolved": "https://registry.npmjs.org/@salesforce/ui-bundle/-/ui-bundle-1.117.3.tgz", + "integrity": "sha512-Vr52rmDV4vYDNpsGHzsZju8KnrQz/isWBZdi8WYEXqbjM8cUaw1qIb+TycbmJ1lFM/lQYsv+zUSy8z70maDCIQ==", "dev": true, "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@salesforce/core": "^8.23.4", - "@salesforce/sdk-data": "^1.116.6", + "@salesforce/sdk-data": "^1.117.3", "axios": "^1.7.7", "micromatch": "^4.0.8", "path-to-regexp": "^8.3.0" @@ -733,21 +733,21 @@ "node": ">=20.0.0" } }, - "node_modules/@salesforce/webapp-template-app-react-sample-b2e-experimental": { - "version": "1.116.6", - "resolved": "https://registry.npmjs.org/@salesforce/webapp-template-app-react-sample-b2e-experimental/-/webapp-template-app-react-sample-b2e-experimental-1.116.6.tgz", - "integrity": "sha512-RctkFfBfK+7HLAnP2ERmXG3Nn8apFF4ywh5LlSyOJVUjbQI48kd7PeiCX5v5G4C5Kvqp7wyhhucY0Mk4k8PLEQ==", + "node_modules/@salesforce/ui-bundle-template-app-react-sample-b2e": { + "version": "1.117.3", + "resolved": "https://registry.npmjs.org/@salesforce/ui-bundle-template-app-react-sample-b2e/-/ui-bundle-template-app-react-sample-b2e-1.117.3.tgz", + "integrity": "sha512-NeemgqcomGeeWPmqooIC8kADhAONS9B7izyO3svjBCrGMQeutrBfwwl+LdA31w4KvbWayCPEyHNDItvfy8SNWg==", "dev": true, "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { - "@salesforce/webapp-experimental": "^1.116.6", + "@salesforce/ui-bundle": "^1.117.2", "sonner": "^1.7.0" } }, - "node_modules/@salesforce/webapp-template-app-react-sample-b2x-experimental": { - "version": "1.116.6", - "resolved": "https://registry.npmjs.org/@salesforce/webapp-template-app-react-sample-b2x-experimental/-/webapp-template-app-react-sample-b2x-experimental-1.116.6.tgz", - "integrity": "sha512-Ql5l+WRvAIQ0iNTutj3k0GDjHRI7wwAbXjzBRKeCR3Tp0pHEXeoKuqj1AACxCv1APAvTOne4cvzb11eJblDOLA==", + "node_modules/@salesforce/ui-bundle-template-app-react-sample-b2x": { + "version": "1.117.3", + "resolved": "https://registry.npmjs.org/@salesforce/ui-bundle-template-app-react-sample-b2x/-/ui-bundle-template-app-react-sample-b2x-1.117.3.tgz", + "integrity": "sha512-3a0OXuV24vBkZB1xmPijbp60hFZ5WLJMUSvK6DuelAOCoYLe63mkIG17hMegrDeSVIEx6pIIHzEG4TD4DOct5g==", "dev": true, "license": "SEE LICENSE IN LICENSE.txt" }, diff --git a/package.json b/package.json index 31fedaf..79efe2b 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,8 @@ "registry": "https://registry.npmjs.org" }, "devDependencies": { - "@salesforce/webapp-template-app-react-sample-b2e-experimental": "^1.116.6", - "@salesforce/webapp-template-app-react-sample-b2x-experimental": "^1.116.6", + "@salesforce/ui-bundle-template-app-react-sample-b2e": "^1.116.6", + "@salesforce/ui-bundle-template-app-react-sample-b2x": "^1.116.6", "@types/js-yaml": "^4.0.9", "js-yaml": "^4.1.1", "tsx": "^4.21.0" diff --git a/samples/README.md b/samples/README.md index 9edcd00..fb1fef3 100644 --- a/samples/README.md +++ b/samples/README.md @@ -4,7 +4,7 @@ Sample apps and templates synced into this repo for reference and reuse. ## webapp-template-app-react-sample-b2e-experimental -Source is synced from the npm package [@salesforce/webapp-template-app-react-sample-b2e-experimental](https://www.npmjs.com/package/@salesforce/webapp-template-app-react-sample-b2e-experimental). Only the package's source (no `node_modules`) is copied into `samples/webapp-template-app-react-sample-b2e-experimental/`. +Source is synced from the npm package [@salesforce/ui-bundle-template-app-react-sample-b2e](https://www.npmjs.com/package/@salesforce/ui-bundle-template-app-react-sample-b2e). Only the package's source (no `node_modules`) is copied into `samples/webapp-template-app-react-sample-b2e-experimental/`. ### How it's updated @@ -24,7 +24,7 @@ The file `samples/webapp-template-app-react-sample-b2e-experimental/.version` st ## webapp-template-app-react-sample-b2x-experimental -Source is synced from the npm package [@salesforce/webapp-template-app-react-sample-b2x-experimental](https://www.npmjs.com/package/@salesforce/webapp-template-app-react-sample-b2x-experimental). Only the package's source (no `node_modules`) is copied into `samples/webapp-template-app-react-sample-b2x-experimental/`. +Source is synced from the npm package [@salesforce/ui-bundle-template-app-react-sample-b2x](https://www.npmjs.com/package/@salesforce/ui-bundle-template-app-react-sample-b2x). Only the package's source (no `node_modules`) is copied into `samples/webapp-template-app-react-sample-b2x-experimental/`. ### How it's updated diff --git a/scripts/sync-react-b2e-sample.js b/scripts/sync-react-b2e-sample.js index b5119ba..68c1a1b 100644 --- a/scripts/sync-react-b2e-sample.js +++ b/scripts/sync-react-b2e-sample.js @@ -1,6 +1,6 @@ #!/usr/bin/env node /** - * Syncs source from @salesforce/webapp-template-app-react-sample-b2e-experimental + * Syncs source from @salesforce/ui-bundle-template-app-react-sample-b2e * into samples/webapp-template-app-react-sample-b2e-experimental/. * Run from repo root after npm install. Same flow used locally and in CI. */ @@ -8,7 +8,7 @@ const fs = require('fs'); const path = require('path'); -const PACKAGE_NAME = '@salesforce/webapp-template-app-react-sample-b2e-experimental'; +const PACKAGE_NAME = '@salesforce/ui-bundle-template-app-react-sample-b2e'; const SAMPLE_DIR = path.join(process.cwd(), 'samples', 'webapp-template-app-react-sample-b2e-experimental'); const pkgRoot = path.join(process.cwd(), 'node_modules', PACKAGE_NAME.replace('/', path.sep)); diff --git a/scripts/sync-react-b2x-sample.js b/scripts/sync-react-b2x-sample.js index da867f0..135fff0 100644 --- a/scripts/sync-react-b2x-sample.js +++ b/scripts/sync-react-b2x-sample.js @@ -1,6 +1,6 @@ #!/usr/bin/env node /** - * Syncs source from @salesforce/webapp-template-app-react-sample-b2x-experimental + * Syncs source from @salesforce/ui-bundle-template-app-react-sample-b2x * into samples/webapp-template-app-react-sample-b2x-experimental/. * Run from repo root after npm install. Same flow used locally and in CI. */ @@ -8,7 +8,7 @@ const fs = require('fs'); const path = require('path'); -const PACKAGE_NAME = '@salesforce/webapp-template-app-react-sample-b2x-experimental'; +const PACKAGE_NAME = '@salesforce/ui-bundle-template-app-react-sample-b2x'; const SAMPLE_DIR = path.join(process.cwd(), 'samples', 'webapp-template-app-react-sample-b2x-experimental'); const pkgRoot = path.join(process.cwd(), 'node_modules', PACKAGE_NAME.replace('/', path.sep)); diff --git a/scripts/sync-webapp-skills.js b/scripts/sync-webapp-skills.js index 67334da..c515c60 100644 --- a/scripts/sync-webapp-skills.js +++ b/scripts/sync-webapp-skills.js @@ -11,8 +11,8 @@ const { execSync } = require('child_process'); const { copyRecursive } = require('./lib/copy-recursive'); const TEMPLATE_PACKAGES = [ - '@salesforce/webapp-template-app-react-sample-b2e-experimental', - '@salesforce/webapp-template-app-react-sample-b2x-experimental', + '@salesforce/ui-bundle-template-app-react-sample-b2e', + '@salesforce/ui-bundle-template-app-react-sample-b2x', ]; const PACKAGE_NAME = TEMPLATE_PACKAGES[0]; // used for syncing skills const SKILLS_SRC = 'dist/.a4drules/skills'; diff --git a/skills/generating-webapplication-ui/implementation/component.md b/skills/generating-webapplication-ui/implementation/component.md index b3f3b4b..68f3360 100644 --- a/skills/generating-webapplication-ui/implementation/component.md +++ b/skills/generating-webapplication-ui/implementation/component.md @@ -64,7 +64,7 @@ export default function HomePage() { ### Useful Patterns — Component -- **Programmatic navigation:** use `useNavigate` from `react-router`; call `navigate(path)` — consistent with GlobalSearchInput, SearchResultCard, MaintenanceTable, and other components in the web application. +- **Programmatic navigation:** use `useNavigate` from `react-router`; call `navigate(path)` — consistent with GlobalSearchInput, SearchResultCard, MaintenanceTable, and other components in the ui bundle app. - **Page container:** `max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12` - **Icons:** `lucide-react`; add `aria-hidden="true"` on decorative icons - **Focus styles:** use `focus-visible:` variants