• Stars
    star
    206
  • Rank 183,605 (Top 4 %)
  • Language
    TypeScript
  • License
    Apache License 2.0
  • Created over 5 years ago
  • Updated 11 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

LeafyGreen UI – LeafyGreen's React UI Kit

LeafyGreen UI

A library of React components, CSS patterns, and CLI tools for MongoDB's LeafyGreen Design System.

mongodb.design

Storybook

Release License

Getting Started

With LeafyGreen CLI

  1. Create or open a React project
  2. Install the LeafyGreen CLI
npm install -g @lg-tools/cli
  1. Install all, or some LeafyGreen components
lg install
lg install button combobox
  1. Import LeafyGreen components into your project
import Button from '@leafygreen-ui/button';
import { Combobox, ComboboxOptions } from '@leafygreen-ui/combobox';

Without CLI

  1. Create or open a React project
  2. Install individual LeafyGreen components using npm or yarn
yarn add @leafygreen-ui/button
  1. Import LeafyGreen components into your project
import Button from '@leafygreen-ui/button';

Packages

Package Latest Downloads
@leafygreen-ui/a11y version downloads
@leafygreen-ui/badge version downloads
@leafygreen-ui/banner version downloads
@leafygreen-ui/box version downloads
@leafygreen-ui/button version downloads
@leafygreen-ui/callout version downloads
@leafygreen-ui/card version downloads
@leafygreen-ui/checkbox version downloads
@leafygreen-ui/code version downloads
@leafygreen-ui/combobox version downloads
@leafygreen-ui/confirmation-modal version downloads
@leafygreen-ui/copyable version downloads
@leafygreen-ui/emotion version downloads
@leafygreen-ui/empty-state version downloads
@leafygreen-ui/expandable-card version downloads
@leafygreen-ui/form-footer version downloads
@leafygreen-ui/guide-cue version downloads
@leafygreen-ui/hooks version downloads
@leafygreen-ui/icon version downloads
@leafygreen-ui/icon-button version downloads
@leafygreen-ui/inline-definition version downloads
@leafygreen-ui/input-option version downloads
@leafygreen-ui/leafygreen-provider version downloads
@leafygreen-ui/lib version downloads
@leafygreen-ui/loading-indicator version downloads
@leafygreen-ui/logo version downloads
@leafygreen-ui/marketing-modal version downloads
@leafygreen-ui/menu version downloads
@leafygreen-ui/modal version downloads
@leafygreen-ui/number-input version downloads
@leafygreen-ui/pagination version downloads
@leafygreen-ui/palette version downloads
@leafygreen-ui/password-input version downloads
@leafygreen-ui/pipeline version downloads
@leafygreen-ui/polymorphic version downloads
@leafygreen-ui/popover version downloads
@leafygreen-ui/portal version downloads
@leafygreen-ui/radio-box-group version downloads
@leafygreen-ui/radio-group version downloads
@leafygreen-ui/ripple version downloads
@leafygreen-ui/search-input version downloads
@leafygreen-ui/segmented-control version downloads
@leafygreen-ui/select version downloads
@leafygreen-ui/side-nav version downloads
@leafygreen-ui/skeleton-loader version downloads
@leafygreen-ui/split-button version downloads
@leafygreen-ui/stepper version downloads
@leafygreen-ui/table version downloads
@leafygreen-ui/tabs version downloads
@leafygreen-ui/testing-lib version downloads
@leafygreen-ui/text-area version downloads
@leafygreen-ui/text-input version downloads
@leafygreen-ui/toast version downloads
@leafygreen-ui/toggle version downloads
@leafygreen-ui/tokens version downloads
@leafygreen-ui/tooltip version downloads
@leafygreen-ui/typography version downloads
@lg-tools/build version downloads
@lg-tools/cli version downloads
@lg-tools/create version downloads
@lg-tools/install version downloads
@lg-tools/link version downloads
@lg-tools/lint version downloads
@lg-tools/meta version downloads
@lg-tools/slackbot version downloads
@lg-tools/storybook version downloads
@lg-tools/storybook-decorators version downloads
@lg-tools/test version downloads
@lg-tools/update version downloads
@lg-tools/validate version downloads

Developer Setup

  1. Node >= 16.20.0 required.

    via homebrew with brew install node

    via nodejs installer

  2. Install Yarn >= 1.20.0.

    Yarn Installation documentation

  3. Clone the repository.

    # Navigate to the directory you'd like to clone the repository into
    $ cd ~/my/repositories
    
    # Clone the repository.
    
    # We recommend installing using the SSH address rather than the HTTPS one to make authentication easier for you. To set up SSH authentication with GitHub, see their guide: https://docs.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account
  4. Install dependencies and link packages.

    yarn run init

