All Projects → citizennet → Purescript Ocelot

citizennet / Purescript Ocelot

Licence: apache-2.0
An opinionated component library for Halogen apps

Programming Languages

purescript
368 projects

Projects that are alternatives of or similar to Purescript Ocelot

Website
Website and documentation for Radix.
Stars: ✭ 45 (-44.44%)
Mutual labels:  design-system, component-library
Backpack
Backpack Design System
Stars: ✭ 396 (+388.89%)
Mutual labels:  design-system, component-library
comento-ui
Vue UI components used in Comento
Stars: ✭ 25 (-69.14%)
Mutual labels:  component-library, design-system
Components
Primer React components
Stars: ✭ 1,133 (+1298.77%)
Mutual labels:  design-system, component-library
Carbon Components Svelte
Svelte implementation of the Carbon Design System
Stars: ✭ 685 (+745.68%)
Mutual labels:  design-system, component-library
sodium-ui
Sodium is a simple, modular and customizable web component library to build elegant and accessible UI pieces for your React Application.
Stars: ✭ 23 (-71.6%)
Mutual labels:  component-library, design-system
Hiui
HIUI is a solution that is adequate for the fomulation and implementation of interaction and UI design standard for front, middle and backend.
Stars: ✭ 366 (+351.85%)
Mutual labels:  design-system, component-library
maker
Maker Design System by Square
Stars: ✭ 43 (-46.91%)
Mutual labels:  component-library, design-system
Pivotal Ui
Pivotal's design system & component library
Stars: ✭ 637 (+686.42%)
Mutual labels:  design-system, component-library
Circuit Ui
SumUp's component library for the web
Stars: ✭ 625 (+671.6%)
Mutual labels:  design-system, component-library
mayflower
Mayflower Mono Repo (react and pattern lab and documentation)
Stars: ✭ 17 (-79.01%)
Mutual labels:  component-library, design-system
Orbit
React components of open-source Orbit design system by Kiwi.com
Stars: ✭ 774 (+855.56%)
Mutual labels:  design-system, component-library
polarwind
Envoy's product component library
Stars: ✭ 17 (-79.01%)
Mutual labels:  component-library, design-system
marble
Marble is the design system used by The Metropolitan Museum of Art 🏛
Stars: ✭ 14 (-82.72%)
Mutual labels:  component-library, design-system
smores-react
🍭 Marshmallow React components
Stars: ✭ 34 (-58.02%)
Mutual labels:  component-library, design-system
Operational Ui
Building blocks for effective operational interfaces
Stars: ✭ 258 (+218.52%)
Mutual labels:  design-system, component-library
anv-ui-components
AnyVision React components library
Stars: ✭ 35 (-56.79%)
Mutual labels:  component-library, design-system
vf-core
A (primarily CSS) framework that targets needs of life science websites and services
Stars: ✭ 16 (-80.25%)
Mutual labels:  component-library, design-system
React95
🌈🕹 Refreshed Windows 95 style UI components for your React app
Stars: ✭ 4,877 (+5920.99%)
Mutual labels:  design-system, component-library
Clarity
Clarity is a scalable, accessible, customizable, open source design system built with web components. Works with any JavaScript framework, built for enterprises, and designed to be inclusive.
Stars: ✭ 6,398 (+7798.77%)
Mutual labels:  design-system, component-library

Ocelot CircleCI

Ocelot is an opinionated component library for Halogen-based PureScript applications. Components generally obey a few guidelines:

  • Components bundle with scoped CSS and can be embedded pre-styled even in applications with existing CSS
  • "Blocks" are simple HTML/CSS chunks for things like buttons and form controls; "Components" are Halogen components that encapsulate behaviors and states
  • Blocks and components should be built, styled, and rigorously tested in this sandbox and imported into apps like Wildcat

Philosophy

This repository holds the blocks and components we use in CitizenNet applications. These atoms can be built, styled, and rigorously tested without being forced into the context of the application. That allows for faster fixes and iteration in a sandbox environment so we can isolate errors, and more importantly, it allows easy access for business and design teams to verify our components without having to wait for a staging release or build anything locally.

This separation of concerns carries the same benefits as functional programming generally and fits well with using Tailwind (functional css) and PureScript. The Wildcat repository focuses on building a robust, usable application for our end users, whereas the CN UI repository focuses on providing self-contained, well-tested design atoms that can be dropped into any Wildcat screen and just as easily be updated or replaced.

There are four relevant parts to this project:

  • src: contains the pre-built components and UI styles we can drop into Wildcat screens
  • test: contains snapshot and logic tests for our components
  • css: contains our modified version of Tailwind, built and minified with dead code elimination
  • ui-guide: contains a small PureScript site demonstrating our components and styling so we can visually test implementations
  • dist: contains the built CSS to import into Wildcat, and an index.html file usable for local testing

Use

Preview & Testing

One of the major goals of this project is to provide a minimal environment to test the UI components we build and ensure the behaviors and styling are correct without coupling them to a particular screen in the app. Once the individual units are built and tested, we know we can safely import and use them in the app.

Developing

Both the PureScript and CSS folders have convenience scripts that will watch and rebuild files on save.

Publishing

One of the primary aims of this project is to provide a way for non-PureScript developers to view and test our components. That ability is provided by the generated documentation site. This site is automatically built by Circle CI on the gh-pages branch.

Our CSS, however, is not automatically built because it's on our master branch so we can bower install into Wildcat. We have to generate it on new builds to master.

To do that, ensure that any commit to the master branch is preceded by a call to npm run build-all:

yarn run build-all
git commit -m "..."
git push origin master

If you haven't changed the CSS, then feel free to use just yarn build-ui.

Releasing

To create a new release:

  1. Adjust the version in package.json. Some of our dependents rely on this version being correct.
  2. Submit the changes to master via a PR.
  3. Create a tag for the version.
    $ git tag $NEW_VERSION
    
  4. Push master and the tag to the repo.
    $ git push --tags origin master
    
  5. Create a release on GitHub for the tag. The description should document the changes in this new version.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].