@anker-in/headless-ui 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,147 @@
1
+ # Contributing
2
+
3
+ # 关于
4
+
5
+ # 代码文件结构
6
+
7
+ ```shell
8
+ packages
9
+ ├── storybook
10
+ │ └── public
11
+ └── ui
12
+ └── src
13
+ ├── components
14
+ ├── helpers
15
+ ├── icons
16
+ ├── props
17
+ ├── stories
18
+ └── styles
19
+
20
+ ```
21
+
22
+ | 路径 | 描述 |
23
+ | -------------------------- | ------------------------ |
24
+ | packages/storybook | storybook 配置 |
25
+ | packages/ui | 组件根目录 |
26
+ | packages/ui/src/components | 所有的组件都在这个目录 |
27
+ | packages/ui/src/stories | 组件对应的storybook 文件 |
28
+ | packages/ui/src/styles | 样式文件 |
29
+
30
+ # 如何运行
31
+
32
+ 本地开发
33
+
34
+ 先clone 代码到本地
35
+
36
+ ```shell
37
+ git clone
38
+ ```
39
+
40
+ 安装依赖
41
+
42
+ ```shell
43
+ pnpm install
44
+ ```
45
+
46
+ ui 添加新的依赖
47
+
48
+ ```shell
49
+ pnpm add {packages} --filter @headless-style-web/ui
50
+ ```
51
+
52
+ 进入根目录
53
+
54
+ ```
55
+ cd headless-common/style/web
56
+ ```
57
+
58
+ 为什么把 web 当作根目录?
59
+ 因为前期打算通过sub module 的方式使用组件,方便快速验证,后续打算把组件库单独提出来当作一个仓库,打包成npm包。所以基础配置,比如eslint, tscongig, npm 等都是是在这个目录配置的,把这个目录当作根目录,编辑器更好的可以读取这些配置。
60
+
61
+ 本地启动
62
+
63
+ ```shell
64
+ pnpm dev
65
+ ```
66
+
67
+ 这会运行storybook,可以一边修改组件源码,一边查看效果。
68
+
69
+ # 如何新增组件
70
+
71
+ 新增组件之前先看下仓库有没有类似的组件已经存在。
72
+ 如果不存在,需要新增,建议新组件基于 [@radix-ui/primitive](https://www.radix-ui.com/primitives) 或者手动复制[shadcn](https://ui.shadcn.com/) 的组件 进行二次封装。
73
+ 组件目录位于`packages/ui/src`。
74
+
75
+ 组件需要覆盖全品牌,如果新增css 变量,需要在`packages/ui/src/styles/global.css` 补充在各个品牌的作用域之下。
76
+ 如果某个品牌没有添加,会默认使用root 下的定义作为fallback。
77
+
78
+ 比如新的组件`Card`
79
+ 需要新加一个Card 的背景颜色
80
+
81
+ ```css
82
+ --card-bg-color: #fefefe;
83
+ ```
84
+
85
+ 请在不同的品牌的作用域下添加
86
+ 比如
87
+
88
+ ```css
89
+ :root[data-theme='anker'] {
90
+ --card-bg-color: #fefefe;
91
+ }
92
+ ```
93
+
94
+ 原理
95
+
96
+ <img src="./css-explain.png" width="500" height="500"/>
97
+
98
+ ⚠️注意
99
+ 组件编写后请按照checklist 进行检查
100
+
101
+ ## checklist
102
+
103
+ - [ ] 已经为组件编写了storybook API文档
104
+ - [ ] 组件在storybook accessibility 通过测试
105
+ - [ ] 完成组件的单元测试
106
+ - [ ] 组件在不同品牌下的样式正常显示
107
+ - [ ] 组件在不同设备,分辨率下显示正常
108
+ - [ ] 组件不包含业务代码,包括文案,接口等
109
+
110
+ # 如何提交代码
111
+
112
+ git flow 和code review
113
+
114
+ 1. 主分支 (main):存储正式发布的历史。
115
+ 2. 开发分支 (develop):集成各种功能的分支。
116
+ 3. 功能分支 (feature/x):从develop分支出来,用于新功能的开发。
117
+ 4. 修补分支 (hotfix/x):从main分支出来,用于快速修补生产环境的问题。
118
+
119
+ # 代码规范
120
+
121
+ 请遵循 eslint 的配置编写代码。
122
+
123
+ 提交代码前运行lint
124
+
125
+ ```shell
126
+ pnpm lint
127
+ ```
128
+
129
+ 如果遇到eslint 报错,但是坚持自己的写法的,可以通过注释的方式,阻止eslint 校验, 并且要写明阻止的规则
130
+ 比如
131
+
132
+ ```js
133
+ // eslint-disable-next-line no-alert
134
+ alert('Example of disabled line for no-alert')
135
+ ```
136
+
137
+ 如果希望修改eslint 规则,修改根目录下的`.eslintrc.json`
138
+
139
+ # Tesing
140
+
141
+ unit test 使用 [jest](https://jestjs.io/) 和 [@test-library/react](https://testing-library.com/)。
142
+
143
+ 运行单元测试
144
+
145
+ ```shell
146
+ pnpm test
147
+ ```
package/README.md ADDED
@@ -0,0 +1,41 @@
1
+ ### 开发
2
+
3
+ [CONTRIBUTING.md](CONTRIBUTING.md)
4
+
5
+ #### 初始化
6
+
7
+ ### 相关资料
8
+
9
+ [web 端设计稿]()
10
+
11
+ # 使用方法
12
+
13
+ ```shell
14
+ npm install @anker-in/headless-ui
15
+
16
+ ```
17
+
18
+ 手动在html 标签添加主题名, nextjs 项目位于`_document.tsx`
19
+
20
+ ```html
21
+ <html data-brand-theme="soundCore"></html>
22
+ ```
23
+
24
+ 然后就可以项目内引入需要的组件
25
+
26
+ ```jsx
27
+ // 在项目入口添加样式文件
28
+ import '@anker-in/headless-ui/style.css'
29
+
30
+ import { Button } from '@anker-in/headless-ui'
31
+
32
+ // 省略中间代码
33
+
34
+ <Button size="lg" variant="primary">
35
+ Primary
36
+ </Button>
37
+ <Button size="sm" variant="secondary">
38
+ secondary
39
+ </Button>
40
+
41
+ ```
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anker-in/headless-ui",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "main": "./dist/esm/index.js",
5
5
  "types": "./dist/esm/index.d.ts",
6
6
  "module": "./dist/esm/index.js",
@@ -9,7 +9,11 @@
9
9
  "type": "module",
10
10
  "files": [
11
11
  "src/**",
12
- "dist/**"
12
+ "dist/**",
13
+ "style.css",
14
+ "README.md",
15
+ "CONTRIBUTING.md",
16
+ "css-explain.png"
13
17
  ],
14
18
  "sideEffects": false,
15
19
  "keywords": [],