Use yarn build to rebuild all packages. Pass in a specific package name to rebuild select packages:

yarn build button icon

Additionally, pass in the --watch flag to rebuild packages on change.

Development

  1. Start up storybook to see all UI components that exist.

    yarn start

Development within an Application

To actively develop leafygreen-ui components within an application, the following script will link all leafygreen-ui components within your application to the local leafygreen-ui repository.

This will allow you to make changes to your local repository of leafygreen-ui and see those changes immediately reflected within your running application. This allows you to develop both in isolation (within leafygreen-ui) and in the context of your application.

To do this, clone this repository and navigate to the root directory (where package.json is located), then run the following:

yarn run link -- ${PATH_TO_APPLICATION}

The script does several things in order:

  1. This builds every leafygreen-ui component so they are ready to be linked

  2. It scans your application for any installed leafygreen-ui components in your node_modules/@leafygreen-ui folder. NOTE: If the package is new and unpublished/not installed, you will need to create a directory for the new component within your application inside node_modules/@leafygreen-ui before running this command.

  3. If any leafygreen-ui components are found then the script uses yarn link to link every node_modules/@leafygreen-ui module to your local leafygreen-ui repository.

After the script completes, you can make changes directly to the component in your local leafygreen-ui repository. Once you do this, run yarn build in the root of the leafygreen-ui repository and the changes will be visible on your running application.

create-leafygreen-app

An externally maintained script to bootstrap a React app with all Leafygreen UI components.

Create a new React app with Leafygreen UI components pre-installed

npx create-leafygreen-app@latest <project-name>

Create a new Next app

npx create-leafygreen-app@latest --next <project-name>

Install all Leafygreen UI components to an existing project

npx create-leafygreen-app@latest --packages-only

Creating New Component

Getting Started

To get started quickly and easily run yarn create-package my-new-package. When you run this command, we create a directory containing all of the boilerplate code that you'll need to start developing your new Component.

Note: it's important to follow the kebab-casing convention described above.

  • Add the new component to build.tsconfig.json
  • If you are using any leafygreen-ui dependencies in your new component, add the dependency to the component directory's tsconfig.json.
  • Run yarn run init to link all packages before starting development

Formatting and linting

When you run yarn fix, we do the following:

  • We run yarn prettier:fix so that we have consistently formatted code.
  • We run yarn eslint:fix to catch any syntax errors, unused variables, and any other easy-to-catch issues.

To fix all files in the repository, run the following:

yarn fix

To check if any files need formatting without automatically formatting them, run the following:

yarn prettier:check

To run linting without automatically fixing issues, run the following:

yarn eslint:check

Typechecking

To run typechecking without compiling the code, run the following:

yarn ts

Testing

To run the unit tests for our components, run the following:

yarn test

Committing

When making a PR that contains changes that should be included in a package's changelog, be sure to do so by running:

yarn changeset

This will generate a changes.json file, keeping track of version upgrades and update descriptions. We follow semver conventions for versioning, so each change will either be major, minor, or patch.

Make sure that the PR includes the changes made by running this command.

Publishing

  1. Merge the automatically generated Version Packages PR that will contain appropriate version bumps and changelog documentation.

  2. Push the tags from the release up to Github.

git push --follow-tags

Publishing Pre-releases

Read more in-depth pre-release guides here

Pre-releases let you publish an alpha/beta/next version of a component, allowing developers to test a component before fully releasing a component.

Let's imagine we want to publish a beta release of some component. Our work is being done on a branch called new-feature

  1. Create a new branch off your component branch git checkout -b pre-release
    • this makes sure your package updates stay independent
  2. Enter pre-release mode: yarn changeset pre enter beta (name can be next, beta, alpha, or any other name)
  3. Update package versions yarn changeset version
    • This will update any packages with existing changeset files to version X.Y.Z-beta.0 (or whatever name you used)
  4. Commit these updates git commit -am "Prerelease version packages"
  5. Build the component(s) you're pre-releasing yarn build <...components>
  6. Publish the prerelease with yarn changeset publish

Any new work you do should be done in the original (new-feature) branch. To publish a new pre-release version, pull the changes from new-feature into branch pre-release, and follow steps 3-5.

When new-feature is merged into main, you can safely delete the pre-release branch

Deploy gh-pages

You can deploy a static build of our Storybook site to gh-pages from the main branch.

  1. First be sure you've built a static version of Storybook with the script: build-storybook
  2. Then deploy to gh-pages: yarn release:site

To deploy to your own mirror of leafygreen-ui

  1. Run yarn demo:site [your_github_username].
  2. If you haven't built a static version of Storybook yet, you will be prompted to do so.
  3. You will be asked for confirmation before Storybook is published.

License

The source files in this repository are made available under the terms of the Apache License, version 2.0.

More Repositories

1

mongo

