Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

sass-magics

Meqn38MIT1.1.2

Sass magic helper. It extends the Sass built-in modules and provides useful mixins and functions that make your Sass writing more magical and elegant.

sass, scss, sass-magic, sass-mixins, sass-functions, sass-utils, sass-helpers, sass-modules

readme

sass-magics

Sass magic helper.

It extends the Sass built-in modules and provides useful mixins and functions that make your Sass writing more magical and elegant.

一个功能丰富的 Sass 魔法助手。它扩展了 Sass 内置模块,并提供了常用的 mixins 和 functions,让你的 Sass 编写更加魔法般的便捷和优雅。

Installation

npm install sass-magics
# or
yarn add sass-magics

Usage

// @import
@import "sass-magics";

// @use ✅
@use "sass-magics" as *;

Using a single module

// @import
@import 'sass-magics/mixins/media-queries';

// @use ✅
@use 'sass-magics/mixins/media-queries' as * with (
  $_breakpoints: (
    'mobile': 320px,
    'phablet': 480px,
    'tablet': 800px,
    'desktop': 1280px,
    'wide': 1920px
  )
);

modules

@import 'sass-magics/core/string';
@import 'sass-magics/core/list';
@import 'sass-magics/core/map';

string

  • str-replace($string, $search, $replace: "")
@debug str-replace('hello world', 'world', 'sass');

list

  • list-sub($list, $start, $count: false)
  • list-subset($list, $start, $end: false)
  • list-remove($list, $args...)
  • list-insert($list, $start, $args...)
  • list-splice($list, $start, $count: false, $args...)
  • list-extend($lists..., $separator: false, $bracketed: false)
  • list-each($list, $callback: null)
  • list-sort($list, $order: ascend)
  • list-reverse($list, $separator: false, $bracketed: false)
$list: (4px, 8px, 12px, 16px, 20px);

@debug list-sub($list, 2, 1);
@debug list-subset($list, 2, 3);
@debug list-remove($list, 8px, 12px);
@debug list-insert($list, 2, 10px, 11px);
@debug list-splice($list, 2, 1, 6px, 8px, 10px);
@debug list-extend($list, (24px 32px 40px));
@debug list-sort($list, 'descend');
@debug list-reverse($list, 'space', true);

@function list-item($item, $index, $list) {
  @return $item;
}
@debug list-each($list, get-function(list-item));

map

  • map-sort($map, $callback: null, $order: ascend)
  • map-extend($maps..., $deep:?)

functions

@import 'sass-magics/functions/unit';
@import 'sass-magics/core/validator';

unit

  • strip-unit($value)
  • compare-unit($values...)
  • join-unit($value, $unit)
  • add-unit($value, $unit)
  • px2rem($value, $base:?)
  • px2em($value, $base:?)

validator

  • is-color($color)

mixins

@import 'sass-magics/mixins/selector';
@import 'sass-magics/mixins/media-queries';
@import 'sass-magics/mixins/use-theme';
@import 'sass-magics/mixins/center';
@import 'sass-magics/mixins/ellipsis';
@import 'sass-magics/mixins/triangle';
  • flex-center
  • position-center($width: auto)
  • inline-center($align: null)
  • ellipsis($rows, $max-width, $display)
  • triangle($direction, $color, $width, $height)

media-queries

  • mq($min:?, $max:?, $orientation:?, $and:?, $media-type:?, $breakpoints:?)
  • respond-to($key, $breakpoints:?)
  • change-breakpoints($key, $point:?, $breakpoints:?)

use-theme

  • useTheme
  • useThemeVar($name)
@use 'sass-magics/mixins/use-theme' as * with (
  dark: (
    primary-color: #fff,
  ),
  light: (
    primary-color: #000,
  )
);

.primary-button{
  @include useTheme {
    color: useThemeVar('primary-color');
  }
}

selector

  • limit-parent($selector, $limiter)
.users{
  .list{
    .item{
      background-color: #eee;

      @include limit-parent('.list', '.active') {
        background-color: #ccc;
      }
    }
  }
}

//result
.users .list .item{background-color: #eee;}
.users .list.active .item{background-color: #ccc;}

License

MIT.

changelog

Changelog

1.1.2 (2025-05-27)

🌟 Performance

  • selector: Optimize unified-parent mixins and add test cases (47d08df)
  • useTheme: Optimize define theme functionality and add test cases (5162b8a)

♻️ Code Refactoring

  • mq: Refactoring media-query module to enhance functionality (612335d)
  • triangle: Change direction and style of the triangle (d89237a)

1.1.1 (2025-05-27)

🌟 Performance

  • mixin: Upgrade SASS legacy API (d41b040)

1.1.0 (2025-05-26)

🚀 Features

1.0.3 (2024-07-12)

🐛 Bug Fixes

  • validator: ensure is-color function handles additional color formats (9abac36)

1.0.2 (2024-07-12)

🐛 Bug Fixes

  • readme: correct [@use](https://github.com/use) syntax in example (481361a)
  • triangle: replace division with math.div for border-width (a34096b)
  • validator: enhance color validation to include var(--color) (6d88816)

1.0.1 (2023-11-28)

🐛 Bug Fixes

  • List-splice insertion position and separator and other issues (044e038)
  • The is-color() condition is incorrect (91231b4)

🌟 Performance

  • Add default values for join-unit() parameters (87c2e40)

1.0.0 (2023-11-27)

🚀 Features

  • :sparkles: add ellipsis (3eb4836)
  • :sparkles: add media-queries (5acaf62)
  • :sparkles: add themes (c1cee9a)
  • Add useTheme mixin (7551666)
  • Add $order parameter for quick-sort() (0ad6b1b)
  • Add ellipsis/triangle mixins (9ba59e1)
  • Add flex/position/inline centering style (170f81b)
  • Add is-color function (dbe820f)
  • Add jest configration & dirs (cc5640f)
  • Add List function(each&quick-sort) (074eb17)
  • Add map-extend($args...) (52e3c21)
  • Add minxis (ellipsis,triangle) (9c5bb83)
  • Add mq-mixin & update breakpoints (c57bcef)
  • Add selector mixin (4c61feb)
  • Add string-replace function (5ea0e40)
  • Add unit handing functions(strip-unit/join-unit/px2rem...) (3e976b8)
  • Extend list module, including remove,insert,extend,reverse (2354c55)
  • Extend list module, including sub/subset/splice (6a63ada)

🐛 Bug Fixes

  • Callback type of list-each() must be function (048fb50)
  • Import map path error (93573b9)

🌟 Performance

  • Optimize breakpoints for private & support replacement (7d0d26a)
  • Optimize directory structure (36a2913)
  • Optimize map document (07124c2)
  • Optimize str-replace function parameters (fc65c4d)
  • Optimize useThemeVar() parameters name (2b1c637)
  • update breakpoints (9456d2b)
  • Update list-sort() & map-sort() (fec46a0)