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 🙏

© 2024 – Pkg Stats / Ryan Hefner

simpre

v0.8.1

Published

HTML presentation framework

Downloads

51

Readme

SimPre - a 10KB HTML presentation framework

I've always wanted a minimalistic presentation framework that formats my slides correctly. SimPre scales and positions my content, using all the available space. In addition, it comes with a syntax highlighter and progress indicator.Move on and see how to use it.

Usage

It's just a single HTML file:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>SimPre - The Simplest Presentation HTML Framework</title>
  <link rel="stylesheet" href="https://simpre.vercel.app/assets/styles.css" />
  <script src="https://simpre.vercel.app/assets/simpre.js"></script>
</head>
<body>
  <section>
    <h1>Hey 👋</h1>
  </section>
  <div id="progress"></div>
</body>
</html>

Every <section> tag is a slide:

<section>
  <p>Slide with text</p>
</section>

All the code lives outside the framework. Create a file, add the code inside and load the file via the following <script> tag:

<section>
  <script
    src="https://simpre.vercel.app/assets/is.js"
    data-file="<path to a file>">
  </script>
<section>

There is "smart" selection mode. When showing code, I often want to emphasize or hide part of it. To help myself in this direction, I did a little feature that you can turn on and off via the Shift key. Select part of the text on this page and press the Shift key to see how it works.

If you need to emphasize on a part of the code you can use the data-sections attribute on the <script> tag. This will create a seprate slide for each of the sections. For example:

<script
  src="https://simpre.vercel.app/assets/is.js"
  data-file="slides/template.html"
  data-sections="2-8,10">
</script>

This will highlight the code between line 2 and 8 including. After that the code at line 10. You can also set a value of !2-8,10 (notice the ! in the beginning). This will trigger the first highlighting automatically.

In some cases you may need to implement a custom logic for your slide. If that's the case use the following data attributes attached to your <section> tag:

<script>
  window.onEnter = async function (element) {
    // ... do some potential async logic
  }
  window.onChange = async function (element, direction) {
    // Return "true" if you want to move forward
    // with the slide change.
    return true;
  }
</script>
<section data-onenter="onEnter" data-onchange="onChange"></section>

The onChangeCustomLogic function will be fired when you try to go away from the slide. It will be called again and again until you execute the passed done callback. The onEnterCustomLogic is called when you enter the slide.