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

bootstrap-hacks

v0.5.0

Published

Tweaks (with a security and accessibility focus) to the Bootstrap framework.

Downloads

16

Readme

Bootstrap Hacks

Build Status npm version Bower version Maven Central dependencies Status devDependencies Status Dependency Status

Tweaks (with a security and accessibility focus) for Bootstrap version 3.

Installation

  • Install with npm: npm install bootstrap-hacks
  • Install with Bower: bower install bootstrap-hacks
  • Add a WebJar dependency to build.sbt: libraryDependencies += "org.webjars.npm" % "bootstrap-hacks" % "0.4.0"

Usage

LESS

  // Import Bootstrap itself.
  @import ".../bootstrap/less/bootstrap.less";
  
  // Then import bootstrap-hacks.
  @import ".../bootstrap-hacks/less/bootstrap-hacks.less";

CSS

You can find pre-compiled CSS in dist/css/bootstrap-hacks.css. It includes all hacks except accessible varibles.

Included Hacks

Accessible links

Bootstrap removes underline styles for links. This is a failure of Success Criterion 1.4.1 due to creating links that are not visually evident without color vision. Include accessible-links.less to restore the default underline styles.

Accessible variables

Bootstrap's default placeholder color (#999) doesn't meet WCAG 2.0 AA's color contrast requirement. Include accessible-variables.less to override @input-color-placeholder with a darker shade of gray (#767676).

Bootstrap's default colors for @brand-primary, @brand-success, @brand-danger, @state-info-text and @state-danger-text do not meet WCAG 2.0 AA's color contrast requirement. They are replaced with accessible alternatives.

Progress bar

Enables use of Bootstrap's progress bar component without requiring inline styles, in turn allowing CSP headers to exclude the 'unsafe-inline' style-src.

Usage

  1. Include progressbar.less in your project however you like.

  2. Remove the inline style attribute from your progress bars; progressbar.less will style them appropriately.

    Before:

    <div class="progress">
      <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;">
        <span class="sr-only">60% Complete</span>
      </div>
    </div>

    After:

    <div class="progress">
      <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100">
        <span class="sr-only">60% Complete</span>
      </div>
    </div>

Caveats

  • Only works for integral values of aria-valuenow (e.g. aria-valuenow="60" will work, aria-valuenow="60.1" won't).
  • Only works when the progress bar displays values between 0 and 100 (i.e. aria-valuemin="0" and aria-valuemax="100").

Prevent zoom on focus on iOS

iOS can automatically zoom in when a form input element receives focus. Developers often disable this behaviour by setting restrictive values for the viewport meta element. This can negatively affect accessibility:

Ensure that the browser pinch zoom is not blocked by the page's viewport meta element so that it can be used to zoom the page to 200%. Restrictive values for user-scalable and maximum-scale attributes of this meta element should be avoided.

Instead, include prevent-ios-zoom-on-focus.less to set the font size of form inputs to 16px when in the extra small responsive breakpoint. This will prevent iOS from zooming automatically when an input receives focus but continue to allow users to pinch to zoom.