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 🙏

© 2025 – Pkg Stats / Ryan Hefner

landricks-components

v0.8.0

Published

A set or React components for building structured landing pages

Downloads

43

Readme

Landricks: Landing-Bricks

A set of React components to build structured landing pages

Introduction

Have you ever built a product landing page? They are all the same, they have a big banner on top, some call-to-action buttons, a list of features, some quotes from customers, pricing options, etc. Most of the time, these elements are displayed as horizontal bands, laid out vertically. Design varies a lot, but it can often be defined as a result of basic rules (font, primary/secondary color, background) that apply differently to each band.

Goal

Landricks provide a set of opinionated React DOM-components that can be laid out as bricks, one on top of the other, to easily obtain a fully formatted landing page. The props of each component are used to set the actual content (text, images, urls) presented to the user. Visual design can be defined by providing a "theme", which is a set of high-level properties which are used by each component to build their internal styles.

Demo

The simplest way to get a glance of the components is to use "react storybook". You can either clone the repo and run npm run storybook, or you can browse the online Storybook Workspace which renders directly from the master branch code.

Getting Started

Create a React web app

Use react-scripts to create a web app called quick-landing-page (if you don't like react-scripts, use whatever procedure you prefer):

create-react-app quick-landing-page

Add Landricks dependency

Inside the dir of your fresh new app, run npm to add the required dependency:

npm install --save landricks-components

Import components

Add the following import statement to src/App.js

import {
  LandingCanvas,
  ThemePropagator,
  GenericBrick,
  DoubleContentBrick,
  StrongMessageBrick,
  EnumerationBrick,
  EmailSqueezeBrick,
  FooterBrick,
  CallToAction,
  FeatureItem,
  PlaceHolder
} from 'landricks-components';

Define themes to be used by different bricks

Add the following constants to your src/App.js

const BASE_THEME = {
  fontFamily: 'Lato',
  baseFontSize: '18px'
}

const HEADER_BAND_THEME = {
  ...BASE_THEME,
  baseFontSize: '18px',
  backgroundColor: '#71A2B6',
  textColor: '#FFFFFF',
  primaryColor: '#FFFFFF',
  primaryContrastColor: '#71A2B6',
  objectDesign: 'square-solid'
}

const HEAVY_BAND_THEME = {
  ...BASE_THEME,
  backgroundColor: '#29D9C2',
  textColor: '#FFFFFF',
  primaryColor: '#FFFFFF',
  primaryContrastColor: '#000000',
  secondaryColor: '#C99DA3',
  objectDesign: 'square-outline'
};

const LIGHT_BAND_THEME = {
  ...BASE_THEME,
  backgroundColor: '#FAFAFA',
  textColor: '#888888',
  primaryColor: '#996888',
  secondaryColor: '#C99DA3'
};

Add a LandingCanvas component

Replace the current render method of src/App.js for this one:

render() {
  return (
    <LandingCanvas>
    </LandingCanvas>
  );
}

Add some Bricks to the canvas

Add these components as children of the LandingCanvas:

<StrongMessageBrick
  theme={ HEADER_BAND_THEME }
  messageLevel1="A beautiful message, but not so long"
  messageLevel2="A related but not so important concept, that usually is a little bit longer than the previous"
  CTAs={ <CallToAction label="sign up" /> }
/>
<DoubleContentBrick theme={ HEAVY_BAND_THEME } hasHeader={ false }>
  <ThemePropagator>
    <h1>Our product highlight</h1>
    <p>you wont find a better product anywhere in the universe.</p>
    <CallToAction label="buy" /><CallToAction label="learn more" />
  </ThemePropagator>
  <PlaceHolder />
</DoubleContentBrick>
<GenericBrick
  theme={ LIGHT_BAND_THEME }
  title="Yes, we can!"
  subtitle="if you think you can do it"
  contentStyle={ {textAlign: 'center'} }>
  <PlaceHolder />
</GenericBrick>
<EnumerationBrick
  theme={ HEAVY_BAND_THEME }
  title="Awesome features"
  subtitle="You can add any number of them">
  <FeatureItem
    icon="rocket"
    title="Feature 1"
    description="bla bla bla bla bla"
  />
  <FeatureItem
    icon="rocket"
    title="Feature 2"
    description="bla bla bla bla bla"
  />
  <FeatureItem
    icon="rocket"
    title="Feature 3"
    description="bla bla bla bla bla"
  />
</EnumerationBrick>
<DoubleContentBrick theme={ LIGHT_BAND_THEME } hasHeader={ false }>
  <PlaceHolder useLoremIpsum={ true } />
  <PlaceHolder label="image placeholder" />
</DoubleContentBrick>
<DoubleContentBrick theme={ LIGHT_BAND_THEME } hasHeader={ false }>
  <PlaceHolder label="image placeholder" />
  <PlaceHolder useLoremIpsum={ true } />
</DoubleContentBrick>
<DoubleContentBrick theme={ LIGHT_BAND_THEME } hasHeader={ false }>
  <PlaceHolder useLoremIpsum={ true } />
  <PlaceHolder label="image placeholder" />
</DoubleContentBrick>
<EmailSqueezeBrick
  title="Join our Newsletter"
  subtitle="To get updates about what we want you to know about"
  theme={ HEAVY_BAND_THEME }
  buttonLabel="Join"
  placeholder="Enter your email"
/>

Run your app

Use npm start script to start your app:

npm start