Skip to content

Shared UI component library for Constructor.io. Built with React + TypeScript (Vite, Storybook, Jest). Designed for reuse across OS UI projects.

License

Notifications You must be signed in to change notification settings

Constructor-io/constructorio-ui-components

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Constructor UI Components Library

minzipped size NPM Version MIT licensed

Introduction

UI Components Library is a collection of React components that can be used to build UI for Constructor.io products.

Our Storybook Docs provide a comprehensive overview of each component, including its behavior, variations, and configuration options.

Requirements

  • Node.js v22.18.0 (LTS Jod)
  • React >=16.12.0
  • React DOM >=16.12.0

Installation

npm i @constructor-io/constructorio-ui-components

Usage Patterns

Normal Usage

import { Button } from '@constructor-io/constructorio-ui-components';
import '@constructor-io/constructorio-ui-components/styles.css'

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

Render Other Components using asChild

import { Badge } from '@constructor-io/constructorio-ui-components';
import '@constructor-io/constructorio-ui-components/styles.css'

function App() {
  return (
    <Badge asChild variant="outline">
      <a href="#">
        A link that looks like a badge
      </a>
    </Badge>
  );
}

Component Overrides

import { Button } from '@constructor-io/constructorio-ui-components';
import '@constructor-io/constructorio-ui-components/styles.css'

function App() {
  return (
    <Button
      componentOverrides={{
        reactNode: <span>A span rendered in place of a button</span>
      }}
    >
      This will be overridden
    </Button>
  );
}

Passing Data Attributes

import { Button } from '@constructor-io/constructorio-ui-components';
import '@constructor-io/constructorio-ui-components/styles.css'

function App() {
  return <Button data-cnstrc-price={23.25}>Purchase</Button>;
}

Compound Components

import { ProductCard } from '@constructor-io/constructorio-ui-components';
import '@constructor-io/constructorio-ui-components/styles.css'

function App() {
  return (
    <ProductCard
      product={{
        id: 'highland-golf-pants',
        variationId: 'highland-golf-pants--navy',
        name: "Highland Golf Pants",
        imageUrl: 'https://example.com/pants.jpg',
        price: '799',
        rating: 4.8,
        reviewsCount: 203,
        description: 'Premium golf pants designed for comfort and performance on the course',
      }}
      className='overflow-hidden max-w-md'
    >
      <div className='grid grid-cols-2 gap-4 p-4'>
        <ProductCard.ImageSection />
        <div className='space-y-2'>
          <ProductCard.PriceSection />
          <ProductCard.TitleSection />
          <ProductCard.RatingSection />
        </div>
      </div>
      <ProductCard.Footer>
        <ProductCard.AddToCartButton />
      </ProductCard.Footer>
    </ProductCard>
  );
}

Local Development

Development Scripts

npm ci                         # Install dependencies for local dev
npm run dev                    # Start a local dev server for Storybook
npm run lint                   # Run lint
npm run test                   # Run unit tests

Build scripts

npm run compile                # Compile the library, remove aliases, copy styles
npm run build-storybook        # Build Storybook
npm run serve-built-storybook  # Serve the built Storybook

Contributing

  • Fork the repo & create a new branch.
  • Run npm install to install dependencies.
  • Submit a PR for review.

License

MIT © Constructor.io

About

Shared UI component library for Constructor.io. Built with React + TypeScript (Vite, Storybook, Jest). Designed for reuse across OS UI projects.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 7