@nanarino/stylus 1.0.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/LICENSE +21 -0
- package/README.rst +121 -0
- package/dist/style.min.css +1 -0
- package/lib/common/font.styl +39 -0
- package/lib/common/layout.styl +56 -0
- package/lib/common/watermark.styl +16 -0
- package/lib/components/badge.styl +47 -0
- package/lib/components/button.styl +169 -0
- package/lib/components/checkbox.styl +114 -0
- package/lib/components/dialog.styl +65 -0
- package/lib/components/form.styl +26 -0
- package/lib/components/input.styl +183 -0
- package/lib/components/menu.styl +121 -0
- package/lib/components/message.styl +51 -0
- package/lib/components/panel.styl +71 -0
- package/lib/components/pre&code.styl +30 -0
- package/lib/components/radio.styl +79 -0
- package/lib/components/select.styl +93 -0
- package/lib/components/switch.styl +144 -0
- package/lib/index.styl +13 -0
- package/lib/mixins/compatible.styl +6 -0
- package/lib/mixins/functions.styl +51 -0
- package/lib/mixins/prefix.styl +1 -0
- package/lib/primary.styl +17 -0
- package/lib/typography/divider.styl +17 -0
- package/lib/typography/image.styl +120 -0
- package/lib/typography/link.styl +32 -0
- package/lib/typography/list.styl +10 -0
- package/lib/typography/paragraph.styl +27 -0
- package/lib/typography/table.styl +74 -0
- package/lib/typography/tag&kbd.styl +32 -0
- package/lib/typography/title.styl +73 -0
- package/lib/variables/color.styl +259 -0
- package/lib/variables/shadow.styl +21 -0
- package/lib/variables/size.styl +52 -0
- package/package.json +52 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 和checkbox的样式太相似
|
|
3
|
+
* 直接复制过来改了几个词就能用
|
|
4
|
+
* 暂时不考虑编译后体积
|
|
5
|
+
*/
|
|
6
|
+
.{prefix}-radio
|
|
7
|
+
|
|
8
|
+
// --indent-radio 1.4em
|
|
9
|
+
// --color-radio var(--primary-6)
|
|
10
|
+
// --color-radio:disabled var(--primary-3)
|
|
11
|
+
|
|
12
|
+
min-height var(--line-height-body)
|
|
13
|
+
position relative
|
|
14
|
+
/** 設置行高后會未對齊 */
|
|
15
|
+
// line-height var(--line-height-body)
|
|
16
|
+
// font-size var(--font-size-body)
|
|
17
|
+
display inline-flex
|
|
18
|
+
// text-indent 1.4em // IOS中不支持 遂改用label的padding-left
|
|
19
|
+
// vertical-align middle
|
|
20
|
+
.{prefix}-input:where(input[type=radio])
|
|
21
|
+
margin 0
|
|
22
|
+
border 0
|
|
23
|
+
width 16px
|
|
24
|
+
height 16px
|
|
25
|
+
top 0
|
|
26
|
+
bottom 0
|
|
27
|
+
margin auto 0
|
|
28
|
+
position absolute
|
|
29
|
+
z-index 1
|
|
30
|
+
opacity 0
|
|
31
|
+
cursor pointer
|
|
32
|
+
&:disabled
|
|
33
|
+
cursor not-allowed
|
|
34
|
+
/.{prefix}-input-wrapper
|
|
35
|
+
&:has(^[0..1])
|
|
36
|
+
gap 8px
|
|
37
|
+
~/-label
|
|
38
|
+
padding-left var(--indent-radio, 1.4em)
|
|
39
|
+
min-width 2px
|
|
40
|
+
min-height 1em
|
|
41
|
+
position relative
|
|
42
|
+
display inline-flex
|
|
43
|
+
align-items center
|
|
44
|
+
&[for]
|
|
45
|
+
cursor pointer
|
|
46
|
+
/**
|
|
47
|
+
* 使用 `^[1..1]` 代替 `../` 减少编译后体积以及选择器冗余
|
|
48
|
+
*/
|
|
49
|
+
^[1..1]:focus-visible+&
|
|
50
|
+
outline 2px solid rgb(var(_get_var_by("color-input\*", wrapper), var(_get_var_by("outline-color-\*\:focus"))))
|
|
51
|
+
border-radius var(--border-radius-sm)
|
|
52
|
+
^[1..1]:disabled+&
|
|
53
|
+
color rgb(var(--gray-6))
|
|
54
|
+
&[for]
|
|
55
|
+
cursor not-allowed
|
|
56
|
+
~/-label::before
|
|
57
|
+
content ''
|
|
58
|
+
width 16px
|
|
59
|
+
height 16px
|
|
60
|
+
box-sizing border-box
|
|
61
|
+
border 2px solid rgb(var(--gray-4))
|
|
62
|
+
border-radius 8px
|
|
63
|
+
position absolute
|
|
64
|
+
left 0
|
|
65
|
+
background-color rgb(var(--white))
|
|
66
|
+
transition border-color .3s, border-width .1s
|
|
67
|
+
^[1..1]:not(:disabled):hover+&
|
|
68
|
+
border-color rgb(var(--color-radio, var(--primary-6)))
|
|
69
|
+
^[1..1]:checked+&
|
|
70
|
+
border-width 5px
|
|
71
|
+
border-color rgb(var(--color-radio, var(--primary-6)))
|
|
72
|
+
// background-color @border-color
|
|
73
|
+
^[1..1]:checked:disabled+&
|
|
74
|
+
border-color rgb(var(_get_var_by("color-radio\:disabled"), var(--primary-3)))
|
|
75
|
+
// background-color @border-color
|
|
76
|
+
^[1..1]:disabled+&
|
|
77
|
+
background-color rgb(var(--gray-1))
|
|
78
|
+
^[1..1]:disabled:not(:checked)+&
|
|
79
|
+
background-color rgb(var(--gray-2))
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// select.{prefix}-select
|
|
2
|
+
.{prefix}-select
|
|
3
|
+
// --padding-vertical-select 4px
|
|
4
|
+
// --padding-horizontal-select 12px
|
|
5
|
+
--color-select var(_get_var_by("color-input\*", wrapper), var(_get_var_by("outline-color-\*\:focus")))
|
|
6
|
+
|
|
7
|
+
flex 1
|
|
8
|
+
// 默认的
|
|
9
|
+
// display inline-flex
|
|
10
|
+
align-items center
|
|
11
|
+
padding var(--padding-vertical-select, 4px) var(--padding-horizontal-select, 12px)
|
|
12
|
+
&.sm
|
|
13
|
+
--padding-vertical-select 0
|
|
14
|
+
|
|
15
|
+
&.lg
|
|
16
|
+
--padding-vertical-select 7px
|
|
17
|
+
--font-size-body var(--font-size-h5)
|
|
18
|
+
--line-height-body var(--line-height-h5)
|
|
19
|
+
&:where([data-primary])
|
|
20
|
+
--color-select var(--primary-6)
|
|
21
|
+
|
|
22
|
+
// 以下来自 ./input.styl def input_stat():
|
|
23
|
+
|
|
24
|
+
appearance base-select
|
|
25
|
+
box-sizing border-box
|
|
26
|
+
border none
|
|
27
|
+
outline 2px solid transparent
|
|
28
|
+
border-radius var(--border-radius-md)
|
|
29
|
+
font-size var(--font-size-body)
|
|
30
|
+
line-height var(--line-height-body)
|
|
31
|
+
background-color rgb(var(--gray-2))
|
|
32
|
+
&:hover
|
|
33
|
+
box-shadow var(--box-shadow-drop-bottom)
|
|
34
|
+
&:open
|
|
35
|
+
&:focus-visible
|
|
36
|
+
outline-color rgb(var(_get_var_by(color, select)))
|
|
37
|
+
box-shadow var(--box-shadow-drop-bottom)
|
|
38
|
+
transition outline-color .3s, box-shadow .3s
|
|
39
|
+
|
|
40
|
+
&[disabled]
|
|
41
|
+
cursor not-allowed
|
|
42
|
+
background-color rgb(var(--gray-1))
|
|
43
|
+
color rgb(var(--gray-6))
|
|
44
|
+
&:hover
|
|
45
|
+
box-shadow none
|
|
46
|
+
|
|
47
|
+
optgroup
|
|
48
|
+
display grid
|
|
49
|
+
gap 2px
|
|
50
|
+
line-height calc(var(--line-height-body) + 8px)
|
|
51
|
+
option
|
|
52
|
+
padding @padding
|
|
53
|
+
line-height @line-height
|
|
54
|
+
border-radius @border-radius
|
|
55
|
+
outline @outline
|
|
56
|
+
&:hover
|
|
57
|
+
&:focus-visible
|
|
58
|
+
color rgb(var(--primary-6))
|
|
59
|
+
background-color rgb(var(--primary-1))
|
|
60
|
+
&:focus-visible
|
|
61
|
+
outline-color rgb(var(_get_var_by(color, select)))
|
|
62
|
+
&[data-primary]
|
|
63
|
+
outline-color rgb(var(--primary-6))
|
|
64
|
+
&:checked
|
|
65
|
+
color rgb(var(--white))
|
|
66
|
+
background-color rgb(var(--primary-5))
|
|
67
|
+
&:focus-visible
|
|
68
|
+
outline-color rgb(var(_get_var_by("outline-color-\*\:focus")))
|
|
69
|
+
|
|
70
|
+
// 彈出層
|
|
71
|
+
&::picker(select)
|
|
72
|
+
border none
|
|
73
|
+
margin 8px 0
|
|
74
|
+
border-radius @border-radius
|
|
75
|
+
box-shadow var(--box-shadow-drop-bottom)
|
|
76
|
+
appearance base-select
|
|
77
|
+
background rgb(var(--white))
|
|
78
|
+
padding 4px
|
|
79
|
+
gap 4px
|
|
80
|
+
^[0]:open^[-1..-1]
|
|
81
|
+
display grid
|
|
82
|
+
|
|
83
|
+
&:where(:has(selectedcontent))::picker-icon
|
|
84
|
+
display none
|
|
85
|
+
|
|
86
|
+
// 要先引入 input 再引入 select
|
|
87
|
+
// 纔能保證未被 `.☘-input-wrapper:where([data-primary]) button` 覆蓋
|
|
88
|
+
button
|
|
89
|
+
color rgb(var(--black))
|
|
90
|
+
|
|
91
|
+
selectedcontent
|
|
92
|
+
flex 1
|
|
93
|
+
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
.{prefix}-switch
|
|
2
|
+
|
|
3
|
+
// --size-switch 22px
|
|
4
|
+
// --padding-switch 2px
|
|
5
|
+
|
|
6
|
+
--size-switch-mover calc(var(--size-switch, 22px) - 2 * var(--padding-switch, 2px))
|
|
7
|
+
|
|
8
|
+
// --box-shadow-width-switch var(--padding-switch)
|
|
9
|
+
box-shadow-width-switch = var(--box-shadow-width-switch, var(--padding-switch, 2px))
|
|
10
|
+
// --color-switch var(--gray-4)
|
|
11
|
+
// --color-switch:checked var(--primary-6)
|
|
12
|
+
// --color-switch:disabled var(--gray-1)
|
|
13
|
+
// --color-switch:checked:disabled var(--primary-3)
|
|
14
|
+
// --color-switch-mover var(--gray-2)
|
|
15
|
+
// --box-shadow-color-switch var(--color-switch:checked)
|
|
16
|
+
// --box-shadow-color-switch:checked var(--color-switch)
|
|
17
|
+
box-shadow-color-switch = var(
|
|
18
|
+
--box-shadow-color-switch, var(
|
|
19
|
+
_get_var_by("color-switch\:checked"), var(
|
|
20
|
+
--primary-6
|
|
21
|
+
)
|
|
22
|
+
)
|
|
23
|
+
)
|
|
24
|
+
box-shadow-color-switch-checked = var(
|
|
25
|
+
_get_var_by("box-shadow-color-switch\:checked"), var(
|
|
26
|
+
--color-switch, var(
|
|
27
|
+
--gray-4
|
|
28
|
+
)
|
|
29
|
+
)
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
display inline-flex
|
|
33
|
+
position relative
|
|
34
|
+
font-size calc(var(--size-switch-mover) - var(--font-offset-parent))
|
|
35
|
+
|
|
36
|
+
height var(--size-switch, 22px)
|
|
37
|
+
width calc(var(--size-switch, 22px) * 2)
|
|
38
|
+
border-radius calc((var(--size-switch, 22px) / 2))
|
|
39
|
+
// overflow hidden
|
|
40
|
+
|
|
41
|
+
&.sm
|
|
42
|
+
--size-switch 16px
|
|
43
|
+
|
|
44
|
+
&-mover
|
|
45
|
+
z-index 1
|
|
46
|
+
overflow hidden
|
|
47
|
+
border-radius 50%
|
|
48
|
+
background-color rgb(var(--color-switch-mover, var(--gray-2)))
|
|
49
|
+
outline 2px solid transparent
|
|
50
|
+
will-change filter
|
|
51
|
+
&-slot
|
|
52
|
+
position absolute
|
|
53
|
+
z-index 0
|
|
54
|
+
font-size 0
|
|
55
|
+
background-color rgb(var(--color-switch, var(--gray-4)))
|
|
56
|
+
transition background-color 1s, box-shadow .5s
|
|
57
|
+
inset 0
|
|
58
|
+
border-radius @border-radius
|
|
59
|
+
&-mover
|
|
60
|
+
.{prefix}-input:where(input[type=checkbox])
|
|
61
|
+
cursor pointer
|
|
62
|
+
position absolute
|
|
63
|
+
display flex
|
|
64
|
+
align-items center
|
|
65
|
+
justify-content center
|
|
66
|
+
margin 0
|
|
67
|
+
left var(--padding-switch, 2px)
|
|
68
|
+
top var(--padding-switch, 2px)
|
|
69
|
+
bottom var(--padding-switch, 2px)
|
|
70
|
+
width var(--size-switch-mover)
|
|
71
|
+
height @width
|
|
72
|
+
transition all .5s
|
|
73
|
+
.{prefix}-input:where(input[type=checkbox])
|
|
74
|
+
opacity 0
|
|
75
|
+
z-index 2
|
|
76
|
+
~/[data-wider-trigger] ^[-1..-1]
|
|
77
|
+
inset 0 !important
|
|
78
|
+
width @width
|
|
79
|
+
height @height
|
|
80
|
+
|
|
81
|
+
^[-1..-1]:focus-visible~^[0]-mover
|
|
82
|
+
outline 2px solid rgb(var(_get_var_by("color-input\*", wrapper), var(_get_var_by("outline-color-\*\:focus"))))
|
|
83
|
+
|
|
84
|
+
&:disabled
|
|
85
|
+
^[-1..-1]:disabled~^[0]-mover
|
|
86
|
+
cursor not-allowed
|
|
87
|
+
^[-1..-1]:disabled~^[0]-slot
|
|
88
|
+
background-color rgb(var(_get_var_by("color-switch\:disabled"), var(--gray-1)))
|
|
89
|
+
^[-1..-1]:checked:disabled~^[0]-slot
|
|
90
|
+
background-color rgb(var(_get_var_by("color-switch\:checked\:disabled"), var(--primary-3)))
|
|
91
|
+
|
|
92
|
+
&:checked
|
|
93
|
+
^[-1..-1]:checked~^[0]-mover
|
|
94
|
+
left calc(var(--size-switch, 22px) + var(--padding-switch, 2px))
|
|
95
|
+
^[-1..-1]:checked~^[0]-slot
|
|
96
|
+
background-color rgb(var(_get_var_by("color-switch\:checked"), var(--primary-6)))
|
|
97
|
+
|
|
98
|
+
&:not(:disabled):hover~^[0]-mover
|
|
99
|
+
^[-1..-1]:not(:disabled)~^[0]-mover:hover
|
|
100
|
+
filter drop-shadow(
|
|
101
|
+
0 \
|
|
102
|
+
0 \
|
|
103
|
+
var(--padding-switch, 2px) \
|
|
104
|
+
rgb(box-shadow-color-switch) \
|
|
105
|
+
)
|
|
106
|
+
box-shadow \
|
|
107
|
+
0 \
|
|
108
|
+
0 \
|
|
109
|
+
box-shadow-width-switch \
|
|
110
|
+
box-shadow-width-switch \
|
|
111
|
+
rgb(box-shadow-color-switch \/ 25%)
|
|
112
|
+
&:not(:disabled):hover~^[0]-slot
|
|
113
|
+
^[-1..-1]:not(:disabled)~^[0]-slot:hover
|
|
114
|
+
box-shadow \
|
|
115
|
+
inset \
|
|
116
|
+
0 \
|
|
117
|
+
0 \
|
|
118
|
+
var(--padding-switch, 2px) \
|
|
119
|
+
var(--padding-switch, 2px) \
|
|
120
|
+
rgb(box-shadow-color-switch \/ 25%)
|
|
121
|
+
|
|
122
|
+
&:not(:disabled):checked:hover~^[0]-mover
|
|
123
|
+
^[-1..-1]:not(:disabled):checked~^[0]-mover:hover
|
|
124
|
+
filter drop-shadow(
|
|
125
|
+
0 \
|
|
126
|
+
0 \
|
|
127
|
+
var(--padding-switch, 2px) \
|
|
128
|
+
rgb(box-shadow-color-switch-checked) \
|
|
129
|
+
)
|
|
130
|
+
box-shadow \
|
|
131
|
+
0 \
|
|
132
|
+
0 \
|
|
133
|
+
box-shadow-width-switch \
|
|
134
|
+
box-shadow-width-switch \
|
|
135
|
+
rgb(box-shadow-color-switch-checked \/ 25%)
|
|
136
|
+
&:not(:disabled):checked:hover~^[0]-slot
|
|
137
|
+
^[-1..-1]:not(:disabled):checked~^[0]-slot:hover
|
|
138
|
+
box-shadow \
|
|
139
|
+
inset \
|
|
140
|
+
0 \
|
|
141
|
+
0 \
|
|
142
|
+
var(--padding-switch, 2px) \
|
|
143
|
+
var(--padding-switch, 2px) \
|
|
144
|
+
rgb(box-shadow-color-switch-checked \/ 25%)
|
package/lib/index.styl
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
@require './mixins/*'
|
|
2
|
+
// base
|
|
3
|
+
@require './variables/*'
|
|
4
|
+
@require './primary'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 使通配符引入时要确保引入的优先级 譬如:含有的 `&>*` 选择器被 `&` 覆盖
|
|
8
|
+
*/
|
|
9
|
+
@require './common/*'
|
|
10
|
+
// typography / markdown
|
|
11
|
+
@require './typography/*'
|
|
12
|
+
// components
|
|
13
|
+
@require './components/*'
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 转为 css native rgb
|
|
3
|
+
* 覆盖 stylus 的 rgb
|
|
4
|
+
*
|
|
5
|
+
* @override rgb(0 0 0 \/ .5) => `rgb(0 0 0/0.5)`
|
|
6
|
+
*/
|
|
7
|
+
rgb(color)
|
|
8
|
+
s('rgb(%s)', color)
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* 覆盖 stylus 的 selector
|
|
12
|
+
* @override selector(':is()') => `selector(:is())`
|
|
13
|
+
*
|
|
14
|
+
* 不要省略not的括号 css支持 但是stylus不支持
|
|
15
|
+
* 如 css`@supports not selector(:is(a, b))`
|
|
16
|
+
* 要写成 styl`@supports not (selector(:is(a, b))`
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
selector(query_str)
|
|
20
|
+
s('selector(%s)', unquote(query_str))
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* 定義 path 函式
|
|
24
|
+
*
|
|
25
|
+
* 刪除冗餘的縮進 需要用 '\\' 來換行
|
|
26
|
+
* 事實上 即使沒有這個函式 也需要用 '\\' 來換行
|
|
27
|
+
*/
|
|
28
|
+
path(path_str)
|
|
29
|
+
s('path(%s)', replace("\\\s+", "", path_str))
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* 获取拼接的css变量
|
|
33
|
+
*
|
|
34
|
+
* name: str | var
|
|
35
|
+
* level: int | var
|
|
36
|
+
* return: str
|
|
37
|
+
*/
|
|
38
|
+
_get_var_by(property, level = none)
|
|
39
|
+
if level == none
|
|
40
|
+
'--%s'%(unquote(property))
|
|
41
|
+
else
|
|
42
|
+
'--%s-%s'%(unquote(property) level)
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* 多行省略混入
|
|
46
|
+
*/
|
|
47
|
+
mixin_line_clamp(number)
|
|
48
|
+
display -webkit-box
|
|
49
|
+
-webkit-box-orient vertical
|
|
50
|
+
-webkit-line-clamp number
|
|
51
|
+
overflow hidden
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
prefix = "na"
|
package/lib/primary.styl
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
color_alias_dict = {
|
|
2
|
+
primary: 'pinkpurple',
|
|
3
|
+
success: 'green',
|
|
4
|
+
danger: 'red',
|
|
5
|
+
warning: 'orange'
|
|
6
|
+
}
|
|
7
|
+
:root
|
|
8
|
+
for k, v in color_alias_dict
|
|
9
|
+
for i in range(1 10)
|
|
10
|
+
{_get_var_by(k, i)} var(_get_var_by(v, i))
|
|
11
|
+
|
|
12
|
+
if k != 'primary'
|
|
13
|
+
[data-primary={k}]
|
|
14
|
+
for i in range(1 10)
|
|
15
|
+
{_get_var_by('primary', i)} var(_get_var_by(k, i))
|
|
16
|
+
|
|
17
|
+
{_get_var_by("outline-color-\*\:focus")} var(--black)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
.{prefix}-divider
|
|
2
|
+
&:where(hr)
|
|
3
|
+
border-color rgb(var(--gray-2) \/ 0.4)
|
|
4
|
+
&:where(div)
|
|
5
|
+
padding-top 2em
|
|
6
|
+
margin-bottom 2em
|
|
7
|
+
overflow hidden
|
|
8
|
+
--box-shadow-color var(--gray-6)
|
|
9
|
+
box-shadow var(--box-shadow-divider-bottom)
|
|
10
|
+
&:where(span)
|
|
11
|
+
display inline-block
|
|
12
|
+
vertical-align middle
|
|
13
|
+
height 1em
|
|
14
|
+
padding-left 1em
|
|
15
|
+
margin-right 1em
|
|
16
|
+
--box-shadow-color var(--black)
|
|
17
|
+
box-shadow var(--box-shadow-divider-right)
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
.{prefix}-image
|
|
2
|
+
|
|
3
|
+
// --color-image var(--white)
|
|
4
|
+
// --color-image-mask var(--black)
|
|
5
|
+
--color-link var(--color-image, var(--white))
|
|
6
|
+
{_get_var_by("color-link\:hover")} var(--gray-2)
|
|
7
|
+
{_get_var_by("color-link\:disabled")} var(--gray-4)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
display inline-flex
|
|
11
|
+
flex-direction column
|
|
12
|
+
gap 16px
|
|
13
|
+
align-items center
|
|
14
|
+
justify-content center
|
|
15
|
+
|
|
16
|
+
position relative
|
|
17
|
+
box-sizing border-box
|
|
18
|
+
background-repeat no-repeat
|
|
19
|
+
background-size cover
|
|
20
|
+
background-position center center
|
|
21
|
+
overflow hidden
|
|
22
|
+
&>img
|
|
23
|
+
// -webkit-user-drag none
|
|
24
|
+
width 100%
|
|
25
|
+
height 100%
|
|
26
|
+
object-fit @background-size
|
|
27
|
+
object-position @background-position
|
|
28
|
+
&-mask
|
|
29
|
+
opacity 0
|
|
30
|
+
transition opacity .5s
|
|
31
|
+
position absolute
|
|
32
|
+
z-index 2
|
|
33
|
+
inset 0
|
|
34
|
+
color rgb(var(--color-image, var(--white)))
|
|
35
|
+
background-color rgb(var(--black) \/ 0.5)
|
|
36
|
+
display flex
|
|
37
|
+
align-items center
|
|
38
|
+
justify-content center
|
|
39
|
+
&:hover
|
|
40
|
+
opacity 1
|
|
41
|
+
&-footer
|
|
42
|
+
height 64px
|
|
43
|
+
padding 9px 16px
|
|
44
|
+
box-sizing border-box
|
|
45
|
+
position absolute
|
|
46
|
+
z-index 2
|
|
47
|
+
bottom 0
|
|
48
|
+
left 0
|
|
49
|
+
right 0
|
|
50
|
+
color rgb(var(--color-image, var(--white)))
|
|
51
|
+
background-image linear-gradient(
|
|
52
|
+
180deg,
|
|
53
|
+
transparent 0%,
|
|
54
|
+
transparent 0%,
|
|
55
|
+
rgb(var(--color-image-mask, var(--black))) 100%,
|
|
56
|
+
rgb(var(--color-image-mask, var(--black))) 100%
|
|
57
|
+
)
|
|
58
|
+
display flex
|
|
59
|
+
align-items center
|
|
60
|
+
gap 16px
|
|
61
|
+
|
|
62
|
+
&-content
|
|
63
|
+
height 100%
|
|
64
|
+
display flex
|
|
65
|
+
flex-direction column
|
|
66
|
+
justify-content space-around
|
|
67
|
+
flex 1
|
|
68
|
+
word-break break-all
|
|
69
|
+
.{prefix}-title
|
|
70
|
+
.{prefix}-paragraph
|
|
71
|
+
/**
|
|
72
|
+
* 不设置高度的时候 由内容撑开在多行时
|
|
73
|
+
* 受justify-content影响 可以居中
|
|
74
|
+
*/
|
|
75
|
+
height unset
|
|
76
|
+
margin 0
|
|
77
|
+
|
|
78
|
+
&-action
|
|
79
|
+
display flex
|
|
80
|
+
align-items center
|
|
81
|
+
gap 16px
|
|
82
|
+
|
|
83
|
+
// 图片上传
|
|
84
|
+
&.{prefix}-input-wrapper
|
|
85
|
+
|
|
86
|
+
color rgb(var(_get_var_by("color-input\*", wrapper), var(--gray-6)))
|
|
87
|
+
|
|
88
|
+
input[type=file].{prefix}-input
|
|
89
|
+
|
|
90
|
+
--color-input var(--gray-6)
|
|
91
|
+
{_get_var_by("outline-color-\*\:focus")} var(_get_var_by("color-input\*", wrapper), var(--color-input))
|
|
92
|
+
|
|
93
|
+
&:where([data-primary])
|
|
94
|
+
--color-input var(--primary-6)
|
|
95
|
+
|
|
96
|
+
position absolute
|
|
97
|
+
inset 0px
|
|
98
|
+
border-radius var(--border-radius-md)
|
|
99
|
+
border 2px dashed rgb(var(_get_var_by("outline-color-\*\:focus")))
|
|
100
|
+
// opacity 0
|
|
101
|
+
cursor pointer
|
|
102
|
+
color transparent
|
|
103
|
+
outline 2px solid transparent
|
|
104
|
+
&::-ms-browse
|
|
105
|
+
display none
|
|
106
|
+
&::-webkit-file-upload-button
|
|
107
|
+
display none
|
|
108
|
+
&::file-selector-button
|
|
109
|
+
display none
|
|
110
|
+
&[disabled]
|
|
111
|
+
cursor not-allowed
|
|
112
|
+
opacity .3
|
|
113
|
+
&:focus-visible
|
|
114
|
+
outline-color rgb(var(_get_var_by("outline-color-\*\:focus")))
|
|
115
|
+
|
|
116
|
+
transition box-shadow .3s, opacity .3s
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
&:has(input[type=file].{prefix}-input:not([disabled])):hover
|
|
120
|
+
box-shadow var(--box-shadow-drop-bottom)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
.{prefix}-link
|
|
2
|
+
|
|
3
|
+
// --color-link var(--primary-6)
|
|
4
|
+
// --color-link:hover var(--primary-5)
|
|
5
|
+
// --color-link:focus var(--primary-7)
|
|
6
|
+
// --color-link:disabled var(--primary-2)
|
|
7
|
+
|
|
8
|
+
display inline-flex
|
|
9
|
+
// vertical-align baseline
|
|
10
|
+
font-size inherit
|
|
11
|
+
border none
|
|
12
|
+
background none
|
|
13
|
+
padding unset
|
|
14
|
+
cursor pointer
|
|
15
|
+
outline 2px solid transparent
|
|
16
|
+
// text-decoration none
|
|
17
|
+
color rgb(var(--color-link, var(--primary-6)))
|
|
18
|
+
&:hover
|
|
19
|
+
color rgb(var(_get_var_by("color-link\:hover"), var(--primary-5)))
|
|
20
|
+
&:focus
|
|
21
|
+
color rgb(var(_get_var_by("color-link\:focus"), var(--primary-7)))
|
|
22
|
+
&[disabled]
|
|
23
|
+
&[aria-disabled]
|
|
24
|
+
color rgb(var(_get_var_by("color-link\:disabled"), var(--primary-2)))
|
|
25
|
+
cursor not-allowed
|
|
26
|
+
// pointer-events none
|
|
27
|
+
&:focus-visible
|
|
28
|
+
outline-color rgb(var(_get_var_by("outline-color-\*\:focus")))
|
|
29
|
+
border-radius var(--border-radius-sm)
|
|
30
|
+
|
|
31
|
+
//.{prefix}-code
|
|
32
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
.{prefix}-paragraph
|
|
2
|
+
margin 1em 0
|
|
3
|
+
padding 0
|
|
4
|
+
font-size var(--font-size-body)
|
|
5
|
+
line-height var(--line-height-body)
|
|
6
|
+
// &>*
|
|
7
|
+
// vertical-align middle
|
|
8
|
+
&:has(.{prefix}-code)
|
|
9
|
+
line-height calc(var(--line-height-body) + var(--font-offset-parent))
|
|
10
|
+
|
|
11
|
+
for i in range(1 6)
|
|
12
|
+
&:where([data-size=\"{i}\"])
|
|
13
|
+
--line-height-body var(_get_var_by(
|
|
14
|
+
line-height,
|
|
15
|
+
'h%s' % i
|
|
16
|
+
))
|
|
17
|
+
--font-size-body var(_get_var_by(
|
|
18
|
+
font-size,
|
|
19
|
+
'h%s' % i
|
|
20
|
+
))
|
|
21
|
+
&:where([data-ellipsis=\"{i}\"])
|
|
22
|
+
mixin_line_clamp(i)
|
|
23
|
+
height 'calc(%s * %s)' % (var(--line-height-body) i)
|
|
24
|
+
&:where([data-has-indent])
|
|
25
|
+
text-indent 2em
|
|
26
|
+
|
|
27
|
+
// blockquote 見 title.styl
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
gray-cell()
|
|
2
|
+
color rgb(var(--gray-9))
|
|
3
|
+
background-color rgb(var(--gray-1))
|
|
4
|
+
row-hover-cell()
|
|
5
|
+
color rgb(var(_get_var_by("color-cell-row\:hover"), var(--gray-9)))
|
|
6
|
+
background-color rgb(var(_get_var_by("background-color-cell-row\:hover"), var(--gray-1)))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
.{prefix}-table-wrapper
|
|
10
|
+
display grid
|
|
11
|
+
overflow auto
|
|
12
|
+
position relative
|
|
13
|
+
|
|
14
|
+
thead, .{prefix}-table-header-group
|
|
15
|
+
top 0
|
|
16
|
+
z-index 10
|
|
17
|
+
position sticky
|
|
18
|
+
tfoot, .{prefix}-table-footer-group
|
|
19
|
+
bottom 0
|
|
20
|
+
z-index 10
|
|
21
|
+
position sticky
|
|
22
|
+
|
|
23
|
+
.{prefix}-table
|
|
24
|
+
height fit-content
|
|
25
|
+
/.{prefix}-table
|
|
26
|
+
// --min-width-cell unset
|
|
27
|
+
// --padding-cell 9px 12px
|
|
28
|
+
// --border-cell none
|
|
29
|
+
// --text-align-cell left
|
|
30
|
+
|
|
31
|
+
font-size var(--font-size-body)
|
|
32
|
+
line-height var(--line-height-body)
|
|
33
|
+
&.lg
|
|
34
|
+
--padding-cell 13px 16px
|
|
35
|
+
--font-size-body var(--font-size-3)
|
|
36
|
+
--line-height-body var(--line-height-3)
|
|
37
|
+
&.sm
|
|
38
|
+
--padding-cell 5px 8px
|
|
39
|
+
--font-size-body var(--font-size-1)
|
|
40
|
+
--line-height-body var(--line-height-1)
|
|
41
|
+
|
|
42
|
+
display table
|
|
43
|
+
max-width 100%
|
|
44
|
+
border-collapse collapse
|
|
45
|
+
|
|
46
|
+
tr, &-row
|
|
47
|
+
display table-row
|
|
48
|
+
box-sizing border-box
|
|
49
|
+
&:hover>*
|
|
50
|
+
row-hover-cell()
|
|
51
|
+
td, th, &-cell
|
|
52
|
+
display table-cell
|
|
53
|
+
box-sizing border-box
|
|
54
|
+
// white-space nowrap
|
|
55
|
+
white-space var(--white-space-cell, normal)
|
|
56
|
+
min-width var(--min-width-cell, unset)
|
|
57
|
+
padding var(--padding-cell, 9px 12px)
|
|
58
|
+
text-align var(--text-align-cell, left)
|
|
59
|
+
border var(--border-cell, none)
|
|
60
|
+
box-shadow var(--box-shadow-divider-bottom)
|
|
61
|
+
|
|
62
|
+
&-header-group
|
|
63
|
+
display table-header-group
|
|
64
|
+
.{prefix}-table-cell
|
|
65
|
+
gray-cell()
|
|
66
|
+
&-footer-group
|
|
67
|
+
display table-footer-group
|
|
68
|
+
.{prefix}-table-cell
|
|
69
|
+
gray-cell()
|
|
70
|
+
th
|
|
71
|
+
gray-cell()
|
|
72
|
+
|
|
73
|
+
colgroup>col
|
|
74
|
+
border 1px none rgb(var(--box-shadow-color) \/ .3)
|