@@ -45,11 +45,51 @@ const moreFeatures = computed(() => sortedFeatures.value.slice(2))
45
45
46
46
<template >
47
47
<li class =" rule-item" >
48
- <div class =" rule-header " >
48
+ <div class =" rule-main " >
49
49
<a :href =" meta.link" class =" rule-name" target =" _blank" >
50
50
{{ meta.name }}
51
51
<img class =" logo" :src =" '/langs/' + meta.language.toLowerCase() + '.svg'" />
52
52
</a >
53
+ <div class =" rule-details" >
54
+ <div class =" rule-badges" >
55
+ <template v-if =" meta .type === ' Pattern' " >
56
+ <Badge type =" info" text =" Simple Pattern Example" />
57
+ </template >
58
+ <template v-else >
59
+ <span title =" Used Rules" >📏</span >
60
+ <span class =" emoji-offset" />
61
+ <Option
62
+ v-for =" rule in displayedRules"
63
+ :key =" rule"
64
+ :text =" rule"
65
+ :highlight =" filter.selectedRules.includes(rule)"
66
+ />
67
+ <Option
68
+ v-if =" moreRules.length"
69
+ :text =" `+${moreRules.length}`"
70
+ :data-title =" moreRules.join(', ')"
71
+ :highlight =" intersect(moreRules, filter.selectedRules)"
72
+ />
73
+ </template >
74
+ </div >
75
+ <div class =" rule-badges" v-if =" displayFeatures.length > 0" >
76
+ <span title =" Used Features" >💡</span >
77
+ <Option
78
+ v-for =" feature in displayFeatures"
79
+ :key =" feature"
80
+ :text =" feature"
81
+ :highlight =" filter.selectedFeatures.includes(feature)"
82
+ />
83
+ <Option
84
+ v-if =" moreFeatures.length"
85
+ :text =" `+${moreFeatures.length}`"
86
+ :data-title =" moreFeatures.join(', ')"
87
+ :highlight =" intersect(moreFeatures, filter.selectedFeatures)"
88
+ />
89
+ </div >
90
+ </div >
91
+ </div >
92
+ <div class =" rule-aux" >
53
93
<div class =" rule-badges" >
54
94
<span > <!-- dummy wrapper for better align items -->
55
95
<Badge v-if =" meta.hasFix" type =" tip" >
@@ -62,44 +102,6 @@ const moreFeatures = computed(() => sortedFeatures.value.slice(2))
62
102
</Badge >
63
103
</a >
64
104
</div >
65
- </div >
66
- <div class =" rule-details" >
67
- <div class =" rule-badges" >
68
- <template v-if =" meta .type === ' Pattern' " >
69
- <Badge type =" info" text =" Simple Pattern Example" />
70
- </template >
71
- <template v-else >
72
- <span title =" Used Rules" >📏</span >
73
- <span class =" emoji-offset" />
74
- <Option
75
- v-for =" rule in displayedRules"
76
- :key =" rule"
77
- :text =" rule"
78
- :highlight =" filter.selectedRules.includes(rule)"
79
- />
80
- <Option
81
- v-if =" moreRules.length"
82
- :text =" `+${moreRules.length}`"
83
- :data-title =" moreRules.join(', ')"
84
- :highlight =" intersect(moreRules, filter.selectedRules)"
85
- />
86
- </template >
87
- </div >
88
- <div class =" rule-badges" v-if =" displayFeatures.length > 0" >
89
- <span title =" Used Features" >💡</span >
90
- <Option
91
- v-for =" feature in displayFeatures"
92
- :key =" feature"
93
- :text =" feature"
94
- :highlight =" filter.selectedFeatures.includes(feature)"
95
- />
96
- <Option
97
- v-if =" moreFeatures.length"
98
- :text =" `+${moreFeatures.length}`"
99
- :data-title =" moreFeatures.join(', ')"
100
- :highlight =" intersect(moreFeatures, filter.selectedFeatures)"
101
- />
102
- </div >
103
105
<a :href =" meta.playgroundLink" class =" playground link" target =" _blank" >
104
106
Try in Playground →
105
107
</a >
@@ -108,6 +110,7 @@ const moreFeatures = computed(() => sortedFeatures.value.slice(2))
108
110
</template >
109
111
110
112
<style scoped>
113
+
111
114
a {
112
115
text-decoration : none ;
113
116
}
@@ -129,38 +132,49 @@ a:hover {
129
132
color : var (--vp-button-brand-bg );
130
133
filter : brightness (1.5 );
131
134
}
135
+
136
+ .rule-item {
137
+ border : 1px solid var (--vp-c-divider );
138
+ border-radius : 8px ;
139
+ padding : 1rem ;
140
+ display : flex ;
141
+ }
142
+
143
+ .rule-badges {
144
+ display : flex ;
145
+ gap : 4px ;
146
+ align-items : center ;
147
+ }
148
+
149
+ .rule-main {
150
+ flex : 1 1 auto ;
151
+ }
152
+
132
153
.rule-name {
133
- flex : 0 1 auto ;
134
154
font-weight : 600 ;
135
155
display : flex ;
136
156
align-items : center ;
137
157
gap : 5px ;
138
158
max-width : 100% ;
159
+ margin-bottom : 12px ;
139
160
}
161
+
140
162
.logo {
141
163
height : 18px ;
142
164
display : inline ;
143
165
}
144
- .playground {
145
- font-size : 0.8em ;
146
- white-space : nowrap ;
147
- }
148
- .rule-item {
149
- border : 1px solid var (--vp-c-divider );
150
- border-radius : 8px ;
151
- padding : 1rem ;
152
- }
153
166
154
- .rule-header {
167
+ .rule-aux {
168
+ flex : 0 0 auto ;
155
169
display : flex ;
156
- justify-content : space-between ;
157
- margin-bottom : 12px ;
170
+ flex-direction : column ;
171
+ gap : 12px ;
158
172
}
159
-
160
- .rule-badges {
161
- display : flex ;
162
- gap : 4 px ;
163
- align-items : center ;
173
+ .playground {
174
+ font-size : 0.8 em ;
175
+ white-space : nowrap ;
176
+ text-align : right ;
177
+ flex : 1 0 auto ;
164
178
}
165
179
166
180
.rule-details {
@@ -170,7 +184,7 @@ a:hover {
170
184
}
171
185
172
186
.rule-details > div {
173
- flex : 1 0 30 % ;
187
+ flex : 1 0 50 % ;
174
188
}
175
189
176
190
@media only screen and (max-width : 640px ) {
@@ -179,17 +193,19 @@ a:hover {
179
193
border-radius : 0 ;
180
194
border-width : 0 ;
181
195
border-bottom-width : 1px ;
196
+ flex-direction : column ;
197
+ gap : 8px ;
198
+ }
199
+ .rule-name {
200
+ text-wrap : pretty;
201
+ justify-content : space-between ;
182
202
}
183
203
.rule-item :first-child {
184
204
border-top-width : 1px ;
185
205
}
186
- .rule-details {
187
- flex-wrap : wrap ;
188
- }
189
- .playground {
190
- align-self : flex-end ;
191
- flex : 0 0 100% ;
192
- text-align : right ;
206
+ .rule-aux {
207
+ flex : 1 0 auto ;
208
+ flex-direction : row ;
193
209
}
194
210
}
195
211
0 commit comments