// pages.jsx — Services / Company / Contact / Privacy pages const SERVICES_DATA = [ { n: '01', t: 'コーポレートサイト制作', en: 'Corporate Website', note: '/ 公開まで2〜3ヶ月', body: [ '企業の信頼を伝える「顔」となるサイトを、情報設計から構築までワンストップで。', 'ヒアリング、競合調査、サイトマップ設計、デザイン、CMS実装、公開、運用引き継ぎまでを一気通貫で担当。WordPress / microCMS / 静的サイトジェネレータなど、運用体制に応じた技術選定をします。' ], deliver: ['情報設計(IA)','ワイヤーフレーム','UIデザイン','CMS実装','SEO初期設定','公開・運用引継ぎ','問い合わせフォーム','解析計測設定'] }, { n: '02', t: 'LP制作', en: 'Landing Page', note: '/ 4〜6週間', body: [ 'CV最大化を起点に、コピー・構成・デザインまで一気通貫で制作します。', '広告流入を前提にしたファーストビュー設計、ストーリーラインの組み立て、CTA配置、フォーム最適化までセットで。広告運用と並走することで、改善仮説を素早く回します。' ], deliver: ['コピーライティング','ストーリーボード設計','UIデザイン','フォーム実装','AB検証準備','広告連携','計測設計','改善レポート'] }, { n: '03', t: 'ECサイト制作', en: 'E-Commerce', note: '/ 3〜4ヶ月', body: [ 'Shopify / 自社ECどちらにも対応。ブランド体験と運用負荷を両立する設計を行います。', '商品撮影や原稿制作、決済・物流フローのレギュレーション、CRM・LINE連携、メールマーケまで含めた「売れる仕組み」を組み立てます。' ], deliver: ['Shopify構築','テーマカスタマイズ','商品登録','決済・物流連携','CRM設計','LP/特集ページ','メルマガ設計','運用マニュアル'] }, { n: '04', t: 'Webマーケティング支援', en: 'Web Marketing', note: '/ 最低3ヶ月', body: [ '広告運用、CRM、コンテンツSEOを横断で支援します。', 'ツールの導入だけで終わらせず、毎月の数値レビューと打ち手の意思決定を一緒に行います。マーケ専任を抱えていない企業の「外部マーケ部」として機能します。' ], deliver: ['広告運用代行','LP改善','CRM設計','メールシナリオ','SNS運用支援','数値レポート','改善仮説の立案','月次MTG'] }, { n: '05', t: 'SEO対策', en: 'SEO', note: '/ 6ヶ月推奨', body: [ '検索意図のリサーチを起点に、コンテンツとサイト構造を整えていきます。', 'テクニカルSEO監査、内部リンク再設計、サイト速度改善、コンテンツ制作運用までを継続的に。一過性の対策ではなく、検索流入を「資産」として積み上げる方針です。' ], deliver: ['キーワード設計','テクニカル監査','内部リンク設計','コンテンツ制作','記事リライト','構造化データ','順位レポート','改善ロードマップ'] }, { n: '06', t: '保守運用', en: 'Maintenance', note: '/ 月次契約', body: [ 'サイト公開後の更新・改善・障害対応を、月次定額プランで継続的にサポート。', '軽微な更新代行から、CMSバージョン管理、セキュリティ監視、改善提案、AB検証まで、ご利用状況に合わせて柔軟に運用します。' ], deliver: ['更新代行','セキュリティ監視','バックアップ','障害対応','改善提案','月次レポート','SSL/ドメイン管理','CMS保守'] } ]; function ServicesPage() { return (
{SERVICES_DATA.map((s) => (
Service / {s.n}

{s.t}{s.en}

{s.body.map((p, i) =>

{p}

)}
主な提供物
    {s.deliver.map((d, i) =>
  • {d}
  • )}
))}

どのサービスが合うか、
ご一緒に考えます。

サービスを組み合わせたご相談、
段階的な導入のご相談も歓迎です。

