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

@phcdevworks/spectre-ui-astro

v2.1.0

Published

@phcdevworks/spectre-ui-astro is the Astro adapter package of the Spectre system for Astro applications that consume the core Spectre UI contract.

Readme

@phcdevworks/spectre-ui-astro

GitHub issues GitHub pulls License

@phcdevworks/spectre-ui-astro is the Astro adapter package of the Spectre system for Astro applications that consume the core Spectre UI contract.

Maintained by PHCDevworks, it provides Astro-native components that wrap the logic, styling contracts, and class recipes defined in @phcdevworks/spectre-ui. It stays strictly downstream of the core Spectre layers, keeps framework delivery separate from design ownership, and serves as the reference adapter pattern for future Spectre framework adapters.

Contributing | Changelog | Security Policy

Key capabilities

  • Provides Astro-native components built on top of the @phcdevworks/spectre-ui recipe and class contract
  • Keeps Astro delivery SSR-friendly and type-safe without redefining tokens or core styling logic
  • Re-exports shared recipe helpers so Astro consumers can compose with the same styling API used downstream
  • Keeps framework ergonomics aligned with the upstream Spectre UI contract instead of introducing adapter drift
  • Establishes the reference adapter pattern for future Spectre framework packages

Installation

npm install @phcdevworks/spectre-ui-astro @phcdevworks/spectre-ui

@phcdevworks/spectre-ui is a required peer dependency because this adapter binds its upstream recipes, classes, and CSS contract for Astro rather than redefining them locally.

If your project consumes Spectre tokens directly, install @phcdevworks/spectre-tokens as well.

Quick start

Astro component usage

Import Astro-native components from the package root:

---
import { SpBadge, SpButton, SpCard, SpInput } from '@phcdevworks/spectre-ui-astro'
---

CSS import

This package does not ship its own CSS. Import the canonical Spectre UI stylesheet from @phcdevworks/spectre-ui in your Astro layout or page:

---
import '@phcdevworks/spectre-ui/index.css'
---

Astro-native component example

---
import '@phcdevworks/spectre-ui/index.css'
import {
  SpBadge,
  SpButton,
  SpCard,
  SpIconBox,
  SpInput,
  SpPricingCard
} from '@phcdevworks/spectre-ui-astro'
---

<section>
  <SpCard variant="elevated">
    <div>
      <SpIconBox variant="primary" size="md">
        <svg viewBox="0 0 24 24" aria-hidden="true">
          <path d="M12 2l7 4v12l-7 4-7-4V6l7-4z" fill="currentColor" />
        </svg>
      </SpIconBox>

      <div>
        <SpBadge variant="success" size="sm">Stable contract</SpBadge>
        <h2>Build Astro interfaces on the Spectre UI layer</h2>
        <p>
          Compose Astro-native components while keeping styling behavior aligned
          with the shared Spectre recipe contract.
        </p>
        <SpButton variant="primary" size="lg">Get started</SpButton>
      </div>
    </div>
  </SpCard>

  <SpPricingCard featured>
    <div slot="header">Pro</div>
    <div slot="price">$29/mo</div>
    <div slot="description">Astro delivery on top of the core Spectre UI layer.</div>
    <SpButton variant="primary" fullWidth>Choose plan</SpButton>
  </SpPricingCard>

  <SpInput
    id="email"
    label="Email"
    name="email"
    type="email"
    placeholder="[email protected]"
    helperText="We will use this for product updates."
  />
</section>

The README examples intentionally avoid adapter-owned layout or utility styling. For page-level composition, import the canonical Spectre UI CSS and add any application-specific layout styles in your app rather than this package.

SpInput requires an explicit id whenever you pass label, helperText, or errorMessage, so Astro can render stable SSR markup and preserve the associated accessibility wiring.

