They thought the Library was a dangerous place because of all the magical books, which was true enough, but what made it really one of the most dangerous places there could ever be was the simple fact that it was a library.
— Terry Pratchett, Guards! Guards!
A collection of examples and demos that showcase (most of) the goog.ui components that ship with ClojureScript via the Google Closure Library.
Google stopped active development of GCL in Agust 2024, but the Clojure team has been maintaining a fork.
I was inspired by David Nolen's Clojure/Conj 2025 talk "A ClojureScript Survival Kit". In the talk he points out that GCL ships with a full suite of UI components - which are effectively available to every ClojureScript developer with zero additional dependencies - and yet they're rarely used!
I asked myself: what's stopping me from using them? The answer was predictable: it's easy to get lost in the documentation of a UI library without being able to read example code and interact with the components themselves.
Sure, the technology is dated, and it's understandable to reach for a modern UI library in most cases, but for quick experiments or extremely lean projects they're still useful tools to have at hand.
For instance, consider:
goog.positioning— Position tooltips and popovers relative to anchor elementsgoog.style— Set multiple CSS properties in one callgoog.ui— Full UI component suite: menus, dialogs, tree views, rich text editor
Hopefully these demos can convince you to try them out sometime :)
Note
the GCL repo (Clojure team fork) is included as a submodule in this project for ease of consultation by humans and LLMs. You don't need it to run the project.
Start the development server:
npm run devThen open http://localhost:1111 in your browser.
This project is the result of a few days of obsession and lengthy conversations with Claude, as a result there are plenty of places where it could use more polish. Feedback, issues, and PRs are welcome!