From f3bd28bc522ef723540dd06d72c8abe1ad0a52be Mon Sep 17 00:00:00 2001 From: elysableu Date: Tue, 18 Nov 2025 15:36:13 -0700 Subject: [PATCH 01/22] Add mock data for user and characters --- src/lib/mock/characterData.js | 5 +++++ src/lib/mock/userData.js | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 src/lib/mock/characterData.js create mode 100644 src/lib/mock/userData.js diff --git a/src/lib/mock/characterData.js b/src/lib/mock/characterData.js new file mode 100644 index 0000000..7ef4140 --- /dev/null +++ b/src/lib/mock/characterData.js @@ -0,0 +1,5 @@ +export const testCharacters = [ + { id: 1, name: "Theren Nightwhisper", level: 3, expereince_points: 345, alignment: "Chaotic Good" , background: "Folk Hero", user_id: 1, character_class_id: "wizard", race_id: "half-elf", subclass_id: "evocation", subrace_id: "", languages: [ "common", "elvish" ]}, + { id: 2, name: "Mira Stormhaven", level: 8, expereince_points: 853, alignment: "Lawful Neutral" , background: "Acolyte", user_id: 1, character_class_id: "fighter", race_id: "halfling", subclass_id: "champion", subrace_id: "lightfoot-halfling", languages: [ "common", "halfling" ]}, + { id: 3, name: "Kaelynn Thornwick", level: 1, expereince_points: 121, alignment: "Neutral Good" , background: "Hermit", user_id: 2, character_class_id: "druid", race_id: "gnome", subclass_id: "", subrace_id: "rock-gnome", languages: [ "common", "gnomish" ]} +] \ No newline at end of file diff --git a/src/lib/mock/userData.js b/src/lib/mock/userData.js new file mode 100644 index 0000000..26ffc33 --- /dev/null +++ b/src/lib/mock/userData.js @@ -0,0 +1,5 @@ +export const testUser = { + id: 1, + name: "John Mockery", + email: "mockjohnny@gmail.com" +} \ No newline at end of file From 88881e78679c16ad62c7da06cfdf79aa9ed1e3ba Mon Sep 17 00:00:00 2001 From: elysableu Date: Tue, 18 Nov 2025 15:57:08 -0700 Subject: [PATCH 02/22] Update tsconfig file so @/* paths to app root not computer root --- tsconfig.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 9688994..2ff581a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -18,9 +18,9 @@ "name": "next" } ], - "baseUrl": "src", + "baseUrl": ".", "paths": { - "@/*": ["/*"], + "@/*": ["./src/*"] } }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], From 6b32fe8297e68799393288cdb14708ff5862c492 Mon Sep 17 00:00:00 2001 From: elysableu Date: Tue, 18 Nov 2025 15:57:36 -0700 Subject: [PATCH 03/22] Add usr and character interface files --- src/types/character.ts | 15 +++++++++++++++ src/types/user.ts | 6 ++++++ 2 files changed, 21 insertions(+) create mode 100644 src/types/character.ts create mode 100644 src/types/user.ts diff --git a/src/types/character.ts b/src/types/character.ts new file mode 100644 index 0000000..5ce7f97 --- /dev/null +++ b/src/types/character.ts @@ -0,0 +1,15 @@ +// types/character.ts +export interface Character { + id: number; + name: string; + level: number; + experience_points: number; + alignment: string; + background: string; + user_id: number; + character_class_id: string; + race_id: string; + subclass_id: string; + subrace_id: string; + languages: string[] +} \ No newline at end of file diff --git a/src/types/user.ts b/src/types/user.ts new file mode 100644 index 0000000..e1a94cc --- /dev/null +++ b/src/types/user.ts @@ -0,0 +1,6 @@ +// types/user.ts +export interface User { + id: number; + username: string; + email: string; +} \ No newline at end of file From 140a29f62731363d3104baf55412c65bb7a93b1e Mon Sep 17 00:00:00 2001 From: elysableu Date: Tue, 18 Nov 2025 15:59:40 -0700 Subject: [PATCH 04/22] Update mock data to use associated interfaces --- src/lib/mock/{characterData.js => characterData.ts} | 10 ++++++---- src/lib/mock/userData.js | 5 ----- src/lib/mock/userData.ts | 7 +++++++ 3 files changed, 13 insertions(+), 9 deletions(-) rename src/lib/mock/{characterData.js => characterData.ts} (68%) delete mode 100644 src/lib/mock/userData.js create mode 100644 src/lib/mock/userData.ts diff --git a/src/lib/mock/characterData.js b/src/lib/mock/characterData.ts similarity index 68% rename from src/lib/mock/characterData.js rename to src/lib/mock/characterData.ts index 7ef4140..e2b7c67 100644 --- a/src/lib/mock/characterData.js +++ b/src/lib/mock/characterData.ts @@ -1,5 +1,7 @@ -export const testCharacters = [ - { id: 1, name: "Theren Nightwhisper", level: 3, expereince_points: 345, alignment: "Chaotic Good" , background: "Folk Hero", user_id: 1, character_class_id: "wizard", race_id: "half-elf", subclass_id: "evocation", subrace_id: "", languages: [ "common", "elvish" ]}, - { id: 2, name: "Mira Stormhaven", level: 8, expereince_points: 853, alignment: "Lawful Neutral" , background: "Acolyte", user_id: 1, character_class_id: "fighter", race_id: "halfling", subclass_id: "champion", subrace_id: "lightfoot-halfling", languages: [ "common", "halfling" ]}, - { id: 3, name: "Kaelynn Thornwick", level: 1, expereince_points: 121, alignment: "Neutral Good" , background: "Hermit", user_id: 2, character_class_id: "druid", race_id: "gnome", subclass_id: "", subrace_id: "rock-gnome", languages: [ "common", "gnomish" ]} +import { Character } from '@/types/character'; + +export const testCharacters: Character[] = [ + { id: 1, name: "Theren Nightwhisper", level: 3, experience_points: 345, alignment: "Chaotic Good" , background: "Folk Hero", user_id: 1, character_class_id: "wizard", race_id: "half-elf", subclass_id: "evocation", subrace_id: "", languages: [ "common", "elvish" ]}, + { id: 2, name: "Mira Stormhaven", level: 8, experience_points: 853, alignment: "Lawful Neutral" , background: "Acolyte", user_id: 1, character_class_id: "fighter", race_id: "halfling", subclass_id: "champion", subrace_id: "lightfoot-halfling", languages: [ "common", "halfling" ]}, + { id: 3, name: "Kaelynn Thornwick", level: 1, experience_points: 121, alignment: "Neutral Good" , background: "Hermit", user_id: 2, character_class_id: "druid", race_id: "gnome", subclass_id: "", subrace_id: "rock-gnome", languages: [ "common", "gnomish" ]} ] \ No newline at end of file diff --git a/src/lib/mock/userData.js b/src/lib/mock/userData.js deleted file mode 100644 index 26ffc33..0000000 --- a/src/lib/mock/userData.js +++ /dev/null @@ -1,5 +0,0 @@ -export const testUser = { - id: 1, - name: "John Mockery", - email: "mockjohnny@gmail.com" -} \ No newline at end of file diff --git a/src/lib/mock/userData.ts b/src/lib/mock/userData.ts new file mode 100644 index 0000000..e57f85b --- /dev/null +++ b/src/lib/mock/userData.ts @@ -0,0 +1,7 @@ +import { User } from '@/types/user'; + +export const mockUser: User = { + id: 1, + username: "John Mockery", + email: "mockjohnny@gmail.com" +} \ No newline at end of file From 66ec04c41b78b7df8d164b1f163ef1e7c3c755c7 Mon Sep 17 00:00:00 2001 From: elysableu Date: Tue, 18 Nov 2025 16:13:12 -0700 Subject: [PATCH 05/22] Wrap main app in DataProvider --- src/app/layout.tsx | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 3468415..000d14d 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -2,6 +2,7 @@ import type { Metadata } from "next"; import { beau_rivage, geistSans, geistMono } from './fonts'; import "./globals.css"; import Header from "../components/layout/Header/header"; +import { DataProvider } from './providers/DataProvider'; export const metadata: Metadata = { title: "SilverGuild", @@ -18,12 +19,14 @@ export default function RootLayout({ -
-
-
-
- {children} -
+ +
+
+
+
+ {children} +
+
); From 1a9e9a14ba31e6af5c8c911727c2cc3214a4be3c Mon Sep 17 00:00:00 2001 From: elysableu Date: Tue, 18 Nov 2025 16:13:32 -0700 Subject: [PATCH 06/22] Updating typing and add context null check --- src/app/providers/DataProvider.tsx | 35 ++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/app/providers/DataProvider.tsx diff --git a/src/app/providers/DataProvider.tsx b/src/app/providers/DataProvider.tsx new file mode 100644 index 0000000..1087e32 --- /dev/null +++ b/src/app/providers/DataProvider.tsx @@ -0,0 +1,35 @@ +'use client'; + +import { createContext, useContext, useState, ReactNode } from 'react'; +import { User } from '@/types/user'; +import { Character } from '@/types/character'; + +interface DataContextType { + user: User; + setUser: (user: any) => void; + characters: Character[]; + setCharacters: (characters: any[]) => void; +} + +const DataContext = createContext(null); + +export function DataProvider({ children }: {children : ReactNode}) { + const [ user, setUser ] = useState(null); + const [ characters, setCharacters ] = useState([]); + + return ( + + {children} + + ); +} + +export const useData = () => { + const context = useContext(DataContext); + + if (!context) { + throw new Error('useData must be used within a DataProvider') + } + + return context; +}; \ No newline at end of file From de392f35a1d840e66b66086e211b1f8c8a1e4d42 Mon Sep 17 00:00:00 2001 From: elysableu Date: Tue, 18 Nov 2025 16:13:47 -0700 Subject: [PATCH 07/22] Remove unnecessary useState --- src/app/page.tsx | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 7aa9555..a88b29e 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -2,13 +2,6 @@ import { useState } from 'react'; export default function Home() { - const [userInfo, setUserInfo] = useState({ - name: "Elysa", - username: "bleu7", - email: "bleu@gmail.com", - characterCount: 7 - }) - return (

SilverGuild

From 6e8f78c5728f452e2e37feb1babe9086c201143f Mon Sep 17 00:00:00 2001 From: elysableu Date: Tue, 18 Nov 2025 16:14:08 -0700 Subject: [PATCH 08/22] Move components into components folder --- src/app/character/page.tsx | 9 --------- src/app/userHome/components/ProfileDetails.tsx | 13 ------------- src/app/userHome/page.tsx | 10 ---------- 3 files changed, 32 deletions(-) delete mode 100644 src/app/character/page.tsx delete mode 100644 src/app/userHome/components/ProfileDetails.tsx delete mode 100644 src/app/userHome/page.tsx diff --git a/src/app/character/page.tsx b/src/app/character/page.tsx deleted file mode 100644 index 4521247..0000000 --- a/src/app/character/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ - -export default function Character() { - return ( -
- -
- ); - } - \ No newline at end of file diff --git a/src/app/userHome/components/ProfileDetails.tsx b/src/app/userHome/components/ProfileDetails.tsx deleted file mode 100644 index 006b8bb..0000000 --- a/src/app/userHome/components/ProfileDetails.tsx +++ /dev/null @@ -1,13 +0,0 @@ -export default function ProfileDetails() { - return ( -
-
- {/* {""} */} -
-

