Skip to content

Commit 6f6f575

Browse files
authored
Merge pull request #17 from lxieyang/dark-mode-dev
Dark mode implementation complete
2 parents 987ba34 + d53e97c commit 6f6f575

File tree

23 files changed

+832
-354
lines changed

23 files changed

+832
-354
lines changed

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ All notable changes to this project will be documented in this file.
1212

1313
# v1.x (official releases)
1414

15+
### [1.5.0](https://github.com/lxieyang/vertical-tabs-chrome-extension/releases/tag/v1.5.0) (2019-12-26)
16+
17+
- Dark theme support! 🕶️🕶️🕶️
18+
19+
<img src="preview/repo/dark-mode.png" width="300"/>
20+
1521
### [1.2.1](https://github.com/lxieyang/vertical-tabs-chrome-extension/releases/tag/v1.2.1) (2019-12-01)
1622

1723
- Remove `AutoFocus` feature.
@@ -21,7 +27,7 @@ All notable changes to this project will be documented in this file.
2127

2228
- Prompt users to refresh pages after the extension got updated to a newer version.
2329

24-
![update-notice](preview/repo/update-notice.png)
30+
<img src="preview/repo/update-notice.png" width="300"/>
2531

2632
### [1.1.0](https://github.com/lxieyang/vertical-tabs-chrome-extension/releases/tag/v1.1.0) (2019-09-01)
2733