What this package owns

  • Astro-native component delivery for Spectre UI recipes and classes
  • Astro-friendly, SSR-safe component interfaces and composition patterns
  • Type-safe framework bindings for the upstream Spectre UI contract
  • Adapter-level ergonomics that make @phcdevworks/spectre-ui straightforward to consume in Astro projects
  • A reference implementation for future Spectre framework adapters

Golden rule: bind the upstream Spectre UI contract for Astro, do not redefine it.

What this package does not own

  • Design values or token meaning That belongs to @phcdevworks/spectre-tokens.
  • Core CSS, utilities, Tailwind helpers, or class recipe logic That belongs to @phcdevworks/spectre-ui.
  • Local styling systems that diverge from the shared Spectre contract This package consumes upstream styling behavior rather than replacing it.

Package exports / API surface

Root package

@phcdevworks/spectre-ui-astro exports:

  • SpBadge
  • SpButton
  • SpCard
  • SpIconBox
  • SpInput
  • SpPricingCard
  • SpRating
  • SpTestimonial

The root package also re-exports shared recipe helpers and related TypeScript option and variant types from @phcdevworks/spectre-ui, including:

  • getBadgeClasses
  • getButtonClasses
  • getCardClasses
  • getIconBoxClasses
  • getInputClasses
  • getPricingCardClasses
  • getPricingCardBadgeClasses
  • getPricingCardPriceContainerClasses
  • getPricingCardPriceClasses
  • getPricingCardDescriptionClasses
  • getRatingClasses
  • getRatingStarsClasses
  • getRatingStarClasses
  • getRatingTextClasses
  • getTestimonialClasses
  • getTestimonialQuoteClasses
  • getTestimonialAuthorClasses
  • getTestimonialAuthorInfoClasses
  • getTestimonialAuthorNameClasses
  • getTestimonialAuthorTitleClasses

The adapter does not export a SPECTRE_UI_CSS helper. Import the canonical stylesheet directly from @phcdevworks/spectre-ui/index.css so CSS ownership stays with the upstream UI package.

Component entry points

  • @phcdevworks/spectre-ui-astro/components/SpBadge.astro
  • @phcdevworks/spectre-ui-astro/components/SpButton.astro
  • @phcdevworks/spectre-ui-astro/components/SpCard.astro
  • @phcdevworks/spectre-ui-astro/components/SpIconBox.astro
  • @phcdevworks/spectre-ui-astro/components/SpInput.astro
  • @phcdevworks/spectre-ui-astro/components/SpPricingCard.astro
  • @phcdevworks/spectre-ui-astro/components/SpRating.astro
  • @phcdevworks/spectre-ui-astro/components/SpTestimonial.astro

Relationship to the rest of Spectre

Spectre keeps responsibilities separate:

  • @phcdevworks/spectre-tokens defines design values, semantic meaning, and token contracts
  • @phcdevworks/spectre-ui turns those tokens into reusable CSS, utilities, Tailwind helpers, and type-safe class recipes
  • @phcdevworks/spectre-ui-astro binds that upstream UI contract into Astro-native components and framework ergonomics

That separation keeps design ownership centralized, keeps styling logic shared, and lets framework adapters stay thin and consistent.

Development

Install dependencies, then run the package checks:

npm run build
npm run typecheck
npm test

Key source areas:

  • src/components/ for Astro component implementations
  • src/recipes/ for re-exported recipe bindings
  • src/index.ts for package exports
  • examples/ for usage examples
  • scripts/ for packaging support scripts

Contributing

PHCDevworks maintains this package as part of the Spectre suite.

When contributing:

  • keep Astro components aligned with the upstream @phcdevworks/spectre-ui contract
  • do not redefine tokens, CSS behavior, or recipe logic in this package
  • keep the adapter SSR-friendly, type-safe, and framework-appropriate
  • run npm test to verify adapter exports, SSR rendering, and example/docs guardrails
  • run npm run build and npm run typecheck before opening a pull request

See CONTRIBUTING.md for the full workflow.

License

MIT © PHCDevworks. See LICENSE.