/* ============================================================ NemakiWare — page sections ============================================================ */ function SectionHead({ eyebrow, title, sub, center = false, badge = null }) { return (
{eyebrow} {badge}

{title}

{sub &&

{sub}

}
); } /* ---- 0a. Pain strip (top of page, below hero) ------------------ */ function PainStrip({ t }) { const p = t.pains; return (

{p.eyebrow}

{p.items.map((x, i) => (

{x}

))}
); } /* ---- 0. Foundation (general principle) ------------------------ */ function FoundationSection({ t }) { const f = t.foundation; return (
{f.points.map((p, i) => ( 0{i + 1}

{p.t}

{p.d}

))}
); } /* ---- 1. The RAG problem (was: shift) -------------------------- */ function ShiftSection({ t }) { const s = t.shift; return (
{s.eyebrow}

{s.intro}

{s.title}

{s.body}

{s.before_label}
    {s.before.map((x, i) => (
  • ×{x}
  • ))}
{s.after_label}
    {s.after.map((x, i) => (
  • {x}
  • ))}
); } /* ---- 2. Pillars ----------------------------------------------- */ function PillarsSection({ t }) { const p = t.pillars; const icons = ["search", "layers", "plug", "cube", "cycle", "monitor"]; return (
{p.items.map((it, i) => (

{it.t}

{it.d}

))}
); } /* ---- 3. Permission model + flow ------------------------------- */ function PermissionSection({ t }) { const p = t.perm; const flowIcons = ["users", "search", "shield", "check"]; const steps = [ { ic: "users", label: p.flow_user, sub: p.flow_q }, { ic: "search", label: p.flow_search, sub: null }, { ic: "shield", label: p.flow_acl, sub: p.flow_acl_d, accent: true }, { ic: "check", label: p.flow_result, sub: null }, ]; return (
{steps.map((st, i) => (
{st.label}
{st.sub &&
{st.sub}
}
{i < steps.length - 1 &&
}
))}
{p.points.map((pt, i) => (

{pt.t}

{pt.d}

))}
); } /* ---- 4. MCP & RAG --------------------------------------------- */ function McpSection({ t }) { const m = t.mcp; return (
{m.tools_label}
    {m.tools.map((tool, i) => (
  • {tool.n} {tool.d}
  • ))}
JSON-RPC 2.0 · HTTP / SSE
{m.api_label}
{`POST /api/v1/cmis/repositories
        /bedroom/rag/search

{ "query": "annual report",
  "topK": 5, "minScore": 0.6 }`}
{m.providers_label}
{m.providers.map((pr, i) => (
{pr.n} {pr.t}

{pr.d}

))}
); } /* ---- 5. Team sharing → Lineage (Beta) ------------------------- */ function LineageSection({ t }) { const l = t.lineage; const importIcons = { "Slack": "users", "Box": "cube", "Google Drive": "database", "OneDrive": "database" }; return (
{l.betaNote}} />
{l.import_label}
{l.import.map((s, i) => (
{s}
))}
{l.mid_d}
{l.lineage_label}
{l.lineageTargets.map((s, i) => (
{s}
))}

{l.caption}

); } /* ---- 6. CMIS heritage ----------------------------------------- */ function CmisSection({ t }) { const c = t.cmis; return (
{c.bind_label}
{c.bindings.map((b, i) => {b})}
{c.items.map((it, i) => (
{it}
))}
); } /* ---- 7. Architecture / stack ---------------------------------- */ function StackSection({ t }) { const s = t.stack; const d = s.diagram; return (
{d.agent}{d.agentSub}
{d.ui} · {d.uiSub}
{d.core} {d.coreSub}
{d.emb}{d.embSub}
{d.db}{d.dbSub}
{d.solr}{d.solrSub}
{s.stackTable.map((row, i) => ( ))}
{row.k} {row.v}
{s.auth_label}
    {s.auth.map((a, i) => (
  • {a}
  • ))}
); } /* ---- 8. Quickstart / open source ------------------------------ */ function QuickStartSection({ t }) { const q = t.quick; return (
{q.steps.map((st, i) => ( {st.n}
{st.t}
{st.c}
))}
{q.ports_label}
{q.ports.map((p, i) => ( ))}
{p.s} :{p.p} {p.d}
github.com/aegif/NemakiWare
{q.license}
); } /* ---- 9. Contact ----------------------------------------------- */ function ContactSection({ t }) { const c = t.contact; return (
{c.eyebrow}

{c.title}

{c.body}

{c.services.map((sv, i) => (

{sv.t}

{sv.d}

))}
); } Object.assign(window, { PainStrip, FoundationSection, ShiftSection, PillarsSection, PermissionSection, McpSection, LineageSection, CmisSection, StackSection, QuickStartSection, ContactSection, });