Date: Wed, 29 Jul 2026 10:25:27 +0300
Subject: [PATCH 2/2] fix(search): cr fixes #57
---
src/tedi/components/form/search/search.spec.tsx | 5 +++++
src/tedi/components/form/search/search.tsx | 4 +++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/tedi/components/form/search/search.spec.tsx b/src/tedi/components/form/search/search.spec.tsx
index d468d5da6..8d3710e31 100644
--- a/src/tedi/components/form/search/search.spec.tsx
+++ b/src/tedi/components/form/search/search.spec.tsx
@@ -37,6 +37,11 @@ describe('Search component', () => {
expect(screen.getByRole('search')).toHaveAttribute('aria-label', 'Search products');
});
+ it('falls back to the generic label when ariaLabel is an empty string', () => {
+ render(
);
+ expect(screen.getByRole('search')).toHaveAttribute('aria-label', 'search');
+ });
+
it('calls onSearch when the search button is clicked', () => {
render(
);
const button = screen.getByRole('button', { name: /search/i });
diff --git a/src/tedi/components/form/search/search.tsx b/src/tedi/components/form/search/search.tsx
index 484be3024..16bee3a08 100644
--- a/src/tedi/components/form/search/search.tsx
+++ b/src/tedi/components/form/search/search.tsx
@@ -77,7 +77,9 @@ export const Search = forwardRef
(
// placeholder. The input already surfaces the placeholder, so reusing it as
// the region name makes screen readers announce it twice. Consumers should
// set `ariaLabel` to give the region a distinct name (e.g. "Search products").
- const searchAriaLabel = ariaLabel ?? getLabel('search');
+ // `||` (not `??`) so an empty-string `ariaLabel` also falls back — otherwise
+ // the landmark would render with an empty accessible name.
+ const searchAriaLabel = ariaLabel || getLabel('search');
return (