{e.preventDefault();navigate('contact');}}> 相談する
); } function CompanyPage() { return (
Company
株式会社バラエティーズ
VARIETIES, Inc.
CEO
永井祥司
Address
東京都西東京市富士町4−2−7
Tel
050-1793-8686
平日 10:00–18:00
Business
  • ウェブサイトの企画・制作
  • ウェブコンテンツの企画・制作・運営
  • インターネットサービスの企画・開発
  • Webマーケティング支援
  • マーケティングリサーチ
  • EC・通信販売支援
  • デジタル戦略支援
Established
2021年2月21日
Philosophy

堅実なものづくりと、
真摯な伴走を。

派手なものを作るより、長く役に立つものを作りたい。
目立つことより、信頼されることを大切にしたい。
少人数だから、ひとつひとつのお仕事に正面から向き合えます。

お気軽にお問い合わせください。

); } const PRIVACY_SECTIONS = [ { title: '1. 個人情報の取得', body: [ '当社は、お問い合わせ、サービスのお申し込み、各種ご相談への対応に必要な範囲で、会社名、お名前、メールアドレス、電話番号、お問い合わせ内容等の個人情報を取得することがあります。', '取得にあたっては、利用目的をできる限り明確にし、適正かつ公正な手段により行います。' ] }, { title: '2. 個人情報の利用目的', body: [ '取得した個人情報は、お問い合わせへの回答、見積り・提案・契約手続き、サービス提供、保守運用、請求・事務連絡、サービス改善および当社からのご案内のために利用します。', '法令により認められる場合を除き、あらかじめご本人の同意を得ることなく、上記目的の範囲を超えて利用することはありません。' ] }, { title: '3. 個人情報の第三者提供', body: [ '当社は、法令に基づく場合、生命・身体・財産の保護のために必要な場合、またはご本人の同意がある場合を除き、個人情報を第三者に提供しません。', '業務遂行上、外部事業者に取り扱いを委託する場合は、委託先を適切に選定し、必要かつ適切な監督を行います。' ] }, { title: '4. 個人情報の安全管理', body: [ '当社は、個人情報の漏えい、滅失、毀損、不正アクセス等を防止するため、必要かつ適切な安全管理措置を講じます。', 'また、個人情報を取り扱う関係者に対し、適切な管理が行われるよう努めます。' ] }, { title: '5. Cookie・アクセス解析について', body: [ '当サイトでは、利便性向上、利用状況の把握、サイト改善のためにCookieやアクセス解析ツールを使用する場合があります。', 'Cookieにより取得される情報には、通常、特定の個人を識別できる情報は含まれません。ブラウザの設定によりCookieの利用を拒否することができます。' ] }, { title: '6. 開示・訂正・利用停止等', body: [ 'ご本人から個人情報の開示、訂正、追加、削除、利用停止等のご希望があった場合は、ご本人確認のうえ、法令に従って適切に対応します。', '手続きに関するお問い合わせは、下記窓口までご連絡ください。' ] }, { title: '7. プライバシーポリシーの変更', body: [ '当社は、法令の改正、サービス内容の変更、運用上の必要に応じて、本プライバシーポリシーを変更することがあります。', '重要な変更がある場合は、当サイト上で告知します。' ] } ]; function PrivacyPolicyPage() { return (
{PRIVACY_SECTIONS.map((section) => (

{section.title}

{section.body.map((p, i) =>

{p}

)}
))}

8. お問い合わせ窓口

本ポリシーおよび個人情報の取り扱いに関するお問い合わせは、以下の窓口までご連絡ください。

Company
株式会社バラエティーズ
Address
東京都西東京市富士町4−2−7
Tel
050-1793-8686
平日 10:00–18:00
); } function ContactPage() { const [form, setForm] = useState({ company: '', name: '', email: '', phone: '', subject: 'コーポレートサイト制作', message: '', agree: false, turnstileToken: '' }); const [errs, setErrs] = useState({}); const [sent, setSent] = useState(false); const [sending, setSending] = useState(false); const [submitError, setSubmitError] = useState(''); const turnstileRef = useRef(null); const widgetIdRef = useRef(null); useEffect(() => { const container = turnstileRef.current; if (!container) return; const renderWidget = () => { if (widgetIdRef.current !== null) return; widgetIdRef.current = window.turnstile.render(container, { sitekey: '0x4AAAAAADNYypZeWWEzOtpd', callback: (token) => { setForm((f) => ({ ...f, turnstileToken: token })); setErrs((er) => ({ ...er, turnstile: undefined })); }, 'error-callback': () => { setForm((f) => ({ ...f, turnstileToken: '' })); setErrs((er) => ({ ...er, turnstile: 'Bot 検証に失敗しました。再度お試しください。' })); }, }); }; if (window.turnstile) { renderWidget(); } else { const timer = setInterval(() => { if (window.turnstile) { clearInterval(timer); renderWidget(); } }, 100); return () => clearInterval(timer); } return () => { if (widgetIdRef.current !== null && window.turnstile) { window.turnstile.remove(widgetIdRef.current); widgetIdRef.current = null; } }; }, []); const onChange = (k) => (e) => { const v = e.target.type === 'checkbox' ? e.target.checked : e.target.value; setForm((f) => ({ ...f, [k]: v })); if (errs[k]) setErrs((er) => ({ ...er, [k]: undefined })); }; const onSubmit = async (e) => { e.preventDefault(); const er = {}; if (!form.company.trim()) er.company = '会社名をご入力ください'; if (!form.name.trim()) er.name = 'お名前をご入力ください'; if (!form.email.trim()) er.email = 'メールアドレスをご入力ください'; else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(form.email)) er.email = 'メールアドレスの形式が正しくありません'; if (form.message.trim().length < 10) er.message = 'お問い合わせ内容は10文字以上でご入力ください'; if (!form.agree) er.agree = 'プライバシーポリシーへの同意が必要です'; if (!form.turnstileToken) er.turnstile = 'Bot 検証を完了してください'; if (Object.keys(er).length) { setErrs(er); return; } setSending(true); setErrs({}); setSubmitError(''); try { const res = await fetch('https://next-app-navy-ten.vercel.app/api/contact', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(form) }); const data = await res.json(); if (!res.ok || data.error) { if (data.error === 'validation_failed' && data.issues) { setErrs(data.issues); setSubmitError('入力内容をご確認ください。'); } else { setSubmitError(data.message || '送信中にエラーが発生しました。'); } setSending(false); return; } setSent(true); window.scrollTo({ top: 0, behavior: 'smooth' }); } catch (err) { setSubmitError('送信に失敗しました。ネットワークを確認してください。'); setSending(false); } }; return (
{sent ? (

お問い合わせを受け付けました。

ご入力いただいたメールアドレスに、自動返信を送信しました。
通常2営業日以内に、担当よりご連絡いたします。
お急ぎの場合は 050-1793-8686 までお電話ください。

) : (
{errs.company &&
{errs.company}
}
{errs.name &&
{errs.name}
}
{errs.email &&
{errs.email}
}