Skip to content

Commit a89038a

Browse files
committed
feat: create media query provider
1 parent 0252947 commit a89038a

File tree

4 files changed

+50
-1
lines changed

4 files changed

+50
-1
lines changed

src/index.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ export * from './deprecated/motion'
77
export * from './deprecated/shape'
88
export * from './deprecated/typography'
99

10-
export * from './tokens/index'
10+
export * from './media-queries/index'
11+
export * from './tokens/index'
12+

src/media-queries/index.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export * from './provide-window-media-query';
2+
export * from './window-media-query';
3+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { WindowMediaQueryProvider } from "./window-media-query";
2+
3+
export const provideWindowMediaQuery = () => new WindowMediaQueryProvider()
+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import plugin from "tailwindcss/plugin";
2+
import type { IProvider } from "../declaration/provider.interface";
3+
import { Strings } from "../utils/strings";
4+
5+
interface IWindowMediaQuery {
6+
compact: string
7+
medium: string
8+
expanded: string
9+
large: string
10+
extraLarge: string
11+
}
12+
13+
class DefaultWindowMediaQueryTokens implements IWindowMediaQuery {
14+
compact = '@media (max-width: 600px)'
15+
medium = '@media (min-width: 600px) and (max-width: 840px)'
16+
expanded = '@media (min-width: 840px) and (max-width: 1200px)'
17+
large = '@media (min-width: 1200px) and (max-width: 1600px)'
18+
extraLarge = '@media (min-width: 1600px)'
19+
20+
public get defaultTokenRecord() {
21+
return {
22+
compact: this.compact,
23+
medium: this.medium,
24+
expanded: this.expanded,
25+
large: this.large,
26+
extraLarge: this.extraLarge,
27+
}
28+
}
29+
}
30+
31+
export class WindowMediaQueryProvider extends DefaultWindowMediaQueryTokens implements IProvider {
32+
33+
getPlugin() {
34+
return plugin(({ addVariant }) => {
35+
for (const mq of Object.entries(this.defaultTokenRecord)) {
36+
addVariant(Strings.toKebabCase(mq[0]), mq[1])
37+
}
38+
})
39+
}
40+
41+
}

0 commit comments

Comments
 (0)