8000 feat: more rules · unocss/unocss@4084a99 · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Commit 4084a99

Browse files
committed
feat: more rules
1 parent db071c9 commit 4084a99

File tree

8 files changed

+77
-15
lines changed

8 files changed

+77
-15
lines changed

src/presets/default/rules/animations.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,9 @@ export const transitions: MiniwindRule[] = [
1414
'transition-duration': `${duration}ms`,
1515
}
1616
}],
17+
[/^duration-(\d+)$/, ([, duration = '150']) => {
18+
return {
19+
'transition-duration': `${duration}ms`,
20+
}
21+
}],
1722
]

src/presets/default/rules/border.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export const borders: MiniwindRule[] = [
88
[/^border(?:-([^-]+))?(?:-([^-]+))?$/, handlerBorder],
99
]
1010

11-
export const rounded: MiniwindRule[] = [
11+
export const borderRadius: MiniwindRule[] = [
1212
[/^(?:border-)?rounded$/, handlerRounded],
1313
[/^(?:border-)?rounded(?:-([^-]+))?$/, handlerRounded],
1414
[/^(?:border-)?rounded(?:-([^-]+))?(?:-([^-]+))?$/, handlerRounded],

src/presets/default/rules/filters.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { MiniwindRule } from '../../..'
2+
3+
const filterContnet = 'var(--mw-blur) var(--mw-brightness) var(--mw-contrast) var(--mw-grayscale) var(--mw-hue-rotate) var(--mw-invert) var(--mw-saturate) var(--mw-sepia) var(--mw-drop-shadow)'
4+
5+
const init = {
6+
'--mw-blur': 'var(--mw-empty,/*!*/ /*!*/)',
7+
'--mw-brightness': 'var(--mw-empty,/*!*/ /*!*/)',
8+
'--mw-contrast': 'var(--mw-empty,/*!*/ /*!*/)',
9+
'--mw-grayscale': 'var(--mw-empty,/*!*/ /*!*/)',
10+
'--mw-hue-rotate': 'var(--mw-empty,/*!*/ /*!*/)',
11+
'--mw-invert': 'var(--mw-empty,/*!*/ /*!*/)',
12+
'--mw-saturate': 'var(--mw-empty,/*!*/ /*!*/)',
13+
'--mw-sepia': 'var(--mw-empty,/*!*/ /*!*/)',
14+
'--mw-drop-shadow': 'var(--mw-empty,/*!*/ /*!*/)',
15+
'filter': filterContnet,
16+
}
17+
18+
export const filters: MiniwindRule[] = [
19+
['filter', init],
20+
['filter-none', { filter: 'none' }],
21+
[/^blur(?:-(\d+))?$/, ([, d]) => ({ '--mw-blur': `blur(${d}px)`, 'filter': filterContnet })],
22+
]

src/presets/default/rules/index.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { MiniwindRule } from '../../../types'
22
import { transitions } from './animations'
3-
import { borders, borderStyles, rounded } from './border'
3+
import { borders, borderStyles, borderRadius } from './border'
44
import { bgColors, borderColors, opacity, textColors } from './colors'
5+
import { filters } from './filters'
56
import { flex } from './flex'
67
import { fonts, fontSizes, fontWeights, leadings, trackings } from './font'
78
import { gaps } from './gap'
89
import { grids } from './grid'
910
import { overflows } from './layouts'
10-
import { alignContents, alignItems, alignSelfs, floats, insets, justifies, justifyItems, justifySelfs, placeContents, placeItems, placeSelfs, positions, zIndexes } from './positions'
11+
import { alignContents, alignItems, alignSelfs, floats, insets, justifies, justifyItems, justifySelfs, objectPositions, orders, placeContents, placeItems, placeSelfs, positions, zIndexes } from './positions'
1112
import { sizes } from './size'
1213
import { paddings, margins } from './spacing'
1314
import { verticalAligns, appearances, breaks, cursors, displays, pointerEvents, resizes, textAligns, textDecorations, textOverflows, textTransforms, userSelects, whitespaces } from './static'
@@ -26,10 +27,10 @@ export const defaultRules: MiniwindRule[] = [
2627
borders,
2728
borderColors,
2829
borderStyles,
30+
borderRadius,
2931
fonts,
3032
fontSizes,
3133
fontWeights,
32-
rounded,
3334
flex,
3435
grids,
3536
gaps,
@@ -47,6 +48,7 @@ export const defaultRules: MiniwindRule[] = [
4748
leadings,
4849
overflows,
4950
positions,
51+
orders,
5052
justifies,
5153
justifyItems,
5254
justifySelfs,
@@ -59,5 +61,7 @@ export const defaultRules: MiniwindRule[] = [
5961
insets,
6062
floats,
6163
zIndexes,
64+
objectPositions,
6265
transitions,
66+
filters,
6367
].flat(1)

src/presets/default/rules/positions.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ export const justifies: MiniwindRule[] = [
1717
['justify-evenly', { 'justify-content': 'space-evenly' }],
1818
]
1919

20+
export const orders: MiniwindRule[] = [
21+
[/^order-(.+)$/, ([, v]) => ({ order: { first: '-9999', last: '9999', none: '0' }[v] || h.bracket.number(v) })],
22+
]
23+
2024
const basicSet = ['auto', 'start', 'end', 'center', 'stretch']
2125

2226
export const justifyItems: MiniwindRule[] = basicSet
@@ -88,3 +92,19 @@ export const zIndexes: MiniwindRule[] = [
8892
['z-auto', { 'z-index': 'auto' }],
8993
[/^z-([^-]+)$/, ([, v]) => ({ 'z-index': h.number(v) })],
9094
]
95+
96+
export const objectPositions: MiniwindRule[] = [
97+
['object-cover', { 'object-fit': 'cover' }],
98+
['object-contain', { 'object-fit': 'contain' }],
99+
['object-fill', { 'object-fit': 'fill' }],
100+
['object-scale-down', { 'object-fit': 'scale-down' }],
101+
['object-none', { 'object-fit': 'none' }],
102+
['object-bottom', { 'object-position': 'bottom' }],
103+
['object-top', { 'object-position': 'top' }],
104+
['object-right', { 'object-position': 'right' }],
105+
['object-left', { 'object-position': 'left' }],
106+
['object-lb', { 'object-position': 'left bottom' }],
107+
['object-lt', { 'object-position': 'left top' }],
108+
['object-rb', { 'object-position': 'right bottom' }],
109+
['object-rt', { 'object-position': 'right top' }],
110+
]

test/__snapshots__/attributify.test.ts.snap

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@ exports[`attributify generate 1`] = `
4141
.dark [bg~=\\"dark\\\\:hover\\\\:blue-600\\"]:hover{--mw-bg-opacity:1;background-color:rgba(37,99,235,var(--mw-bg-opacity));}
4242
[border~=\\"\\\\32 \\"]{border-width:2px;border-style:solid;}
4343
[border~=\\"blue-200\\"]{--mw-border-opacity:1;border-color:rgba(191,219,254,var(--mw-border-opacity));}
44-
[font~=\\"mono\\"]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\\"Liberation Mono\\",\\"Courier New\\",monospace;}
45-
[font~=\\"sans\\"]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\\"Segoe UI\\",Roboto,\\"Helvetica Neue\\",Arial,\\"Noto Sans\\",sans-serif,\\"Apple Color Emoji\\",\\"Segoe UI Emoji\\",\\"Segoe UI Symbol\\",\\"Noto Color Emoji\\";}
46-
[text~=\\"sm\\"]{font-size:0.875rem;line-height:1.25rem;}
4744
[border~=\\"rounded\\"]{border-radius:0.25rem;}
4845
.rounded{border-radius:0.25rem;}
4946
[border~=\\"rounded-xl\\"]{border-radius:0.75rem;}
5047
.rounded-xl{border-radius:0.75rem;}
48+
[font~=\\"mono\\"]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\\"Liberation Mono\\",\\"Courier New\\",monospace;}
49+
[font~=\\"sans\\"]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\\"Segoe UI\\",Roboto,\\"Helvetica Neue\\",Arial,\\"Noto Sans\\",sans-serif,\\"Apple Color Emoji\\",\\"Segoe UI Emoji\\",\\"Segoe UI Symbol\\",\\"Noto Color Emoji\\";}
50+
[text~=\\"sm\\"]{font-size:0.875rem;line-height:1.25rem;}
5151
[flex~=\\"\\\\~\\"]{display:flex;}
5252
[flex~=\\"col\\"]{flex-direction:column;}"
5353
`;

test/__snapshots__/default.test.ts.snap

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,6 @@ exports[`default 1`] = `
2828
.border-b{border-bottom-width:1px;border-style:solid;}
2929
.border-t-2{border-top-width:2px;border-style:solid;}
3030
.border-green-100\\\\/10{border-color:rgba(220,252,231,0.1);}
31-
.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\\"Liberation Mono\\",\\"Courier New\\",monospace;}
32-
.text-base{font-size:1rem;line-height:1.5rem;}
33-
.text-lg{font-size:1.125rem;line-height:1.75rem;}
34-
.text-4xl{font-size:2.25rem;line-height:2.5rem;}
3531
.rounded{border-radius:0.25rem;}
3632
.rounded-md{border-radius:0.375rem;}
3733
.rounded-tr{border-top-right-radius:0.25rem;}
@@ -40,7 +36,14 @@ exports[`default 1`] = `
4036
.rounded-\\\\[4px\\\\]{border-radius:4px;}
4137
.rounded-t-sm{border-top-left-radius:0.125rem;border-top-right-radius:0.125rem;}
4238
.rounded-rb-1\\\\/2{border-bottom-right-radius:50%;}
39+
.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\\"Liberation Mono\\",\\"Courier New\\",monospace;}
40+
.text-base{font-size:1rem;line-height:1.5rem;}
41+
.text-lg{font-size:1.125rem;line-height:1.75rem;}
42+
.text-4xl{font-size:2.25rem;line-height:2.5rem;}
4343
.flex{display:flex;}
44+
.order-first{order:-9999;}
45+
.z-100{z-index:100;}
46+
.blur-4{--mw-blur:blur(4px);filter:var(--mw-blur) var(--mw-brightness) var(--mw-contrast) var(--mw-grayscale) var(--mw-hue-rotate) var(--mw-invert) var(--mw-saturate) var(--mw-sepia) var(--mw-drop-shadow);}
4447
@media (min-width: 640px){
4548
.sm\\\\:text-red-100{--mw-text-opacity:1;color:rgba(254,226,226,var(--mw-text-opacity));}
4649
.sm\\\\:text-red-200\\\\/10{color:rgba(254,202,202,0.1);}
@@ -79,10 +82,6 @@ exports[`scope 1`] = `
7982
.foo-scope .border-b{border-bottom-width:1px;border-style:solid;}
8083
.foo-scope .border-t-2{border-top-width:2px;border-style:solid;}
8184
.foo-scope .border-green-100\\\\/10{border-color:rgba(220,252,231,0.1);}
82-
.foo-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\\"Liberation Mono\\",\\"Courier New\\",monospace;}
83-
.foo-scope .text-base{font-size:1rem;line-height:1.5rem;}
84-
.foo-scope .text-lg{font-size:1.125rem;line-height:1.75rem;}
85-
.foo-scope .text-4xl{font-size:2.25rem;line-height:2.5rem;}
8685
.foo-scope .rounded{border-radius:0.25rem;}
8786
.foo-scope .rounded-md{border-radius:0.375rem;}
8887
.foo-scope .rounded-tr{border-top-right-radius:0.25rem;}
@@ -91,7 +90,14 @@ exports[`scope 1`] = `
9190
.foo-scope .rounded-\\\\[4px\\\\]{border-radius:4px;}
9291
.foo-scope .rounded-t-sm{border-top-left-radius:0.125rem;border-top-right-radius:0.125rem;}
9392
.foo-scope .rounded-rb-1\\\\/2{border-bottom-right-radius:50%;}
93+
.foo-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\\"Liberation Mono\\",\\"Courier New\\",monospace;}
94+
.foo-scope .text-base{font-size:1rem;line-height:1.5rem;}
95+
.foo-scope .text-lg{font-size:1.125rem;line-height:1.75rem;}
96+
.foo-scope .text-4xl{font-size:2.25rem;line-height:2.5rem;}
9497
.foo-scope .flex{display:flex;}
98+
.foo-scope .order-first{order:-9999;}
99+
.foo-scope .z-100{z-index:100;}
100+
.foo-scope .blur-4{--mw-blur:blur(4px);filter:var(--mw-blur) var(--mw-brightness) var(--mw-contrast) var(--mw-grayscale) var(--mw-hue-rotate) var(--mw-invert) var(--mw-saturate) var(--mw-sepia) var(--mw-drop-shadow);}
95101
@media (min-width: 640px){
96102
.foo-scope .sm\\\\:text-red-100{--mw-text-opacity:1;color:rgba(254,226,226,var(--mw-text-opacity));}
97103
.foo-scope .sm\\\\:text-red-200\\\\/10{color:rgba(254,202,202,0.1);}

test/default.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ const fixture = [
4343
'text-4xl',
4444
'bg-red-100 bg-opacity-45',
4545
'border-b border-t-2 border-green-100/10',
46+
'blur-4',
47+
'gap-4',
48+
'-gap-y-5',
49+
'z-100',
50+
'order-first',
4651
].join(' ')
4752

4853
const generator = createGenerator()

0 commit comments

Comments
 (0)
0