/** * rSheet module — collaborative spreadsheets powered by dSheet. * * Embeds @fileverse-dev/dsheet as an external app within the rSpace shell. */ import { Hono } from "hono"; import { renderExternalAppShell } from "../../server/shell"; import { getModuleInfoList } from "../../shared/module"; import type { RSpaceModule } from "../../shared/module"; const routes = new Hono(); // ── Routes ── routes.get("/", (c) => { const space = c.req.param("space") || "demo"; return c.html( renderExternalAppShell({ title: `Spreadsheets — rSheet | rSpace`, moduleId: "rsheet", spaceSlug: space, modules: getModuleInfoList(), appUrl: `/rsheet/app`, appName: "dSheet", theme: "dark", }) ); }); routes.get("/app", (c) => { const space = c.req.param("space") || "demo"; const collabWs = process.env.COLLAB_WS_URL || "wss://collab-ws.rnotes.online"; return c.html(` rSheet — ${space}
Loading spreadsheet...
`); }); // ── Module definition ── export const sheetModule: RSpaceModule = { id: "rsheet", name: "rSheet", icon: "\u{1F4CA}", description: "Collaborative spreadsheets", scoping: { defaultScope: "space", userConfigurable: false }, routes, externalApp: { url: "/rsheet/app", name: "dSheet", }, outputPaths: [ { path: "", name: "Spreadsheets", icon: "\u{1F4CA}", description: "Collaborative spreadsheet workspace", }, ], onboardingActions: [ { label: "Open Spreadsheet", icon: "\u{1F4CA}", description: "Create or edit a collaborative spreadsheet", type: "navigate" as any, href: "/rsheet", }, ], };