@salesforce/ui-bundle-template-app-react-template-b2e 12.5.5 → 12.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [12.5.7](https://github.com/salesforce-experience-platform-emu/webapps/compare/v12.5.6...v12.5.7) (2026-09-11)
7
+
8
+ **Note:** Version bump only for package @salesforce/ui-bundle-template-base-sfdx-project
9
+
10
+
11
+
12
+
13
+
14
+ ## [12.5.6](https://github.com/salesforce-experience-platform-emu/webapps/compare/v12.5.5...v12.5.6) (2026-09-11)
15
+
16
+ **Note:** Version bump only for package @salesforce/ui-bundle-template-base-sfdx-project
17
+
18
+
19
+
20
+
21
+
6
22
  ## [12.5.5](https://github.com/salesforce-experience-platform-emu/webapps/compare/v12.5.4...v12.5.5) (2026-09-10)
7
23
 
8
24
  **Note:** Version bump only for package @salesforce/ui-bundle-template-base-sfdx-project
@@ -19,8 +19,8 @@
19
19
  "graphql:schema": "node scripts/get-graphql-schema.mjs"
20
20
  },
21
21
  "dependencies": {
22
- "@salesforce/platform-sdk": "^12.5.5",
23
- "@salesforce/ui-bundle": "^12.5.5",
22
+ "@salesforce/platform-sdk": "^12.5.7",
23
+ "@salesforce/ui-bundle": "^12.5.7",
24
24
  "@tailwindcss/vite": "^4.1.17",
25
25
  "class-variance-authority": "^0.7.1",
26
26
  "clsx": "^2.1.1",
@@ -46,8 +46,8 @@
46
46
  "@graphql-eslint/eslint-plugin": "^4.1.0",
47
47
  "@graphql-tools/utils": "^11.0.0",
48
48
  "@playwright/test": "^1.49.0",
49
- "@salesforce/graphiti": "^12.5.5",
50
- "@salesforce/vite-plugin-ui-bundle": "^12.5.5",
49
+ "@salesforce/graphiti": "^12.5.7",
50
+ "@salesforce/vite-plugin-ui-bundle": "^12.5.7",
51
51
  "@testing-library/jest-dom": "^6.6.3",
52
52
  "@testing-library/react": "^16.1.0",
53
53
  "@testing-library/user-event": "^14.5.2",
@@ -13,7 +13,7 @@ export default function AppLayout() {
13
13
  useEffect(() => {
14
14
  if (previousPathname.current !== null && previousPathname.current !== location.pathname) {
15
15
  const wrapper = outletWrapperRef.current;
16
- const target = wrapper?.querySelector<HTMLElement>("h1, main, [role='main']") ?? wrapper;
16
+ const target = wrapper?.querySelector<HTMLElement>("h1");
17
17
  if (target) {
18
18
  if (!target.hasAttribute("tabindex")) target.setAttribute("tabindex", "-1");
19
19
  target.focus();
@@ -73,10 +73,12 @@ export function CmsResultRow({ node, source }: CmsResultRowProps) {
73
73
  <>
74
74
  <span className="font-medium">{item.title ?? "—"}</span>
75
75
  {item.highlightedSnippet && (
76
- <p className="text-sm text-muted-foreground">{item.highlightedSnippet}</p>
76
+ <p className="text-sm text-neutral-600 dark:text-neutral-300">{item.highlightedSnippet}</p>
77
77
  )}
78
78
  {subtitleParts.length > 0 && (
79
- <p className="text-sm text-muted-foreground">{subtitleParts.join(" · ")}</p>
79
+ <p className="text-sm text-neutral-600 dark:text-neutral-300">
80
+ {subtitleParts.join(" · ")}
81
+ </p>
80
82
  )}
81
83
  </>
82
84
  );
@@ -86,7 +86,9 @@ export function DefaultResultRow({ node, source }: DefaultResultRowProps) {
86
86
  <>
87
87
  <span className="font-medium">{title ?? "—"}</span>
88
88
  {subtitleParts.length > 0 && (
89
- <p className="text-sm text-muted-foreground">{subtitleParts.join(" · ")}</p>
89
+ <p className="text-sm text-neutral-600 dark:text-neutral-300">
90
+ {subtitleParts.join(" · ")}
91
+ </p>
90
92
  )}
91
93
  </>
92
94
  );
@@ -1,4 +1,4 @@
1
- import { useEffect, useState } from "react";
1
+ import { useEffect, useRef, useState } from "react";
2
2
  import { useParams, useNavigate } from "react-router";
3
3
  import { createDataSDK } from "@salesforce/platform-sdk";
4
4
  import { AlertCircle, ChevronDown, ChevronRight, FileQuestion } from "lucide-react";
@@ -76,6 +76,7 @@ async function fetchAccountDetail(recordId: string): Promise<AccountNode | null
76
76
  export default function AccountObjectDetail() {
77
77
  const { recordId } = useParams();
78
78
  const navigate = useNavigate();
79
+ const mainRef = useRef<HTMLElement>(null);
79
80
 
80
81
  const {
81
82
  data: account,
@@ -95,18 +96,23 @@ export default function AccountObjectDetail() {
95
96
  document.title = pageTitle;
96
97
  }, [pageTitle]);
97
98
 
99
+ useEffect(() => {
100
+ if (loading) return;
101
+ const heading = mainRef.current?.querySelector<HTMLElement>("h1");
102
+ if (heading) {
103
+ if (!heading.hasAttribute("tabindex")) heading.setAttribute("tabindex", "-1");
104
+ heading.focus();
105
+ }
106
+ }, [loading, error, account, recordId]);
107
+
98
108
  return (
99
- <main className="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-6">
100
- {/* Loading state */}
109
+ <main ref={mainRef} className="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-6">
110
+ <div role="status" aria-live="polite" className="sr-only">
111
+ {loading ? "Loading account" : ""}
112
+ </div>
101
113
  {loading && <AccountDetailSkeleton />}
102
-
103
- {/* Error state */}
104
114
  {error && <AccountDetailError onBack={() => navigate(-1)} />}
105
-
106
- {/* Not found state */}
107
115
  {!loading && !error && !account && <AccountDetailNotFound onBack={() => navigate(-1)} />}
108
-
109
- {/* Content */}
110
116
  {!loading && !error && account && <AccountDetailContent account={account} />}
111
117
  </main>
112
118
  );
@@ -261,7 +267,8 @@ function Section({ title, children }: { title: string; children: React.ReactNode
261
267
  function AccountDetailError({ onBack }: { onBack: () => void }) {
262
268
  return (
263
269
  <>
264
- <Alert variant="destructive" role="alert">
270
+ {/* Alert hardcodes role="alert"; override so the h1-focus effect below is the only announcement path (WCAG 4.1.3) */}
271
+ <Alert variant="destructive" role={undefined}>
265
272
  <AlertCircle aria-hidden="true" />
266
273
  <AlertTitle>
267
274
  <h1>Failed to load account</h1>
@@ -284,7 +291,7 @@ function AccountDetailError({ onBack }: { onBack: () => void }) {
284
291
 
285
292
  function AccountDetailNotFound({ onBack }: { onBack: () => void }) {
286
293
  return (
287
- <Card role="status">
294
+ <Card>
288
295
  <CardContent className="flex flex-col items-center justify-center py-16 text-center">
289
296
  <FileQuestion aria-hidden="true" className="size-12 text-muted-foreground mb-4" />
290
297
  <h1 className="text-lg font-semibold mb-1">Account not found</h1>
@@ -301,8 +308,7 @@ function AccountDetailNotFound({ onBack }: { onBack: () => void }) {
301
308
 
302
309
  function AccountDetailSkeleton() {
303
310
  return (
304
- <div role="status" aria-live="polite">
305
- <span className="sr-only">Loading account…</span>
311
+ <div>
306
312
  <Skeleton className="h-8 w-56 mb-4" />
307
313
 
308
314
  <Card>
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@salesforce/ui-bundle-template-base-sfdx-project",
3
- "version": "12.5.5",
3
+ "version": "12.5.7",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@salesforce/ui-bundle-template-base-sfdx-project",
9
- "version": "12.5.5",
9
+ "version": "12.5.7",
10
10
  "license": "SEE LICENSE IN LICENSE.txt",
11
11
  "dependencies": {
12
12
  "fast-xml-parser": "^5.9.3",
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/ui-bundle-template-base-sfdx-project",
3
- "version": "12.5.5",
3
+ "version": "12.5.7",
4
4
  "description": "Base SFDX project template",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "publishConfig": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/ui-bundle-template-app-react-template-b2e",
3
- "version": "12.5.5",
3
+ "version": "12.5.7",
4
4
  "description": "Salesforce React internal app template",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "",