diff --git a/tools/ui-components/src/close-button/close-button.test.tsx b/tools/ui-components/src/close-button/close-button.test.tsx index 79628b8cdf9..0ac14e0e712 100644 --- a/tools/ui-components/src/close-button/close-button.test.tsx +++ b/tools/ui-components/src/close-button/close-button.test.tsx @@ -10,6 +10,12 @@ describe('', () => { expect(screen.getByRole('button')).toBeInTheDocument(); }); + it('should have "Close" as the default label', () => { + render(); + + expect(screen.getByRole('button', { name: 'Close' })).toBeInTheDocument(); + }); + it('should set "aria-label" to "label" prop', () => { const expectedLabel = 'Close me please'; render(); diff --git a/tools/ui-components/src/close-button/close-button.tsx b/tools/ui-components/src/close-button/close-button.tsx index 7a4fc6e9d0c..1fad35fae59 100644 --- a/tools/ui-components/src/close-button/close-button.tsx +++ b/tools/ui-components/src/close-button/close-button.tsx @@ -15,18 +15,41 @@ export function CloseButton({ onClick }: CloseButtonProps): JSX.Element { const classes = [ - 'text-xl font-bold leading-none appearance-none opacity-20', - 'hover:opacity-50 focus:opacity-50', + // Remove browser's default styles + 'bg-transparent', + 'border-none', + // Text styles + 'text-lg', + 'font-bold', + 'text-foreground-primary', + // Active state + 'active:before:w-full', + 'active:before:h-full', + 'active:before:absolute', + 'active:before:inset-0', + 'active:before:border-3', + 'active:before:border-transparent', + 'active:before:bg-gray-900', + 'active:before:opacity-20', + // Focus state + 'focus:outline-none', // Hide the default browser outline + 'focus-visible:ring', + 'focus-visible:ring-focus-outline-color', + // Content positioning + 'flex', + 'justify-center', + 'items-center', + // Others + 'w-[24px]', + 'h-[24px]', + 'opacity-50', className ].join(' '); + return ( - ); }