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

@w3f/gatsby-theme-w3f

v0.0.20

Published

w3f gatsby theme

Downloads

24

Readme

@w3f/gatsby-theme-w3f (npm)

This is a gatsby theme project, and cannot be run directly.

You can either:

  • install the theme as a gatsby plugin in your project
  • develop on the theme locally through the example project

This document outlines how the theme is setup, its plugin and configuration.

Installation as a theme in a project

To use this theme, install it in a project, as a npm module: npm i --save @w3f/gatsby-theme-w3f.

In the project's gatsby-config.js, the plugin section can then define our theme, and i18n locales like so:

plugins: [
	{
		resolve: `@w3f/gatsby-theme-w3f`,
		options: {
			i18nLanguages: ['en', 'fr'],
			gatsbyTransformerRemarkInclude: ['featured_image', 'markdownremark', 'image'],
		}
	},
]

The first language listed will be the default language.

Customization of existing theme files (shadowing)

You can overide existing theme files in your project directory structure. For this, we use the Gatsby shadowing technique, at the path ./src/@w3f/gatsby-theme-w3f/ of your project.

For example, to overide the theme file ./src/components/HeaderNav.js, we can create the file ./src/@w3f/gatsby-theme-w3f/components/HeaderNav.js in our project.

The same goes for every other theme files.

Develop new project features/pages

If you'd like to develop other features (pages, components etc.) in your project, you can do it as usual for every other gatsby projects, in its ./src/ folder.

Otherwise, to emphasize modularity, you can develop the independant features, as Gatsby local plugins.

Setup, configuration & plugins

i18n

Docs:

  • https://github.com/microapps/gatsby-plugin-react-i18next#how-to-extract-translations-from-pages
  • https://www.i18next.com
  • https://react.i18next.com

Configuration

You can find the config for i18n, using i18next with gatsby-plugin-react-i18next.

  • the markdown content is located in ./content/{language}/{content_type}/*/
  • the language strings are located in ./locales/{language}/{data_type}.json

The default language (and fallback language) is en for english.

Extract strings

To extract the strings that needs to be translated, it is possible to run yarn extract-locales, which will generate the /locales-tmp folder.

netlify-cms (admin)

netlify-cms-app & gatsby-plugin-netlify-cms are used to setup [netlify-cms](https://www.netlifycms.org) for this project.

The gatsby gatsby-config pluggin, points to the file src/cms/index.js, as entry file of the configuration.

markdown editor components

We register custom markdown editor components, availale in the netlify-cms markdown widget menu. Clicking on the + sign (Add Component), gives access to the list of availabe editor components.

These editor components, are used in combination with javascript custom web-components.

web-components, so we don't have to use .mdx file extension for content. One issue, is that we're out of the react/gatsby flow, but these elements'code could be shared indepently between projects using netlify-cms, and also, only these web-components can be executed as code by editors editing the site (vs. all sort of code & react & imports with .mdx format).

The code of the web components is located in ./src/web-components/.

link-cta & <w3f-link-cta

The link-cta editor component has two fields:

  • url: the address of the web page this link will point to (as the href of the anchor).
  • text || innerHTML:

It is used in combination with the custom-element <w3f-link-cta href="" text="">text can also go here, as the innerText</w3f-link-cta>.

local git-gateway backend

To develop and use netlify-cms with the data available in the local repository folder:

In the file ./.env.development set:

GATSBY_NETLIFY_CMS_GIT_LOCAL=true

Then in the project's root folder run:

npx netlify-cms-proxy-server

and in an other shell and the same folder, run the development server as usual.