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

combronents

v1.27.0

Published

Rapid inline component styling. Inbuilt Google fonts, intellisense and types.

Downloads

18

Readme

Logo

Combronents

Rapid inline component styling. Inbuilt Google fonts, intellisense and types.

  • Forget memorising long lists of CSS shortcodes
  • Add Google fonts to a component using only the font name
  • SSR capable with frameworks like Next

Coming soon:

  • Describe your style in a sentence, and it'll turn it into CSS
  • Remix Run template

Installation

  npm i combronents

Usage

  1. Import the Div, H1 etc. components
  2. Pass in your desired styles, use intellisense for suggestions

import { Div, H1, Section } from "combronents";

// Nested components aren't a problem
const GridWithTitle = () => (
  <Div
    grid gap_2 gtc_1fr_1fr
    h_full w_090pc>

    <H1
      mt_3 p_2 bg_grey>

      Web 3 is For Our Kids
    </H1>
  </Div>
);

// Pull in Google fonts easily
const WithGoogleFonts = () => (
  <Div font_orbitron_400 fontsize_4>
    Orbitron with weight 400
  </Div>
);

// Target child elements
const StyledChildren = () => (
  <Div child01_flex_center>
    <Section border_blue text_green>
      A section styled with flex, centered,
      and with a blue border and green text
    </Section>
  </Div>
);

Static vs Dynamic Key Codes

Static key codes are strongly typed:

<Div
  h_full
  border_solid border_green
/>

Generates this CSS:

height: full;
border: 1px solid green;

Dynamic key codes are more creative:

<Div
  gtc_1fr_2fr
/>

Generates:

display: grid;
grid-template-columns: 1fr 2fr;

Target Child Elements

<Div pos_relative child01_absolute>
  <div>
    An absolutely positioned child
  </div>
</Div>

Generates this CSS:

position: relative;

>:nth-child(1) {
  position: absolute;
}

List of Static Key Codes (INCOMPLETE)

This list does not contain all of the current styles so use intellisense to explore

Sizing

| Key | Means | --- | ---| | h_full | height: 100%; | h_half | height: 50%; | w_full | width: 100%; | w_half | width: 50%; | overflow_hidden | overflow: hidden;

Border

| Key | Means | --- | ---| | border | border-style: solid; border-width: 1px; | border_dashed | border-style: dashed; | border_dotted | border-style: dotted; | border_solid | border-style: solid;

Alignment

| Key | Means | --- | ---| | ac_center | align-content: center; | ac_start | align-content: flex-start; | ac_end | align-content: flex-end; | ac_between | align-content: space-between; | ac_around | align-content: space-around; | ac_evenly | align-content: space-evenly; | ai_start | align-items: flex-start; | ai_end | align-items: flex-end; | ai_center | align-items: center; | ai_baseline | align-items: baseline; | ai_stretch | align-items: stretch; | jc_start | justify-content: flex-start; | jc_end | justify-content: flex-end; | jc_center | justify-content: center; | jc_between | justify-content: space-between; | jc_around | justify-content: space-around; | jc_evenly | justify-content: space-evenly; | ji_start | justify-items: start; | ji_end | justify-items: end; | ji_center | justify-items: center; | ji_stretch | justify-items: stretch;

Display

| Key | Means | --- | ---| | display_block | display: block;

Positioning

| Key | Means | --- | ---| | bring_to_top | z-index: 99999999; | pos_absolute | position: absolute; | pos_relative | position: relative; | top_left | position: absolute; left: 0; top: 0; | top_center | position: absolute; left: 50%; top: 0; transform: translateX(-50%); | top_right | position: absolute; right: 0; top: 0; | middle_right | position: absolute; right: 0; top: 50%; transform: translateY(-50%); | bottom_right | position: absolute; bottom: 0; right: 0; | bottom_center | position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); | bottom_left | position: absolute; bottom: 0; left: 0; | middle_left | position: absolute; left: 0; top: 50%; transform: translateY(-50%);

Flex

| Key | Means | --- | ---| | flex | display: flex; | flex_center | align-items: center; display: flex; justify-content: center; | flex_column | display: flex; flex-direction: column; | flex_row | display: flex; flex-direction: row;

Grid

| Key | Means | --- | ---| | grid | display: grid; | grid_auto_column | display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; | grid_auto_row | display: grid; grid-auto-flow: row; grid-auto-rows: 1fr;

Fonts and Text

| Key | Means | --- | ---| | font_weight_medium | font-weight: 500; | font_weight_bold | font-weight: 700; | text_sm | font-size: 0.875rem;", "line-height: 1.25rem; | text_md | font-size: 1rem;", "line-height: 2rem; | text_lg | font-size: 1.5rem;", "line-height: 3rem; | text_center | text-align: center; | truncate | overflow: hidden; text-overflow: ellipsis; white-space: nowrap;

Animation

| Key | Means | --- | ---| | preserve_3d | transform-style: preserve-3d; | duration_150 | transition-duration: 150ms; | ease_in_out | transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); | transition | transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform;

Cursor (more to come)

| Key | Means | --- | ---| | cursor_pointer | cursor: pointer;

Focus

| Key | Means | --- | ---| | focus_outline_none | &:focus { outline: none; } | focus_bg_gray_200 | &:focus { background-color: #E5E7EB; }

Useful Tools

| Key | Means | --- | ---| | hidescrollbars | scrollbar-width: none; // Firefox &::-webkit-scrollbar { display: none; } // Chrome, Safari & Opera -ms-overflow-style: none; // IE and Edge

Custom Effects

| Key | Means | --- | ---| | shadow | box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); | flux | color: #426DFB; font-family: 'Orbitron', sans-serif; text-shadow: 0 0 5vw rgb(77, 77, 78); | reflection_left | -webkit-box-reflect: left 1px linear-gradient(transparent, #0005); | reflection_right | -webkit-box-reflect: right 1px linear-gradient(transparent, #0005);

🚀 About Me

I'm Pete Savva, a day trader and developer at Tech & Tribal, and father to my newborn son Maximus.

Twitter Twitter Follow

Support

If you have any questions or feedback, please feel free to post on the GitHub Repo Your feedback is greatly appreciated.