-
- -
-
- ); -} \ No newline at end of file diff --git a/src/app/userHome/page.tsx b/src/app/userHome/page.tsx deleted file mode 100644 index b128e2a..0000000 --- a/src/app/userHome/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import ProfileDetails from './components/ProfileDetails'; - -export default function UserHome() { - return ( -
- -
- ); - } - \ No newline at end of file From 4b86dbbdb2d3dc2046c49f2355ebdadd88fdb367 Mon Sep 17 00:00:00 2001 From: elysableu Date: Tue, 18 Nov 2025 16:14:43 -0700 Subject: [PATCH 09/22] Update typing --- src/components/character/page.tsx | 9 +++++++++ src/components/userHome/page.tsx | 13 +++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 src/components/character/page.tsx create mode 100644 src/components/userHome/page.tsx diff --git a/src/components/character/page.tsx b/src/components/character/page.tsx new file mode 100644 index 0000000..4521247 --- /dev/null +++ b/src/components/character/page.tsx @@ -0,0 +1,9 @@ + +export default function Character() { + return ( +
+ +
+ ); + } + \ No newline at end of file diff --git a/src/components/userHome/page.tsx b/src/components/userHome/page.tsx new file mode 100644 index 0000000..95e2671 --- /dev/null +++ b/src/components/userHome/page.tsx @@ -0,0 +1,13 @@ +import { useData } from '@/app/providers/DataProvider'; +import ProfileDetails from './components/ProfileDetails'; + +export default function UserHome() { + const { user, characters } = useData(); + + return ( +
+ +
+ ); + } + \ No newline at end of file From 3f775ae527d54412de530ebe4a804dd932861635 Mon Sep 17 00:00:00 2001 From: elysableu Date: Tue, 18 Nov 2025 16:15:21 -0700 Subject: [PATCH 10/22] Add typing, null check, and basic user detail html --- .../userHome/components/ProfileDetails.tsx | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/components/userHome/components/ProfileDetails.tsx diff --git a/src/components/userHome/components/ProfileDetails.tsx b/src/components/userHome/components/ProfileDetails.tsx new file mode 100644 index 0000000..b5dcca8 --- /dev/null +++ b/src/components/userHome/components/ProfileDetails.tsx @@ -0,0 +1,26 @@ +import { User } from '@/types/user'; + +interface ProfileDetailsProps { + user: User | null; +} + +export default function ProfileDetails({ user }: ProfileDetailsProps) { + if (!user) { + return
No user data available!
// Receive error from back end display + } + + return ( +
+
+ { +
+
+
Username:
+
{ user.username }
+ +
Email:
+
{ user.email }
+
+
+ ); +} \ No newline at end of file From 35d6f8af23878b7162e0a27258da4fc343429eb5 Mon Sep 17 00:00:00 2001 From: elysableu Date: Tue, 18 Nov 2025 16:41:59 -0700 Subject: [PATCH 11/22] Remove unecessary imports' --- src/app/page.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index a88b29e..6ff14df 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,5 +1,4 @@ -'use client' -import { useState } from 'react'; + export default function Home() { return ( From 50db60587ce388e9b888165470d16429315862b9 Mon Sep 17 00:00:00 2001 From: elysableu Date: Tue, 18 Nov 2025 16:42:49 -0700 Subject: [PATCH 12/22] Move components back to /app for routing --- src/{components => app}/character/page.tsx | 1 - src/{components => app}/userHome/components/ProfileDetails.tsx | 0 src/{components => app}/userHome/page.tsx | 2 ++ 3 files changed, 2 insertions(+), 1 deletion(-) rename src/{components => app}/character/page.tsx (99%) rename src/{components => app}/userHome/components/ProfileDetails.tsx (100%) rename src/{components => app}/userHome/page.tsx (95%) diff --git a/src/components/character/page.tsx b/src/app/character/page.tsx similarity index 99% rename from src/components/character/page.tsx rename to src/app/character/page.tsx index 4521247..eada692 100644 --- a/src/components/character/page.tsx +++ b/src/app/character/page.tsx @@ -1,4 +1,3 @@ - export default function Character() { return (
diff --git a/src/components/userHome/components/ProfileDetails.tsx b/src/app/userHome/components/ProfileDetails.tsx similarity index 100% rename from src/components/userHome/components/ProfileDetails.tsx rename to src/app/userHome/components/ProfileDetails.tsx diff --git a/src/components/userHome/page.tsx b/src/app/userHome/page.tsx similarity index 95% rename from src/components/userHome/page.tsx rename to src/app/userHome/page.tsx index 95e2671..ccbf3e5 100644 --- a/src/components/userHome/page.tsx +++ b/src/app/userHome/page.tsx @@ -1,3 +1,5 @@ +'use client'; + import { useData } from '@/app/providers/DataProvider'; import ProfileDetails from './components/ProfileDetails'; From 6c4ce6b1ef1b8025ae20abff946e870921805d27 Mon Sep 17 00:00:00 2001 From: elysableu Date: Tue, 18 Nov 2025 16:43:01 -0700 Subject: [PATCH 13/22] Update variable name --- src/lib/mock/characterData.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/mock/characterData.ts b/src/lib/mock/characterData.ts index e2b7c67..752e44e 100644 --- a/src/lib/mock/characterData.ts +++ b/src/lib/mock/characterData.ts @@ -1,6 +1,6 @@ import { Character } from '@/types/character'; -export const testCharacters: Character[] = [ +export const mockCharacters: Character[] = [ { id: 1, name: "Theren Nightwhisper", level: 3, experience_points: 345, alignment: "Chaotic Good" , background: "Folk Hero", user_id: 1, character_class_id: "wizard", race_id: "half-elf", subclass_id: "evocation", subrace_id: "", languages: [ "common", "elvish" ]}, { id: 2, name: "Mira Stormhaven", level: 8, experience_points: 853, alignment: "Lawful Neutral" , background: "Acolyte", user_id: 1, character_class_id: "fighter", race_id: "halfling", subclass_id: "champion", subrace_id: "lightfoot-halfling", languages: [ "common", "halfling" ]}, { id: 3, name: "Kaelynn Thornwick", level: 1, experience_points: 121, alignment: "Neutral Good" , background: "Hermit", user_id: 2, character_class_id: "druid", race_id: "gnome", subclass_id: "", subrace_id: "rock-gnome", languages: [ "common", "gnomish" ]} From 1f2a3c3247ea858c058f7aa6509b7739366eb0d8 Mon Sep 17 00:00:00 2001 From: elysableu Date: Tue, 18 Nov 2025 16:43:19 -0700 Subject: [PATCH 14/22] Add typing to states --- src/app/providers/DataProvider.tsx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/app/providers/DataProvider.tsx b/src/app/providers/DataProvider.tsx index 1087e32..5731468 100644 --- a/src/app/providers/DataProvider.tsx +++ b/src/app/providers/DataProvider.tsx @@ -3,19 +3,23 @@ import { createContext, useContext, useState, ReactNode } from 'react'; import { User } from '@/types/user'; import { Character } from '@/types/character'; +import { mockUser } from '@/lib/mock/userData'; +import { mockCharacters} from '@/lib/mock/characterData'; interface DataContextType { - user: User; - setUser: (user: any) => void; + user: User | null; + setUser: (user: User | null) => void; characters: Character[]; - setCharacters: (characters: any[]) => void; + setCharacters: (characters: Character[]) => void; } const DataContext = createContext(null); +const USE_MOCK_DATA = true; + export function DataProvider({ children }: {children : ReactNode}) { - const [ user, setUser ] = useState(null); - const [ characters, setCharacters ] = useState([]); + const [ user, setUser ] = useState(USE_MOCK_DATA ? mockUser : null); + const [ characters, setCharacters ] = useState(USE_MOCK_DATA ? mockCharacters : []); return ( From 310c96ac0fd3c33b911d7c0e6b8b093bd9239133 Mon Sep 17 00:00:00 2001 From: elysableu Date: Mon, 24 Nov 2025 14:42:56 -0700 Subject: [PATCH 15/22] Add format characters to display in character roster using CharacterRoster components --- .../userHome/components/CharacterRoster.tsx | 31 +++++++++++++++++ .../components/CharacterRosterCard.tsx | 34 +++++++++++++++++++ src/app/userHome/page.tsx | 10 ++++-- 3 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 src/app/userHome/components/CharacterRoster.tsx create mode 100644 src/app/userHome/components/CharacterRosterCard.tsx diff --git a/src/app/userHome/components/CharacterRoster.tsx b/src/app/userHome/components/CharacterRoster.tsx new file mode 100644 index 0000000..37ce013 --- /dev/null +++ b/src/app/userHome/components/CharacterRoster.tsx @@ -0,0 +1,31 @@ +import { Character } from '@/types/character'; +import CharacterRosterCard from './CharacterRosterCard'; + +interface CharacterRosterProps { + characters: Character[]; + userId: number; +} + +export default function CharacterRoster({ characters }: CharacterRosterProps) { + if (!characters) { + return
No user data available!
// Receive error from back end display + } + + console.log(characters); + + + let roster = characters.map((character) => { + return ( + + ) + } ) + + return ( +
+ { roster } +
+ ) +}; \ No newline at end of file diff --git a/src/app/userHome/components/CharacterRosterCard.tsx b/src/app/userHome/components/CharacterRosterCard.tsx new file mode 100644 index 0000000..9584dd8 --- /dev/null +++ b/src/app/userHome/components/CharacterRosterCard.tsx @@ -0,0 +1,34 @@ +import { Character } from '@/types/character'; + +interface CharacterRosterCardProps { + character: Character; +} + +export default function CharacterRosterCard({character}: CharacterRosterCardProps) { + return ( +
+
+ {character.name}/ +
+
+

{character.name}

+
+
+
Level:
+
{character.level}
+
+ +
+
Class:
+
{character.character_class_id}
+
+ +
+
Race:
+
{character.race_id}
+
+
+
+
+ ); +}; \ No newline at end of file diff --git a/src/app/userHome/page.tsx b/src/app/userHome/page.tsx index ccbf3e5..d10f2b8 100644 --- a/src/app/userHome/page.tsx +++ b/src/app/userHome/page.tsx @@ -2,13 +2,19 @@ import { useData } from '@/app/providers/DataProvider'; import ProfileDetails from './components/ProfileDetails'; +import CharacterRoster from './components/CharacterRoster'; export default function UserHome() { const { user, characters } = useData(); - + + if (!user) { + return
Loading user...
; // Receive error from back end display + } + return ( -
+
+
); } From ed3e4f81de5aa2a24cd7e6122f25257bff54e854 Mon Sep 17 00:00:00 2001 From: elysableu Date: Mon, 24 Nov 2025 14:43:36 -0700 Subject: [PATCH 16/22] Update config.ts with app constants including base_url and sg_api_endpoints --- src/lib/config.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/lib/config.ts diff --git a/src/lib/config.ts b/src/lib/config.ts new file mode 100644 index 0000000..9cda0a2 --- /dev/null +++ b/src/lib/config.ts @@ -0,0 +1,11 @@ +// SG API configuration +export const SG_API_BASE_URL = 'http://localhost:3000/api/v1'; + +// Other app constants +export const APP_NAME = 'SilverGuild'; + +// API Endpoints +export const SG_API_ENDPOINTS = { + users: '/users', + characters: '/characters', +} as const; \ No newline at end of file From 75c3b25f845cb88432c9b40eed404ef95f57ba81 Mon Sep 17 00:00:00 2001 From: elysableu Date: Mon, 24 Nov 2025 14:43:50 -0700 Subject: [PATCH 17/22] Fix typo --- src/lib/mock/characterData.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/mock/characterData.ts b/src/lib/mock/characterData.ts index 752e44e..e40a1ff 100644 --- a/src/lib/mock/characterData.ts +++ b/src/lib/mock/characterData.ts @@ -3,5 +3,5 @@ import { Character } from '@/types/character'; export const mockCharacters: Character[] = [ { id: 1, name: "Theren Nightwhisper", level: 3, experience_points: 345, alignment: "Chaotic Good" , background: "Folk Hero", user_id: 1, character_class_id: "wizard", race_id: "half-elf", subclass_id: "evocation", subrace_id: "", languages: [ "common", "elvish" ]}, { id: 2, name: "Mira Stormhaven", level: 8, experience_points: 853, alignment: "Lawful Neutral" , background: "Acolyte", user_id: 1, character_class_id: "fighter", race_id: "halfling", subclass_id: "champion", subrace_id: "lightfoot-halfling", languages: [ "common", "halfling" ]}, - { id: 3, name: "Kaelynn Thornwick", level: 1, experience_points: 121, alignment: "Neutral Good" , background: "Hermit", user_id: 2, character_class_id: "druid", race_id: "gnome", subclass_id: "", subrace_id: "rock-gnome", languages: [ "common", "gnomish" ]} + { id: 3, name: "Kaelynn Thornwick", level: 1, experience_points: 121, alignment: "Neutral Good" , background: "Hermit", user_id: 1, character_class_id: "druid", race_id: "gnome", subclass_id: "", subrace_id: "rock-gnome", languages: [ "common", "gnomish" ]} ] \ No newline at end of file From 5451ec680d7d69d5f67079e82b0c24b6e142b0d1 Mon Sep 17 00:00:00 2001 From: elysableu Date: Mon, 24 Nov 2025 14:44:10 -0700 Subject: [PATCH 18/22] Move null checker to parent component --- src/app/userHome/components/ProfileDetails.tsx | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/app/userHome/components/ProfileDetails.tsx b/src/app/userHome/components/ProfileDetails.tsx index b5dcca8..d62dd75 100644 --- a/src/app/userHome/components/ProfileDetails.tsx +++ b/src/app/userHome/components/ProfileDetails.tsx @@ -1,18 +1,14 @@ import { User } from '@/types/user'; interface ProfileDetailsProps { - user: User | null; + user: User; } export default function ProfileDetails({ user }: ProfileDetailsProps) { - if (!user) { - return
No user data available!
// Receive error from back end display - } - return ( -
-
- { +
+
+ {
Username:
From b509df34ef8562ff1d39cc317c13f8a279282692 Mon Sep 17 00:00:00 2001 From: elysableu Date: Mon, 24 Nov 2025 14:44:30 -0700 Subject: [PATCH 19/22] Update userHome layout --- src/app/layout.tsx | 12 +++++++----- src/components/layout/Header/header.tsx | 6 +++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 000d14d..4f36e2f 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -20,12 +20,14 @@ export default function RootLayout({ className={`${geistSans.variable} ${geistMono.variable} ${beau_rivage.variable} antialiased`} > -
-
+
+
+
+
+
+ {children} +
-
- {children} -
diff --git a/src/components/layout/Header/header.tsx b/src/components/layout/Header/header.tsx index b480816..2d33f35 100644 --- a/src/components/layout/Header/header.tsx +++ b/src/components/layout/Header/header.tsx @@ -2,10 +2,10 @@ import Link from 'next/link' export default function Header() { return ( -
-
+
+
- +