A ClojureScript library of UI components for Reagent.
re-com provides:
In short, re-com attempts to provide the UI basics needed to build a desktop-class SPA app.
None of the components have been designed with mobile in mind. We said we had a desktop app focus, right?
Neither have we been worried too much about code size because other design goals have
taken precedence. To give you some idea, our main demo app which includes every component, plus all demo
code and plenty of yadda yadda explanatory strings, comes to about 167K compressed when
using :optimizations :advanced
(700K uncompressed).
That number includes ReactJS plus the ClojureScript libs and runtime. So, everything.
Note: these numbers no longer match the demo app. We wanted to show off some of the debug features in our demo app,
so we backed away from fully advanced, minified compilation.
Start by looking at the demo, it:
When running the demo app, look to the right of each page's title, and you'll see hyperlinks that will take you to the associated source code. That's a convenient way to navigate to either the components themselves or the demo code.
When browsing the code, look in the src
directory or this repo, you'll notice
two subdirectories:
There's also:
run/resources/public
contains assets (CSS, fonts, JS) that you'll likely need if you are developing an app based on re-com
test/
with cljs.test suites for many components (e.g., box_test.cljs, selection_list_test.cljs).docs/
containing notes about development tools and release procedures (note: the demo app has detailed documentation on each component).scripts/
with utilities (e.g., add-at-macro
for adding the at
macro to legacy codebases)To run these commands, you'll need these programs installed on your machine:
Getting The Repo
git clone https://github.com/day8/re-com.git
cd re-com
Compiling And Running The Demo
bb watch
This will prepare the demo, by doing:
Wait until [:demo] Build completed.
is displayed in the console indicating
the dev HTTP server is ready.
Now you can open http://localhost:3449/
in your
browser.
Run The (erm, modest) Tests
bb ci
This will:
Run or Debug the tests:
bb watch
Deploy The Demo App To S3 bucket
This will only work if you have the right credentials in your env:
bb deploy-aws
For a fast start, use https://github.com/day8/re-frame-template
to create your own app (add the +re-com
option when using re-frame-template).
re-com is available from clojars. Add it to your project.clj dependencies:
You should now be able to require the re-com.core
namespace, which exposes all of the API functions documented in the re-demo
example app.
You'll then need to include these asset folders in your app: https://github.com/day8/re-com/tree/master/run/resources/public/assets
As far as your index.html
is concerned, take inspiration from here:
https://github.com/day8/re-com/tree/master/run/resources/public
In particular, you'll need bootstrap (assumedly via a CDN):
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.css">
And a reference to these two CSS files (make sure re-com.css
appears after bootstrap.css
):
<link rel="stylesheet" href="assets/css/material-design-iconic-font.min.css">
<link rel="stylesheet" href="assets/css/re-com.css">
And a reference to the Roboto fonts (but this can be overridden relatively easily):
<link href="http://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic" rel="stylesheet" type="text/css">
<link href='http://fonts.googleapis.com/css?family=Roboto+Condensed:400,300' rel='stylesheet' type='text/css'>
Reagent comes bundled with a matching version of ReactJS, so you don't need to include it explicitly.
If you decide to use re-com, consider also using re-frame (an MVC-ish framework).
Although re-frame
and re-com
can be used independently, they dovetail well together.
re-com-tailwind - an edition of re-com that is compatible with tailwindcss
re-frame-template - start a re-com project with one command: lein new re-frame +re-com
When creating new components, we have found it useful to use the CSS from existing JavaScript projects (assuming their licence is compatible with MIT) and then replace the JavaScript with ClojureScript. Reagent really is very nice.
Also, please refer to CONTRIBUTING.md for further details on creating issues and pull requests.
Copyright © 2015-2025 Michael Thompson
Distributed under The MIT License (MIT) - See LICENSE.txt
Can you improve this documentation? These fine people already did:
mike-thompson-day8, Gregg8, Isaac Johnston, Mike Thompson, Daniel Compton, Gregg Ramsey, Kimo Knowles, ken restivo, Ben McGunigle, paintparty, blak3mill3r & Colin YatesEdit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
Ctrl+k | Jump to recent docs |
← | Move to previous article |
→ | Move to next article |
Ctrl+/ | Jump to the search field |