@mezzanine-ui/system 0.16.0 → 1.0.0-canary.1
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/_system.scss +46 -7
- package/effect/_effect.scss +66 -0
- package/effect/_index.scss +1 -0
- package/effect/constants.d.ts +1 -0
- package/effect/constants.js +3 -0
- package/effect/index.d.ts +2 -0
- package/effect/index.js +1 -0
- package/effect/typings.d.ts +32 -0
- package/package.json +1 -1
- package/palette/_index.scss +3 -1
- package/palette/_palette.scss +3 -203
- package/palette/_primitives.scss +267 -0
- package/palette/_semantic.scss +537 -0
- package/palette/constants.d.ts +1 -1
- package/palette/constants.js +2 -2
- package/palette/index.js +1 -1
- package/palette/typings.d.ts +86 -0
- package/radius/_index.scss +1 -0
- package/radius/_radius.scss +71 -0
- package/radius/constants.d.ts +1 -0
- package/radius/constants.js +3 -0
- package/radius/index.d.ts +3 -0
- package/radius/index.js +2 -0
- package/radius/radius.d.ts +18 -0
- package/radius/radius.js +32 -0
- package/size/_size.scss +6 -1
- package/size/size.d.ts +2 -0
- package/spacing/_index.scss +3 -1
- package/spacing/_primitives.scss +131 -0
- package/spacing/_semantic.scss +541 -0
- package/spacing/_spacing.scss +2 -18
- package/spacing/constants.d.ts +1 -0
- package/spacing/constants.js +2 -1
- package/spacing/index.js +1 -1
- package/spacing/toSpacingCssVar.d.ts +1 -0
- package/spacing/toSpacingCssVar.js +1 -0
- package/spacing/typings.d.ts +81 -0
- package/typography/SF-Mono/SF-Mono-Medium.otf +0 -0
- package/typography/SF-Mono/SF-Mono-Regular.otf +0 -0
- package/typography/SF-Mono/SF-Mono-Semibold.otf +0 -0
- package/typography/_index.scss +4 -1
- package/typography/_primitives.scss +318 -0
- package/typography/_semantic.scss +237 -0
- package/typography/_sf-mono.scss +33 -0
- package/typography/_typography.scss +4 -248
- package/typography/_utils.scss +4 -0
- package/typography/index.js +1 -0
- package/typography/typings.d.ts +9 -1
- package/typography/typings.js +4 -0
- package/palette/_constants.scss +0 -267
- package/palette/_utils.scss +0 -47
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
@use '../utils/list';
|
|
2
|
+
@use '../utils/map';
|
|
3
|
+
|
|
4
|
+
$prefix: mzn-radius;
|
|
5
|
+
|
|
6
|
+
// 定義所有可用的 radius 尺寸
|
|
7
|
+
$radius-sizes: (none, tiny, base, roomy, full);
|
|
8
|
+
|
|
9
|
+
// 預設 radius 值定義
|
|
10
|
+
$default-radius: (
|
|
11
|
+
none: 0,
|
|
12
|
+
tiny: 0.125rem, // 2px
|
|
13
|
+
base: 0.25rem, // 4px
|
|
14
|
+
roomy: 0.5rem, // 8px
|
|
15
|
+
full: 62.4375rem, // 999px
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
// 驗證 radius size 是否有效
|
|
19
|
+
@function is-valid-size($size) {
|
|
20
|
+
@return list.index($radius-sizes, $size) != null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// 取得特定 size 的 radius 值
|
|
24
|
+
@function get-radius($size, $radius: $default-radius) {
|
|
25
|
+
@if not is-valid-size($size) {
|
|
26
|
+
@error 'Invalid radius size "#{$size}". Valid sizes are: #{$radius-sizes}';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
$value: map.get($radius, $size);
|
|
30
|
+
|
|
31
|
+
@if not $value and $value != 0 {
|
|
32
|
+
@error 'Radius value not defined for size "#{$size}"';
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@return $value;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// 取得 CSS 變數名稱
|
|
39
|
+
// 例如: --mzn-radius-base
|
|
40
|
+
@function get-var-name($size) {
|
|
41
|
+
@if $prefix == '' {
|
|
42
|
+
@return --#{$size};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@return --#{$prefix}-#{$size};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// 使用 CSS 變數引用 radius
|
|
49
|
+
// 例如: radius(base) => var(--mzn-radius-base)
|
|
50
|
+
@function variable($size) {
|
|
51
|
+
@if not is-valid-size($size) {
|
|
52
|
+
@error 'Invalid radius size "#{$size}". Valid sizes are: #{$radius-sizes}';
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@return var(#{get-var-name($size)});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// 生成所有 radius CSS 變數
|
|
59
|
+
@mixin variables($radius: ()) {
|
|
60
|
+
$radius: map.deep-merge($default-radius, $radius);
|
|
61
|
+
|
|
62
|
+
@each $size, $value in $radius {
|
|
63
|
+
@if not is-valid-size($size) {
|
|
64
|
+
@error 'Invalid radius size "#{$size}" in radius map. Valid sizes are: #{$radius-sizes}';
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@if $value or $value == 0 {
|
|
68
|
+
#{get-var-name($size)}: #{$value};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const radiusPrefix = "mzn-radius";
|
package/radius/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type RadiusSize = 'none' | 'tiny' | 'base' | 'roomy' | 'full';
|
|
2
|
+
export interface RadiusConfig {
|
|
3
|
+
none?: string | number;
|
|
4
|
+
tiny?: string | number;
|
|
5
|
+
base?: string | number;
|
|
6
|
+
roomy?: string | number;
|
|
7
|
+
full?: string | number;
|
|
8
|
+
}
|
|
9
|
+
export declare const defaultRadius: Required<RadiusConfig>;
|
|
10
|
+
export declare const radiusSizes: readonly RadiusSize[];
|
|
11
|
+
export declare function isValidRadiusSize(size: string): size is RadiusSize;
|
|
12
|
+
export declare function getRadiusVarName(size: RadiusSize, prefix?: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Get CSS variable reference for radius
|
|
15
|
+
* @example
|
|
16
|
+
* getRadiusVar('base') // 'var(--mzn-radius-base)'
|
|
17
|
+
*/
|
|
18
|
+
export declare function getRadiusVar(size: RadiusSize, prefix?: string): string;
|
package/radius/radius.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { radiusPrefix } from './constants.js';
|
|
2
|
+
|
|
3
|
+
const defaultRadius = {
|
|
4
|
+
none: 0,
|
|
5
|
+
tiny: '0.125rem', // 2px
|
|
6
|
+
base: '0.25rem', // 4px
|
|
7
|
+
roomy: '0.5rem', // 8px
|
|
8
|
+
full: '62.4375rem', // 999px
|
|
9
|
+
};
|
|
10
|
+
const radiusSizes = [
|
|
11
|
+
'none',
|
|
12
|
+
'tiny',
|
|
13
|
+
'base',
|
|
14
|
+
'roomy',
|
|
15
|
+
'full',
|
|
16
|
+
];
|
|
17
|
+
function isValidRadiusSize(size) {
|
|
18
|
+
return radiusSizes.includes(size);
|
|
19
|
+
}
|
|
20
|
+
function getRadiusVarName(size, prefix = radiusPrefix) {
|
|
21
|
+
return prefix ? `--${prefix}-${size}` : `--${size}`;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get CSS variable reference for radius
|
|
25
|
+
* @example
|
|
26
|
+
* getRadiusVar('base') // 'var(--mzn-radius-base)'
|
|
27
|
+
*/
|
|
28
|
+
function getRadiusVar(size, prefix = radiusPrefix) {
|
|
29
|
+
return `var(${getRadiusVarName(size, prefix)})`;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { defaultRadius, getRadiusVar, getRadiusVarName, isValidRadiusSize, radiusSizes };
|
package/size/_size.scss
CHANGED
package/size/size.d.ts
CHANGED
package/spacing/_index.scss
CHANGED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
@use '../typography/utils' as typography-utils;
|
|
2
|
+
@use '../utils/list';
|
|
3
|
+
@use '../utils/map';
|
|
4
|
+
|
|
5
|
+
// CSS 變數前綴
|
|
6
|
+
$prefix: mzn-spacing-primitive;
|
|
7
|
+
|
|
8
|
+
// 定義所有可用的 spacing 級距(單位為 px)
|
|
9
|
+
$primitive-scales: (
|
|
10
|
+
0,
|
|
11
|
+
1,
|
|
12
|
+
2,
|
|
13
|
+
4,
|
|
14
|
+
6,
|
|
15
|
+
8,
|
|
16
|
+
10,
|
|
17
|
+
12,
|
|
18
|
+
14,
|
|
19
|
+
16,
|
|
20
|
+
18,
|
|
21
|
+
20,
|
|
22
|
+
24,
|
|
23
|
+
28,
|
|
24
|
+
32,
|
|
25
|
+
36,
|
|
26
|
+
40,
|
|
27
|
+
48,
|
|
28
|
+
52,
|
|
29
|
+
56,
|
|
30
|
+
60,
|
|
31
|
+
64,
|
|
32
|
+
80,
|
|
33
|
+
160,
|
|
34
|
+
240,
|
|
35
|
+
320,
|
|
36
|
+
360,
|
|
37
|
+
400,
|
|
38
|
+
480,
|
|
39
|
+
560,
|
|
40
|
+
640,
|
|
41
|
+
720,
|
|
42
|
+
960,
|
|
43
|
+
1140
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
// 預設 spacing 值定義(px 會自動轉換為 rem)
|
|
47
|
+
$default-primitives: (
|
|
48
|
+
0: 0,
|
|
49
|
+
1: 1px,
|
|
50
|
+
2: 2px,
|
|
51
|
+
4: 4px,
|
|
52
|
+
6: 6px,
|
|
53
|
+
8: 8px,
|
|
54
|
+
10: 10px,
|
|
55
|
+
12: 12px,
|
|
56
|
+
14: 14px,
|
|
57
|
+
16: 16px,
|
|
58
|
+
18: 18px,
|
|
59
|
+
20: 20px,
|
|
60
|
+
24: 24px,
|
|
61
|
+
28: 28px,
|
|
62
|
+
32: 32px,
|
|
63
|
+
36: 36px,
|
|
64
|
+
40: 40px,
|
|
65
|
+
48: 48px,
|
|
66
|
+
52: 52px,
|
|
67
|
+
56: 56px,
|
|
68
|
+
60: 60px,
|
|
69
|
+
64: 64px,
|
|
70
|
+
80: 80px,
|
|
71
|
+
160: 160px,
|
|
72
|
+
240: 240px,
|
|
73
|
+
320: 320px,
|
|
74
|
+
360: 360px,
|
|
75
|
+
400: 400px,
|
|
76
|
+
480: 480px,
|
|
77
|
+
560: 560px,
|
|
78
|
+
640: 640px,
|
|
79
|
+
720: 720px,
|
|
80
|
+
960: 960px,
|
|
81
|
+
1140: 1140px,
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
// 驗證 scale 是否有效
|
|
85
|
+
@function is-valid-scale($scale) {
|
|
86
|
+
@return list.index($primitive-scales, $scale) != null;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// 驗證 spacing 值是否已定義
|
|
90
|
+
@function is-spacing-defined($spacing) {
|
|
91
|
+
@return $spacing != null;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// 取得 CSS 變數名稱
|
|
95
|
+
// 例如: --mzn-spacing-primitive-16
|
|
96
|
+
@function get-var-name($scale) {
|
|
97
|
+
@if $prefix == '' {
|
|
98
|
+
@return --#{$scale};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
@return --#{$prefix}-#{$scale};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// 使用 CSS 變數引用 spacing
|
|
105
|
+
// 例如: variable(16) => var(--mzn-spacing-primitive-16)
|
|
106
|
+
@function variable($scale) {
|
|
107
|
+
@if not is-valid-scale($scale) {
|
|
108
|
+
@error 'Invalid spacing scale "#{$scale}". Valid scales are: #{$primitive-scales}';
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
@return var(#{get-var-name($scale)});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// 生成所有 spacing primitive CSS 變數
|
|
115
|
+
@mixin variables($primitives: ()) {
|
|
116
|
+
$primitives: map.deep-merge($default-primitives, $primitives);
|
|
117
|
+
|
|
118
|
+
@each $scale, $value in $primitives {
|
|
119
|
+
@if not is-valid-scale($scale) {
|
|
120
|
+
@error 'Invalid spacing scale "#{$scale}" in primitives map. Valid scales are: #{$primitive-scales}';
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@if is-spacing-defined($value) {
|
|
124
|
+
@if $value == 0 {
|
|
125
|
+
#{get-var-name($scale)}: 0;
|
|
126
|
+
} @else {
|
|
127
|
+
#{get-var-name($scale)}: #{typography-utils.px-to-rem($value)};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|