Skip to content

Commit 5fedc0a

Browse files
Merge branch 'main' into feature/add-task-tab-to-see-raw-data
2 parents 22cd197 + fce50a1 commit 5fedc0a

File tree

21 files changed

+106
-116
lines changed

21 files changed

+106
-116
lines changed

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{".":"1.22.1"}
1+
{".":"1.23.0"}

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Changelog
22

3+
## [1.23.0](https://github.com/iExecBlockchainComputing/explorer-v2/compare/iexec-explorer-v1.22.1...iexec-explorer-v1.23.0) (2025-10-06)
4+
5+
6+
### 🚀 Features
7+
8+
* implement light mode and light/dark/system mode switch ([#69](https://github.com/iExecBlockchainComputing/explorer-v2/issues/69)) ([669cedc](https://github.com/iExecBlockchainComputing/explorer-v2/commit/669cedcb0bc04b49f4adbbec035cc933a3646ded))
9+
310
## [1.22.1](https://github.com/iExecBlockchainComputing/explorer-v2/compare/iexec-explorer-v1.22.0...iexec-explorer-v1.22.1) (2025-09-26)
411

512

package-lock.json

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

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "iexec-explorer",
33
"private": true,
4-
"version": "1.22.1",
4+
"version": "1.23.0",
55
"type": "module",
66
"scripts": {
77
"dev": "vite",

src/components/CopyButton.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ const CopyButton = ({
6262
}}
6363
onMouseEnter={handleMouseEnter}
6464
onMouseLeave={handleMouseLeave}
65-
className="hover:before:bg-muted active:before:bg-secondary relative z-0 -mx-1 -my-1 flex items-center gap-1 px-1 py-1 transition-colors before:absolute before:inset-0 before:-z-10 before:rounded-lg before:duration-200 active:before:scale-x-[0.98] active:before:scale-y-[0.94]"
65+
className="hover:before:bg-muted active:before:bg-secondary relative z-0 -mx-1 -my-1 items-center gap-1 px-1 py-1 transition-colors before:absolute before:inset-0 before:-z-10 before:rounded-lg before:duration-200 active:before:scale-x-[0.98] active:before:scale-y-[0.94]"
6666
>
6767
{buttonText && <span className="mr-1 text-sm">{buttonText}</span>}
6868
<Copy className="size-4 flex-none" />

src/components/Footer.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ export function Footer({ className }: { className?: string }) {
7373
return (
7474
<footer
7575
className={cn(
76-
'bg-popover border-muted text-intermediate-foreground flex flex-col gap-6 rounded-3xl border px-6 py-10 sm:px-10 lg:px-20',
76+
'text-intermediate-foreground flex flex-col gap-6 py-10',
7777
className
7878
)}
7979
>

src/components/ModeToggle.tsx

Lines changed: 41 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,53 @@
11
import { cn } from '@/lib/utils';
22
import { Monitor, Moon, Sun } from 'lucide-react';
3+
import { useMemo } from 'react';
34
import { useTheme } from '@/components/themeProvider';
45
import { Button } from '@/components/ui/button';
56

7+
type Theme = 'dark' | 'light' | 'system';
8+
69
export function ModeToggle() {
710
const { theme, setTheme } = useTheme();
811

12+
const options: Array<{
13+
value: Theme;
14+
label: string;
15+
Icon: React.ComponentType;
16+
}> = useMemo(
17+
() => [
18+
{ value: 'system', label: 'System', Icon: Monitor },
19+
{ value: 'light', label: 'Light', Icon: Sun },
20+
{ value: 'dark', label: 'Dark', Icon: Moon },
21+
],
22+
[]
23+
);
24+
925
return (
10-
<div className="rounded-full border p-1">
11-
<Button
12-
variant={'link'}
13-
size={'none'}
14-
className={cn(
15-
'text-foreground hover:bg-muted border p-1',
16-
theme === 'dark' ? 'border' : 'border-transparent'
17-
)}
18-
onClick={() => setTheme('dark')}
19-
>
20-
<Moon />
21-
</Button>
22-
<Button
23-
variant={'link'}
24-
size={'none'}
25-
className={cn(
26-
'text-foreground hover:bg-muted border p-1',
27-
theme === 'light' ? 'border' : 'border-transparent'
28-
)}
29-
onClick={() => setTheme('light')}
30-
>
31-
<Sun />
32-
</Button>
33-
<Button
34-
variant={'link'}
35-
size={'none'}
36-
className={cn(
37-
'text-foreground hover:bg-muted border p-1',
38-
theme === 'system' ? 'border' : 'border-transparent'
39-
)}
40-
onClick={() => setTheme('system')}
41-
>
42-
<Monitor />
43-
</Button>
26+
<div className="flex items-center rounded-full border p-1">
27+
{options.map(({ value, label, Icon }) => {
28+
const selected = theme === value;
29+
return (
30+
<Button
31+
key={value}
32+
type="button"
33+
variant="link"
34+
size="none"
35+
role="radio"
36+
aria-checked={selected}
37+
aria-label={label}
38+
title={label}
39+
className={cn(
40+
'text-foreground hover:bg-muted p-1',
41+
selected && 'bg-transparent'
42+
)}
43+
onClick={() => {
44+
if (theme !== value) setTheme(value as Theme);
45+
}}
46+
>
47+
<Icon />
48+
</Button>
49+
);
50+
})}
4451
</div>
4552
);
4653
}

src/components/SmartLinkGroup.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,7 @@ export default function SmartLinkGroup({
102102
<TooltipProvider delayDuration={0}>
103103
<Tooltip>
104104
<TooltipTrigger asChild>
105-
<Button
106-
variant="link"
107-
className="h-auto p-0! text-sm text-white"
108-
asChild
109-
>
105+
<Button variant="link" className="h-auto p-0! text-sm" asChild>
110106
<a
111107
href={`${getBlockExplorerUrl(chainId)}/${blockExplorerPath[type]}`}
112108
target="_blank"

src/components/navbar/NavBar.tsx

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { AddressChip } from './AddressChip.tsx';
1010
import { ChainSelector } from './ChainSelector.tsx';
1111

1212
export function Navbar() {
13-
const { isConnected, address } = useUserStore();
13+
const { isConnected, address: userAddress } = useUserStore();
1414
const { logout, login } = useLoginLogout();
1515
const [isMenuOpen, setMenuOpen] = useState(false);
1616
const handleMenuToggle = () => {
@@ -21,11 +21,16 @@ export function Navbar() {
2121
<nav className="flex items-center justify-between py-6">
2222
<ChainLink to="/" className="-m-2 flex items-center gap-2 p-2 font-mono">
2323
<img src={iExecLogo} width="25" height="25" alt="iExec logo" />
24-
<span className="hidden sm:block">iExec Explorer</span>
24+
<span className="hidden lg:block">iExec Explorer</span>
2525
</ChainLink>
2626
<div className="mr-8 flex items-center gap-4 md:mr-0">
2727
{isConnected && (
2828
<div className="hidden md:flex">
29+
<Button variant="link" asChild className="text-foreground">
30+
<ChainLink to={`/address/${userAddress}?from=my_activity`}>
31+
My activity
32+
</ChainLink>
33+
</Button>
2934
<Button variant="link" asChild className="text-foreground">
3035
<ChainLink to="/account">iExec Account</ChainLink>
3136
</Button>
@@ -38,7 +43,7 @@ export function Navbar() {
3843
</div>
3944
{isConnected ? (
4045
<div className="flex max-w-[1260px] items-center gap-2">
41-
<AddressChip address={address!} />
46+
<AddressChip address={userAddress!} />
4247

4348
<button
4449
type="button"
@@ -69,19 +74,19 @@ export function Navbar() {
6974
checked={isMenuOpen}
7075
readOnly
7176
/>
72-
<span className="pointer-events-none block h-0.5 w-4.5 origin-right transform rounded-full bg-white duration-200 group-has-[:checked]/checkbox:mt-[0.5px] group-has-[:checked]/checkbox:-rotate-45"></span>
73-
<span className="pointer-events-none block h-0.5 w-4.5 origin-top-right transform rounded-full bg-white duration-200 group-has-[:checked]/checkbox:scale-x-0"></span>
74-
<span className="pointer-events-none block h-0.5 w-4.5 origin-right transform rounded-full bg-white duration-200 group-has-[:checked]/checkbox:mb-[0.5px] group-has-[:checked]/checkbox:rotate-45"></span>
77+
<span className="bg-foreground pointer-events-none block h-0.5 w-4.5 origin-right transform rounded-full duration-200 group-has-[:checked]/checkbox:mt-[0.5px] group-has-[:checked]/checkbox:-rotate-45"></span>
78+
<span className="bg-foreground pointer-events-none block h-0.5 w-4.5 origin-top-right transform rounded-full duration-200 group-has-[:checked]/checkbox:scale-x-0"></span>
79+
<span className="bg-foreground pointer-events-none block h-0.5 w-4.5 origin-right transform rounded-full duration-200 group-has-[:checked]/checkbox:mb-[0.5px] group-has-[:checked]/checkbox:rotate-45"></span>
7580
</label>
7681

77-
<div className="border-secondary bg-primary-foreground pointer-events-auto fixed inset-y-0 left-0 z-10 flex w-full -translate-x-full flex-col overflow-auto rounded-r-3xl border-r px-6 pt-6 duration-200 group-has-[:checked]:translate-x-0 lg:w-[255px] lg:translate-x-0">
82+
<div className="border-secondary bg-background pointer-events-auto fixed inset-y-0 left-0 z-10 flex w-full -translate-x-full flex-col overflow-auto rounded-r-3xl border-r px-6 pt-6 duration-200 group-has-[:checked]:translate-x-0 lg:w-[255px] lg:translate-x-0">
7883
<div className="-m-2 mr-6 flex items-center justify-between gap-2 py-2 pl-2">
7984
<ChainLink to="/" className="font-mono" onClick={handleMenuToggle}>
8085
<img src={iExecLogo} width="25" height="25" alt="iExec logo" />
8186
</ChainLink>
8287
{isConnected ? (
8388
<div className="flex max-w-[1260px] items-center gap-2">
84-
<AddressChip address={address!} />
89+
<AddressChip address={userAddress!} />
8590

8691
<button
8792
type="button"

src/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export const SUPPORTED_CHAINS = [
1818
id: 134,
1919
name: 'Bellecour',
2020
slug: 'bellecour',
21-
color: '#F4942566',
21+
color: '#95A4FC',
2222
icon: iexecLogo,
2323
blockExplorerUrl: 'https://blockscout-bellecour.iex.ec',
2424
subgraphUrl: {

0 commit comments

Comments
 (0)