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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@ralphbetta/website-rendering

v0.13.0

Published

Framework-neutral schema and property resolution for Loodit website renderers.

Readme

@loodit/website-rendering

Framework-neutral configuration resolution shared by the Loodit React website builder preview and the Next.js published website runtime.

The package deliberately contains no React, Next.js, JSX, DOM, or CSS imports. It owns only the rules that turn a versioned website node, site styles, and a breakpoint into one resolved property map.

Local development

Both consumers currently install the same packed 0.1.0 artifact from their checked-in vendor/ directories:

    "@loodit/website-rendering": "file:vendor/loodit-website-rendering-0.5.0.tgz"

The tarballs have the same integrity checksum and keep each independently deployed repository self-contained until the private registry is connected.

Run its contract tests with:

npm test

Production publication

Before the application repositories deploy independently, publish this package to the private Loodit registry and replace the local file: dependency in both consumers with the same pinned version, for example 0.1.0. CI must provide a read token for that registry. Do not allow the two applications to float on different resolver versions.

API

import {
  createButtonStyles,
  createFormFieldStyles,
  createGridStyles,
  createLogoStyles,
  createSectionStyles,
  createStackStyles,
  normalizeSiteStyles,
  resolveNodeProps,
} from "@loodit/website-rendering";

const siteStyles = normalizeSiteStyles(savedSiteStyles);
const props = resolveNodeProps({
  node,
  breakpoint: "desktop",
  siteStyles,
});

const formFieldStyles = createFormFieldStyles(props);
const logoStyles = createLogoStyles(props);
const buttonStyles = createButtonStyles(props);
const sectionStyles = createSectionStyles(props);
const stackStyles = createStackStyles(props);
const gridStyles = createGridStyles(props);

Semantic component-part styles are shared as plain style objects. Renderers retain their framework-specific markup while consuming the same values for parts such as form labels, required markers, controls, and help text. Logo containers, links, images, and wordmarks use the same contract, including configured dimensions, positioning, alignment, spacing, and typography.

Buttons and the section/stack/grid layout primitives also expose semantic style contracts. Width modes, fixed dimensions, spacing, alignment, column ratios, responsive column variables, wrapping, surfaces, and interaction colors are therefore resolved once instead of reimplemented by each renderer.

The precedence contract is:

  1. Node properties provide the base values.
  2. Site styles provide theme defaults for theme-aware properties.
  3. Responsive properties override base and theme values.
  4. Inspector-owned localStyleOverrides and intentional zero values remain authoritative.
  5. useSiteStyles: false returns local and responsive values without applying the site theme.