{"id":13760423,"url":"https://github.com/day8/re-com","last_synced_at":"2026-02-02T00:08:55.890Z","repository":{"id":18608089,"uuid":"21813295","full_name":"day8/re-com","owner":"day8","description":"A ClojureScript library of reusable components for Reagent","archived":false,"fork":false,"pushed_at":"2026-01-02T04:44:18.000Z","size":7619,"stargazers_count":821,"open_issues_count":52,"forks_count":142,"subscribers_count":30,"default_branch":"master","last_synced_at":"2026-01-22T12:07:24.893Z","etag":null,"topics":["clojurescript","re-frame","react","reagent","reagent-components","ui-components"],"latest_commit_sha":null,"homepage":"https://re-com.day8.com.au","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/day8.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"mike-thompson-day8"}},"created_at":"2014-07-14T08:54:29.000Z","updated_at":"2026-01-02T04:44:22.000Z","dependencies_parsed_at":"2023-11-22T20:27:07.305Z","dependency_job_id":"c2a8ee91-7a1e-4613-a233-91e251f37571","html_url":"https://github.com/day8/re-com","commit_stats":{"total_commits":1535,"total_committers":47,"mean_commits":"32.659574468085104","dds":0.6710097719869708,"last_synced_commit":"fcebaeefbe87c664222d50b69bdfc1b3faa05db8"},"previous_names":[],"tags_count":126,"template":false,"template_full_name":null,"purl":"pkg:github/day8/re-com","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/day8%2Fre-com","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/day8%2Fre-com/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/day8%2Fre-com/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/day8%2Fre-com/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/day8","download_url":"https://codeload.github.com/day8/re-com/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/day8%2Fre-com/sbom","scorecard":{"id":328295,"data":{"date":"2025-08-11","repo":{"name":"github.com/day8/re-com","commit":"956e45cc68f44bb134b80b3498f23e328e0af9de"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":2,"reason":"Found 3/12 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/continuous-deployment-workflow.yml:1","Warn: no topLevel permission defined: .github/workflows/continuous-integration-workflow.yml:1","Warn: no topLevel permission defined: .github/workflows/docs-workflow.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: license.txt:0","Info: FSF or OSI recognized license: MIT License: license.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/continuous-deployment-workflow.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-deployment-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/continuous-deployment-workflow.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-deployment-workflow.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/continuous-deployment-workflow.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-deployment-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/continuous-deployment-workflow.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-deployment-workflow.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/continuous-deployment-workflow.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-deployment-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/continuous-deployment-workflow.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-deployment-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/continuous-deployment-workflow.yml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-deployment-workflow.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/continuous-deployment-workflow.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-deployment-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/continuous-deployment-workflow.yml:82: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-deployment-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/continuous-deployment-workflow.yml:108: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-deployment-workflow.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/continuous-deployment-workflow.yml:120: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-deployment-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/continuous-integration-workflow.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-integration-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/continuous-integration-workflow.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-integration-workflow.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/continuous-integration-workflow.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-integration-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/continuous-integration-workflow.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-integration-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/continuous-integration-workflow.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-integration-workflow.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/continuous-integration-workflow.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/continuous-integration-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docs-workflow.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/docs-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docs-workflow.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/docs-workflow.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docs-workflow.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/docs-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docs-workflow.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/docs-workflow.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docs-workflow.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/docs-workflow.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docs-workflow.yml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/day8/re-com/docs-workflow.yml/master?enable=pin","Warn: containerImage not pinned by hash: .devcontainer/Dockerfile:7: pin your Docker image by updating mcr.microsoft.com/devcontainers/java:21 to mcr.microsoft.com/devcontainers/java:21@sha256:42276632ab472376937d66ebc3101eaf0beeb6e30e19290be746f2b49da52e9a","Info:   0 out of  14 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   9 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"31 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-x9w5-v3q2-3rhw","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-434g-2637-qmqr","Warn: Project is vulnerable to: GHSA-49q7-c7j4-3p7m","Warn: Project is vulnerable to: GHSA-977x-g7h5-7qgw","Warn: Project is vulnerable to: GHSA-f7q4-pwc6-w24p","Warn: Project is vulnerable to: GHSA-fc9h-whq2-v747","Warn: Project is vulnerable to: GHSA-vjh7-7g9h-fjfh","Warn: Project is vulnerable to: GHSA-273r-mgr4-v34f","Warn: Project is vulnerable to: GHSA-r7qp-cfhv-p84w","Warn: Project is vulnerable to: GHSA-74fj-2j2h-c42q","Warn: Project is vulnerable to: GHSA-pw2r-vq6v-hr8c","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-7x7c-qm48-pq9c","Warn: Project is vulnerable to: GHSA-rc3x-jf5g-xvc5","Warn: Project is vulnerable to: GHSA-82v2-mx6x-wq7q","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-h7cp-r72f-jxh6","Warn: Project is vulnerable to: GHSA-v62p-rq8g-8h59","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-25hc-qcg6-38wj","Warn: Project is vulnerable to: GHSA-qm95-pgcg-qqfq","Warn: Project is vulnerable to: GHSA-cqmj-92xf-r6r9","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-fhg7-m89q-25r3","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T02:59:20.492Z","repository_id":18608089,"created_at":"2025-08-18T02:59:20.492Z","updated_at":"2025-08-18T02:59:20.492Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28891441,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T21:06:44.224Z","status":"ssl_error","status_checked_at":"2026-01-29T21:06:42.160Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clojurescript","re-frame","react","reagent","reagent-components","ui-components"],"created_at":"2024-08-03T13:01:09.930Z","updated_at":"2026-02-02T00:08:55.877Z","avatar_url":"https://github.com/day8.png","language":"Clojure","readme":"\u003c!--  [![CI](https://github.com/day8/re-com/workflows/ci/badge.svg)](https://github.com/day8/re-com/actions?workflow=ci)\n[![CD](https://github.com/day8/re-com/workflows/cd/badge.svg)](https://github.com/day8/re-com/actions?workflow=cd)\n[![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/day8/re-com?style=for-the-badge)](https://github.com/day8/re-com/tags) --\u003e\n[![Clojars Project](https://img.shields.io/clojars/v/re-com.svg?style=for-the-badge\u0026logo=clojure\u0026logoColor=fff)](https://clojars.org/re-com)\n[![GitHub issues](https://img.shields.io/github/issues-raw/day8/re-com?style=for-the-badge\u0026logo=github)](https://github.com/day8/re-com/issues)\n[![GitHub pull requests](https://img.shields.io/github/issues-pr/day8/re-com?style=for-the-badge\u0026logo=github)](https://github.com/day8/re-com/pulls)\n[![License](https://img.shields.io/github/license/day8/re-com.svg?style=for-the-badge)](license.txt)\n\n# re-com\n\nA ClojureScript library of UI components for [Reagent](http://reagent-project.github.io). \n\nre-com provides:\n\n* familiar UI widgetry **components** such as dropdowns, date pickers, popovers, tabs, etc.\n* layout **components**, which arrange widgets vertically and horizontally, within\n  splitters, etc. Plus components\n  which put borders around their children. These various pieces can be arbitrarily nested\n  to create sophisticated layouts.\n* a mostly [Bootstrap](http://getbootstrap.com/) look, mixed with\n  some [Material Design Icons](http://zavoloklom.github.io/material-design-iconic-font/icons.html).\n\nIn short, re-com attempts to provide the UI basics needed to build a desktop-class SPA app.\n\n## Warning: No Mobile Focus\n\nNone of the components have been designed with mobile in mind. We said we had a desktop app focus, right?\n\nNeither have we been worried too much about code size because other design goals have\ntaken precedence. To give you some idea, our main demo app which includes every component, plus all demo\ncode and plenty of yadda yadda explanatory strings, comes to about 167K compressed when\nusing `:optimizations :advanced` (700K uncompressed).\nThat number includes ReactJS plus the ClojureScript libs and runtime. So, everything.\nNote:  these numbers no longer match the demo app. We wanted to show off some of the debug features in our demo app, \nso we backed away from fully advanced, minified compilation. \n\n## So, Without Ado Being Any Furthered ...\n\nStart by [looking at the demo](https://re-com.day8.com.au), it:\n  - Provides detailed documentation for each component\n  - Provides interactive pages showing component use and flexibility.\n\n## Navigating The Source\n\nWhen running the demo app, look to the right of each page's title, and you'll see hyperlinks\nthat will take you to the associated source code.  That's a convenient way to navigate to either\nthe components themselves or the demo code.\n\nWhen browsing the code, look in the `src` directory or this repo, you'll notice\ntwo subdirectories:\n\n  - src/re-com - the library itself - the components\n  - src/re-demo - the demo app, which documents the components and shows how to use them\n\nThere's also:\n  - `run/resources/public` contains assets (CSS, fonts, JS) that you'll likely need if you are developing an app based on `re-com`\n  - `test/` with cljs.test suites for many components (e.g., box_test.cljs, selection_list_test.cljs).\n  - `docs/` containing notes about development tools and release procedures (note: the demo app has detailed documentation on each component).\n  - `scripts/` with utilities (e.g., `add-at-macro` for adding the `at` macro to legacy codebases)\n\n## Useful Commands\n\nTo run these commands, you'll need these programs installed on your machine:\n\n- [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm])\n- [clojure](https://clojure.org/guides/install_clojure)\n- [babashka](https://github.com/babashka/babashka#installation)\n\n1. Getting The Repo\n\n\n   ```shell\n   git clone https://github.com/day8/re-com.git\n   ```\n\n   ```shell\n   cd re-com\n   ```\n\n2. Compiling And Running The Demo\n\n   ```shell\n   bb watch\n   ```\n\n   This will prepare the demo, by doing:\n     - a clean\n     - a compile\n   \n   Wait until `[:demo] Build completed.` is displayed in the console indicating\n   the dev HTTP server is ready.\n    \n   Now you can open [`http://localhost:3449/`](http://localhost:3449/) in your\n   browser.\n\n3. Run The (erm, modest) Tests\n   \n   ```shell\n   bb test\n   ```\n   \n   This will:\n     - clean\n     - compile the tests\n     - compile in release mode as a basic optimized build check\n\n4. Run or Debug the tests:\n   \n   ```shell\n   bb watch\n   ```\n\n5. Deploy The Demo App To S3 bucket\n   \n   This will only work if you have the right credentials in your env:\n   ```shell\n   bb deploy-aws\n   ```\n\n## Using re-com\n\nFor 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).\n\nre-com is available from clojars. Add it to your project.clj dependencies:\n\n[![Clojars Project](https://img.shields.io/clojars/v/re-com.svg)](https://clojars.org/re-com)\n\nYou 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.\n\nYou'll then need to include these asset folders in your app:\nhttps://github.com/day8/re-com/tree/master/run/resources/public/assets\n\nAs far as your `index.html` is concerned, take inspiration from here:\nhttps://github.com/day8/re-com/tree/master/run/resources/public\n\nIn particular, you'll need bootstrap (assumedly via a CDN):\n```html\n\u003clink rel=\"stylesheet\" href=\"//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.css\"\u003e\n```\n\nAnd a reference to these two CSS files (make sure `re-com.css` appears after `bootstrap.css`):\n\n```html\n\u003clink rel=\"stylesheet\" href=\"assets/css/material-design-iconic-font.min.css\"\u003e\n\u003clink rel=\"stylesheet\" href=\"assets/css/re-com.css\"\u003e\n```\n\nAnd a reference to the Roboto fonts (but this can be overridden relatively easily):\n\n```html\n\u003clink href=\"http://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic\" rel=\"stylesheet\" type=\"text/css\"\u003e\n\u003clink href='http://fonts.googleapis.com/css?family=Roboto+Condensed:400,300' rel='stylesheet' type='text/css'\u003e\n```\n\nReagent comes bundled with a matching version of ReactJS,\nso you don't need to include it explicitly.\n\n\n## MVC\n\nIf you decide to use re-com, consider also using [re-frame](https://github.com/day8/re-frame)\n(an MVC-ish framework).\n\nAlthough `re-frame` and `re-com` can be used independently, they dovetail well together.\n\n## Related projects\n\n[re-com-tailwind](https://github.com/BnMcGn/re-com-tailwind) - an edition of re-com that is compatible with tailwindcss\n[re-frame-template](https://github.com/day8/re-frame-template) - start a re-com project with one command: `lein new re-frame +re-com`\n\n\n## The Missing Components\n\n* menus - there's a dropdown, but no cascading menus\n* accordion\n* maybe a dockable LHS navbar\n* drag and drop.\n* animations / transitions.  We have ideas.  They seem clunky.\n* Focus management - When the user presses tab, to which field does focus move?\n\n## Helping\n\n1. Where the docs are wrong or fall short, write up something better. Because\n   our docs take the form of an app written in ClojureScript using re-com, you're actually\n   exercising your knowledge of re-com as you do this.\n2. See the list of missing components above. You'll have to produce the\n   component itself, including a params spec, plus the extra page in the demo app.\n3. Test re-com on new browsers and iron out any quirks.  Our focus is strictly Chrome.\n\nWhen creating new components, we have found it useful to use the CSS from existing\nJavaScript projects (assuming their licence is compatible with MIT) and then\nreplace the JavaScript with ClojureScript. Reagent really is very nice.\n\nAlso, please refer to [CONTRIBUTING.md](https://github.com/day8/re-com/blob/master/CONTRIBUTING.md) for further \ndetails on creating issues and pull requests.\n\n\n### License\n\nCopyright © 2015-2025 Michael Thompson\n\nDistributed under The MIT License (MIT) - See LICENSE.txt\n\n","funding_links":["https://github.com/sponsors/mike-thompson-day8"],"categories":["Clojure"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fday8%2Fre-com","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fday8%2Fre-com","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fday8%2Fre-com/lists"}