Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@pie-players/pie-theme

Package Overview
Dependencies
Maintainers
2
Versions
50
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@pie-players/pie-theme

Shared PIE theme tokens, css variables, and theme custom element

latest
Source
npmnpm
Version
0.3.50
Version published
Maintainers
2
Created
Source

@pie-players/pie-theme

Shared PIE theming primitives and the pie-theme custom element.

pie-theme resolves canonical PIE variables (--pie-*) with this precedence:

  • Base PIE theme (theme=light|dark|auto)
  • Provider adapter output (for example DaisyUI tokens)
  • Selected color scheme (scheme)
  • Explicit variables overrides

Usage

import "@pie-players/pie-theme";
import "@pie-players/pie-theme/tokens.css";
import "@pie-players/pie-theme/color-schemes.css";
import "@pie-players/pie-theme/font-sizes.css";
<pie-theme theme="auto" scope="document">
  <pie-section-player></pie-section-player>
</pie-theme>

Custom element API

  • theme: light | dark | auto
  • scope: self | document
  • provider: provider id or auto (default)
  • scheme: color scheme id (default by default)
  • variables: JSON object of CSS variable overrides

Provider Adapter API

import {
  registerPieThemeProvider,
  type ThemeProviderAdapter,
} from "@pie-players/pie-theme";

const myProvider: ThemeProviderAdapter = {
  id: "district-theme",
  canRead: (target) => Boolean(getComputedStyle(target).getPropertyValue("--district-primary").trim()),
  read: (target) => ({
    "--pie-primary": getComputedStyle(target).getPropertyValue("--district-primary").trim(),
  }),
};

registerPieThemeProvider(myProvider);

Custom Color Schemes

Register consumer-defined schemes without modifying framework source:

import { registerPieColorSchemes } from "@pie-players/pie-theme";

registerPieColorSchemes([
  {
    id: "district-high-contrast",
    name: "District High Contrast",
    description: "District accessibility palette",
    variables: {
      "--pie-background": "#000000",
      "--pie-text": "#ffffff",
      "--pie-primary": "#00ffff",
    },
    preview: {
      bg: "#000000",
      text: "#ffffff",
      primary: "#00ffff",
    },
  },
]);

Then activate with scheme="district-high-contrast" on pie-theme.

DaisyUI Integration

  • If DaisyUI tokens are present on the target scope, pie-theme uses the built-in daisyui provider adapter.
  • Override precedence is: base PIE -> provider output -> scheme -> variables.

Light DOM and Shadow DOM

  • --pie-* variables are the stable runtime contract for all components.
  • Light DOM components read variables from document or scoped host as normal.
  • Shadow DOM components should consume --pie-* internally; variables inherit across shadow boundaries through the host.
  • Avoid relying on global selectors for shadow internals; prefer variable-driven styling.

Style Ownership

Use @pie-players/pie-theme/components.css for shared visual styles that are intentionally reused across multiple PIE custom elements.

  • Theme-owned shared pie-* class families include:
    • pie-section-player-tools-pnp-debugger*
    • pie-section-player-tools-session-debugger*
    • pie-answer-eliminator-* and pie-answer-masked-*
  • Keep runtime behavior, DOM mutation logic, and element-specific layout mechanics in the owning package.
  • Prefer stable pie-* / data-pie-* hooks in component markup; avoid introducing new generic class contracts.

FAQs

Package last updated on 09 Jun 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts