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

@hungry/bulma-element

v0.1.2

Published

Bulma elements in typescript

Downloads

5

Readme

@hungry/bulma-element

Bulma elements in typescript with styled-components and styled-system features.

Storybook Docs

Why

  • Bulma provides great baseline for any component, but sometimes there is a need to override it within specific context, this is why css-modules, style-components and styled-system are enabled from default for all components
  • there are some implementation of bulma for typescript, however typings for the time being seems to have very low resolution and most of them do not assume that every selector could be changed by bulma modifiers
  • provide thin layer of abstraction for css whilst preserving nature of CSS - all modifiers can be applied to any component - it is explicitly defined no auto magic assumption
  • missing bridge between existing sass frameworks and css in js - porting any component from sass world

How to enable @hungry/bulma-element in you project

bulma-element require webpack and some loaders. All of them are predefined and there is no special requirements, however minimal setup assumes, loaders below

  import {
    styleLoader,            // style-loaders
    cssLoader,              // css-loader with some predefined css-modules setup
    sassLoader,             // predefined sass-loader with include-paths and implementation defined
    sassDevelopmentLoaders, // bundle of these 3 above
    } from '@hungry/webpack-parts'

  const sassRule = {
    test: /\.sass$/,
    use: sassDevelopmentLoaders()
  }

Using predefined typescript setup

You can leverage minimal typescript setup from @hugnry/webpack-parts, like so

import { Configuration, minimalTypescriptWithSass } from '@hungry/webpack-parts'
import { theme } from '@hungry/bulma-theme'
// this part is only required if you are going to provide bulma-theme overriding
import { injectSassVarLoader } from '@hungry/webpack-sass-theme-loader'

export const applyTSConfig =
  (cfg: Configuration) =>
    minimalTypescriptWithSass(cfg)
      .map(injectSassVarLoader(theme))
      .run({
        env: 'development',
        target: 'web',
      })

const config = applyTSConfig({/* your webpack config */})

If you encounter any issues, you can check webpack.showcase.ts to get full view how it works with storybook.

Example component

API

Primitives
  <Button 
    // bulma modifiers provided by sassy-react-component
    isActive 
    isDanger 
    hasTextWarning 
    // styled components feature
    as="section"
    // styled-system features
    width={1}
    p={2}
  />
BEM Blocks

There are some predefined BEM like components which contains more than one element. To differentiate them the most outer is called Block.

import { Notification } from '@hungry/bulma-element'

<Notification.Block isPrimary>
  <Notification.DeleteButton />
  Some Notification text
</Notification.Block>

How it differentiate comparing to others

  • this is 1:1 bulma conversion, so all modifiers are available here as well. There is no manual step in it (beside the definition of component :)) so all is autogenerated based on sass files.

Where is the rest of bulma components

This package is final, this is, all bulma elements were exported from `bulma, bulma components would be provided as separate package.

Contribution

TODO