@boeet/next-tokens 0.1.0
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.
- package/README.md +30 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/package.json +29 -0
- package/styles.css +96 -0
package/README.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# @boeet/next-tokens
|
|
2
|
+
|
|
3
|
+
Design tokens extracted from `design.md` and the Lanhu export.
|
|
4
|
+
|
|
5
|
+
Use the TypeScript exports for token documentation and `styles.css` for CSS
|
|
6
|
+
variables consumed by Tailwind/shadcn components.
|
|
7
|
+
|
|
8
|
+
## Install
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm install @boeet/next-tokens
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Import the CSS variables once in the consumer app:
|
|
15
|
+
|
|
16
|
+
```css
|
|
17
|
+
@import "@boeet/next-tokens/styles.css";
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Use the TypeScript exports when a generated page or design-system document
|
|
21
|
+
needs token metadata:
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import {
|
|
25
|
+
brandTokens,
|
|
26
|
+
radiusTokens,
|
|
27
|
+
shadowTokens,
|
|
28
|
+
typographyScale,
|
|
29
|
+
} from "@boeet/next-tokens"
|
|
30
|
+
```
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare const brandTokens: {
|
|
2
|
+
name: string;
|
|
3
|
+
value: string;
|
|
4
|
+
usage: string;
|
|
5
|
+
}[];
|
|
6
|
+
export declare const semanticTokens: {
|
|
7
|
+
name: string;
|
|
8
|
+
value: string;
|
|
9
|
+
usage: string;
|
|
10
|
+
}[];
|
|
11
|
+
export declare const neutralTokens: {
|
|
12
|
+
name: string;
|
|
13
|
+
value: string;
|
|
14
|
+
usage: string;
|
|
15
|
+
}[];
|
|
16
|
+
export declare const typographyScale: {
|
|
17
|
+
name: string;
|
|
18
|
+
size: string;
|
|
19
|
+
lineHeight: string;
|
|
20
|
+
usage: string;
|
|
21
|
+
}[];
|
|
22
|
+
export declare const spacingTokens: {
|
|
23
|
+
name: string;
|
|
24
|
+
value: string;
|
|
25
|
+
usage: string;
|
|
26
|
+
}[];
|
|
27
|
+
export declare const radiusTokens: {
|
|
28
|
+
name: string;
|
|
29
|
+
value: string;
|
|
30
|
+
usage: string;
|
|
31
|
+
}[];
|
|
32
|
+
export declare const shadowTokens: {
|
|
33
|
+
name: string;
|
|
34
|
+
value: string;
|
|
35
|
+
usage: string;
|
|
36
|
+
}[];
|
|
37
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;GAKvB,CAAA;AAED,eAAO,MAAM,cAAc;;;;GAO1B,CAAA;AAED,eAAO,MAAM,aAAa;;;;GAWzB,CAAA;AAED,eAAO,MAAM,eAAe;;;;;GAO3B,CAAA;AAED,eAAO,MAAM,aAAa;;;;GAMzB,CAAA;AAED,eAAO,MAAM,YAAY;;;;GAKxB,CAAA;AAED,eAAO,MAAM,YAAY;;;;GAIxB,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export const brandTokens = [
|
|
2
|
+
{ name: "Primary", value: "#007AFF", usage: "主按钮 / 当前项 / 关键入口" },
|
|
3
|
+
{ name: "Primary Hover", value: "#268EFF", usage: "悬浮态 / 高亮提醒" },
|
|
4
|
+
{ name: "Primary Active", value: "#036BDC", usage: "点击态 / 按下态" },
|
|
5
|
+
{ name: "Primary Soft", value: "rgba(0,122,255,0.10)", usage: "浅底按钮 / 导航选中底" },
|
|
6
|
+
];
|
|
7
|
+
export const semanticTokens = [
|
|
8
|
+
{ name: "Success", value: "#18A058", usage: "成功 / 正常" },
|
|
9
|
+
{ name: "Danger", value: "#D03050", usage: "错误 / 失败 / 危险操作" },
|
|
10
|
+
{ name: "Warning", value: "#FCB040", usage: "警告 / 异常" },
|
|
11
|
+
{ name: "Cyan", value: "#21CCFF", usage: "图表高亮 / 深色看板" },
|
|
12
|
+
{ name: "Orange", value: "#FB6021", usage: "图表辅助 / 强调" },
|
|
13
|
+
{ name: "Mint", value: "#05E9CA", usage: "图表辅助" },
|
|
14
|
+
];
|
|
15
|
+
export const neutralTokens = [
|
|
16
|
+
{ name: "Dark Page", value: "#101015", usage: "深色全局背景" },
|
|
17
|
+
{ name: "Dark Surface", value: "#18181D", usage: "深色卡片背景" },
|
|
18
|
+
{ name: "Dark Section", value: "#26262B", usage: "深色分区 / 表头" },
|
|
19
|
+
{ name: "Dark Control", value: "#2D2D30", usage: "深色输入框 / 边框" },
|
|
20
|
+
{ name: "Text Primary", value: "#18181D", usage: "标题 / 正文" },
|
|
21
|
+
{ name: "Text Secondary", value: "#4B4E52", usage: "副标题 / 辅助文字" },
|
|
22
|
+
{ name: "Text Tertiary", value: "#8E9195", usage: "提示文字 / 占位" },
|
|
23
|
+
{ name: "Disabled", value: "#B3B7BD", usage: "禁用 / 轻提示" },
|
|
24
|
+
{ name: "Border", value: "#EFEFF5", usage: "分割线 / 浅边框" },
|
|
25
|
+
{ name: "Background", value: "#FAFAFC", usage: "浅色页面 / 表头" },
|
|
26
|
+
];
|
|
27
|
+
export const typographyScale = [
|
|
28
|
+
{ name: "Data XL", size: "34px", lineHeight: "42px", usage: "看板数据展示" },
|
|
29
|
+
{ name: "Display", size: "24px", lineHeight: "36px", usage: "重要数字 / 特大标题" },
|
|
30
|
+
{ name: "Title L", size: "20px", lineHeight: "30px", usage: "强调标题 / 重要提示" },
|
|
31
|
+
{ name: "Title M", size: "16px", lineHeight: "24px", usage: "卡片标题 / 按钮 / 图表标题" },
|
|
32
|
+
{ name: "Body", size: "14px", lineHeight: "20px", usage: "正文 / 列表 / 表格" },
|
|
33
|
+
{ name: "Caption", size: "12px", lineHeight: "18px", usage: "注释 / 备注 / 标签" },
|
|
34
|
+
];
|
|
35
|
+
export const spacingTokens = [
|
|
36
|
+
{ name: "Page Margin", value: "20px", usage: "内容区左右边距" },
|
|
37
|
+
{ name: "Grid Gutter", value: "20px", usage: "24 栅格水槽" },
|
|
38
|
+
{ name: "Card Gap", value: "20px", usage: "卡片之间间隔" },
|
|
39
|
+
{ name: "Button Padding", value: "16px", usage: "按钮水平安全边距" },
|
|
40
|
+
{ name: "Icon Gap", value: "8px", usage: "图标与文字间距" },
|
|
41
|
+
];
|
|
42
|
+
export const radiusTokens = [
|
|
43
|
+
{ name: "Control", value: "3px", usage: "按钮 / 输入 / 弹层小容器" },
|
|
44
|
+
{ name: "Card", value: "8px", usage: "业务卡片 / 看板卡片" },
|
|
45
|
+
{ name: "Pill", value: "14px", usage: "28px 胶囊标签" },
|
|
46
|
+
{ name: "Round", value: "50%", usage: "头像 / 状态点" },
|
|
47
|
+
];
|
|
48
|
+
export const shadowTokens = [
|
|
49
|
+
{ name: "Card", value: "0 40px 16px -24px rgba(0,0,0,.04)", usage: "普通卡片" },
|
|
50
|
+
{ name: "Float", value: "0 0 20px rgba(142,145,149,.10)", usage: "侧栏 / 顶栏 / 浮层" },
|
|
51
|
+
{ name: "Popover", value: "0 2px 16px rgba(0,0,0,.10)", usage: "弹出层 / 确认框" },
|
|
52
|
+
];
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@boeet/next-tokens",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js"
|
|
11
|
+
},
|
|
12
|
+
"./styles.css": "./styles.css"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"styles.css",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public",
|
|
21
|
+
"registry": "https://registry.npmjs.org/"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"typescript": "^5"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "tsc -p tsconfig.json"
|
|
28
|
+
}
|
|
29
|
+
}
|
package/styles.css
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--color-primary-token: #007aff;
|
|
3
|
+
--color-primary-hover: #268eff;
|
|
4
|
+
--color-primary-active: #036bdc;
|
|
5
|
+
--color-primary-soft: rgba(0, 122, 255, 0.1);
|
|
6
|
+
--color-success-token: #18a058;
|
|
7
|
+
--color-success-soft: rgba(24, 160, 88, 0.1);
|
|
8
|
+
--color-danger-token: #d03050;
|
|
9
|
+
--color-warning-token: #fcb040;
|
|
10
|
+
--color-orange-token: #fb6021;
|
|
11
|
+
--color-cyan-token: #21ccff;
|
|
12
|
+
--color-mint-token: #05e9ca;
|
|
13
|
+
--color-purple-token: #280dd2;
|
|
14
|
+
--color-steel-token: #849dbf;
|
|
15
|
+
--color-yellow-token: #ffe057;
|
|
16
|
+
|
|
17
|
+
--background: #fafafc;
|
|
18
|
+
--foreground: #18181d;
|
|
19
|
+
--card: #ffffff;
|
|
20
|
+
--card-foreground: #18181d;
|
|
21
|
+
--popover: #ffffff;
|
|
22
|
+
--popover-foreground: #18181d;
|
|
23
|
+
--primary: #007aff;
|
|
24
|
+
--primary-foreground: #ffffff;
|
|
25
|
+
--secondary: #fafafc;
|
|
26
|
+
--secondary-foreground: #18181d;
|
|
27
|
+
--muted: #fafafc;
|
|
28
|
+
--muted-foreground: #8e9195;
|
|
29
|
+
--accent: rgba(0, 122, 255, 0.1);
|
|
30
|
+
--accent-foreground: #007aff;
|
|
31
|
+
--destructive: #d03050;
|
|
32
|
+
--destructive-foreground: #ffffff;
|
|
33
|
+
--border: #efeff5;
|
|
34
|
+
--input: #e0e0e6;
|
|
35
|
+
--ring: #007aff;
|
|
36
|
+
--chart-1: #849dbf;
|
|
37
|
+
--chart-2: #280dd2;
|
|
38
|
+
--chart-3: #21ccff;
|
|
39
|
+
--chart-4: #05e9ca;
|
|
40
|
+
--chart-5: #fcb040;
|
|
41
|
+
--radius: 8px;
|
|
42
|
+
--radius-control: 3px;
|
|
43
|
+
--radius-card: 8px;
|
|
44
|
+
--radius-pill: 14px;
|
|
45
|
+
--space-page: 20px;
|
|
46
|
+
--space-grid-gutter: 20px;
|
|
47
|
+
--sidebar-width: 244px;
|
|
48
|
+
--topbar-height: 64px;
|
|
49
|
+
--nav-item-height: 44px;
|
|
50
|
+
--shadow-card: 0 40px 16px -24px rgba(0, 0, 0, 0.04);
|
|
51
|
+
--shadow-float: 0 0 20px rgba(142, 145, 149, 0.1);
|
|
52
|
+
--shadow-popover: 0 2px 16px rgba(0, 0, 0, 0.1);
|
|
53
|
+
--sidebar: #ffffff;
|
|
54
|
+
--sidebar-foreground: #18181d;
|
|
55
|
+
--sidebar-primary: #007aff;
|
|
56
|
+
--sidebar-primary-foreground: #ffffff;
|
|
57
|
+
--sidebar-accent: rgba(0, 122, 255, 0.1);
|
|
58
|
+
--sidebar-accent-foreground: #007aff;
|
|
59
|
+
--sidebar-border: #efeff5;
|
|
60
|
+
--sidebar-ring: #007aff;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.dark {
|
|
64
|
+
--background: #101015;
|
|
65
|
+
--foreground: #efeff5;
|
|
66
|
+
--card: #18181d;
|
|
67
|
+
--card-foreground: #efeff5;
|
|
68
|
+
--popover: #18181d;
|
|
69
|
+
--popover-foreground: #efeff5;
|
|
70
|
+
--primary: #007aff;
|
|
71
|
+
--primary-foreground: #ffffff;
|
|
72
|
+
--secondary: #26262b;
|
|
73
|
+
--secondary-foreground: #efeff5;
|
|
74
|
+
--muted: #26262b;
|
|
75
|
+
--muted-foreground: #b3b7bd;
|
|
76
|
+
--accent: rgba(0, 122, 255, 0.15);
|
|
77
|
+
--accent-foreground: #268eff;
|
|
78
|
+
--destructive: #d03050;
|
|
79
|
+
--destructive-foreground: #ffffff;
|
|
80
|
+
--border: #2d2d30;
|
|
81
|
+
--input: #2d2d30;
|
|
82
|
+
--ring: #268eff;
|
|
83
|
+
--chart-1: #849dbf;
|
|
84
|
+
--chart-2: #21ccff;
|
|
85
|
+
--chart-3: #05e9ca;
|
|
86
|
+
--chart-4: #fcb040;
|
|
87
|
+
--chart-5: #fb6021;
|
|
88
|
+
--sidebar: #18181d;
|
|
89
|
+
--sidebar-foreground: #efeff5;
|
|
90
|
+
--sidebar-primary: #007aff;
|
|
91
|
+
--sidebar-primary-foreground: #ffffff;
|
|
92
|
+
--sidebar-accent: rgba(0, 122, 255, 0.15);
|
|
93
|
+
--sidebar-accent-foreground: #268eff;
|
|
94
|
+
--sidebar-border: #2d2d30;
|
|
95
|
+
--sidebar-ring: #268eff;
|
|
96
|
+
}
|