/* global React */ const { useState, useEffect, useRef } = React; // ========== Reveal on scroll ========== function Reveal({ children, delay = 0, className = "" }) { const ref = useRef(null); const [seen, setSeen] = useState(false); useEffect(() => { const el = ref.current; if (!el) return; // Fallback: show after a short delay even if IO doesn't fire const fallback = setTimeout(() => setSeen(true), 1200 + delay); if (typeof IntersectionObserver === "undefined") { setSeen(true); return () => clearTimeout(fallback); } const io = new IntersectionObserver( (entries) => { entries.forEach((e) => { if (e.isIntersecting) { clearTimeout(fallback); setTimeout(() => setSeen(true), delay); io.unobserve(el); } }); }, { threshold: 0.05, rootMargin: "0px 0px -40px 0px" } ); io.observe(el); return () => { io.disconnect(); clearTimeout(fallback); }; }, [delay]); return (
{children}
); } // ========== Logo (matches business card / square logo) ========== // ========== Logo ========== function Logo({ size = 28 }) { return ( Gifty ); } // ========== Nav ========== function Nav({ onContactClick }) { const [scrolled, setScrolled] = useState(false); useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 20); window.addEventListener("scroll", onScroll, { passive: true }); return () => window.removeEventListener("scroll", onScroll); }, []); return ( ); } // ========== Hero ========== function Hero() { return (
Gifty — based in MIYAZAKI FOR LOCAL SHOPS & CREATORS

アイデアと で、 ファンに愛される お店づくりを。

あなたの悩みに寄り添い、一緒に解決する伴走型サポート

アイデアと仕組みでファンを育て、忙しい毎日に「余白」を生み出します。

無料で相談する Giftyの想いを読む
01
SERVICE
公式LINE構築・運用
ファンづくり
02
SERVICE
Instagram 活用支援
認知・ブランディング
03
SERVICE
業務効率化・システム
余白の創出
); } // ========== Marquee ========== function Marquee() { const items = [ "アイデアと、しくみで。", "公式LINE 構築・運用", "Instagram 活用支援", "業務効率化・システム", "宮崎 / オンライン全国対応", "一緒に悩み、一緒に解決する。", "ファンに、愛されるお店へ。", ]; const row = (
{items.map((t, i) => ( {t} ))}
); return (
{row}{row}
); } // ========== Concept ========== function Concept() { const phil = [ { num: "PHILOSOPHY / 01", cls: "c1", en: "Counselor Style", title: "悩みの“背景”まで、一緒に潜る。", desc: "Giftyは課題解決の業者ではなく、心の重荷を一緒に下ろすパートナーでありたい。表面的なToDoではなく、なぜそれが滞っているのか。その背景まで丁寧に聞かせてください。話しているうちに、自分でも見えていなかった答えが見つかることがあります。", }, { num: "PHILOSOPHY / 02", cls: "c3", en: "Freedom & Space", title: "数字より、自由な時間を。", desc: "売上を必死に追うことが、いつしか目的になっていませんか。Giftyが大切にしているのは「好きな人と、やりたいことをやる」ための余白。ITで生まれた時間を、家族との夕食や、新しい商品の試作に。あなたの“余白”を一緒に守ります。", }, { num: "PHILOSOPHY / 03", cls: "c4", en: "Welcome the Detour", title: "寄り道から、生まれるもの。", desc: "最短距離が正解とは限りません。雑談から生まれたアイデア、回り道で出会ったお客様、効率化からあえて外した手仕事。感謝と助け合いをベースに、寄り道から生まれる豊かさを大切にしたい。だから、急かしません。", }, { num: "PHILOSOPHY / 04", cls: "c6", en: "Role of Each", title: "本業は、あなたが。ITは、僕が。", desc: "あなたが本業に100%注ぎ込めるように、僕はITとSNSの全部を肩代わりします。「自分でもやらなきゃ」と思わなくて大丈夫。広く深い知識でカバーするので、苦手なことは丸ごと預けてください。役割を分けることで、両方が前に進めます。", }, ]; return (
Concept

「やらなきゃ」を手放し、
」に没頭する。

「インスタやLINE、やったほうがいいのは分かってるんだけど…」
これまで、そんな経営者さんの悩みをたくさん聞いてきました。

苦手なことや、時間がなくてできないことは、僕に任せてください。一緒に仕組みを作り、少しずつ成果が出てくると、苦痛だった「やらなきゃ」が、ファンと繋がる「やりたい」に変わっていきます。

本業もSNSも、もっと無理なく楽しめるペースを一緒に見つけましょう。

{phil.map((p, i) => (
{p.num}

{p.en} {p.title}

{p.desc}

))}
); } Object.assign(window, { Reveal, Nav, Hero, Marquee, Concept, Logo });