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

@weareconceptstudio/ecommerce

v0.0.4

Published

Concept Studio Unified Ecommerce Package - Access all shop implementations via versioned exports

Downloads

402

Readme

@weareconceptstudio/ecommerce

Unified Ecommerce Package - Access all shop implementations via versioned or named exports.

Problem

Previously, you had to import from different packages:

  • @weareconceptstudio/catalog for catalog implementation
  • @weareconceptstudio/shop for shop implementation
  • And potentially more implementations with different names

This made it hard to manage and switch between implementations.

Solution

This unified package provides a single entry point with versioned exports, so you can:

  • Use versioned exports (/v1, /v2, etc.) for consistent naming
  • Use named exports (/catalog, /shop) for semantic clarity
  • Easily add new implementations without changing the API

Installation

npm install @weareconceptstudio/ecommerce

Usage

Using Versioned Exports (Recommended)

// v1 - Catalog implementation
import { CatalogProvider, CatalogTemplate } from '@weareconceptstudio/ecommerce/v1';

// v2 - Shop implementation
import { ShopProvider, CategoryTemplate } from '@weareconceptstudio/ecommerce/v2';

// Future implementations
import { NewShopProvider } from '@weareconceptstudio/ecommerce/v3';

Using Named Exports

// Catalog implementation
import { CatalogProvider, CatalogTemplate } from '@weareconceptstudio/ecommerce/catalog';

// Shop implementation
import { ShopProvider, CategoryTemplate } from '@weareconceptstudio/ecommerce/shop';

Default Export (v1 for backward compatibility)

// Default export includes v1 (catalog) exports
import { CatalogProvider, CatalogTemplate } from '@weareconceptstudio/ecommerce';

Available Implementations

v1 / catalog

  • Package: @weareconceptstudio/catalog
  • Provider: CatalogProvider
  • Template: CatalogTemplate
  • Use case: Original catalog implementation

v2 / shop

  • Package: @weareconceptstudio/shop
  • Provider: ShopProvider
  • Template: CategoryTemplate
  • Use case: Modern shop implementation

Adding New Implementations

When you need to add a new implementation (e.g., v3):

  1. Create a new file: src/v3/index.ts
  2. Re-export from the new package:
    export * from '@weareconceptstudio/new-shop-package';
  3. Add export to package.json:
    "./v3": {
      "types": "./dist/v3/index.d.ts",
      "default": "./dist/v3/index.js"
    }
  4. Optionally add a named export (e.g., ./new-shop)

Examples

Using Catalog (v1)

import { CatalogProvider, CatalogTemplate } from '@weareconceptstudio/ecommerce/v1';

function App() {
	return (
		<CatalogProvider>
			<CatalogTemplate
				segments={segments}
				categories={categories}
				ingredients={ingredients}
				tags={tags}
				slug={slug}
			/>
		</CatalogProvider>
	);
}

Using Shop (v2)

import { ShopProvider, CategoryTemplate } from '@weareconceptstudio/ecommerce/v2';

function App() {
	return (
		<ShopProvider>
			<CategoryTemplate
				productsData={productsData}
				router={router}
				searchParams={searchParams}
				pathname={pathname}
			/>
		</ShopProvider>
	);
}

Migration Guide

From @weareconceptstudio/catalog

Before:

import { CatalogProvider, CatalogTemplate } from '@weareconceptstudio/catalog';

After:

import { CatalogProvider, CatalogTemplate } from '@weareconceptstudio/ecommerce/v1';
// or
import { CatalogProvider, CatalogTemplate } from '@weareconceptstudio/ecommerce/catalog';

From @weareconceptstudio/shop

Before:

import { ShopProvider, CategoryTemplate } from '@weareconceptstudio/shop';

After:

import { ShopProvider, CategoryTemplate } from '@weareconceptstudio/ecommerce/v2';
// or
import { ShopProvider, CategoryTemplate } from '@weareconceptstudio/ecommerce/shop';

Benefits

  1. Consistent API: All implementations accessed via the same package
  2. Versioned: Easy to track which implementation you're using
  3. Extensible: Add new implementations without breaking changes
  4. Backward Compatible: Default export maintains v1 compatibility
  5. Type Safe: Full TypeScript support with proper type exports