Update kjol website with C documentation
This commit is contained in:
18
CLAUDE.md
18
CLAUDE.md
@@ -46,7 +46,7 @@ drag a JavaScript bundler along for a CSS file.
|
||||
### go/ — module `kjol`
|
||||
|
||||
Packages, imported as `kjol/<name>`: `appenv basic chrono config csv dbutil finance httputil
|
||||
l4g security snailmail validation jsbundler tw`, plus the **gowasm** web-UI engine (`vdom`
|
||||
l4g lexer security snailmail validation jsbundler tw`, plus the **gowasm** web-UI engine (`vdom`
|
||||
`wasmruntime` `rsc` `wasmdevserver`, and `webui` — a Tailwind-styled component kit ported
|
||||
from `jsruntime/uikit`; author components in pure Go compiled to WebAssembly; all
|
||||
stdlib-only), and `cmd/{bundle,twcss,migrate,loc,passgen,typecheck,wasmgen}`.
|
||||
@@ -54,6 +54,14 @@ stdlib-only), and `cmd/{bundle,twcss,migrate,loc,passgen,typecheck,wasmgen}`.
|
||||
`jsbundler` is the **JS** build (TSX → Solid → esbuild + the goja SSR bake). It was called
|
||||
`webbundler`.
|
||||
|
||||
`lexer` is syntax highlighting: source in, HTML with coloured spans out, `Highlight(lang, src)`
|
||||
plus `HighlightGo` / `HighlightC`. It is a lexer and not a parser on purpose — it degrades to
|
||||
escaped plain text rather than failing, and an unknown language is not an error. It is outside
|
||||
`webui` because it touches no DOM. **Its output is Tailwind class names**, so any stylesheet that
|
||||
has to render a code block must scan `lexer/**/*.go` — a build that forgets to still compiles and
|
||||
just renders the snippet unstyled (see `cmd/kjol-web/build.Tailwind`). The C tables deliberately
|
||||
mirror `c/lexer/lexer_c.c`; add a type to one, add it to the other.
|
||||
|
||||
**`cmd/kjol-web` is the website**: the landing page and documentation for the whole
|
||||
codebase, and the runnable example of both web layers. It is its own nested module (so its
|
||||
go-chart / esbuild / goja deps stay out of kjol) and it is ONE server running TWO
|
||||
@@ -61,6 +69,12 @@ front-ends — `/wasm/*` is the Go→WebAssembly SPA, `/js/*` is the Solid SPA,
|
||||
static+wasm landing page whose **Layers menu** is the site's primary navigation. Its
|
||||
README is the map. Anything user-visible you add to kjol should show up there, running.
|
||||
|
||||
The kit is documented on ONE page per layer (`/wasm/components`, `/js/components`), not one page
|
||||
per source file — a reader hunting for a date picker should not have to guess whether it was filed
|
||||
under forms or overlays. `componentGroups()` / `COMPONENT_GROUPS` is the single list that drives
|
||||
the sections, the sidebar that jumps to them, and the index. Build it with `go run ./server -build`;
|
||||
the steps live in the `build` package (a library, because the server imports it).
|
||||
|
||||
Build / test (run from repo root):
|
||||
```
|
||||
go -C go build ./...
|
||||
@@ -93,7 +107,7 @@ signals, never inside a render closure. Floating panels share one positioning en
|
||||
`bg-surface` / `border-line` / `text-ink` / `text-accent`, and a `.dark` class on `<html>`
|
||||
re-points what those mean. A theme is a dozen CSS variables rather than four hundred class
|
||||
strings, and `dark:` on every component is exactly the thing to avoid. The Go and Solid kits use
|
||||
the **same token names on purpose** — change `surface` once and both halves of a site move.
|
||||
the **same token names on purpose** — change `surface` once and both layers of a site move.
|
||||
|
||||
Only two things still need a `dark:` variant, because no re-pointed token can fix them: a
|
||||
coloured tint (a `red-50` wash is invisible on a near-black surface) and a fill that inverts (the
|
||||
|
||||
Reference in New Issue
Block a user