The MongoDB Database
C++
25,403
star
2

node-mongodb-native

The official MongoDB Node.js driver
TypeScript
9,953
star
3

mongo-go-driver

The Official Golang driver for MongoDB
Go
7,927
star
4

laravel-mongodb

A MongoDB based Eloquent model and Query builder for Laravel (Moloquent)
PHP
6,932
star
5

mongo-python-driver

PyMongo - the Official MongoDB Python driver
Python
4,045
star
6

mongoid

The Official Ruby Object Mapper for MongoDB
Ruby
3,922
star
7

mongo-csharp-driver

The Official C# .NET Driver for MongoDB
C#
3,038
star
8

mongo-java-driver

The official MongoDB drivers for Java, Kotlin, and Scala
Java
2,568
star
9

motor

Motor - the async Python driver for MongoDB and Tornado or asyncio
Python
2,318
star
10

mongo-php-library

The Official MongoDB PHP library
PHP
1,568
star
11

mongo-hadoop

MongoDB Connector for Hadoop
Java
1,519
star
12

mongo-ruby-driver

The Official MongoDB Ruby Driver
Ruby
1,422
star
13

mongo-rust-driver

The official MongoDB Rust Driver
Rust
1,268
star
14

mongodb-kubernetes-operator

MongoDB Community Kubernetes Operator
Go
1,136
star
15

mongo-php-driver-legacy

Legacy MongoDB PHP driver
PHP
1,093
star
16

js-bson

BSON Parser for node and browser
TypeScript
1,085
star
17

mongo-cxx-driver

C++ Driver for MongoDB
C++
1,005
star
18

mongo-tools

Go
971
star
19

homebrew-brew

The Official MongoDB Software Homebrew Tap
Ruby
901
star
20

mongo-php-driver

The Official MongoDB PHP driver
PHP
838
star
21

mongo-c-driver

The Official MongoDB driver for C language
C
794
star
22

docs

The MongoDB Documentation Project Source.
Java
726
star
23

mongo-spark

The MongoDB Spark Connector
Java
700
star
24

casbah

Casbah is now officially end-of-life (EOL).
Scala
514
star
25

mongo-snippets

snippets of code that might be useful for your mongodb deployment
C++
381
star
26

specifications

Specifications related to MongoDB
Python
375
star
27

bson-rust

Encoding and decoding support for BSON in Rust
Rust
368
star
28

cookbook

MongoDB recipes.
Ruby
354
star
29

pymodm

A Pythonic, object-oriented interface for working with MongoDB.
Python
351
star
30

libbson

ARCHIVED - libbson has moved to https://github.com/mongodb/mongo-c-driver/tree/master/src/libbson
C
343
star
31

mongo-perf

performance tools for mongodb
JavaScript
340
star
32

mongo-swift-driver

The official MongoDB driver for Swift
Swift
325
star
33

mongo-kafka

MongoDB Kafka Connector
Java
321
star
34

mongodb-enterprise-kubernetes

MongoDB Enterprise Kubernetes Operator
Dockerfile
320
star
35

mongo-scala-driver

Scala
286
star
36

mongo-efcore-provider

MongoDB Entity Framework Core Provider
C#
257
star
37

terraform-provider-mongodbatlas

Terraform MongoDB Atlas Provider: Deploy, update, and manage MongoDB Atlas infrastructure as code through HashiCorp Terraform
Go
224
star
38

mongodb-atlas-cli

MongoDB Atlas CLI and MongoDB CLI enable you to manage your MongoDB in the Cloud
Go
152
star
39

stitch-examples

MongoDB Stitch Examples
Java
138
star
40

mongodb-atlas-kubernetes

MongoDB Atlas Kubernetes Operator - Manage your MongoDB Atlas clusters from Kubernetes
Go
130
star
41

support-tools

For support tools to be shared publicly
Go
119
star
42

stitch-js-sdk

MongoDB Stitch JavaScript SDK
TypeScript
113
star
43

mongo-bi-connector-odbc-driver

ODBC driver for MongoDB Connector for Business Intelligence
C
106
star
44

mongo-azure

C#
103
star
45

amboy

Amboy -- A Go(lang) Job Queue Tool
Go
91
star
46

bsonspec.org

site for bsonspec.org
HTML
89
star
47

libmongocrypt

Required C library for Client Side and Queryable Encryption in MongoDB
C
87
star
48

terraform-aws-ecs-task-definition

A Terraform module for creating Amazon ECS Task Definitions
HCL
84
star
49

chatbot

MongoDB Chatbot Framework. Powered by MongoDB and Atlas Vector Search.
TypeScript
82
star
50

helm-charts

Smarty
80
star
51

go-client-mongodb-atlas

Go Client for MongoDB Atlas
Go
77
star
52

bson-ruby

Ruby Implementation of the BSON Specification (2.0.0+)
Ruby
77
star
53

docs-ecosystem

MongoDB Ecosystem Documentation
Python
76
star
54

mongo-java-driver-reactivestreams

The Java Reactive Stream driver for MongoDB
Java
73
star
55

stitch-android-sdk

MongoDB Stitch Android SDK
Java
57
star
56

mongodbatlas-cloudformation-resources

MongoDB Atlas CloudFormation Resources: Deploy, update, and manage MongoDB Atlas infrastructure as code through AWS CloudFormation
Go
54
star
57

winkerberos

A native Kerberos client implementation for Python on Windows
C
47
star
58

genny

🧞‍♀️ Grants 3 wishes. As long as those wishes are to generate load 🧞‍♂️
C++
46
star
59

docs-realm

Realm Database SDK documentation
Kotlin
43
star
60

bson-numpy

This project has been superseded by PyMongoArrow - https://github.com/mongodb-labs/mongo-arrow/tree/main/bindings/python
C
43
star
61

docs-tools

Common tools and content for MongoDB documentation projects.
Python
42
star
62

stitch-ios-sdk

Swift
42
star
63

swift-bson

pure Swift BSON library
Swift
41
star
64

signal-processing-algorithms

Python
38
star
65

mongo-hhvm-driver

MongoDB HHVM driver **Note, this driver is no longer maintained**
PHP
35
star
66

mongodb-vapor

MongoDB + Vapor integration
Swift
34
star
67

atlas-billing

JavaScript
33
star
68

design

Source code for MongoDB.design, LeafyGreen's official documentation site.
TypeScript
33
star
69

awscdk-resources-mongodbatlas

MongoDB Atlas AWS CDK Resources
TypeScript
31
star
70

mongo-jdbc-driver

JDBC Driver for MongoDB Atlas SQL interface
Java
31
star
71

mongo-java-driver-rx

The MongoDB Java RX driver is now officially end-of-life (EOL)
Java
30
star
72

atlas-app-services-examples

Example use cases for Atlas App Services
JavaScript
30
star
73

snooty

MongoDB Documentation front end
JavaScript
28
star
74

charts-embedding-examples

charts-embedding-examples
HTML
23
star
75

mongo-csharp-driver-jsondotnet

The C#/.NET driver will have a new component to integrate with JSON.NET that needs to live separately from the .NET driver itself.
C#
22
star
76

realm-practice

realm-node-practice & realm-swift-practice
Swift
22
star
77

mongo-csharp-analyzer

The MongoDB Analyzer is a free tool that helps you understand how your code translates into the MongoDB Query API.
C#
22
star
78

ftdc

utils for working with mongodb full-time diagnostic data capture files
Go
20
star
79

mongo-qa

General QA materials for Mongo
Java
19
star
80

curator

Curator -- a build and package automation tool
Go
19
star
81

anser

Data Transformation/Migration Tool
Go
19
star
82

marian

A search engine focused on documentation.
JavaScript
18
star
83

snooty-parser

Python
18
star
84

template-app-react-native-todo

Atlas Template Starter App - Use Device Sync from a React Native client application. This repo is generated from source code in https://github.com/mongodb-university/realm-template-apps
TypeScript
18
star
85

terraform-provider-mongodbatlas-archive

ARCHIVED ---- Hashicorp Terraform Provider for MongoDB Atlas - please use https://github.com/terraform-providers/terraform-provider-mongodbatlas
Go
17
star
86

docs-bi-connector

Makefile
16
star
87

kbson

Kotlin Multiplatform Bson Library
Kotlin
16
star
88

docs-compass

Python
16
star
89

academia-mongodb-lab-python

Lab using MongoDB with Python (PyMongo driver). Created for educational use by the MongoDB for Academia program.
Jupyter Notebook
16
star
90

mongo-odbc-driver

Rust
15
star
91

grip

Go
15
star
92

vault-plugin-secrets-mongodbatlas

ARCHIVED - Hashicorp Vault MongoDB Atlas Secrets Engine - Now hosted at https://github.com/hashicorp/vault-plugin-secrets-mongodbatlas/
Go
15
star
93

hacktoberfest2018

Hacktoberfest Repository for MongoDB
JavaScript
14
star
94

mongodb-atlas-service-broker

Implementation of the Open Service Broker API for MongoDB Atlas. Deploy this service to easily manage Atlas instances!
Go
14
star
95

snooty-vscode

TypeScript
14
star
96

docs-worker-pool

TypeScript
13
star
97

mongo-meta-driver

Ruby
13
star
98

docs-java

MongoDB Java driver documentation
Java
13
star
99

mongo-tools-common

Go
13
star
100

jasper

Jasper is a Process Management Framework
Go
13
star