Skip to content

ClojureScript examples and demos of UI components from the Google Closure Library

License

Notifications You must be signed in to change notification settings

ludwinas/gcl-space

Repository files navigation

GCL-Space

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!

What is it?

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.

Ok, but why?

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 elements
  • goog.style — Set multiple CSS properties in one call
  • goog.ui — Full UI component suite: menus, dialogs, tree views, rich text editor

Hopefully these demos can convince you to try them out sometime :)

Development

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 dev

Then open http://localhost:1111 in your browser.

Contributing

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!

About

ClojureScript examples and demos of UI components from the Google Closure Library

Topics

Resources

License

Stars

Watchers

Forks