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

@sinoui/tailwindcss-plugin

v2.0.0-alpha.26

Published

@sinoui/core与tailwindcss组合使用的插件

Downloads

5

Readme

@sinoui/tailwindcss-plugin

在项目中使用 @sinoui/core,必须集成 @sinoui/tailwindcss-plugin 插件。

1. m3 设计变量

通过 css 变量可以动态改变设计变量,可以在 tailwindcss 中直接使用 m3(material design v3, material you) 设计变量。

1.1. 颜色系统

可以通过 css 变量动态定制颜色系统。

primary 为例说明。

1.1.1. 在 tailwindcss 中使用

在 tailwindcss 中这样使用:

<div className="text-primary"></div>

会生成一下 css:

.text-primary {
  --opacity: 1;
  color: rgba(var(--md-sys-color-primary), var(--opacity));
}

1.1.2. 通过 css 变量定制主题

@sinoui/tailwindcss-plugin 会插入以下基础 css:

:root {
  /** 默认的 primary 设计变量 */
  --md-ref-palette-primary0: #000000;
  --md-ref-palette-primary10: #21005d;
  --md-ref-palette-primary20: #381e72;
  --md-ref-palette-primary30: #4f378b;
  --md-ref-palette-primary40: #6750a4;
  --md-ref-palette-primary50: #7f67be;
  --md-ref-palette-primary60: #9a82db;
  --md-ref-palette-primary70: #b69df8;
  --md-ref-palette-primary80: #d0bcff;
  --md-ref-palette-primary90: #eaddff;
  --md-ref-palette-primary95: #f6edff;
  --md-ref-palette-primary99: #fffbfe;
  --md-ref-palette-primary100: #ffffff;

  /** light */
  --md-sys-color-primary-light: --md-ref-palette-primary40;
  /** dark */
  --md-sys-color-primary-dark: --md-ref-palette-primary80;

  /** 主颜色在 light 情况下的值 */
  --md-sys-color-primary: var(--md-sys-color-primary-light);
}

.dark {
  /** 主颜色在 dark 情况下的值 */
  --md-sys-color-primary: var(--md-sys-color-primary-dark);
}

如果我们需要切换主颜色,只需要变更primary 设计变量即可。

1.2. state layer

不可以通过 css 变量定制状态层透明度。

m3 采用透明度来定义状态层的深度感。定义了以下透明度:

| state | opacity | 对应的 tailwindcss 中的名称 | 备注 | | ------------------------ | ------- | --------------------------- | ---------------------- | | hover | 0.08 | state-hover | | | focus | 0.12 | state-focus | | | pressed | 0.12 | state-pressed | | | dragged | 0.16 | state-dragged | | | disabled for content | 0.38 | state-disbled-content | 不可用元素的内容透明度 | | disabled for container | 0.12 | state-disabled-container | 不可用元素的表面透明度 |

tailwindcss 中使用的示例:

<div class="text-primary/state-hover"></div>

产生的 css 如下:

.text-primary\/state-hover {
  --opacity: 0.08;
  color: rgba(var(--md-sys-color-primary), var(--opacity));
}

1.3. 文本样式

可以通过 css 变量定制文本样式。

m3 定义了 5 大类文本样式,每个分类又分成 largemediumsmall 三个档次。

定义的 5 大类文本:

  • display
  • headline
  • body
  • label
  • title

在 tailwindcss 中,可以直接使用这些文本样式功能类,功能类的名称为 ${类别名称}-${档次},如display-large

例如:

<div class="display-large"></div>

会生成以下 css:

.display-large {
  font-style: Regular;
  font-weight: 400;
  font-size: 57px;
  line-height: 64px;
  letter-spacing: -0.25px;
}

1.4. 海拔

在 m3 体系中的组件都有自己的海拔。可以通过三种手段来表达海拔:

  • 不同的表面颜色可以用来表达组件之间的海拔
  • 使用阴影来表达关键组件的海拔(例如 FAB,即浮动按钮)
  • 使用遮罩层来表达组件的海拔(例如弹窗)

大部分情况下推荐采用第一种方案,只有第一种方案无法满足时,采用阴影方案。

1.4.1. 海拔阴影

可以通过环境变量定制海拔阴影颜色。

m3 体系定了 5 个级别的海拔,如下所示:

| 海拔级别 | 对应的阴影高度(px) | | -------- | ------------------ | | level 0 | 0 | | level 1 | 1 | | level 2 | 3 | | level 3 | 6 | | level 4 | 8 | | level 5 | 12 |

我们可以在 tailwindcss 中直接使用海拔阴影样式:elevation-0elevation-1elevation-2...。

1.4.2. 通过透明度表达海拔

m3 推荐表面采用不同透明度的主颜色来表达海拔。海拔与透明度的对应关系如下:

| 海拔级别 | 对应的透明度 | | -------- | ------------ | | level 0 | 0 | | level 1 | 0.05 | | level 2 | 0.08 | | level 3 | 0.11 | | level 4 | 0.12 | | level 5 | 0.14 |

1.5. 圆角样式

m3 中几乎每个组件都会有圆角样式。 m3 定义了以下级别的样式,@sinoui/core 扩展了 tailwdindcss 的 rounded 功能类,纳入了 m3 这些圆角样式:

| 圆角级别 | 圆角尺寸 | 对应的 tailwindcss 样式 | | ------------- | -------- | -------------------------------- | | extra-small | 4px | roundedrounded-extra-small | | small | 8px | rounded-small | | medium | 12px | rounded-medium | | large | 16px | rounded-large | | extra-large | 28px | rounded-extra-large |

1.6. 动效(motion)

动效可以使 UI 变得有趣、富有变现力且易于使用。

