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

skillup-footer

v1.2.0

Published

SkillUp's shared SiteFooter (sticky-reveal subscriber panel) plus the legacy backend-menu-driven Footer, for Base44 apps served under skillup.global.

Readme

skillup-footer

Shared site footer for every Base44 page served under skillup.global — same visual language as skillup-navbar, same backend-editable menus (Content\MainMenu/SecondaryMenu/TertiaryMenu via Skillup.NavBridge), so a link added in October's backend shows up in both the navbar and the footer without a Base44 deploy.

Install

npm install skillup-footer skillup-navbar

skillup-navbar is a peer dependency, not incidental — this package reuses its useSkillupNav hook rather than re-fetching menu data a second time, so both components read from one request/one source of truth when they're on the same page.

Other peer dependencies (already present in every in-scope Base44 app):

npm install react react-dom lucide-react

Tailwind: same as skillup-navbar — this package ships plain Tailwind utility classes in its compiled JS. Add it to your tailwind.config.js content array:

content: [
  "./src/**/*.{js,jsx,ts,tsx}",
  "./node_modules/skillup-navbar/dist/**/*.js",
  "./node_modules/skillup-footer/dist/**/*.js",
],

Usage — a real, live app

import { ConnectedFooter } from "skillup-footer";

<ConnectedFooter
  homeUrl="/"
  siteName="SkillUp"
  socialLinks={[
    { label: "LinkedIn", url: "https://linkedin.com/company/skillup" },
    { label: "Facebook", url: "https://facebook.com/skillup" },
  ]}
/>

logoSrc defaults to the same DEFAULT_LOGO_SRC as skillup-navbar (October's own SkillUp logo asset) — pass your own only to override it.

Same same-origin/cookie caveat as the navbar applies here too, though it matters less for the footer specifically since it doesn't render login state — it only affects whether the menu content resolves (it always does; menus are public) versus erroring, and it won't error either way (see skillup-navbar's useSkillupNav — fails soft to empty menus on a genuine fetch failure).

Running locally against Base44's own dev server

If you already added the navbar's proxy rule (/api/v1/nav → https://staging.skillup.global), nothing further to configure — this package calls the exact same path. See skillup-navbar's README for the full explanation of why that rule must stay scoped to /api/v1/nav and not a broader /api prefix.

Usage — fixture-driven preview (style guide, tests)

Use the presentational Footer directly with mock menu data — no network call:

import { Footer } from "skillup-footer";

<Footer
  homeUrl="/"
  siteName="SkillUp"
  menus={{
    mainMenu: [{ title: "Courses", url: "/courses", icon: null, external: false, children: [] }],
    secondaryMenu: [{ title: "About", url: "/about", icon: null, external: false, children: [] }],
    tertiaryMenu: [],
  }}
/>

Versioning

Pinned exactly per consuming app, never a ^/~ range — see the repo README for the update workflow. Because this package depends on skillup-navbar's exported types/hook, bumping skillup-navbar's major version in a consuming app may require bumping skillup-footer too — check its own changelog when you do.