From b490d915728f1091ce7f0b5a8e227f3cfa8019b4 Mon Sep 17 00:00:00 2001 From: rooki Date: Thu, 24 Apr 2025 14:27:21 +0200 Subject: [PATCH] style: Add homepage button to theme marketplace with click functionality --- .../components/preferences/zen-settings.js | 12 +++++++++- .../shared/preferences/zen-preferences.css | 22 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/browser/components/preferences/zen-settings.js b/src/browser/components/preferences/zen-settings.js index 9182b5b43..503adb97c 100644 --- a/src/browser/components/preferences/zen-settings.js +++ b/src/browser/components/preferences/zen-settings.js @@ -170,7 +170,6 @@ var gZenMarketplaceManager = { for (const theme of Object.values(themes).sort((a, b) => a.name.localeCompare(b.name))) { const sanitizedName = `theme-${theme.name?.replaceAll(/\s/g, '-')?.replaceAll(/[^A-z_-]+/g, '')}`; const isThemeEnabled = theme.enabled === undefined || theme.enabled; - const fragment = window.MozXULElement.parseXULToFragment(` @@ -181,6 +180,7 @@ var gZenMarketplaceManager = { ${theme.preferences ? `` : ''} + ${theme.homepage ? `` : ''} @@ -274,6 +274,16 @@ var gZenMarketplaceManager = { await this.removeTheme(event.target.getAttribute('zen-theme-id')); }); + if (theme.homepage) { + const homepageButton = fragment.querySelector('.zenThemeMarketplaceItemHomepageButton'); + homepageButton.addEventListener('click', () => { + // open the homepage url in a new tab + const url = theme.homepage; + + window.open(url, '_blank'); + }); + } + if (theme.preferences) { fragment.querySelector('.zenThemeMarketplaceItemConfigureButton').addEventListener('click', () => { dialog.showModal(); diff --git a/src/browser/themes/shared/preferences/zen-preferences.css b/src/browser/themes/shared/preferences/zen-preferences.css index c3980e4fb..811992b61 100644 --- a/src/browser/themes/shared/preferences/zen-preferences.css +++ b/src/browser/themes/shared/preferences/zen-preferences.css @@ -470,6 +470,28 @@ groupbox h2 { align-items: center; } +.zenThemeMarketplaceItemHomepageButton { + width: 30px; + min-width: 0; + position: relative; + cursor: pointer; + + &::before { + content: ''; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 18px; + height: 18px; + background-image: url('chrome://browser/skin/home.svg'); + background-repeat: no-repeat; + background-size: cover; + fill: currentColor; + -moz-context-properties: fill, fill-opacity; + } +} + .zenThemeMarketplaceItemConfigureButton { width: 30px; min-width: 0;