"use client" import { useState, useEffect } from "react" import Link from "next/link" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Badge } from "@/components/ui/badge" import { Sparkles, ArrowLeft, Search, Plus, Filter, X, BarChart3, Eye, Users } from "lucide-react" import WishCard from "@/components/wish-card" import HeaderMusicControl from "@/components/header-music-control" import { categories, categorizeWishMultiple, getCategoryStats, type Wish } from "@/lib/categorization" export default function WishesPage() { const [wishes, setWishes] = useState([]) const [publicWishes, setPublicWishes] = useState([]) const [searchTerm, setSearchTerm] = useState("") const [selectedCategories, setSelectedCategories] = useState([]) const [filteredWishes, setFilteredWishes] = useState([]) const [categoryStats, setCategoryStats] = useState<{ [key: string]: number }>({}) const [showFilters, setShowFilters] = useState(false) const [totalWishes, setTotalWishes] = useState(0) const [privateCount, setPrivateCount] = useState(0) useEffect(() => { const savedWishes = JSON.parse(localStorage.getItem("wishes") || "[]") const publicOnly = savedWishes.filter((wish: Wish & { isPublic?: boolean }) => wish.isPublic !== false) const privateOnly = savedWishes.filter((wish: Wish & { isPublic?: boolean }) => wish.isPublic === false) setWishes(savedWishes) setPublicWishes(publicOnly.reverse()) setTotalWishes(savedWishes.length) setPrivateCount(privateOnly.length) setCategoryStats(getCategoryStats(publicOnly)) // 只統計公開的困擾 }, []) useEffect(() => { let filtered = publicWishes // 按搜尋詞篩選 if (searchTerm) { filtered = filtered.filter( (wish) => wish.title.toLowerCase().includes(searchTerm.toLowerCase()) || wish.currentPain.toLowerCase().includes(searchTerm.toLowerCase()) || wish.expectedSolution.toLowerCase().includes(searchTerm.toLowerCase()), ) } // 按分類篩選(支持多標籤) if (selectedCategories.length > 0) { filtered = filtered.filter((wish) => { const wishCategories = categorizeWishMultiple(wish) return selectedCategories.some((selectedCategory) => wishCategories.some((wishCategory) => wishCategory.name === selectedCategory), ) }) } setFilteredWishes(filtered) }, [publicWishes, searchTerm, selectedCategories]) const toggleCategory = (categoryName: string) => { setSelectedCategories((prev) => prev.includes(categoryName) ? prev.filter((cat) => cat !== categoryName) : [...prev, categoryName], ) } const clearAllFilters = () => { setSelectedCategories([]) setSearchTerm("") } const hasActiveFilters = selectedCategories.length > 0 || searchTerm.length > 0 return (
{/* 星空背景 - 手機優化 */}
{[...Array(25)].map((_, i) => (
))}
{/* Header - 修復跑版問題 */}
{/* Logo 區域 - 防止文字換行 */}

心願星河

{/* 導航區域 */}
{/* Main Content - 手機優化 */}

聆聽每一份真實經歷

這裡收集了許多職場工作者願意公開分享的真實困擾和經驗

{/* Search Bar and Filter Button - 並排布局 */}
{/* Search Input */}
setSearchTerm(e.target.value)} className="pl-10 bg-slate-700/50 border-blue-600/50 text-white placeholder:text-blue-300 focus:border-cyan-400 text-sm md:text-base" />
{/* Filter Button */}
{/* Category Filters */} {showFilters && (

按問題類型篩選 支持多標籤

{hasActiveFilters && ( )}
{categories.map((category) => { const count = categoryStats[category.name] || 0 const isSelected = selectedCategories.includes(category.name) return ( ) })}
{/* Active Filters Display */} {selectedCategories.length > 0 && (
正在查看: {selectedCategories.map((categoryName) => { const category = categories.find((cat) => cat.name === categoryName) return ( toggleCategory(categoryName)} > {category?.icon} {categoryName} ) })}
)}
)} {/* Stats - 手機優化,增加隱私說明 */}
公開分享 {publicWishes.length} 個案例 {hasActiveFilters && `,找到 ${filteredWishes.length} 個相關經歷`} {publicWishes.length} 個公開案例 {hasActiveFilters && ` (${filteredWishes.length})`}
{privateCount > 0 && (
另有 {privateCount} 個私密案例用於分析 {privateCount} 個私密案例
)}
{privateCount > 0 && (

私密案例不會顯示在此頁面,但會納入問題洞察分析,幫助了解整體趨勢

)}
{/* Wishes Grid - 手機優化 */} {filteredWishes.length > 0 ? (
{filteredWishes.map((wish) => ( ))}
) : publicWishes.length === 0 ? (

{totalWishes > 0 ? "還沒有人公開分享經歷" : "還沒有人分享經歷"}

{totalWishes > 0 ? `目前有 ${totalWishes} 個案例,但都選擇保持私密。成為第一個公開分享的人吧!` : "成為第一個分享工作困擾的人,幫助更多人找到解決方案"}

) : (

沒有找到相關案例

{hasActiveFilters ? "試試調整篩選條件,或分享你的獨特經歷" : "試試其他關鍵字,或分享你的困擾"}

{hasActiveFilters && ( )}
)}
) }