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

@codemonster-ru/vueforge-core

v1.10.0

Published

Foundation layer for the VueForge design system.

Readme

@codemonster-ru/vueforge-core

npm downloads license

Stable foundation layer for the VueForge design system.

Current scope

Version 1.7.x focuses on:

  • Vue 3 library build with Vite
  • TypeScript declarations
  • Vitest + Vue Test Utils
  • Theme provider and useTheme
  • CSS design tokens and theme variables
  • Built-in default theme preset powered by the shared @codemonster-ru/vueforge-theme engine
  • Typography primitives and content-navigation patterns for documentation-style pages

Installation

import { createApp } from "vue";
import VueForgeCore from "@codemonster-ru/vueforge-core";

const app = createApp(App);

app.use(VueForgeCore);

Recommended Theme Setup

VueForge theme setup has two layers that work together:

  • token preset configuration through app.use(VueForgeCore, { theme })
  • theme mode selection through VfThemeProvider and useTheme()
import { createApp } from "vue";
import App from "./App.vue";
import VueForgeCore, {
  defaultThemePreset,
} from "@codemonster-ru/vueforge-core";

const app = createApp(App);

app.use(VueForgeCore, {
  theme: {
    preset: defaultThemePreset,
    extend: {
      colorPrimary: "#ff5a36",
    },
  },
  defaultTheme: "system",
  themeStorageKey: "vf-theme",
});
<script setup lang="ts">
import { VfThemeProvider } from "@codemonster-ru/vueforge-core";
</script>

<template>
  <VfThemeProvider>
    <App />
  </VfThemeProvider>
</template>
import { useTheme } from "@codemonster-ru/vueforge-core";

const { theme, resolvedTheme, setTheme, toggleTheme } = useTheme();

setTheme("dark");
setTheme("light");
setTheme("system");
toggleTheme();

Theme Overrides

import { createApp } from "vue";
import VueForgeCore, {
  defaultThemePreset,
} from "@codemonster-ru/vueforge-core";

const app = createApp(App);

app.use(VueForgeCore, {
  theme: {
    preset: defaultThemePreset,
    extend: {
      colorPrimary: "#ff5a36",
    },
  },
});

VfThemeProvider reads theme-mode defaults from the plugin config when its own props are not set. Provider props still win when you need local overrides.

For the full theme runtime and preset API, see Theme API.

Theme Architecture

VueForge now has two theme layers:

  • @codemonster-ru/vueforge-theme
    • neutral theme engine
    • token and preset types
    • preset resolution and CSS variable serialization
    • mode helpers and shared motion tokens
  • @codemonster-ru/vueforge-core
    • built-in defaultThemePreset
    • Vue plugin and VfThemeProvider
    • component library and package CSS

This means vueforge-core is still the easiest way to consume the default VueForge design language, while higher-level packages can share the same engine without depending on core runtime helpers.

Documentation Pattern

For long-form docs pages, the recommended pattern is:

  • VfTableOfContents for section navigation
  • useTableOfContents() for active-section tracking
<script setup lang="ts">
import {
  VfTableOfContents,
  useTableOfContents,
} from "@codemonster-ru/vueforge-core";

const items = [
  { id: "getting-started", label: "Getting started", level: 1 },
  { id: "installation", label: "Installation", level: 2 },
  { id: "theme-api", label: "Theme API", level: 2 },
];

const { activeId } = useTableOfContents({
  items,
  offset: 96,
});
</script>

<template>
  <aside>
    <p>On This Page</p>
    <VfTableOfContents
      aria-label="Page navigation"
      smooth
      :scroll-offset="96"
      :items="items"
      :active-id="activeId"
    />
  </aside>

  <article>
    <h2 id="getting-started">Getting started</h2>
    <p>Intro copy.</p>

    <h3 id="installation">Installation</h3>
    <p>Install the package.</p>

    <h3 id="theme-api">Theme API</h3>
    <p>Customize tokens and theme mode behavior.</p>
  </article>
</template>

If your page has a sticky header, handle anchor offset in the consuming app with scroll-margin-top on the target headings:

.docs-content h2,
.docs-content h3,
.docs-content h4 {
  scroll-margin-top: 5rem;
}

Use offset in useTableOfContents() for active-section tracking, scroll-margin-top for native anchor scrolling, and the optional smooth / scrollOffset props on VfTableOfContents when you want the component itself to handle anchor scrolling.

Typography Usage

VueForge typography is now body-first:

  • application body styles define the baseline font family and text rhythm
  • components inherit that baseline and size around it
  • theme tokens remain the source of truth for scale, weights, and semantic text roles

Use regular HTML elements in app code and docs content, and rely on tokens when you need CSS-level typography control.

Foundation Usage

Use the full package when you need VueForge components, styles, and theme runtime together.

import VueForgeCore from "@codemonster-ru/vueforge-core";

Use foundation-only entry points when another package, such as vueforge-layouts, needs shared responsive or platform helpers without depending on the full UI surface.

import {
  vfBreakpoints,
  useBreakpoint,
  useBreakpoints,
  useBreakpointValue,
  useScrollLock,
} from "@codemonster-ru/vueforge-core/foundation";

Available subpaths:

  • @codemonster-ru/vueforge-core
  • @codemonster-ru/vueforge-core/styles.css
  • @codemonster-ru/vueforge-core/tokens.css
  • @codemonster-ru/vueforge-core/foundation.css
  • @codemonster-ru/vueforge-core/foundation
  • @codemonster-ru/vueforge-core/theme

Stability

  • Stable UI API: components exported from the root package
  • Stable theme API: VueForgeCore, createVueForgeCore, VfThemeProvider, useTheme, defaultThemePreset, createThemePreset
  • Stable foundation API: breakpoint constants and foundation composables from ./foundation

For the full foundation contract, see Foundation API.

Development

npm install
npm run build
npm run test

Visual Baseline

License

MIT

Author

@KolesnikovKirill