Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
# Firm Finance

## Overview & updates
- ETH aligned with new LST collaterals
- Support for Status gas-less L2
- Revamped reward system that benefits real users
- Direction of a customizable portion of protocol revenues to Status community treasury
- Gas comp points for protocol users

<img width="830" alt="Liquity V2" src="https://github.com/user-attachments/assets/d9eb5b2a-d437-4472-94d6-07fa537e689a" />

[![Coverage Status](https://coveralls.io/repos/github/liquity/bold/badge.svg?branch=main&t=yZSfc8)](https://coveralls.io/github/liquity/bold?branch=main)
Expand Down
26 changes: 13 additions & 13 deletions frontend/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@
"dnum": "^2.15.0",
"focus-trap-react": "^11.0.4",
"geist": "^1.4.2",
"next": "15.3.6",
"react": "19.1.0",
"react-dom": "19.1.0",
"next": "15.2.8",
"react": "19.2.3",
"react-dom": "19.2.3",
"sharp": "^0.34.2",
"ts-pattern": "^5.7.1",
"valibot": "^1.1.0",
Expand All @@ -47,28 +47,28 @@
},
"devDependencies": {
"@babel/plugin-transform-private-methods": "^7.27.1",
"@graphql-codegen/cli": "^5.0.7",
"@graphql-codegen/schema-ast": "^4.1.0",
"@graphql-codegen/cli": "^6.1.0",
"@graphql-codegen/schema-ast": "^5.0.0",
"@next/env": "^15.5.2",
"@pandacss/dev": "^0.54.0",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.3.0",
"@testing-library/user-event": "^14.6.1",
"@types/node": "^24.0.4",
"@types/react": "19.1.8",
"@types/react-dom": "19.1.6",
"@types/node": "^25.0.1",
"@types/react": "19.2.7",
"@types/react-dom": "19.2.3",
"@typescript-eslint/parser": "^8.41.0",
"@vitejs/plugin-react": "^4.6.0",
"@vitest/coverage-v8": "^3.2.4",
"@vitejs/plugin-react": "^5.1.2",
"@vitest/coverage-v8": "^4.0.15",
"eslint": "^9.29.0",
"eslint-plugin-react-hooks": "^5.2.0",
"jsdom": "^26.1.0",
"eslint-plugin-react-hooks": "^7.0.1",
"jsdom": "^27.3.0",
"oxlint": "^1.3.0",
"pino-pretty": "^13.0.0",
"tsx": "^4.20.3",
"typescript": "^5.8.3",
"vite-tsconfig-paths": "^5.1.4",
"vitest": "^3.2.4",
"vitest": "^4.0.15",
"zx": "^8.6.0"
}
}
7 changes: 7 additions & 0 deletions frontend/app/panda.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ export default defineConfig({
body: {
value: WHITE_LABEL_CONFIG.typography.fontFamily,
},
heading: {
value: WHITE_LABEL_CONFIG.typography.headingFontFamily,
},
},
},
},
Expand All @@ -46,10 +49,14 @@ export default defineConfig({
fontWeight: 500,
color: "content",
background: "background",
fontFamily: "var(--font-work-sans), sans-serif",
},
html: {
overflowX: "auto",
overflowY: "scroll",
},
"h1, h2, h3, h4, h5, h6": {
fontFamily: "var(--font-nunito), sans-serif",
},
}),
});
14 changes: 12 additions & 2 deletions frontend/app/src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,17 @@ import { TransactionFlow } from "@/src/services/TransactionFlow";
import { SubgraphStatus } from "@/src/services/SubgraphStatus";
import { UiKit } from "@liquity2/uikit";
import { Analytics } from "@vercel/analytics/react";
import { GeistSans } from "geist/font/sans";
import { Work_Sans, Nunito } from "next/font/google";

const workSans = Work_Sans({
subsets: ["latin"],
variable: "--font-work-sans",
});

const nunito = Nunito({
subsets: ["latin"],
variable: "--font-nunito",
});

