Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: adopt primer design system ui components #1589

Open
wants to merge 31 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
324d302
refactor: adopt primer ui components
setchy Oct 12, 2024
a4b8cf4
refactor: adopt primer ui components
setchy Oct 12, 2024
e3b9306
refactor: adopt primer ui components
setchy Oct 12, 2024
5f929a3
refactor: adopt primer ui components
setchy Oct 13, 2024
5084f8e
refactor: adopt primer ui components
setchy Oct 13, 2024
5dac73c
refactor: adopt primer ui components
setchy Oct 13, 2024
9a48cd2
refactor: adopt primer ui components
setchy Oct 13, 2024
8285d8a
refactor: adopt primer ui components
setchy Oct 13, 2024
d261edc
refactor: adopt primer ui components
setchy Oct 13, 2024
ac86153
refactor: adopt primer ui components
setchy Oct 13, 2024
717be94
refactor: adopt primer ui components
setchy Oct 13, 2024
79e7e8b
refactor: adopt primer ui components
setchy Oct 13, 2024
b1f8307
refactor: test
setchy Oct 14, 2024
575b818
refactor
setchy Oct 14, 2024
8f2b5c0
fix tests
setchy Oct 14, 2024
e88f9f5
feat: shrink sidebar width
setchy Oct 14, 2024
486f3d7
fix hover group alignment
setchy Oct 14, 2024
abb921a
sidebar width
setchy Oct 14, 2024
479559a
test: fix sidebar tests
setchy Oct 14, 2024
d7e4665
test: update test cases
setchy Oct 14, 2024
360b0f3
test: update test cases
setchy Oct 14, 2024
706f570
test: update test cases
setchy Oct 14, 2024
f231de5
test: update test cases
setchy Oct 14, 2024
7459698
Merge branch 'main' into refactor/primer-design-system
setchy Oct 14, 2024
45e75e7
fix small ui issues
setchy Oct 15, 2024
3a0de64
fix small ui issues
setchy Oct 15, 2024
12e73f2
fix account rendering for long names
setchy Oct 15, 2024
c63c17d
refactor: extract filters and show on all read screen
setchy Oct 15, 2024
967a545
fix heading alignment
setchy Oct 15, 2024
b1afe07
Merge branch 'main' into refactor/primer-design-system
setchy Oct 15, 2024
eec2e45
Merge branch 'main' into refactor/primer-design-system
setchy Oct 15, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@ import type { Config } from 'jest';