1.6.1. 缓动函数(easing)

m3 定义了两组缓动函数:

  • emphasized easing set - 代表了 m3 的表现风格,是最常见的。
  • standard easing set - 用于简单、小的或者功能为中心的过渡场景。

默认值如下所示:

| token | 默认值 | tailwindcss 功能类 | | ---------------------------------------------- | ----------------------------------- | ---------------------------- | | --m3-sys-motion-easing-emphasized | cubic-bezier(0.2, 0.0, 0, 1.0) | ease-emphasized | | --m3-sys-motion-easing-emphasized-decelerate | cubic-bezier(0.05, 0.7, 0.1, 1.0) | ease-emphasized-decelerate | | --m3-sys-motion-easing-emphasized-accelerate | cubic-bezier(0.3, 0.0, 0.8, 0.15) | ease-emphasized-accelerate | | --m3-sys-motion-easing-standard | cubic-bezier(0.2, 0.0, 0, 1.0) | ease-standard | | --m3-sys-motion-easing-standard-decelerate | cubic-bezier(0, 0, 0, 1) | ease-standard-decelerate | | --m3-sys-motion-easing-standard-accelerate | cubic-bezier(0.3, 0, 1, 1) | ease-standard-accelerate |

1.6.2. 持续时长(duration)

m3 定义了不同级别的过渡持续时长:

  • short - 用于以小功能为中心的过渡,如切换单选按钮的选中状态。
  • medium - 用于屏幕中等规模的区域过渡场景。
  • long - 一般与 emphasized easing set 共同出现。用于大场景过渡。

每个级别又分成 4 个阶梯。持续时长如下:

| token | 默认值 | tailwindcss 功能类 | | ---------------------------------- | ------- | ------------------ | | --m3-sys-motion-duration-short1 | 50ms | duration-short1 | | --m3-sys-motion-duration-short2 | 100ms | duration-short2 | | --m3-sys-motion-duration-short3 | 150ms | duration-short3 | | --m3-sys-motion-duration-short4 | 200ms | duration-short4 | | --m3-sys-motion-duration-medium1 | 250ms | duration-medium1 | | --m3-sys-motion-duration-medium2 | 300ms | duration-medium2 | | --m3-sys-motion-duration-medium3 | 350ms | duration-medium3 | | --m3-sys-motion-duration-medium4 | 400ms | duration-medium4 | | --m3-sys-motion-duration-long1 | 450ms | duration-long1 | | --m3-sys-motion-duration-long2 | 500ms | duration-long2 | | --m3-sys-motion-duration-long3 | 550ms | duration-long3 | | --m3-sys-motion-duration-long4 | 600ms | duration-long4 |

1.7. 文本颜色

三个最常用的文本颜色:

  • 主文本颜色:text-on-surface
  • 辅助文本颜色:text-secondary (或者 text-on-surface-variant
  • 禁用文本颜色:text-disabled (或者 -on-surface/state-disabled-content

m3 中的文本颜色都是以 on- 开头的,例如:

  • 背景色为主颜色之上的文本颜色:on-primary
  • 背景色为警告色之上的文本颜色:on-warning

2. 组件

2.1. Alert 组件

2.1.1. 设计变量(design token)

基础的设计变量:

  • --sino-color-alert - 警告提示组件关键色。
  • --sino-color-alert-container - 用于警告提示组件的容器表面的颜色。
  • --sino-color-alert-on-container - 在容器颜色之上的文本颜色。
  • --sino-color-alert-icon - 在容器颜色之上的图标颜色。
  • --sino-color-alert-outline - 警告提示框轮廓颜色。

需要将类型添加到 -alert 之后,例如:--sino-color-alert-info

2.1.2. 默认值:light

| 设计变量 | info | success | warning | error | | --------------------------------- | ------------------------------ | -------------------------- | --------------------------- | ------------------------ | | --sino-color-alert | lightBlue[700] | green[800] | #ed6c02 | red[700] | | --sino-color-alert-container | lighten(lightBlue[500], 0.9) | lighten(green[500], 0.9) | lighten(orange[500], 0.9) | lighten(red[400], 0.9) | | --sino-color-alert-on-container | darken(lightBlue[500], 0.6) | darken(green[500], 0.6) | darken(orange[500], 0.6) | darken(red[400], 0.6) | | --sino-color-alert-icon | lightBlue[500] | green[500] | orange[500] | red[400] | | --sino-color-alert-outline | lightBlue[500] | green[500] | orange[500] | red[400] |

2.1.3. 默认值:dark

| 设计变量 | info | success | warning | error | | --------------------------------- | ------------------------------ | -------------------------- | --------------------------- | ------------------------ | | --sino-color-alert | lightBlue[900] | green[900] | orange[900] | red[800] | | --sino-color-alert-container | darken(lightBlue[500], 0.9) | darken(green[500], 0.9) | darken(orange[500], 0.9) | darken(red[400], 0.9) | | --sino-color-alert-on-container | lighten(lightBlue[500], 0.6) | lighten(green[500], 0.6) | lighten(orange[500], 0.6) | lighten(red[400], 0.6) | | --sino-color-alert-icon | lightBlue[700] | green[800] | #ed6c02 | red[700] | | --sino-color-alert-outline | lightBlue[500] | green[500] | orange[500] | red[400] |

2.1.4. tailwindcss 支持

会将警告提示框的颜色设计变量加入到 tailwindcss 颜色系统中,并且在 tailwidcss 的颜色名称与设计变量名称一致,只是需要去掉 --sino-color- 前缀。

text-alert-info 会生成以下 css 代码:

.text-alert-info {
  color: rgba(var(--sino-color-alert-info), 1);
}