Skip to main content

API reference

Everything the two packages export. Types are on the types page; the CLI is on its own page.

import { CatalogApp /* … */ } from '@neverleans-labs/plug-store-core';
import { defineTheme, themeConfigs } from '@neverleans-labs/plug-store-themes';
import '@neverleans-labs/plug-store-core/dist/index.css';

Entry points​

ExportSignatureGuide
CatalogApp(props: CatalogAppProps) => JSX.ElementHow it works
CatalogProvider(props: CatalogProviderProps) => JSX.ElementHow it works

CatalogAppProps​

PropTypeDefault
defaultThemeIndustryTemplate | string'fashion'
customThemeThemeConfig—
configCatalogConfig—
defaultLanguage'pt' | 'en'stored, then 'pt'
dataProviderCatalogDataProviderdummyDataProvider
disableAdminbooleanfalse
basenamestring—

CatalogProviderProps is the same minus disableAdmin and basename, plus children and queryClient.

Data​

ExportSignatureGuide
useProducts(params?: DataProviderQueryParams, options?: { enabled?: boolean }) => UseProductsResultData
useCategories() => UseCategoriesResultData
useProduct(id?: string) => UseProductResultData
useProductReviews(productId?: string) => UseProductReviewsResultData
useCatalogData() => CatalogDataProviderData
dummyDataProvider(industry?: IndustryTemplate) => CatalogDataProviderData
restDataProvider(baseUrl: string, options?: { headers?: Record<string,string> }) => CatalogDataProviderREST recipe
customDataProvider(handlers: CatalogDataProvider) => CatalogDataProviderSupabase recipe
DataProviderWrappercomponent—

Direct access to the bundled demo dataset — rarely needed, and ignored when you supply your own provider: getProducts, getCategories, getReviews, getFeaturedProducts, getProductById, getProductsByCategory, getReviewsByProduct, searchProducts, setImportedProducts, getImportedProducts, clearImportedProducts.

Checkout​

ExportSignatureGuide
useCheckout(options?: UseCheckoutOptions) => { processCheckout, loading, result, error }Checkout
whatsappGateway`(phoneOrOptions?: stringWhatsappGatewayOptions) => PaymentGatewayAdapter`
pixGateway(keyOrOptions?: string | PixGatewayOptions) => PaymentGatewayAdapterPix
stripeGateway(endpoint: string, options?) => PaymentGatewayAdapterCheckout
mercadopagoGateway(endpoint: string, options?) => PaymentGatewayAdapterCheckout
buildPixPayload(params: PixStaticParams) => stringPix
pixCrc16(payload: string) => stringPix

State hooks​

ExportReturnsGuide
useCart{ items, addItem, removeItem, updateQuantity, clearCart, itemCount, subtotal, discount, shippingCost, total, discountCode, setDiscountCode }Cart
useWishlist{ items, addItem, removeItem, isInWishlist, toggleItem }Cart
useCompare{ items, toggle, remove, clear, has, isFull }Cart
useRecentlyViewed{ items, add, clear }Cart
useTheme{ theme, template, setTemplate }Themes
useSiteConfig{ config, updateConfig }Configuration
useLanguage{ t, language, setLanguage }Language
useColorModelight/dark state—
useAuth{ user, isAuthenticated, login, logout }—
useAccountorders, addresses, notify-me—
usePWA{ isOffline, isInstalled, installPrompt, promptInstall }PWA
useCatalogAnalyticsinstalls GA4 / Meta PixelAnalytics
useCatalogLinkbuilds in-store links—
useMoney(amount: number) => string, plus .currency and .symbolCurrency

Every provider is also exported individually — ThemeProvider, CartProvider, WishlistProvider, CompareProvider, RecentlyViewedProvider, AuthProvider, AccountProvider, SiteConfigProvider, LanguageProvider, ColorModeProvider — for the rare case where you want to compose them yourself instead of using CatalogProvider.

Components​

Layout — Header, Footer

Product — ProductCard, ProductCardSkeleton, QuickViewDialog, RecentlyViewedRow

Cart — MiniCart

Common — SEOHead, CatalogSEO, ThemeSwitcher, CompareBar, DarkModeToggle, WhatsAppOrderButton, PageTransition, AnalyticsInjector, FaviconInjector, PWAOfflineBanner

Pages — HomePage, ProductsPage, ProductDetailPage, CartPage, WishlistPage, CheckoutPage, OrderConfirmationPage, LoginPage, SignupPage, AboutPage, ContactPage, ComparePage, AccountPage, AdminPage, PublicCatalogPage, NotFound

Components require the providers

Every one of these reads from a context. Rendering any of them outside CatalogProvider throws.

Utilities​

ExportSignature
formatMoney(amount: number, currency?: CurrencyCode) => string
CURRENCIESRecord<CurrencyCode, { symbol, locale, code }>
trackEvent(name: 'view_item' | 'add_to_cart' | 'begin_checkout' | 'purchase', params?) => void
productsToCsv(products: Product[]) => string
parseProductsCsv(text: string, industry: string) => Product[]
downloadProductsCsv(products: Product[], filename?: string) => void
openCatalogPrintable(products: Product[], title: string) => void
safeImage / safeCategoryImageimage URL fallbacks
isLowStock(product: Product) => boolean
panelClassescard style class helper
localizeCategory / localizeTagline / localizeTemplate / templateLabelsi18n
themeConfigsRecord<string, ThemeConfig> — the 50 built-in themes, keyed by id. Use Object.values() to iterate

The themes package​

ExportSignature
defineTheme(config: Partial<ThemeConfig> & { id, name, tagline }) => ThemeConfig
defaultThemeBasethe base every custom theme extends
themeConfigsre-exported from core, so both import paths give the same registry

Next​