├── background.js ├── images ├── picker_16.png ├── picker_32.png └── picker_48.png ├── manifest.json ├── options.html ├── popup.css ├── popup.html └── popup.js /background.js: -------------------------------------------------------------------------------- 1 | let color = 'red'; 2 | 3 | chrome.runtime.onInstalled.addListener(() => { 4 | chrome.storage.sync.set({ color }); 5 | }); 6 | -------------------------------------------------------------------------------- /images/picker_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codersgyan/color-picker-chrome-extension/3311c7edc2986248fca3319153c94e92f9d85fa0/images/picker_16.png -------------------------------------------------------------------------------- /images/picker_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codersgyan/color-picker-chrome-extension/3311c7edc2986248fca3319153c94e92f9d85fa0/images/picker_32.png -------------------------------------------------------------------------------- /images/picker_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codersgyan/color-picker-chrome-extension/3311c7edc2986248fca3319153c94e92f9d85fa0/images/picker_48.png -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Color picker", 3 | "description": "A color picker extension", 4 | "version": "1.0", 5 | "manifest_version": 3, 6 | "background": { 7 | "service_worker": "background.js" 8 | }, 9 | "permissions": [ 10 | "storage", 11 | "activeTab", 12 | "scripting" 13 | ], 14 | "options_page": "options.html", 15 | "action": { 16 | "default_popup": "popup.html" 17 | }, 18 | "icons": { 19 | "16": "/images/picker_16.png", 20 | "32": "/images/picker_32.png", 21 | "48": "/images/picker_48.png" 22 | } 23 | } -------------------------------------------------------------------------------- /options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |

Here you can have your detailed UI

7 | 8 | -------------------------------------------------------------------------------- /popup.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: #f1f5f9; 3 | } 4 | .wrapper { 5 | width: 300px; 6 | text-align: center; 7 | } 8 | .changeColorBtn { 9 | width: 200px; 10 | outline: none; 11 | border: none; 12 | border-radius: 2px; 13 | padding: 5px; 14 | background: #facc15; 15 | cursor: pointer; 16 | } 17 | .colorGrid { 18 | display: inline-block; 19 | width: 20px; 20 | height: 20px; 21 | border-radius: 2px; 22 | } 23 | .selectedColor { 24 | display: flex; 25 | align-items: center; 26 | margin-top: 20px; 27 | } 28 | 29 | .colorValue { 30 | margin-left: 5px; 31 | font-weight: bold; 32 | } 33 | -------------------------------------------------------------------------------- /popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 |

Welcome to my color picker

9 | 10 |
11 | 12 | 13 |
14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /popup.js: -------------------------------------------------------------------------------- 1 | const btn = document.querySelector('.changeColorBtn'); 2 | const colorGrid = document.querySelector('.colorGrid'); 3 | const colorValue = document.querySelector('.colorValue'); 4 | 5 | btn.addEventListener('click', async () => { 6 | chrome.storage.sync.get('color', ({ color }) => { 7 | console.log('color: ', color); 8 | }); 9 | let [tab] = await chrome.tabs.query({ active: true, currentWindow: true }); 10 | 11 | chrome.scripting.executeScript( 12 | { 13 | target: { tabId: tab.id }, 14 | function: pickColor, 15 | }, 16 | async (injectionResults) => { 17 | const [data] = injectionResults; 18 | if (data.result) { 19 | const color = data.result.sRGBHex; 20 | colorGrid.style.backgroundColor = color; 21 | colorValue.innerText = color; 22 | try { 23 | await navigator.clipboard.writeText(color); 24 | } catch (err) { 25 | console.error(err); 26 | } 27 | } 28 | } 29 | ); 30 | }); 31 | 32 | async function pickColor() { 33 | try { 34 | // Picker 35 | const eyeDropper = new EyeDropper(); 36 | return await eyeDropper.open(); 37 | } catch (err) { 38 | console.error(err); 39 | } 40 | } 41 | --------------------------------------------------------------------------------