/* Shared small components — corporate nav version */
const Arrow = ({dir='r'}) => (
);
const Placeholder = ({ tag, dark=false, style, className='' }) => (
);
const Eyebrow = ({ children, style }) => {children};
/** Global nav — pages, not anchors */
const NAV = [
{ href: 'index.html', label: 'ホーム', sub: '当社の想い' },
{ href: 'service.html', label: 'サービス', sub: 'Services', sub2: [
{ href: 'service-leadership.html', t: 'リーダー育成', d: 'ファシリ型研修・DiSC・1on1・会議設計' },
{ href: 'service-ai.html', t: 'AI活用支援', d: '各種AI研修/AI顧問' },
{ href: 'service-hyoka.html', t: '評価のしくみづくり', d: '人事評価制度の設計・運用' },
{ href: 'service.html', t: 'サービス一覧を見る', d: '3つの柱をまとめて' }
] },
{ href: 'about.html', label: '会社概要', sub: 'About' },
{ href: '../blog.html', label: 'ブログ', sub: 'Journal', external: true },
{ href: 'contact.html', label: 'お問い合わせ', sub: 'Contact' }
];
const Topbar = ({ current='index.html' }) => {
const [open, setOpen] = React.useState(false);
React.useEffect(() => {
document.body.classList.toggle('nav-open', open);
return () => document.body.classList.remove('nav-open');
}, [open]);
const close = () => setOpen(false);
return (
);
};
/** Page hero — lighter than LP hero, still branded */
const PageHero = ({ kicker, title, lead }) => (
{kicker}
{title}
{lead &&
{lead}
}
);
/** Breadcrumb */
const Breadcrumb = ({ trail }) => (
);
const StickyCTA = () => (
);
const Footer = () => (
);
/** Group orientation band — placed right under the hero on each top page */
const GROUP_CARDS = [
{ key:'sr', kind:'社会保険労務士法人', scope:'日常の労務実務・手続き・給与計算・社員対応・助成金・就業規則・freee運用', href:'/index.html' },
{ key:'co', kind:'株式会社', scope:'チーム育成・各種AI研修・AI顧問・人事評価制度づくり', href:'/co/index.html' }
];
const GroupBand = ({ current='co' }) => (
GROUP COMPANIES
ひとつの「労務ニュース」、
2つの専門会社。
実務を担う社会保険労務士法人と、育成・AI・制度づくりを担う株式会社の二法人体制。グループとして連携し、実務と戦略の両輪でお応えします。
{GROUP_CARDS.map(c => {
const cur = c.key === current;
const inner = (
<>
{c.kind}
{cur && ● ご覧中}
労務ニュース
{c.scope}
{cur
?
いまご覧になっているサイトです
:
このサイトを見る }
>
);
const base = {flex:'1 1 340px', maxWidth:480, borderRadius:'var(--radius)', padding:'30px 30px', display:'flex', flexDirection:'column'};
return cur
?
{inner}
:
{e.currentTarget.style.transform='translateY(-6px)';e.currentTarget.style.boxShadow='0 22px 44px -18px rgba(20,32,60,.34)';}}
onMouseLeave={e=>{e.currentTarget.style.transform='';e.currentTarget.style.boxShadow='0 14px 36px -18px rgba(20,32,60,.28)';}}>{inner};
})}
);
Object.assign(window, { Arrow, Placeholder, Eyebrow, Topbar, PageHero, Breadcrumb, StickyCTA, Footer, GroupBand });