diff --git a/public/hyperlane-banner.png b/public/hyperlane-banner.png deleted file mode 100644 index e2b64cc..0000000 Binary files a/public/hyperlane-banner.png and /dev/null differ diff --git a/public/images/lines-bg-mid.svg b/public/images/lines-bg-mid.svg new file mode 100644 index 0000000..8b57ce7 --- /dev/null +++ b/public/images/lines-bg-mid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/lines-bg-top.svg b/public/images/lines-bg-top.svg new file mode 100644 index 0000000..a2faec3 --- /dev/null +++ b/public/images/lines-bg-top.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/logo-blue.png b/public/images/logo-blue.png similarity index 100% rename from public/logo-blue.png rename to public/images/logo-blue.png diff --git a/public/logo-with-text.png b/public/images/logo-with-text.png similarity index 100% rename from public/logo-with-text.png rename to public/images/logo-with-text.png diff --git a/public/logo.png b/public/images/logo.png similarity index 100% rename from public/logo.png rename to public/images/logo.png diff --git a/public/logo.svg b/public/images/logo.svg similarity index 100% rename from public/logo.svg rename to public/images/logo.svg diff --git a/src/components/buttons/SolidButton.tsx b/src/components/buttons/SolidButton.tsx index 9e3cf10..3626a65 100644 --- a/src/components/buttons/SolidButton.tsx +++ b/src/components/buttons/SolidButton.tsx @@ -1,7 +1,7 @@ import { PropsWithChildren, ReactElement } from 'react'; interface ButtonProps { - color?: 'white' | 'blue' | 'green' | 'red'; // defaults to blue + color?: 'white' | 'blue' | 'green' | 'red' | 'pink'; // defaults to blue type?: 'submit' | 'reset' | 'button'; onClick?: () => void; classes?: string; @@ -18,7 +18,7 @@ export function SolidButton(props: PropsWithChildren) { onClick, color: _color, classes, - bold, + bold = true, icon, disabled, title, @@ -26,12 +26,16 @@ export function SolidButton(props: PropsWithChildren) { } = props; const color = _color ?? 'blue'; - const base = 'flex items-center justify-center rounded transition-all duration-500'; + const base = 'flex items-center justify-center rounded-full transition-all duration-500'; let baseColors, onHover, onActive; if (color === 'blue') { baseColors = 'bg-blue-500 text-white'; onHover = 'hover:bg-blue-600'; onActive = 'active:bg-blue-700'; + } else if (color === 'pink') { + baseColors = 'bg-pink-500 text-white'; + onHover = 'hover:bg-pink-600'; + onActive = 'active:bg-pink-700'; } else if (color === 'green') { baseColors = 'bg-green-500 text-white'; onHover = 'hover:bg-green-600'; diff --git a/src/components/icons/Chevron.tsx b/src/components/icons/Chevron.tsx index 2d41322..b34fdf6 100644 --- a/src/components/icons/Chevron.tsx +++ b/src/components/icons/Chevron.tsx @@ -40,7 +40,7 @@ function _ChevronIcon({ width, height, direction, color, classes }: Props) { ); @@ -124,7 +124,7 @@ function _HyperlaneWideChevron({ width, height, direction, color, classes }: Pro width={width} height={height} className={`${directionClass} ${classes}`} - fill={color || Color.primaryBlue} + fill={color || Color.Blue} > diff --git a/src/components/icons/HyperlaneLogo.tsx b/src/components/icons/HyperlaneLogo.tsx new file mode 100644 index 0000000..5281046 --- /dev/null +++ b/src/components/icons/HyperlaneLogo.tsx @@ -0,0 +1,38 @@ +import { memo } from 'react'; + +function _HyperlaneLogo({ + width, + height, + fill, + className = '', +}: { + width?: number | string; + height?: number | string; + fill?: string; + className?: string; +}) { + return ( + + + + + + ); +} + +export const HyperlaneLogo = memo(_HyperlaneLogo); diff --git a/src/components/input/Checkbox.module.css b/src/components/input/Checkbox.module.css index 03f12a0..9fc5dd1 100644 --- a/src/components/input/Checkbox.module.css +++ b/src/components/input/Checkbox.module.css @@ -20,7 +20,7 @@ border-radius: 0.2rem; transform: scale(0); transition: 200ms all ease-in-out; - background-color: #2362c1; + background-color: #2362C0; } .checkbox:checked::before { diff --git a/src/components/input/SelectField.tsx b/src/components/input/SelectField.tsx index a551092..95cb983 100644 --- a/src/components/input/SelectField.tsx +++ b/src/components/input/SelectField.tsx @@ -19,7 +19,7 @@ export function SelectField(props: Props) { return (
{isFetching && } diff --git a/src/components/search/SearchFilterBar.tsx b/src/components/search/SearchFilterBar.tsx index 3965ad2..c6915f2 100644 --- a/src/components/search/SearchFilterBar.tsx +++ b/src/components/search/SearchFilterBar.tsx @@ -7,8 +7,9 @@ import { ChainMetadata, mainnetChainsMetadata, testnetChainsMetadata } from '@hy import { getChainDisplayName } from '../../features/chains/utils'; import { useMultiProvider } from '../../features/providers/multiProvider'; import GearIcon from '../../images/icons/gear.svg'; +import { Color } from '../../styles/Color'; import { arrayToObject } from '../../utils/objects'; -import { BorderedButton } from '../buttons/BorderedButton'; +import { SolidButton } from '../buttons/SolidButton'; import { TextButton } from '../buttons/TextButton'; import { ChainLogo } from '../icons/ChainLogo'; import { ChevronIcon } from '../icons/Chevron'; @@ -61,15 +62,10 @@ export function SearchFilterBar({ endValue={endTimestamp} onChangeEndValue={onChangeEndTimestamp} /> -
- +
+ Settings +
); @@ -151,23 +147,26 @@ function ChainMultiSelector({ - {text} - + {text} + } - buttonClasses="text-sm sm:min-w-[5.8rem] px-1 sm:px-2.5 py-0.5 flex items-center justify-center rounded border border-gray-500 hover:opacity-70 active:opacity-60 transition-all" + buttonClasses="text-sm sm:min-w-[5.8rem] px-1 sm:px-2.5 py-0.5 flex items-center justify-center rounded-full bg-pink-500 hover:opacity-80 active:opacity-70 transition-all" modalContent={(closeDropdown) => (
-

{header}

+

{header}

- + All - + None
@@ -180,7 +179,7 @@ function ChainMultiSelector({ onToggle={onToggleSection(mainnetChainsMetadata)} name="mainnet-chains" > -

Mainnet Chains

+

Mainnet Chains

{mainnetChainsMetadata.map((c) => ( @@ -191,7 +190,7 @@ function ChainMultiSelector({ name={c.name} >
- + {getChainDisplayName(multiProvider, c.chainId, true)} @@ -207,7 +206,7 @@ function ChainMultiSelector({ onToggle={onToggleSection(testnetChainsMetadata)} name="testnet-chains" > -

Testnet Chains

+

Testnet Chains

{testnetChainsMetadata.map((c) => ( @@ -218,7 +217,7 @@ function ChainMultiSelector({ name={c.name} >
- + {getChainDisplayName(multiProvider, c.chainId, true)} @@ -227,12 +226,12 @@ function ChainMultiSelector({ ))}
- onClickApply(closeDropdown)} > Apply - + )} modalClasses={`w-88 ${position || 'right-0'}`} @@ -270,33 +269,39 @@ function DatetimeSelector({ - Time - + Time + } - buttonClasses="text-sm px-1 sm:px-2.5 py-0.5 flex items-center justify-center rounded border border-gray-500 hover:opacity-70 active:opacity-60 transition-all" + buttonClasses="text-sm px-1 sm:px-2.5 py-0.5 flex items-center justify-center rounded-full bg-pink-500 hover:opacity-80 active:opacity-70 transition-all" modalContent={(closeDropdown) => (
-

Time Range

+

Time Range

- + Clear
-

Start Time

+

Start Time

-

End Time

+

End Time

- onClickApply(closeDropdown)} > Apply - +
)} modalClasses="w-60 -right-8" diff --git a/src/components/search/SearchStates.tsx b/src/components/search/SearchStates.tsx index da22827..4fbf135 100644 --- a/src/components/search/SearchStates.tsx +++ b/src/components/search/SearchStates.tsx @@ -17,7 +17,7 @@ export function SearchFetching({ show, isPiFetching }: { show: boolean; isPiFetc
-
+
{isPiFetching ? 'Searching custom chains for messages' : 'Searching for messages'}
@@ -45,7 +45,7 @@ export function SearchError({
-
{text}
+
{text}
diff --git a/src/features/chains/ConfigureChains.tsx b/src/features/chains/ConfigureChains.tsx index b84762d..cb2e067 100644 --- a/src/features/chains/ConfigureChains.tsx +++ b/src/features/chains/ConfigureChains.tsx @@ -57,8 +57,8 @@ export function ConfigureChains() { return ( -

Chain Settings

-

+

Chain Settings

+

Hyperlane can be deployed to any chain using{' '} . This explorer can be configured to search for messages on any PI chain.

-

Default Chains

+

Default Chains

-

Mainnets:

+

Mainnets:

{mainnetChainsMetadata.map((c) => (
- {getChainDisplayName(multiProvider, c.chainId, true)} + + {getChainDisplayName(multiProvider, c.chainId, true)} +
))}
-
-

Testnets:

+
+

Testnets:

{testnetChainsMetadata.map((c) => (
-
{getChainDisplayName(multiProvider, c.chainId, true)}
+
+ {getChainDisplayName(multiProvider, c.chainId, true)} +
))}
-

Custom Chains

- +

Custom Chains

+
@@ -141,7 +145,7 @@ export function ConfigureChains() { title="Add Custom Chain" maxWidth="max-w-xl" > -

+

Input a chain metadata config including core contract addresses to enable exploration of that chain. See{' '}

Chain