Skip to content

Commit a132c8d

Browse files
committed
feat: add memoization and update types
Adds memoization and updates types to comply with alpha version of @dash-ui/styles BREAKING CHANGE: `styles` instances are now required as a first argument in the initializer
1 parent 4ae56e7 commit a132c8d

File tree

6 files changed

+1178
-1189
lines changed

6 files changed

+1178
-1189
lines changed

README.md

Lines changed: 14 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ npm i @dash-ui/mq
3939
import mq from "@dash-ui/mq";
4040
import { styles } from "@dash-ui/styles";
4141

42-
const breakpoint = mq({
42+
const breakpoint = mq(styles, {
4343
// 0px
4444
sm: "only screen and (min-width: 0em)",
4545
// 560px
@@ -87,7 +87,7 @@ import mq from "@dash-ui/mq";
8787
import { styles } from "@dash-ui/styles";
8888

8989
// Creates the stored media queries
90-
const breakpoint = mq({
90+
const breakpoint = mq(styles, {
9191
sm: "only screen and (min-width: 0em)",
9292
mq: "only screen and (min-width: 35em)",
9393
lg: "only screen and (min-width: 80em)",
@@ -145,65 +145,33 @@ const Component = () => (
145145
```typescript
146146
function mq<
147147
Tokens extends DashTokens = DashTokens,
148+
Themes extends DashThemes = DashThemes,
148149
QueryNames extends string = string
149150
>(
151+
styles: Styles<Tokens, Themes>,
150152
mediaQueries: MediaQueries<QueryNames>
151-
): MediaQueryCssCallback<QueryNames, Tokens>;
152-
function mq<
153-
Tokens extends DashTokens = DashTokens,
154-
QueryNames extends string = string
155-
>(
156-
mediaQueries: MediaQueries<QueryNames>
157-
): MediaQueryNameCallback<QueryNames, Tokens>;
153+
): {
154+
(queryName: QueryNames): string;
155+
(queryName: MediaQueryObject<QueryNames, Tokens, Themes>): (
156+
tokens: TokensUnion<Tokens, Themes>
157+
) => string;
158+
};
158159
```
159160

160161
| Argument | Type | Required? | Description |
161162
| ------------ | -------------------------------------- | --------- | ------------------------------------- |
163+
| styles | `styles` | Yes | A Dash `styles` instance |
162164
| mediaQueries | `{readonly [K in QueryNames]: string}` | Yes | A map of media query name/query pairs |
163165

164166
#### Returns
165167

166168
```typescript
167169
// When a `string` is provided as the `mediaQueries` argument, this
168170
// will return a `MediaQueryNameCallback`, otherwise a `MediaQueryCssCallback`
171+
function mqStyles(queryName: QueryNames): string;
169172
function mqStyles(
170-
queryName: QueryNames | MediaQueryObject<QueryNames, Tokens>
171-
): MediaQueryNameCallback | MediaQueryCssCallback;
172-
```
173-
174-
### MediaQueryNameCallback
175-
176-
A function that returns a media query string e.g. `"@media only screen and (min-width: 0em)"`.
177-
178-
```typescript
179-
type MediaQueryNameCallback<
180-
QueryNames extends string,
181-
Tokens extends DashTokens = DashTokens
182-
> = (queryName: QueryNames | MediaQueryObject<QueryNames, Tokens>) => string;
183-
```
184-
185-
### MediaQueryCssCallback
186-
187-
A style callback which can be provided to any [`@dash-ui/styles`](https://github.com/dash-ui/styles)
188-
functions that accept one. i.e. `styles()`, `styles.one()`, `styles.cls()`, and `styles.insertGlobal()`
189-
190-
```typescript
191-
type MediaQueryCssCallback<
192-
QueryNames extends string,
193-
Tokens extends DashTokens = DashTokens
194-
> = (
195-
queryName: QueryNames | MediaQueryObject<QueryNames, Tokens>
196-
) => (tokens: Tokens) => string;
197-
198-
export type MediaQueryObject<
199-
QueryNames extends string,
200-
Tokens extends DashTokens = DashTokens
201-
> = {
202-
readonly [K in QueryNames | "default"]?:
203-
| string
204-
| StyleObject
205-
| StyleCallback<Tokens>;
206-
};
173+
queryName: MediaQueryObject<QueryNames, Tokens, Themes>
174+
): (tokens: TokensUnion<Tokens, Themes>) => string;
207175
```
208176

209177
## LICENSE

package.json

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@
110110
"devDependencies": {
111111
"@commitlint/cli": "latest",
112112
"@commitlint/config-conventional": "latest",
113-
"@dash-ui/styles": "^0.8.0",
113+
"@dash-ui/styles": "^1.0.0-alpha.1",
114114
"@semantic-release/changelog": "^6.0.0",
115115
"@semantic-release/git": "^10.0.0",
116116
"@swc-node/core": "^1.6.0",
@@ -126,11 +126,20 @@
126126
"prettier": "latest",
127127
"typescript": "latest"
128128
},
129+
"peerDependencies": {
130+
"@dash-ui/styles": ">=1.0.0-alpha.1"
131+
},
129132
"release": {
130133
"branches": [
131134
"main",
132-
"next",
133-
"alpha"
135+
{
136+
"name": "next",
137+
"prerelease": true
138+
},
139+
{
140+
"name": "alpha",
141+
"prerelease": true
142+
}
134143
],
135144
"plugins": [
136145
"@semantic-release/commit-analyzer",

0 commit comments

Comments
 (0)