diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index f086a50..ce9fd4d 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -15,15 +15,15 @@ jobs:
- uses: pnpm/action-setup@v4
with:
run_install: false
- - uses: actions/setup-node@v4
+ - uses: actions/setup-node@v6
with:
node-version-file: "package.json"
cache: pnpm
- name: Install Dependencies
run: pnpm install --frozen-lockfile
+ - name: Build
+ run: pnpm run build
- name: Typecheck
run: pnpm run typecheck
- name: Run Biome
run: pnpm exec biome ci .
- - name: Build
- run: pnpm run build
diff --git a/.vscode/settings.json b/.vscode/settings.json
index fedfb4e..fd8217d 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,3 +1,6 @@
{
- "editor.defaultFormatter": "biomejs.biome"
+ "editor.defaultFormatter": "biomejs.biome",
+ "[jsonc]": {
+ "editor.defaultFormatter": "biomejs.biome"
+ }
}
\ No newline at end of file
diff --git a/biome.jsonc b/biome.jsonc
index 6c34b40..a4a321c 100644
--- a/biome.jsonc
+++ b/biome.jsonc
@@ -1,7 +1,14 @@
{
"$schema": "https://biomejs.dev/schemas/2.2.5/schema.json",
- "vcs": { "enabled": false, "clientKind": "git", "useIgnoreFile": false },
- "files": { "ignoreUnknown": false, "includes": ["./src/**"] },
+ "vcs": {
+ "enabled": false,
+ "clientKind": "git",
+ "useIgnoreFile": false
+ },
+ "files": {
+ "ignoreUnknown": false,
+ "includes": ["./src/**"]
+ },
"formatter": {
"enabled": true,
"formatWithErrors": false,
@@ -29,6 +36,8 @@
"noUnnecessaryConditions": "error",
"noImportCycles": "warn",
"useSortedClasses": {
+ "level": "info",
+ "fix": "safe",
"options": {
"attributes": ["classList"],
"functions": ["cn"]
@@ -58,9 +67,17 @@
"bracketSpacing": true
}
},
- "html": { "formatter": { "selfCloseVoidElements": "always" } },
+ "html": {
+ "formatter": {
+ "selfCloseVoidElements": "always"
+ }
+ },
"assist": {
"enabled": true,
- "actions": { "source": { "organizeImports": "on" } }
+ "actions": {
+ "source": {
+ "organizeImports": "on"
+ }
+ }
}
}
diff --git a/package.json b/package.json
index 335d57d..58c41c7 100644
--- a/package.json
+++ b/package.json
@@ -45,7 +45,7 @@
"tw-animate-css": "^1.4.0",
"typescript": "^5.9.3"
},
- "packageManager": "pnpm@10.17.1",
+ "packageManager": "pnpm@10.32.1+sha512.a706938f0e89ac1456b6563eab4edf1d1faf3368d1191fc5c59790e96dc918e4456ab2e67d613de1043d2e8c81f87303e6b40d4ffeca9df15ef1ad567348f2be",
"engines": {
"node": ">=24.5.2"
}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 9134da2..747c1e4 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,4 +1,5 @@
import { HEADER_HEIGHT, Header } from "@/components/header"
+import { Shape } from "@/components/shapes"
import { ThemeProvider } from "@/components/theme-provider"
import "@/styles/globals.css"
import { GeistSans } from "geist/font/sans"
@@ -60,6 +61,12 @@ export default function RootLayout({ children }: Readonly<{ children: React.Reac
// storageKey="polinetwork_darkmode_temp" // TODO: enable when dark mode design is ready
disableTransitionOnChange
>
+
+
+
+
+
+
{children}
diff --git a/src/app/not-found.tsx b/src/app/not-found.tsx
index 5b7ef47..7f08738 100644
--- a/src/app/not-found.tsx
+++ b/src/app/not-found.tsx
@@ -3,7 +3,7 @@ import Link from "next/link"
export default async function NotFound() {
return (
- Not Found
+ Not Found
This page doesn't exist or is not available yet.
diff --git a/src/assets/shapes/big-blue.svg b/src/assets/shapes/big-blue.svg
new file mode 100644
index 0000000..354ec86
--- /dev/null
+++ b/src/assets/shapes/big-blue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/shapes/big-teal.svg b/src/assets/shapes/big-teal.svg
new file mode 100644
index 0000000..ffce061
--- /dev/null
+++ b/src/assets/shapes/big-teal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/shapes/looper.svg b/src/assets/shapes/looper.svg
new file mode 100644
index 0000000..9b118d2
--- /dev/null
+++ b/src/assets/shapes/looper.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/shapes/small-blue.svg b/src/assets/shapes/small-blue.svg
new file mode 100644
index 0000000..feedfff
--- /dev/null
+++ b/src/assets/shapes/small-blue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/glass.tsx b/src/components/glass.tsx
index ee0430e..3f67c8c 100644
--- a/src/components/glass.tsx
+++ b/src/components/glass.tsx
@@ -4,7 +4,7 @@ type GlassProps = React.HTMLAttributes
export function Glass({ children, ...props }: GlassProps) {
return (
-
+
{children}
)
diff --git a/src/components/header.tsx b/src/components/header.tsx
index 35abbc5..64b77a5 100644
--- a/src/components/header.tsx
+++ b/src/components/header.tsx
@@ -17,7 +17,7 @@ export async function Header() {
width={40}
height={40}
/>
-
PoliNetwork
+
PoliNetwork
diff --git a/src/components/shapes.tsx b/src/components/shapes.tsx
new file mode 100644
index 0000000..19dd3e2
--- /dev/null
+++ b/src/components/shapes.tsx
@@ -0,0 +1,32 @@
+import Image from "next/image"
+import bigBlueSvg from "@/assets/shapes/big-blue.svg"
+import bigTealSvg from "@/assets/shapes/big-teal.svg"
+import looperSvg from "@/assets/shapes/looper.svg"
+import smallBlueSvg from "@/assets/shapes/small-blue.svg"
+import { cn } from "@/lib/utils"
+
+export type ShapeVariant = "big-blue" | "big-teal" | "small-blue" | "looper"
+
+export type ShapeProps = {
+ variant: ShapeVariant
+ className?: string
+}
+
+export const Shape: React.FC = ({ variant, className }) => {
+ const getShapeSrc = () => {
+ switch (variant) {
+ case "big-blue":
+ return bigBlueSvg
+ case "big-teal":
+ return bigTealSvg
+ case "small-blue":
+ return smallBlueSvg
+ case "looper":
+ return looperSvg
+ default:
+ return ""
+ }
+ }
+
+ return
+}
diff --git a/src/components/ui/input.tsx b/src/components/ui/input.tsx
index 544c066..1a4312d 100644
--- a/src/components/ui/input.tsx
+++ b/src/components/ui/input.tsx
@@ -19,7 +19,7 @@ function Input({ icon, className, containerClassName, ...inputProps }: InputProp
containerClassName
)}
>
- {icon && {icon} }
+ {icon && {icon} }
)
diff --git a/tsconfig.json b/tsconfig.json
index 3f6bceb..b61837f 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -8,27 +8,43 @@
"resolveJsonModule": true,
"moduleDetection": "force",
"isolatedModules": true,
-
/* Strictness */
"strict": true,
"noUncheckedIndexedAccess": true,
"checkJs": true,
-
/* Bundled projects */
- "lib": ["dom", "dom.iterable", "ES2022"],
+ "lib": [
+ "dom",
+ "dom.iterable",
+ "ES2022"
+ ],
"noEmit": true,
"module": "ESNext",
"moduleResolution": "Bundler",
"jsx": "preserve",
- "plugins": [{ "name": "next" }],
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
"incremental": true,
-
/* Path Aliases */
- "baseUrl": ".",
"paths": {
- "@/*": ["./src/*"]
+ "@/*": [
+ "./src/*"
+ ]
}
},
- "include": [".eslintrc.cjs", "next-env.d.ts", "**/*.ts", "**/*.tsx", "**/*.cjs", "**/*.js", ".next/types/**/*.ts"],
- "exclude": ["node_modules"]
-}
+ "include": [
+ ".eslintrc.cjs",
+ "next-env.d.ts",
+ "**/*.ts",
+ "**/*.tsx",
+ "**/*.cjs",
+ "**/*.js",
+ ".next/types/**/*.ts"
+ ],
+ "exclude": [
+ "node_modules"
+ ]
+}
\ No newline at end of file