diff --git a/src/app/(features)/favorites/FavoritesClient.tsx b/src/app/(features)/favorites/FavoritesClient.tsx index 12e0cda..c1e2f42 100644 --- a/src/app/(features)/favorites/FavoritesClient.tsx +++ b/src/app/(features)/favorites/FavoritesClient.tsx @@ -12,6 +12,8 @@ import { toast } from "sonner"; import { PageLayout } from "@/components/ui/PageLayout"; import { PageHeader } from "@/components/ui/PageHeader"; import { CardList } from "@/components/ui/CardList"; +import { VStack } from "@/design-system/layout/stack"; +import { Skeleton } from "@/design-system/feedback/skeleton"; import { actionGetUserFavoriteDecks, actionToggleDeckFavorite } from "@/modules/deck/deck-action"; import type { ActionOutputUserFavoriteDeck } from "@/modules/deck/deck-action-dto"; @@ -102,10 +104,10 @@ export function FavoritesClient({ initialFavorites }: FavoritesClientProps) { {loading ? ( -
-
+ +

{t("loading")}

-
+ ) : favorites.length === 0 ? (
diff --git a/src/app/(features)/text-speaker/page.tsx b/src/app/(features)/text-speaker/page.tsx index 9bfdc89..e2a03ea 100644 --- a/src/app/(features)/text-speaker/page.tsx +++ b/src/app/(features)/text-speaker/page.tsx @@ -1,7 +1,7 @@ "use client"; -import { LightButton } from "@/design-system/base/button"; -import { IconClick } from "@/design-system/base/button"; +import { LightButton, IconClick } from "@/design-system/base/button"; +import { Textarea } from "@/design-system/base/textarea"; import { IMAGES } from "@/config/images"; import { useAudioPlayer } from "@/hooks/useAudioPlayer"; import { @@ -226,11 +226,12 @@ export default function TextSpeakerPage() { style={{ fontFamily: "Times New Roman, serif" }} > {/* 文本输入框 */} - + /> {/* IPA 显示区域 */} {(ipa.length !== 0 && (
diff --git a/src/app/(features)/translator/page.tsx b/src/app/(features)/translator/page.tsx index 6523b32..6737d1f 100644 --- a/src/app/(features)/translator/page.tsx +++ b/src/app/(features)/translator/page.tsx @@ -1,7 +1,9 @@ "use client"; -import { LightButton, PrimaryButton, IconClick } from "@/design-system/base/button"; +import { LightButton, PrimaryButton, + IconClick } from "@/design-system/base/button"; import { Select } from "@/design-system/base/select"; +import { Textarea } from "@/design-system/base/textarea"; import { IMAGES } from "@/config/images"; import { useAudioPlayer } from "@/hooks/useAudioPlayer"; import { useTranslations } from "next-intl"; @@ -134,13 +136,13 @@ export default function TranslatorPage() {
{/* ICard1 Component */}
- + />
{translationResult?.sourceIpa || ""}
diff --git a/src/app/decks/[deck_id]/InDeck.tsx b/src/app/decks/[deck_id]/InDeck.tsx index 772e730..1def6c0 100644 --- a/src/app/decks/[deck_id]/InDeck.tsx +++ b/src/app/decks/[deck_id]/InDeck.tsx @@ -11,7 +11,8 @@ import { PrimaryButton, CircleButton, LinkButton, LightButton } from "@/design-s import { CardList } from "@/components/ui/CardList"; import { Modal } from "@/design-system/overlay/modal"; import { Input } from "@/design-system/base/input"; -import { HStack } from "@/design-system/layout/stack"; +import { HStack, VStack } from "@/design-system/layout/stack"; +import { Skeleton } from "@/design-system/feedback/skeleton"; import { actionGetCardsByDeckIdWithNotes, actionDeleteCard, actionResetDeckCards, actionGetTodayStudyStats } from "@/modules/card/card-action"; import { actionGetDeckById, actionUpdateDeck } from "@/modules/deck/deck-action"; import type { ActionOutputCardWithNote } from "@/modules/card/card-action-dto"; @@ -188,10 +189,10 @@ export function InDeck({ deckId, isReadOnly }: { deckId: number; isReadOnly: boo {loading ? ( -
-
+ +

{t("loadingCards")}

-
+ ) : cards.length === 0 ? (

{t("noCards")}