diff --git a/app/(app)/avatar/page.tsx b/app/(app)/avatar/page.tsx
index 247d916..9079dec 100644
--- a/app/(app)/avatar/page.tsx
+++ b/app/(app)/avatar/page.tsx
@@ -8,8 +8,7 @@ export default function AvatarPage() {
Loading...
}>
diff --git a/app/(app)/daily/quiz/page.tsx b/app/(app)/daily/quiz/page.tsx
index 8b3a684..8e33fed 100644
--- a/app/(app)/daily/quiz/page.tsx
+++ b/app/(app)/daily/quiz/page.tsx
@@ -1,13 +1,7 @@
-import { DailyQuizForm } from "@/components/daily-quiz/daily-quiz-form";
-import { AppShell } from "@/components/layout/app-shell";
+import { redirect } from "next/navigation";
+
+import { routes } from "@/lib/routes";
export default function DailyQuizPage() {
- return (
-
-
-
- );
+ redirect(`${routes.avatar}#bit-daily-quiz`);
}
diff --git a/app/(app)/habits/page.tsx b/app/(app)/habits/page.tsx
index 33dd2ae..c1acbe6 100644
--- a/app/(app)/habits/page.tsx
+++ b/app/(app)/habits/page.tsx
@@ -1,13 +1,7 @@
-import { HabitTracker } from "@/components/habits/habit-tracker";
-import { AppShell } from "@/components/layout/app-shell";
+import { redirect } from "next/navigation";
+
+import { routes } from "@/lib/routes";
export default function HabitsPage() {
- return (
-
-
-
- );
+ redirect(`${routes.avatar}#bit-daily-tasks`);
}
diff --git a/app/globals.css b/app/globals.css
index 5c15d0e..ea8a992 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -147,6 +147,15 @@
@apply flex min-h-0 w-full flex-1 flex-col items-center justify-center;
}
+ /* Bit home: same pet stage height as fillViewport layout (header + main padding accounted for). */
+ .bit-home-pet-stage {
+ @apply pet-viewport-stage flex w-full flex-col items-center justify-center;
+ min-height: calc(
+ 100dvh - var(--app-topbar-height) - var(--app-nav-offset) -
+ env(safe-area-inset-top, 0px) - 11rem
+ );
+ }
+
.tamagotchi-shell-fill {
@apply flex min-h-0 w-full max-w-4xl flex-1 flex-col;
}
diff --git a/components/avatar/avatar-page-content.tsx b/components/avatar/avatar-page-content.tsx
index 8b60ce8..a61afa8 100644
--- a/components/avatar/avatar-page-content.tsx
+++ b/components/avatar/avatar-page-content.tsx
@@ -2,6 +2,8 @@
import { useCallback, useEffect, useState } from "react";
+import { DailyQuizForm } from "@/components/daily-quiz/daily-quiz-form";
+import { HabitTracker } from "@/components/habits/habit-tracker";
import { PetHabitat } from "@/components/pet/pet-habitat";
import { HABIT_PET_DATA_UPDATED_EVENT } from "@/lib/app-events";
import {
@@ -45,5 +47,20 @@ export function AvatarPageContent() {
);
}
- return ;
+ return (
+
+ );
}
diff --git a/components/avatar/avatar-status-card.tsx b/components/avatar/avatar-status-card.tsx
index 1ef894e..7732704 100644
--- a/components/avatar/avatar-status-card.tsx
+++ b/components/avatar/avatar-status-card.tsx
@@ -108,7 +108,7 @@ export function AvatarStatusCard({ customization }: AvatarStatusCardProps) {
{!hasCheckedInToday ? (
- Take today's quiz
+ Take today's quiz
) : null}
diff --git a/components/daily-quiz/daily-quiz-form.tsx b/components/daily-quiz/daily-quiz-form.tsx
index dc7360a..b09adca 100644
--- a/components/daily-quiz/daily-quiz-form.tsx
+++ b/components/daily-quiz/daily-quiz-form.tsx
@@ -1,7 +1,6 @@
"use client";
import { CheckCircle2 } from "lucide-react";
-import Link from "next/link";
import { useCallback, useEffect, useState } from "react";
import { WellnessSlider } from "@/components/daily-quiz/wellness-slider";
@@ -32,7 +31,6 @@ import {
import { HABIT_PET_DATA_UPDATED_EVENT } from "@/lib/app-events";
import { saveDailyEntry } from "@/lib/daily-quiz-storage";
import { JOURNAL_MAX_LENGTH } from "@/lib/journal-safety";
-import { routes } from "@/lib/routes";
export function DailyQuizForm() {
const cachedQuiz = getCachedQuizTabData();
@@ -161,14 +159,7 @@ export function DailyQuizForm() {
Your answers are saved below. Come back tomorrow for your next
- check-in. How you did today affects your bit. Spend time with{" "}
-
- your bit
- {" "}
- whenever you want to see how they are doing.
+ check-in. How you did today affects your bit.
{
diff --git a/components/daily-quiz/daily-quiz-link-button.tsx b/components/daily-quiz/daily-quiz-link-button.tsx
index 2dd6862..ab09384 100644
--- a/components/daily-quiz/daily-quiz-link-button.tsx
+++ b/components/daily-quiz/daily-quiz-link-button.tsx
@@ -30,7 +30,7 @@ export function DailyQuizLinkButton() {
return (
- Open daily quiz
+ Open daily quiz
);
}
diff --git a/components/layout/app-nav.tsx b/components/layout/app-nav.tsx
index ad7b6e2..81cfd10 100644
--- a/components/layout/app-nav.tsx
+++ b/components/layout/app-nav.tsx
@@ -3,14 +3,7 @@
import Link from "next/link";
import { usePathname } from "next/navigation";
import { forwardRef } from "react";
-import {
- Home,
- ListPlus,
- Palette,
- ShoppingBag,
- Sparkles,
- UserRound,
-} from "lucide-react";
+import { Home, Palette, ShoppingBag, UserRound } from "lucide-react";
import { cn } from "@/lib/utils";
import { appNavItems, routes, type NavItem } from "@/lib/routes";
@@ -31,17 +24,13 @@ const gridColsClass = {
const navIcons = {
[routes.avatar]: Home,
[routes.customize]: Palette,
- [routes.habits]: ListPlus,
- [routes.dailyQuiz]: Sparkles,
[routes.shop]: ShoppingBag,
[routes.profile]: UserRound,
} as const;
const prefetchByRoute: Partial void>> = {
- [routes.habits]: () => {
+ [routes.avatar]: () => {
void prefetchHabitsTabData();
- },
- [routes.dailyQuiz]: () => {
void prefetchQuizTabData();
},
};
diff --git a/lib/routes.ts b/lib/routes.ts
index 01f5aa9..0de94c2 100644
--- a/lib/routes.ts
+++ b/lib/routes.ts
@@ -18,8 +18,6 @@ export type AppRoute = (typeof routes)[keyof typeof routes];
export const appNavItems = [
{ href: routes.avatar, label: "Bit", shortLabel: "Bit" },
{ href: routes.customize, label: "Customize", shortLabel: "Style" },
- { href: routes.habits, label: "Habits", shortLabel: "Habits" },
- { href: routes.dailyQuiz, label: "Daily Quiz", shortLabel: "Quiz" },
{ href: routes.shop, label: "Shop", shortLabel: "Shop" },
{ href: routes.profile, label: "Profile", shortLabel: "Profile" },
] as const;