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

@luxflow/tokens

v1.0.0

Published

CSS design tokens for LuxFlow. Source de vérité pour toutes les variables `--lf-*`.

Readme

@luxflow/tokens

CSS design tokens for LuxFlow. Source de vérité pour toutes les variables --lf-*.

Exports

| Export | Rôle | |--------|------| | @luxflow/tokens/contract.css | 91 variables --lf-* canoniques — source de vérité | | @luxflow/tokens/compat.css | Aliases bare (--bg, --primary, etc.) → --lf-* | | @luxflow/tokens/semantics.css | Classes utilitaires (.lf-card, .lf-btn, etc.) | | @luxflow/tokens/theme.template.css | Template d'override projet (couvre 91/91 vars) | | @luxflow/tokens/package.json | Le manifeste — exporté parce que plusieurs outils le lisent |

⛔ Il n'y a PAS de point d'entrée racine, et c'est VOULU

import '@luxflow/tokens' échoue en ERR_PACKAGE_PATH_NOT_EXPORTED. Ce n'est pas un oubli.

[mesuré le 23/08/2026] Personne n'écrit from '@luxflow/tokens' — ni dans le monorepo, ni dans les projets consommateurs hors dépôt. Les 95 usages sont tous des sous-chemins CSS :

43  @luxflow/tokens/semantics.css        6  @luxflow/tokens/compat.css
41  @luxflow/tokens/contract.css         2  @luxflow/tokens/theme.template.css
 0  @luxflow/tokens          ← la racine

Ce paquet ne contient aucun JavaScript. Lui donner une clé . reviendrait à inventer un point d'entrée que personne ne demande, et qui devrait ensuite être maintenu. L'absence est documentée ici précisément pour qu'elle ne se lise pas comme un défaut — un ERR_PACKAGE_PATH_NOT_EXPORTED non expliqué finit toujours par être « corrigé ».

components.css n'est PAS exporté — également voulu

Il existe dans le tarball (files: ["src/*.css"] l'embarque) mais il est hors carte : c'est un stub deprecated (ADR-009), remplacé par @luxflow/ui/styles/components.css. Les trois mentions qui en restent dans le dépôt sont des interdictions, pas des usages.

Import order canonique

@import '@luxflow/tokens/contract.css';
@import '@luxflow/tokens/compat.css';
@import '@luxflow/ui/styles/components.css';
@import '@luxflow/tokens/semantics.css';

/* Puis dans theme/theme.css : overrides --lf-* uniquement */
:root {
  --lf-accent: #votre-couleur;
}

Créer un thème projet

cp node_modules/@luxflow/tokens/src/theme.template.css theme/theme.css

Tokens disponibles (102 variables --lf-*)

  • Colors : --lf-bg, --lf-surface-1/2/3, --lf-text, --lf-titles, --lf-accent, --lf-accent-hover/-foreground/-ghost, --lf-border, --lf-muted
  • Status : --lf-success, --lf-warning, --lf-danger, --lf-info, --lf-on-*, --lf-*-bg
  • Spacing : --lf-gap-*, --lf-padding-*, --lf-margin-*, --lf-padding-section-*
  • Containers : --lf-container-sm/md/lg/xl/nav
  • Typography : --lf-font-sans, --lf-font-heading, --lf-font-mono, --lf-text-h1..h6, --lf-font-*, --lf-leading-tight/normal/relaxed
  • Radius : --lf-radius-xs/sm/md/lg/xl/2xl/full
  • Shadows : --lf-shadow-sm/md/lg/xl
  • Z-index : --lf-z-base/raised/dropdown/sticky/header/modal/overlay/toast
  • Motion : --lf-motion-duration-*, --lf-motion-easing-*

Les 11 élargissements du contrat (T-005, 18/08/2026)

Le contrat est passé de 91 à 102 variables. Chaque ajout répond à un usage mesuré dans le dépôt, pas à une anticipation. Les valeurs par défaut sont dérivées quand c'est possible, pour qu'un thème qui surcharge --lf-accent seul reste cohérent.

| Variable | Défaut | Justification | | --- | --- | --- | | --lf-success-bg --lf-warning-bg --lf-danger-bg --lf-info-bg | color-mix(in srgb, var(--lf-X) 10%, transparent) | 13 usages réclamaient une teinte de statut (rgba(…, 0.1) avec la couleur pleine sur la bordure ou le texte). Le contrat avait les couleurs de statut et leurs contrastes, jamais leurs fonds. | | --lf-accent-hover | color-mix(in srgb, var(--lf-accent) 90%, black) | Deux projets l'ont inventée indépendamment (iae-sport-site, test-landing). Réserve : ce défaut assombrit. Un thème sombre dont le survol doit éclaircir la surcharge — iae-sport-site le fait déjà (#e0952a en clair, #ffb347 en sombre). | | --lf-accent-foreground | #ffffff | Déclarée par iae-sport-site. Le défaut suppose un accent sombre ; avec un accent clair il faut le surcharger — iae-sport-site utilise #111111. | | --lf-accent-ghost | color-mix(… 12%, transparent) | Couvre trois usages distincts d'apps/os : anneau de focus, fond de survol, fond d'état actif. | | --lf-font-heading | var(--lf-font-sans) | Défaut neutre : un thème qui ne la surcharge pas garde une seule police. | | --lf-font-mono | ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace | Le besoin existait sous trois formes concurrentes, dont six références à un --font-mono sans préfixe qui tombaient sur la police système. | | --lf-leading-normal --lf-leading-relaxed | 1.5 1.7 | Le contrat n'avait que --lf-leading-tight. Le 1.7 est le fallback déjà utilisé par les templates. |

Documentation complète

docs/TOKENS_THEME_CONTRACT.md