npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@vitus-labs/coolgrid

v1.0.1-alpha.7

Published

Ultra flexible and extensible grid system inspired by Bootstrap grid, based on styled-components

Downloads

218

Readme

Coolgrid is ultra flexible and extensible grid system for React based on styled-components and heavily inspired by Bootstrap Grid system.

Documentation

Documentation can be found here.

Getting Started

Coolgrid is ultra-flexible and extensible grid system for React based on styled-components and heavily inspired by Bootstrap Grid System.

Coolgrid uses React and styled-components.

Motivation

There are several grid solutions but none of them have fit my needs so far. They were not enough extensible. With Coolgrid you can do basically whatever you want while writing less code and have fewer DOM elements in your application.

What are the advantages of using coolgrid?

  1. fewer DOM elements - each of the available components supports the property component, which accepts any valid HTML tag. So having a valid document structure might need fewer elements in the DOM. Or you can pass any valid React component and do much more!

  2. Breakpoint keys - there is no strict policy about it. Feel free to define as many breakpoints as you like. And that's not all. Feel free to name them the way you like. Do you prefer Bootstrap like naming xs, sm, md, lg, and xl? Or do you rather prefer more descriptive names like phone, tablet, desktop (or xsmall, small, medium, large, xlarge)?

  3. Breakpoint values - for defining the size of viewports, you can use any value. Just a number, you can use pixels, percentages, whatever you like. You should just know that number automatically converts to em units calculated from rootSize defined in theme (and fallbacks to the value of 16). The same applies to pixels.

  4. Container width - here applies the same rules as for breakpoints. There is just one more requirement. The keys defined for Container must be the same as the names of breakpoints.

  5. Context - Define behavior on Container or Row for all Cols inside. Coolgrid uses context on the background so you can change the whole grid by changing just one line property.

  6. A configurable number of columns - Bootstrap grid uses by default 12 columns. Coolgrid is highly configurable, so you can define as many columns as you like. Do you need 5 column grid? No problem!

  7. Customizable gaps between columns - Feel free to customize the size of gaps for your grid. No gaps, normal gaps, whatever your design needs.

  8. Customizable paddings inside Cols - You can customize paddings as well.

Installation

You can install ii with your preferred tool (yarn or npm).

# with yarn
yarn add @vitus-labs/coolgrid

# or with npm
npm install @vitus-labs/coolgrid --save

Dependencies

Coolgrid depends on the following packages which need to be installed as well.

| Package | version | | ----------------- | ------- | | react | >= 16.7 | | @vitus-labs/core | >= 0.2 | | styled-components | >= 4.0 |

Styled-components are a peer dependency of @vitus-labs/core.

ThemeProvider

Don't forget to add coolgrid theme config into your ThemeProvider.

import { ThemeProvider } from 'styled-components'
import { theme } from 'coolgrid'
// you can import default bootstrap theme settings or create yours.
;<ThemeProvider
  theme={{
    ...theme
    /* ...your theme */
  }}
>
  {/* ...your components */}
</ThemeProvider>

Alternatively you can put it directly to the root of theme object:

// you can import default bootstrap theme settings or create yours.

<ThemeProvider
  theme={{
    // default bootstrap configuration example
    rootSize: 16, // is being used to convert viewport px to em units
    columns: 12,
    breakpoints: {
      xs: 0,
      sm: 576,
      md: 768,
      lg: 992,
      xl: 1200
    },
    grid: {
      container: {
        xs: '100%',
        sm: 540,
        md: 720,
        lg: 960,
        xl: 1140
      }
    }
    /* ...your theme */
  }}
>
  {/* ...your components */}
</ThemeProvider>

Code examples

import React from 'react'
import { Container, Row, Col } from 'coolgrid'

const Element = () => (
  <Container>
    <Row>
      <Col size={3}>Column 1</Col>
      <Col size={{ xs: 12, sm: 6, md: 3 }}>Column 2</Col>
      <Col size={{ xs: 9, md: 3 }}>Column 3</Col>
      <Col size={3}>Column 4</Col>
    </Row>
  </Container>
)

You can define Col properties in Container or Row component. It uses context in the background. It means you can even write less code.

import React from 'react'
import { Container, Row, Col } from 'coolgrid'

const Element = () => (
  <Container>
    <Row size={{ xs: 12, sm: 6, md: 3 }}>
      <Col>Column 1</Col>
      <Col>Column 2</Col>
      <Col>Column 3</Col>
      <Col>Column 4</Col>
    </Row>
  </Container>
)

It's cool, right? So, check out more examples and happy coding!