// share-card.jsx — Offscreen-rendered shareable image, captured via html2canvas
const ShareCard = React.forwardRef(({ reading, dateStr }, ref) => {
const dreamCard = window.getDreamCardByRoman ? window.getDreamCardByRoman(reading.roman) : null;
const primary = window.STICKERS.find(s => s.id === reading.primary_symbol)
|| window.STICKERS.find(s => s.id === "moon-crescent");
const secondary = reading.secondary_symbol
? window.STICKERS.find(s => s.id === reading.secondary_symbol)
: null;
const hasImage = !!reading._image;
const aura = reading.aura_color || { hex: "#C89255", name: "蜜色" };
return (
{[
[10,12],[88,8],[6,42],[92,38],[14,70],[90,76],[20,90],[80,92],
[50,6],[30,30],[68,28],[40,86],[60,84],[24,52],[78,60],
].map(([x,y], i) => (
✦
))}
{dateStr}
DREAM DIAGNOSIS · 夢診断書
夢 診 断
YUMESHINDAN · MORNING ANALYSIS
{dreamCard?.image &&

}
DREAM TYPE
{reading.type_code}
{reading.roman}
{hasImage ? (
<>
{secondary &&
{secondary.render()}
}
{primary.render()}
>
) : (
<>
{secondary &&
{secondary.render()}
}
{primary.render()}
>
)}
✦
✧
·
{reading.card_name_en}
{reading.dream_type_jp || reading.card_name_jp}
MATCH {reading.match_score}%
{/* aura + diagnosis */}
DREAM ANALYSIS
{reading.main_message}
今 日 の ア ド バ イ ス
{reading.advice}
✦ YUMESHINDAN · A MORNING DREAM ANALYSIS ✦
);
});
window.ShareCard = ShareCard;