export const metadata: Metadata = {
title: content.appName,
Expand All @@ -39,7 +49,7 @@ export default function Layout({
}) {
return (
<html lang="en">
<body className={GeistSans.className}>
<body className={`${workSans.variable} ${nunito.variable}`} style={{ fontFamily: "var(--font-work-sans)" }}>
<ReactQuery>
<UiKit>
<StoredState>
Expand Down
5 changes: 5 additions & 0 deletions frontend/app/src/assets/logo-name.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 4 additions & 18 deletions frontend/app/src/assets/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 3 additions & 4 deletions frontend/app/src/colors.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
export const palette = {
sky: "#405AE5",
blue: "#121B44",
green: "#405AE5",
gold: "#F2B341",
beige: "#EDDBC5",
burgundy: "#7F0A07",
white: "#FFFFFF",
rain: "#9EA2B8",
};
14 changes: 11 additions & 3 deletions frontend/app/src/comps/AppLayout/TopBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@

import type { MenuItem } from "./Menu";

import { Logo } from "@/src/comps/Logo/Logo";
import logoName from "@/src/assets/logo-name.svg";
import { Tag } from "@/src/comps/Tag/Tag";
import { DEPLOYMENT_FLAVOR } from "@/src/env";
import { useWhiteLabelHeader } from "@/src/hooks/useWhiteLabel";
import { css } from "@/styled-system/css";
import { IconBorrow, IconDashboard, IconEarn, IconLeverage, IconStake } from "@liquity2/uikit";
import Image from "next/image";
import Link from "next/link";
import { AccountButton } from "./AccountButton";
import { Menu } from "./Menu";
Expand Down Expand Up @@ -83,9 +84,17 @@ export function TopBar() {
<div
className={css({
flexShrink: 0,
display: "flex",
alignItems: "center",
height: "100%",
})}
>
<Logo size={32} />
<Image
src={logoName}
alt={headerConfig.appName}
height={32}
style={{ height: "32px", width: "auto" }}
/>
</div>
<div
className={css({
Expand All @@ -102,7 +111,6 @@ export function TopBar() {
whiteSpace: "nowrap",
})}
>
<div>{headerConfig.appName}</div>
{DEPLOYMENT_FLAVOR && (
<div
className={css({
Expand Down
2 changes: 1 addition & 1 deletion frontend/app/src/comps/PercentageBars/PercentageBars.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ export function PercentageBars({
fill={`url(#${gradientId})`}
/>
<rect
fill={palette.blue}
fill={palette.burgundy}
height={height}
width={barWidth}
x={activeIndex * barWidth + activeIndex * gapWidth}
Expand Down
31 changes: 6 additions & 25 deletions frontend/app/src/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,17 +106,10 @@ export const DEFAULT_LEGACY_CHECKS = new Map<
ChainId,
Exclude<v.InferOutput<ReturnType<typeof vEnvLegacyCheck>>, boolean>
>([
// mainnet
[1, {
...getDeploymentInfo(1),
INITIATIVES_SNAPSHOT_URL: "/initiatives-snapshot-1.json",
TROVES_SNAPSHOT_URL: "/troves-snapshot-1.json",
}],
// sepolia
[11155111, {
...getDeploymentInfo(11155111),
INITIATIVES_SNAPSHOT_URL: "/initiatives-snapshot-11155111.json",
TROVES_SNAPSHOT_URL: "/troves-snapshot-11155111.json",
[1660990954, {
...getDeploymentInfo(1660990954),
INITIATIVES_SNAPSHOT_URL: "/initiatives-snapshot-1660990954.json",
TROVES_SNAPSHOT_URL: "/troves-snapshot-1660990954.json",
}],
]);

Expand All @@ -125,22 +118,10 @@ export const DEFAULT_STRATEGIES: Array<[
ChainId,
Array<[BranchId, IcStrategy[]]>,
]> = [
// mainnet
[1, [
// ETH
[1660990954, [
[0, [{
name: "Conservative Strategy",
address: "0xE507E4d0763851A6287238aadD243948D18AB60a",
}]],
// WSTETH
[1, [{
name: "Conservative Strategy",
address: "0x8869a6FB59a8Df330F90D9Fbf46eBfaFf6D4BC14",
}]],
// RETH
[2, [{
name: "Conservative Strategy",
address: "0x7700B2D305f47aE82e9598BAb6D7CCb57299A82b",
address: "0x0000000000000000000000000000000000000000",
}]],
]],
];
Expand Down
2 changes: 1 addition & 1 deletion frontend/app/src/screens/BorrowScreen/BorrowScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ export function BorrowScreen() {
const branches = getBranches();
// useParams() can return an array but not with the current
// routing setup, so we can safely cast it to a string
const collSymbol = `${useParams().collateral ?? branches[0]?.symbol}`.toUpperCase();
const collSymbol = `${useParams().collateral ?? branches[0]?.symbol}`;
if (!isCollateralSymbol(collSymbol)) {
throw new Error(`Invalid collateral symbol: ${collSymbol}`);
}
Expand Down
2 changes: 1 addition & 1 deletion frontend/app/src/screens/EarnPoolScreen/EarnPoolScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ const TABS = [
export function EarnPoolScreen() {
const params = useParams();

const collateralSymbol = String(params.pool).toUpperCase();
const collateralSymbol = String(params.pool);
if (!isCollateralSymbol(collateralSymbol)) {
throw new Error("Invalid collateral symbol");
}
Expand Down
4 changes: 2 additions & 2 deletions frontend/app/src/screens/HomeScreen/HomeScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export function HomeScreen() {
>
<BorrowTable compact={compact} />
<EarnTable compact={compact} />
<YieldSourceTable compact={compact} />
{/* <YieldSourceTable compact={compact} /> */}
</div>
</div>
);
Expand Down Expand Up @@ -174,7 +174,7 @@ function EarnTable({
rows={getAvailableEarnPools()
.filter(pool => pool.type !== 'staked')
.map((pool) => {
const symbol = pool.symbol.toUpperCase();
const symbol = pool.symbol;

return (
<EarnRewardsRow
Expand Down
2 changes: 1 addition & 1 deletion frontend/app/src/screens/LeverageScreen/LeverageScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export function LeverageScreen() {

// useParams() can return an array but not with the current
// routing setup, so we can safely cast it to a string
const collSymbol = `${useParams().collateral ?? branches[0]?.symbol}`.toUpperCase();
const collSymbol = `${useParams().collateral ?? branches[0]?.symbol}`;
if (!isCollateralSymbol(collSymbol)) {
throw new Error(`Invalid collateral symbol: ${collSymbol}`);
}
Expand Down
Loading