// ─── HOME / TOP page ─────────────────────────────────────────────
function Home({ go, tweaks }) {
return (
);
}
// ── Hero ────────────────────────────────────────────────────
function Hero({ go, tweaks }) {
const textFirst = tweaks?.heroLayout !== "visual";
return (
SEO対策依頼 新規受付中
WordPress · テーマ · プラグイン
{textFirst ?
:
}
);
}
function MiniStat({ label, value }) {
return (
);
}
function HeroText({ go }) {
return (
OUR PROMISE
Webの力で、
価値ある未来を
共に創る。
WordPress 保守・開発、Webシステム構築、SEO対策まで。
事業の継続に必要な「技術」を、同じ温度で支えるパートナーです。
);
}
function HeroVisual({ go }) {
return (
OUR PROMISE
Webの力で、価値ある未来を共に創る。
WordPress保守・開発、Webシステム構築、SEO対策まで。事業の継続に必要な「技術」を、同じ温度で支えるパートナーです。
);
}
// ── Ticker bar: scrolling marquee of competencies
function TickerBar() {
const items = [
"WordPress Maintenance", "Next.js Development", "Core Web Vitals", "AWS Infrastructure",
"Technical SEO", "Headless CMS", "GitHub CI/CD", "24/365 Monitoring", "Accessibility",
"Schema Markup", "ACF Pro", "GraphQL"];
return (
{[...items, ...items, ...items].map((it, i) =>
{it}
)}
);
}
// ── Services Overview ───────────────────────────────────────
function ServicesOverview({ go }) {
return (
事業の継続に、
必要なすべて。>}
lead="作って終わらせない。保守・改修・改善・拡張まで、一つの窓口で。6つの専門分野で、貴社のWebを長期で支えます。" />
{SERVICES.map((s, i) =>
)}
);
}
function ServiceTile({ service, index, go }) {
const canGo = !!service.page;
return (
canGo && go(service.page)}
className={`service-tile${!canGo ? " service-tile--no-link" : ""}`}>
{service.num} · {service.cat}
{service.title}
{service.summary}
{canGo &&
詳細を見る →
}
);
}
// ── Approach: text-led manifesto ────────────────────────────
function ApproachSection() {
const principles = [
{ n: "壱", t: "設計に、誠実であること。", d: "流行の装飾より、ユーザーが迷わない構造を。短期のCVより、長期で効く情報設計を優先します。" },
{ n: "弐", t: "技術を、手段として使うこと。", d: "最新のフレームワークを導入することが目的ではありません。事業のゴールから逆算し、過不足ない技術選定を。" },
{ n: "参", t: "公開後から、始めること。", d: "Webは「納品」ではなく「運用」で価値が決まる。公開後こそ、継続的な計測・改善・伴走を。" }];
return (
APPROACH
我々の、
三つの信条。
技術力で差別化する以上に、「考え方」で選ばれるチームでありたい。
{principles.map((p, i) =>
)}
);
}
// ── Works preview (TOP) ─────────────────────────────────────
function WorksPreview({ go }) {
const featured = WORKS.slice(0, 3);
return (
SELECTED WORKS
数字で語れる実績。
{featured.map((w, i) => )}
);
}
function CaseCard({ work, index, go }) {
return (
go("works")} className="case-card">
CASE {String(index + 1).padStart(2, "0")}
{work.metric}
{work.year} · {work.industry}
{work.title}
{work.scope.map((s) =>
{s}
)}
);
}
// ── Process ─────────────────────────────────────────────────
function ProcessSection() {
return (
ご依頼から公開・運用まで。}
lead={透明な進行で、プロジェクトを一緒に歩きます。} />
{PROCESS.map((p, i) =>
STEP {p.step}
{p.title}
{p.desc}
{p.days}
)}
);
}
// ── Stats ───────────────────────────────────────────────────
function StatsSection() {
return (
);
}
// ── Why Us ──────────────────────────────────────────────────
function WhyUs() {
const reasons = [
{ t: "代表が、直接あたる。", d: "窓口担当と開発者の間で情報が薄まらない。仕様・工数・優先度の判断が、速い。" },
{ t: "データを共有します。", d: "ブラックボックス化しません。納品物は貴社の資産、他社への乗り換えもブロックしません。" },
{ t: "計測の上で、提案する。", d: "GA4 / Search Console / CrUX を運用に組み込み、感覚ではなく数字で議論します。" },
{ t: "BCP・SLA にも対応。", d: "大手企業の情報セキュリティ審査・取引先調査にも、丁寧に対応します。" }];
return (
{reasons.map((r, i) =>
REASON {String(i + 1).padStart(2, "0")}
{r.t}
{r.d}
)}
);
}
function FAQSection() {
return (
);
}
Object.assign(window, { Home });