announcements 2026-11-02

We are open sourcing https://github.com/WhimsicalCode/uni.style, a compile-time CSS library for ClojureScript and Clojure that we built for Whimsical. • Style without leaving your markup. Tailwind-style utilities like (s/flex) and (s/p 8) go right in your components, and macros turn them into static atomic CSS. • Plain Clojure, checked at compile time. Utilities are ordinary calls and constants, so your editor and clj-kondo understand them. Invalid or runtime values fail the build, not the page. • Predictable, composable styles. Styles are values: pass them as props and merge them with s/c. For each property, the last style wins regardless of source order. • Themes and tokens built in. s/def-token and s/def-theme give you design tokens and nestable themes backed by CSS variables. Fixed cascade layers keep overrides in order. • Every state, inline. Modifiers like s/hover, s/focus-visible, s/media and s/container wrap utilities in place and nest freely. • Fast and built to scale. Styles ship as one static, deduplicated stylesheet, with nothing generated at runtime. It stays small as the codebase grows, and the same styles render on the server too. The approach is very similar to Tailwind’s, just better in two important ways - (1) last-style wins semantics and (2) style in real code rather than pseudo-syntax.

❤️ 2
🎉 21

Whoa, I like this! Nice job!

1

What do you mean by "very similar to Tailwind" ?

Oh neat! Tailwind without Tailwind.

Nice!! Were you Tailwind users before? Have you replaced it entirely with UniStyle? Do you miss anything?

I’ve used tailwind for some side projects but not for Whimsical app. We used to do just inline styles with JS for hover and other interactive states. Then we tried a variation of macro based style map->class generation and ultimately arrived to this approach which stuck and has been awesome DX without any real downsides. UniStyle pretty much does everything Tailwind can, with some deliberate differences (ie. px everywhere instead of Tailwind spacing units) and of course the 2 major benefits i mentioned above. Also I think theming system in UniStyle is better than what’s built into Tailwind (dark: modifier just doesn’t make sense to me and I’m not sure anybody actually uses it for anything serious).

3

https://github.com/avanelsas/bareblog Write and publish a static blog on any server or GitHub Pages. I built it because I wanted a real-world app for my web components library, with a set of features I couldn't find in existing static blog generators. Very happy with the result! Features • Markdown posts • Serverless comments using babashka and Google Sheets, with approval and email notifications • Cover images • Live code examples in combined code blocks • Post series (e.g. 1 of 5) • Tags with cleanup support (e.g. CLojurescript -> ClojureScript) • Six blog templates: Journal, Notebook, Magazine, Longform, Diary, Essay • Theme support (8 themes included) • Animations: page transitions, reading progress, and block scroll-in effects • Atom feed For a working example, including comments, see my https://avanelsas.github.io/foggy-glasses/static-site-comments-using-babashka-and-google-sheets/ blog.

7
1