const config: Config = {
preset: 'ts-jest',
setupFiles: ['<rootDir>/src/renderer/__helpers__/setupEnvVars.js'],
setupFiles: [
'<rootDir>/src/renderer/__helpers__/setupEnvVars.js',
'<rootDir>/src/renderer/__helpers__/setupPrimerJest.js',
],
testEnvironment: 'jsdom',
collectCoverage: true,
collectCoverageFrom: ['src/**/*', '!**/__snapshots__/**'],
Expand Down
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@
"@discordapp/twemoji": "15.1.0",
"@electron/notarize": "2.5.0",
"@primer/octicons-react": "19.12.0",
"@primer/react": "36.27.0",
"@testing-library/react": "16.0.1",
"@types/jest": "29.5.13",
"@types/node": "20.16.11",
Expand All @@ -148,7 +149,6 @@
"@types/react-router-dom": "5.3.3",
"autoprefixer": "10.4.20",
"axios": "1.7.7",
"class-variance-authority": "0.7.0",
"clsx": "2.1.1",
"concurrently": "9.0.1",
"copy-webpack-plugin": "12.0.2",
Expand All @@ -170,8 +170,9 @@
"postcss-loader": "8.1.1",
"react-final-form": "6.5.9",
"rimraf": "6.0.1",
"styled-components": "6.1.13",
"tailwind-merge": "2.5.4",
"tailwindcss": "3.4.13",
"tailwindcss": "3.4.14",
"terser-webpack-plugin": "5.3.10",
"ts-jest": "29.2.5",
"ts-loader": "9.5.1",
Expand Down
965 changes: 938 additions & 27 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

110 changes: 59 additions & 51 deletions src/renderer/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ import {
Routes,
useLocation,
} from 'react-router-dom';

import { BaseStyles, ThemeProvider } from '@primer/react';

import { Loading } from './components/Loading';
import { Sidebar } from './components/Sidebar';
import { AppContext, AppProvider } from './context/App';
Expand All @@ -16,6 +19,7 @@ import { LoginWithOAuthAppRoute } from './routes/LoginWithOAuthApp';
import { LoginWithPersonalAccessTokenRoute } from './routes/LoginWithPersonalAccessToken';
import { NotificationsRoute } from './routes/Notifications';
import { SettingsRoute } from './routes/Settings';

import './App.css';

function RequireAuth({ children }) {
Expand All @@ -31,56 +35,60 @@ function RequireAuth({ children }) {

export const App = () => {
return (
<AppProvider>
<Router>
<div className="flex h-full overflow-y-auto flex-col pl-14">
<Loading />
<Sidebar />
<Routes>
<Route
path="/"
element={
<RequireAuth>
<NotificationsRoute />
</RequireAuth>
}
/>
<Route
path="/filters"
element={
<RequireAuth>
<FiltersRoute />
</RequireAuth>
}
/>
<Route
path="/settings"
element={
<RequireAuth>
<SettingsRoute />
</RequireAuth>
}
/>
<Route
path="/accounts"
element={
<RequireAuth>
<AccountsRoute />
</RequireAuth>
}
/>
<Route path="/login" element={<LoginRoute />} />
<Route
path="/login-personal-access-token"
element={<LoginWithPersonalAccessTokenRoute />}
/>
<Route
path="/login-oauth-app"
element={<LoginWithOAuthAppRoute />}
/>
</Routes>
</div>
</Router>
</AppProvider>
<ThemeProvider>
<BaseStyles>
<AppProvider>
<Router>
<div className="flex h-full overflow-y-auto flex-col pl-12">
<Loading />
<Sidebar />
<Routes>
<Route
path="/"
element={
<RequireAuth>
<NotificationsRoute />
</RequireAuth>
}
/>
<Route
path="/filters"
element={
<RequireAuth>
<FiltersRoute />
</RequireAuth>
}
/>
<Route
path="/settings"
element={
<RequireAuth>
<SettingsRoute />
</RequireAuth>
}
/>
<Route
path="/accounts"
element={
<RequireAuth>
<AccountsRoute />
</RequireAuth>
}
/>
<Route path="/login" element={<LoginRoute />} />
<Route
path="/login-personal-access-token"
element={<LoginWithPersonalAccessTokenRoute />}
/>
<Route
path="/login-oauth-app"
element={<LoginWithOAuthAppRoute />}
/>
</Routes>
</div>
</Router>
</AppProvider>
</BaseStyles>
</ThemeProvider>
);
};
13 changes: 13 additions & 0 deletions src/renderer/__helpers__/setupPrimerJest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
if (typeof CSS === 'undefined') {
global.CSS = {};
}

if (!CSS.supports) {
CSS.supports = () => true;
}

global.ResizeObserver = class {
observe() {}
unobserve() {}
disconnect() {}
};
39 changes: 37 additions & 2 deletions src/renderer/components/AllRead.test.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,49 @@
import { render } from '@testing-library/react';
import { MemoryRouter } from 'react-router-dom';
import { mockSettings } from '../__mocks__/state-mocks';
import { ensureStableEmojis } from '../__mocks__/utils';
import { AppContext } from '../context/App';
import { AllRead } from './AllRead';

describe('renderer/components/AllRead.tsx', () => {
beforeEach(() => {
ensureStableEmojis();
});

it('should render itself & its children', () => {
const tree = render(<AllRead />);
it('should render itself & its children - no filters', () => {
const tree = render(
<AppContext.Provider
value={{
settings: {
...mockSettings,
},
}}
>
<MemoryRouter>
<AllRead />
</MemoryRouter>
</AppContext.Provider>,
);

expect(tree).toMatchSnapshot();
});

it('should render itself & its children - with filters', () => {
const tree = render(
<AppContext.Provider
value={{
settings: {
...mockSettings,
filterReasons: ['author'],
hideBots: true,
},
}}
>
<MemoryRouter>
<AllRead />
</MemoryRouter>
</AppContext.Provider>,
);

expect(tree).toMatchSnapshot();
});
Expand Down
34 changes: 26 additions & 8 deletions src/renderer/components/AllRead.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
import { type FC, useMemo } from 'react';
import { type FC, useContext, useMemo } from 'react';

import { Stack } from '@primer/react';

import { AppContext } from '../context/App';
import { Constants } from '../utils/constants';
import { EmojiText } from './EmojiText';
import { hasFiltersSet } from '../utils/filters';
import { Centered } from './primitives/Centered';
import { EmojiText } from './primitives/EmojiText';

export const AllRead: FC = () => {
const { settings } = useContext(AppContext);

const hasFilters = hasFiltersSet(settings);

const emoji = useMemo(
() =>
Constants.ALL_READ_EMOJIS[
Expand All @@ -12,12 +22,20 @@ export const AllRead: FC = () => {
);

return (
<div className="flex flex-1 flex-col items-center justify-center bg-white p-4 text-black dark:bg-gray-dark dark:text-white">
<div className="mt-2 mb-5 text-5xl">
<EmojiText text={emoji} />
</div>
<Centered>
<Stack direction="vertical" align="center">
<div className="mt-2 mb-5 text-5xl">
<EmojiText text={emoji} />
</div>

<div className="mb-2 text-xl font-semibold">No new notifications.</div>
</div>
{hasFilters ? (
<div className="mb-2 text-xl font-semibold">
No new filtered notifications
</div>
) : (
<div className="mb-2 text-xl font-semibold">No new notifications</div>
)}
</Stack>
</Centered>
);
};
44 changes: 0 additions & 44 deletions src/renderer/components/Header.tsx

This file was deleted.

13 changes: 0 additions & 13 deletions src/renderer/components/HoverGroup.tsx

This file was deleted.

4 changes: 3 additions & 1 deletion src/renderer/components/Loading.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import NProgress from 'nprogress';
import { type FC, useContext, useEffect } from 'react';

import NProgress from 'nprogress';

import { AppContext } from '../context/App';

export const Loading: FC = () => {
Expand Down
35 changes: 20 additions & 15 deletions src/renderer/components/Oops.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import { type FC, useMemo } from 'react';

import { Stack } from '@primer/react';
import type { GitifyError } from '../types';
import { EmojiText } from './EmojiText';
import { Centered } from './primitives/Centered';
import { EmojiText } from './primitives/EmojiText';

interface IOops {
error: GitifyError;
Expand All @@ -13,20 +16,22 @@ export const Oops: FC<IOops> = ({ error }: IOops) => {
);

return (
<div className="flex flex-1 flex-col items-center justify-center p-4">
<div className="mt-2 mb-5 text-5xl">
<EmojiText text={emoji} />
</div>
<Centered>
<Stack direction="vertical" align="center">
<div className="mt-2 mb-5 text-5xl">
<EmojiText text={emoji} />
</div>

<div className="mb-2 text-xl font-semibold">{error.title}</div>
{error.descriptions.map((description, i) => {
return (
// biome-ignore lint/suspicious/noArrayIndexKey: using index for key to keep the error constants clean
<div className="mb-2 text-center" key={`error_description_${i}`}>
{description}
</div>
);
})}
</div>
<div className="mb-2 text-xl font-semibold">{error.title}</div>
{error.descriptions.map((description, i) => {
return (
// biome-ignore lint/suspicious/noArrayIndexKey: using index for key to keep the error constants clean
<div className="mb-2 text-center" key={`error_description_${i}`}>
{description}
</div>
);
})}
</Stack>
</Centered>
);
};
Loading