diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx
index cc4bdee3a..eda622c32 100644
--- a/src/renderer/App.tsx
+++ b/src/renderer/App.tsx
@@ -7,7 +7,7 @@ import {
useLocation,
} from 'react-router-dom';
-import { BaseStyles, ThemeProvider } from '@primer/react';
+import { BaseStyles, Box, ThemeProvider } from '@primer/react';
import { Loading } from './components/Loading';
import { Sidebar } from './components/Sidebar';
@@ -47,7 +47,7 @@ export const App = () => {
-
+
@@ -93,7 +93,7 @@ export const App = () => {
element={ }
/>
-
+
diff --git a/src/renderer/components/avatars/AvatarWithFallback.tsx b/src/renderer/components/avatars/AvatarWithFallback.tsx
index 8610c922e..a2f6149a3 100644
--- a/src/renderer/components/avatars/AvatarWithFallback.tsx
+++ b/src/renderer/components/avatars/AvatarWithFallback.tsx
@@ -26,12 +26,15 @@ export const AvatarWithFallback: React.FC = ({
const [isBroken, setIsBroken] = useState(false);
const isNonHuman = isNonHumanUser(userType);
+
+ // TODO explore using AnchoredOverlay component (https://primer.style/components/anchored-overlay/react/alpha) to render Avatar Card on hover
return (
{!src || isBroken ? (
isNonHuman ? (
@@ -48,7 +51,12 @@ export const AvatarWithFallback: React.FC = ({
onError={() => setIsBroken(true)}
/>
)}
- {name && {name} }
+ {name && (
+ // TODO add truncation logic for long names
+
+ {name}
+
+ )}
);
};
diff --git a/src/renderer/components/avatars/__snapshots__/AvatarWithFallback.test.tsx.snap b/src/renderer/components/avatars/__snapshots__/AvatarWithFallback.test.tsx.snap
index 16d16b195..ad94442ee 100644
--- a/src/renderer/components/avatars/__snapshots__/AvatarWithFallback.test.tsx.snap
+++ b/src/renderer/components/avatars/__snapshots__/AvatarWithFallback.test.tsx.snap
@@ -6,7 +6,7 @@ exports[`renderer/components/avatars/AvatarWithFallback.tsx renders the fallback
"baseElement":
@gitify-app
@@ -41,7 +41,7 @@ exports[`renderer/components/avatars/AvatarWithFallback.tsx renders the fallback
,
"container":
@gitify-app
@@ -133,7 +133,7 @@ exports[`renderer/components/avatars/AvatarWithFallback.tsx renders the fallback
"baseElement":
@gitify-app
@@ -168,7 +168,7 @@ exports[`renderer/components/avatars/AvatarWithFallback.tsx renders the fallback
,
"container":
@gitify-app
@@ -256,7 +256,7 @@ exports[`renderer/components/avatars/AvatarWithFallback.tsx renders the fallback
exports[`renderer/components/avatars/AvatarWithFallback.tsx renders the fallback icon when the image fails to load (isBroken = true) - human user 1`] = `
@gitify-app
@@ -285,7 +285,7 @@ exports[`renderer/components/avatars/AvatarWithFallback.tsx renders the fallback
exports[`renderer/components/avatars/AvatarWithFallback.tsx renders the fallback icon when the image fails to load (isBroken = true) - non human user 1`] = `
@gitify-app
@@ -318,7 +318,7 @@ exports[`renderer/components/avatars/AvatarWithFallback.tsx should render avatar
"baseElement":
@gitify-app
@@ -347,7 +347,7 @@ exports[`renderer/components/avatars/AvatarWithFallback.tsx should render avatar
,
"container":
@gitify-app
@@ -433,7 +433,7 @@ exports[`renderer/components/avatars/AvatarWithFallback.tsx should render avatar
"baseElement":
@gitify-app
@@ -462,7 +462,7 @@ exports[`renderer/components/avatars/AvatarWithFallback.tsx should render avatar
,
"container":
@gitify-app
diff --git a/src/renderer/components/fields/Checkbox.tsx b/src/renderer/components/fields/Checkbox.tsx
index 84b55f0b0..4a0fd8581 100644
--- a/src/renderer/components/fields/Checkbox.tsx
+++ b/src/renderer/components/fields/Checkbox.tsx
@@ -1,4 +1,7 @@
import type { FC, ReactNode } from 'react';
+
+import { Stack } from '@primer/react';
+
import { cn } from '../../utils/cn';
import { Tooltip } from './Tooltip';
@@ -13,32 +16,34 @@ export interface ICheckbox {
export const Checkbox: FC
= (props: ICheckbox) => {
return (
-
+
+ {props.label}
+
+ {props.tooltip && (
+
+ )}
+
);
};
diff --git a/src/renderer/components/fields/RadioGroup.tsx b/src/renderer/components/fields/RadioGroup.tsx
index 990254158..d395edeb4 100644
--- a/src/renderer/components/fields/RadioGroup.tsx
+++ b/src/renderer/components/fields/RadioGroup.tsx
@@ -1,4 +1,7 @@
import type { ChangeEvent, FC } from 'react';
+
+import { Stack } from '@primer/react';
+
import type { RadioGroupItem } from '../../types';
import { FieldLabel } from './FieldLabel';
@@ -12,33 +15,38 @@ export interface IRadioGroup {
export const RadioGroup: FC = (props: IRadioGroup) => {
return (
-
+
-
- {props.options.map((item) => {
- const name = `${props.name}_${item.value.toLowerCase()}`;
+ {props.options.map((item) => {
+ const name = `radio-${props.name}-${item.value}`.toLowerCase();
- return (
-
-
-
-
- );
- })}
-
-
+ return (
+
+
+
+
+ );
+ })}
+
);
};
diff --git a/src/renderer/components/fields/Tooltip.test.tsx b/src/renderer/components/fields/Tooltip.test.tsx
index bd76b4bb0..ae81a48d4 100644
--- a/src/renderer/components/fields/Tooltip.test.tsx
+++ b/src/renderer/components/fields/Tooltip.test.tsx
@@ -3,7 +3,7 @@ import { type ITooltip, Tooltip } from './Tooltip';
describe('renderer/components/fields/Tooltip.tsx', () => {
const props: ITooltip = {
- name: 'tooltip',
+ name: 'test',
tooltip: 'This is some tooltip text',
};
@@ -15,7 +15,7 @@ describe('renderer/components/fields/Tooltip.tsx', () => {
it('should display on mouse enter / leave', () => {
render( );
- const tooltipElement = screen.getByLabelText('tooltip');
+ const tooltipElement = screen.getByTestId('tooltip-test');
fireEvent.mouseEnter(tooltipElement);
expect(tooltipElement).toMatchSnapshot();
diff --git a/src/renderer/components/fields/Tooltip.tsx b/src/renderer/components/fields/Tooltip.tsx
index 4a89746d5..377494bbb 100644
--- a/src/renderer/components/fields/Tooltip.tsx
+++ b/src/renderer/components/fields/Tooltip.tsx
@@ -1,4 +1,5 @@
import { QuestionIcon } from '@primer/octicons-react';
+import { Box } from '@primer/react';
import { type FC, type ReactNode, useState } from 'react';
export interface ITooltip {
@@ -10,21 +11,22 @@ export const Tooltip: FC = (props: ITooltip) => {
const [showTooltip, setShowTooltip] = useState(false);
return (
- setShowTooltip(true)}
onMouseLeave={() => setShowTooltip(false)}
+ data-testid={`tooltip-${props.name}`}
>
{showTooltip && (
-
-
+
+
{props.tooltip}
-
-
+
+
)}
-
+
);
};
diff --git a/src/renderer/components/fields/__snapshots__/Checkbox.test.tsx.snap b/src/renderer/components/fields/__snapshots__/Checkbox.test.tsx.snap
index fd71ec0d4..9f0e78ed3 100644
--- a/src/renderer/components/fields/__snapshots__/Checkbox.test.tsx.snap
+++ b/src/renderer/components/fields/__snapshots__/Checkbox.test.tsx.snap
@@ -6,56 +6,54 @@ exports[`renderer/components/fields/Checkbox.tsx should render 1`] = `
"baseElement":
- ,
- "container":
-
-
-
-
- Appearance
-
-
+ Appearance
+
+
-
-
-
+