// Messages + Activity Report — owner/sitter chat thread with photo updates, // walk reports, scheduled visit reference. const photoBG = window.photoBG; function MessagesPage({ mode = 'thread' }) { return (
palpet
Y
); } const iconBtn2 = { width:38,height:38,borderRadius:12,border:'none',background:'transparent', cursor:'pointer',display:'grid',placeItems:'center',color:'#5d4d3a', }; function ChatList() { const convs = [ {id:1, name:'みかこさん', last:'お写真3枚お送りしました!とても元気でした 🐕', time:'15:42', unread:0, active:true, photo:'peach'}, {id:2, name:'たくみさん', last:'お疲れさまでした。次回もぜひお願いします!', time:'昨日', unread:0, active:false, photo:'warm'}, {id:3, name:'ゆりさん', last:'ご依頼ありがとうございます。日程について...', time:'5/18', unread:2, active:false, photo:'sage'}, {id:4, name:'けんとさん', last:'メッセージありがとうございます', time:'5/15', unread:0, active:false, photo:'cream'}, ]; return ( ); } function ChatThread() { return (
{/* Thread header */}
みかこさん ✓ 本人確認
訪問中 ・ 散歩中
{/* Messages */}
おはようございます! 5分後にお宅に到着予定です 🏠 おはようございます!よろしくお願いします 🙏 ごはんを完食しました!お水もしっかり飲んでいます。 ありがとうございます!普段通りで安心しました 😊 ちょうど良い運動量だったみたいで、今は満足げにくつろいでいます。
あと5分ほどで予定時刻になります。お見送りで終了予定です!
{/* Composer */}
メッセージを入力...
); } const DateDivider = ({label}) => (
{label}
); const Msg = ({from, name, time, children}) => { const isMe = from === 'me'; return (
{!isMe && (
)}
{!isMe && name &&
{name}さん
}
{children}
{time}{isMe && ' ・ 既読'}
); }; const PhotoMsg = ({from, name, time, tone, caption, route}) => { const isMe = from === 'me'; return (
{!isMe &&
}
{!isMe && name &&
{name}さん
}
{route && ( )}
{caption &&
{caption}
}
{time}
); }; const ActivityCard = ({title, time, type, detail, stats}) => { const colorMap = { 'start':['var(--c-primary-soft)','var(--c-primary-deep)'], 'walk-start':['#D9ECDC','#5E9C6C'], 'walk-end':['#D9ECDC','#5E9C6C'], 'complete':['#FBE9B8','#C8973A'], }; const iconMap = { 'start':Icons.Heart,'walk-start':Icons.Sparkle, 'walk-end':Icons.Check,'complete':Icons.Star, }; const [bg,fg] = colorMap[type] || ['var(--c-bg-alt)','#7a6a55']; const I = iconMap[type] || Icons.Sparkle; return (
{title}
{time}
{detail &&
{detail}
} {stats && (
{stats.map(([k,v],i)=>(
{k}
{v}
))}
)}
); }; function BookingRail() { return ( ); } window.MessagesPage = MessagesPage;