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

@cronocode/react-box

v3.0.6

Published

This is a react base component which will reduce considerably necessity to write css code.

Downloads

617

Readme

React box

This is a react base component which will reduce considerably necessity to write css code.

Getting Started

  1. Installation
npm install @cronocode/react-box
  1. Use component

Sizes is equal to 1/4rem

padding={3} means 1/4 * 3 => 0.75rem

In the example below is creating a box with maring: 0.5rem and padding: 1.75rem

import Box from "@cronocode/react-box";

export default function Component(props: Props) {
  return (
    <Box className="custom-class" m={2} p={7}>
      basic example
    </Box>
  );
}

NOTE: Root font-size is set to 16px

Components

  • Box - base component with a tons of props
import Box from "@cronocode/react-box";

Alias-shortcuts components

  • Flex - this is a Box component with display: flex style
import Flex from "@cronocode/react-box/components/flex";
  • Button - this is a Box component with html tag button and onClick prop
import Button from "@cronocode/react-box/components/button";
  • Textbox - this is a Box component with html tag input
import Textbox from "@cronocode/react-box/components/textbox";
  • Tooltip - this is useful when you need a position absolute and the parent has overflow hidden.
import Tooltip from "@cronocode/react-box/components/tooltip";

Extend props

It is possible to add your own props to define your custom styles. You need to do a few steps.

  1. In a project root file you need to define your extends
import Box from "@cronocode/react-box";

export const { extendedProps, extendedPropTypes } = Box.extend(
  // css variables
  {
    dark: '#123123',
    light: '#ededed',
    cssVarName: 'cssVarValue',
    myShadow: '10px 5px 5px red',
    myGradient1: 'linear-gradient(#e66465, #9198e5)',
    myGradient2: 'linear-gradient(black, white)',
  },
  // new custom props
  {
    background: [
      {
        values: ['myGradient1', 'myGradient2'] as const,
        valueFormat: (value: string) => `var(--background${value})`,
      },
    ],
  },
  // extend values for existing props
  {
    color: [
      {
        values: ['dark', 'light'],
        valueFormat: (value, getVariableValue) => getVariableValue(value),
      },
    ],
  }
);
  1. Now you have to add typings to the Box in order to have intellisense for you new props and value. You need to create a box.d.ts
import '@cronocode/react-box';
import { ExtractBoxStyles } from '@cronocode/react-box/types';
import { extendedProps, extendedPropTypes } from './path-to-your-b0x-extends-declaration';

declare module '@cronocode/react-box/types' {
  namespace Augmented {
    interface BoxProps extends ExtractBoxStyles<typeof extendedProps> {}
    interface BoxPropTypes extends ExtractBoxStyles<typeof extendedPropTypes> {}
  }
}

Theme for components

In the project root file (main.tsx) use Theme.setup

import Theme from '@cronocode/react-box/theme';

Theme.setup({
  button: {
    styles: {
      px: 4
    },
    themes: {
      mytheme: {
        px: 8
      }
    }
  },
  ...
})

All styles will be applied to Button component

import Button from '@cronocode/react-box/components/button';

function MyComponent() {
  return <Button>Click me</Button>
}

or is possible to use Button with specific theme

import Button from '@cronocode/react-box/components/button';

function MyComponent() {
  return <Button theme="mytheme">Click me</Button>
}

Theme variables

In CSS file is possible to override default values for:

  --borderColor: black;
  --outlineColor: black;
  --lineHeight: 1.2;
  --fontSize: 14px;
  --transitionTime: 0.25s;