README.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ Chrome web store link: [Vertical Tabs (https://chrome.google.com/webstore/detail
2424

2525
---
2626

27+
**Dark theme support is here 🕶️🕶️🕶️**
28+
29+
<img src="preview/repo/dark-mode.png" width="300"/>
30+
31+
---
32+
2733
![preview](/preview/chrome-store/preview-1.png)
2834

2935
Youtube Preview Link: [https://youtu.be/BcpD38IjY6A](https://youtu.be/BcpD38IjY6A)
@@ -36,6 +42,7 @@ Youtube Preview Link: [https://youtu.be/BcpD38IjY6A](https://youtu.be/BcpD38IjY6
3642

3743
## Features
3844

45+
- Dark theme support.
3946
- Display tabs vertically in a sidebar on web pages.
4047
- Tabs are displayed with the same style as Google Chrome.
4148
- Drag and Drop to reorder tabs.
@@ -48,7 +55,7 @@ Youtube Preview Link: [https://youtu.be/BcpD38IjY6A](https://youtu.be/BcpD38IjY6
4855

4956
## Planned Features
5057

51-
- Dark theme
58+
- Tree styled tabs
5259

5360
## 👉 👉 [Release Notes and Change log](/CHANGELOG.md)
5461

package-lock.json

Lines changed: 25 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vertical-tabs-chrome-extension",
3-
"version": "1.2.1",
3+
"version": "1.5.0",
44
"description": "A chrome extension that presents your tabs vertically.",
55
"license": "MIT",
66
"repository": {
@@ -31,6 +31,7 @@
3131
"react-icons": "^3.8.0",
3232
"react-lines-ellipsis": "^0.14.1",
3333
"react-loader-spinner": "^3.1.5",
34+
"react-media": "^1.10.0",
3435
"react-tiny-popover": "^4.0.0",
3536
"styled-components": "^4.4.1"
3637
},

preview/repo/dark-mode.png

94.7 KB
Loading

src/pages/Background/index.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,25 @@ const persistdisplayTabInFullStatus = (status) => {
9292
});
9393
};
9494

95+
/**
96+
* Dark Mode
97+
*/
98+
let darkMode = 'auto';
99+
100+
chrome.storage.sync.get(['darkMode'], (result) => {
101+
if (result.darkMode !== undefined) {
102+
darkMode = result.darkMode;
103+
} else {
104+
persistDarkMode('auto'); // default to auto
105+
}
106+
});
107+
108+
const persistDarkMode = (status) => {
109+
chrome.storage.sync.set({
110+
darkMode: status,
111+
});
112+
};
113+
95114
const toggleSidebar = (toStatus = null) => {
96115
if (toStatus === null || toStatus === undefined) {
97116
sidebarOpen = !sidebarOpen;
@@ -203,6 +222,23 @@ const updateDisplayTabInFullStatus = (toStatus) => {
203222
);
204223
};
205224

225+
const updateDarkModeStatus = (toStatus) => {
226+
chrome.tabs.query(
227+
{
228+
currentWindow: true,
229+
},
230+
function(tabs) {
231+
tabs.forEach((tab) => {
232+
chrome.tabs.sendMessage(tab.id, {
233+
from: 'background',
234+
msg: 'UPDATE_DARK_MODE_STATUS',
235+
toStatus,
236+
});
237+
});
238+
}
239+
);
240+
};
241+
206242
// chrome.browserAction.setPopup({
207243
// popup: chrome.extension.getURL('sidebar.html'),
208244
// });
@@ -281,5 +317,13 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
281317
displayTabInFull = toStatus;
282318
persistdisplayTabInFullStatus(displayTabInFull);
283319
updateDisplayTabInFullStatus(displayTabInFull);
320+
} else if (
321+
request.from === 'settings' &&
322+
request.msg === 'USER_CHANGE_DARK_MODE'
323+
) {
324+
const { toStatus } = request;
325+
darkMode = toStatus;
326+
persistDarkMode(darkMode);
327+
updateDarkModeStatus(darkMode);
284328
}
285329
});

src/pages/Content/modules/frame/frame.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ export class Frame extends Component {
7070
isMinimized: true, // default is minimized,
7171

7272
isDragging: false,
73-
width: 280,
73+
width: 320,
7474
height: '100%',
7575
};
7676

src/pages/Sidebar/Sidebar.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
.SidebarContainer {
22
background-color: rgb(222, 225, 230);
33
}
4+
5+
.SidebarContainer.Dark {
6+
color: rgb(167, 167, 167);
7+
background-color: rgb(36, 36, 36);
8+
}

src/pages/Sidebar/Sidebar.jsx

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import React, { Component } from 'react';
22
import update from 'immutability-helper';
3+
import DarkModeContext from './context/dark-mode-context';
34
import { sortBy } from 'lodash';
45

56
import Title from './containers/Title/Title';
67
import TabsList from './containers/TabsList/TabsList';
7-
import Tab from './containers//TabsList/Tab/Tab';
88

99
import { getFavicon } from '../../shared/utils';
1010

@@ -255,17 +255,28 @@ class Sidebar extends Component {
255255
const { tabOrders, activeTab, tabsDict, displayTabInFull } = this.state;
256256

257257
return (
258-
<div className="SidebarContainer">
259-
<Title setDisplayTabInFull={this.setDisplayTabInFull} />
260-
<TabsList
261-
displayTabInFull={displayTabInFull}
262-
tabOrders={tabOrders}
263-
activeTab={activeTab}
264-
tabsDict={tabsDict}
265-
moveTab={this.moveTab}
266-
setTabAsLoading={this.setTabAsLoading}
267-
/>
268-
</div>
258+
<DarkModeContext.Consumer>
259+
{(darkModeContext) => {
260+
return (
261+
<div
262+
className={[
263+
'SidebarContainer',
264+
darkModeContext.isDark ? 'Dark' : null,
265+
].join(' ')}
266+
>
267+
<Title setDisplayTabInFull={this.setDisplayTabInFull} />
268+
<TabsList
269+
displayTabInFull={displayTabInFull}
270+
tabOrders={tabOrders}
271+
activeTab={activeTab}
272+
tabsDict={tabsDict}
273+
moveTab={this.moveTab}
274+
setTabAsLoading={this.setTabAsLoading}
275+
/>
276+
</div>
277+
);
278+
}}
279+
</DarkModeContext.Consumer>
269280
);
270281
}
271282
}

src/pages/Sidebar/containers/TabsList/SearchBar/SearchBar.css

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@ input[type='search']::-webkit-search-cancel-button {
3333
line-height: 1.3;
3434

3535
position: relative;
36+
37+
transition: 0.1s all ease-in;
38+
}
39+
40+
.SearchBarInput.Dark {
41+
background-color: rgb(51, 51, 51);
42+
color: rgb(190, 193, 198);
43+
border-color: rgb(32, 33, 36);
3644
}
3745

3846
.SearchBarInput:focus {
@@ -43,6 +51,11 @@ input[type='search']::-webkit-search-cancel-button {
4351
background-color: rgb(252, 252, 252);
4452
}
4553

54+
.SearchBarInput.Dark:hover,
55+
.SearchBarInput.Dark:hover {
56+
background-color: rgb(41, 41, 41);
57+
}
58+
4659
.SearchResultsCountContainer {
4760
flex-shrink: 0;
4861
margin-right: 6px;
@@ -59,7 +72,7 @@ input[type='search']::-webkit-search-cancel-button {
5972
height: 25px;
6073
font-size: 0.8rem;
6174

62-
background-color: #f5f5f5;
75+
background-color: #d5d5d5;
6376
color: #363636;
6477
border-radius: 50%;
6578

0 commit comments

Comments
 (0)