unomario
TypeScript icon, indicating that this package has built-in type declarations

0.3.1 • Public • Published

UnoMario

UnoMario is a lightweight library that combines custom CSS value handlers into the pipeline for processing strings and returning generated CSS styles. Compared to the built-in implementation, the library grants you complete control over every aspect of the process.

If you are willing to help, feel free to do your magic 🧙🏻‍♂️

Here are ongoing plans:

  • [ ] Create a list of basic handlers;
  • [ ] Replicate TailwindCSS preset using EM units.

Getting Started

To install the library running the following command:

npm i -D unomario @unocss/core

Create a set of handlers:

// handlers.ts
import type { UnoMapper } from 'unomario'

function auto(opts?: { skip?: boolean }): UnoMapper {
  return val => !opts?.skip && val === 'auto' ? 'auto' : null
}

function bracket(): UnoMapper {
  return val => val.startsWith('[') && val.endsWith(']') ? val.slice(1, -1) : null
}

Do magic and build DynamicRules using your handlers created earlier

import { defineConfig } from 'unocss'
import { Mario } from 'unomario'
import { auto, bracket } from './handlers'

const sizeMap = {
  h: 'height',
  w: 'width',
}

export default defineConfig({
  
  /**
   * @example
   *  min-w-[44vw]  → min-width: 44vw;
   *  h-auto        → height: auto;
   *  max-w-auto    → no styles, no selectors 🫢
   */
  rules: [
    [/^(min-|max-)(w|h)-(.+)$/, ([_, minmax = '', hw, size]) =>
      Mario.of(`${minmax}${sizeMap[hw]}`, size)
        .toStyles(
          bracket(),
          auto({ skip: minmax === 'max-' }) // max-width doesn't have the `auto` value
        )
    ]
  ]
})

Package Sidebar

Install

npm i unomario

Weekly Downloads

1

Version

0.3.1

License

MIT

Unpacked Size

4.94 kB

Total Files

7

Last publish

Collaborators

  • theoleksii