oficina / estilo Public
| .amadan/ | ||
| .claude/ | ||
| base/ | ||
| brand/ | ||
| busy/ | ||
| callui/ | ||
| chrome/ | ||
| cmd/ | ||
| credits/ | ||
| homeconnect/ | ||
| implementation/ | ||
| internal/ | ||
| menu/ | ||
| savestatus/ | ||
| sky/ | ||
| theme/ | ||
| .gitignore | ||
| AGENTS.md | ||
| Makefile | ||
| README.md | ||
| go.mod | ||
| go.sum |
Estilo
Estilo is the CARLOS suite's shared design system, at amadan.net/oficina/estilo.git. It's a private Go module: pull it with authenticated Git and GOPRIVATE=amadan.net/oficina/estilo.git.
theme is Calma, the suite's look (AGENTS.md, "Theme"): theme.CSS() is the suite's theme and theme.ForApp(slug) an app's, with its accent from the colour ring in theme/apps.go. theme.FontHandler serves Onest, the typeface; link its fonts.css before the theme. brand holds the marks, and sky the seeded nebula for the sign-in, the team's home and the front page — never inside an app.
savestatus is a save-status indicator, already adopted by Docs and Slides. It renders state (saved, saving, retrying, failed) inside a polite status region for screen readers; callers supply the localized message text for each state.
homeconnect holds templates and data for Home account-connection and OAuth screens, being adopted by the shared home/connect flow and other apps. It carries no authentication logic — callers validate the destination and supply translated labels. The screens run without scripts.
base, menu and chrome are the shared chrome from the round-2 spec (docs/superpowers/specs/2026-09-23-shared-chrome.md on spec/shared-chrome): link styling; the one floating menu panel and the document menu bar, with menu.Shortcut for platform-correct shortcut labels; and the top bar, account menu, app switcher, error page and sign-in pages, with the per-app Appearance preference. Link the three stylesheets in that order, after tokens.css, the theme and brand.css. brand serves the app icons from Go. Docs adopted first and Sheets second, and Sheets' corrections are in: a menu row or bar action can be a link, a POST (menu.Item.Action) or a dialog opened by the platform's invoker command (menu.Item.Dialog); Bar.Actions is []chrome.Action; <div estilo-shell="fill"> is the full-height layout (the viewport less the 52px bar); and chrome.js closes every member of the one estilo-menus group, menubar menus included, on Escape (in the capture phase) and an outside click.
Permission and session logic stay app-owned. There is no shared component gallery yet.
Building
make test is the gate: a module-cache check (go mod verify, re-fetching anything damaged), go vet, a gofmt check, go build, then go test. savestatus's own tests run under Node.