tw-next-image 1.0.0-beta.0 → 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/CHANGELOG.md +25 -0
- package/LICENSE.md +16 -0
- package/README.md +75 -4
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/infer-sizes.d.ts.map +1 -1
- package/dist/infer-sizes.js +9 -10
- package/dist/infer-sizes.js.map +1 -1
- package/dist/internal/aspect-ratio.d.ts.map +1 -1
- package/dist/internal/aspect-ratio.js +19 -10
- package/dist/internal/aspect-ratio.js.map +1 -1
- package/dist/internal/class-names.d.ts +3 -1
- package/dist/internal/class-names.d.ts.map +1 -1
- package/dist/internal/class-names.js +17 -3
- package/dist/internal/class-names.js.map +1 -1
- package/dist/internal/constants.d.ts +2 -0
- package/dist/internal/constants.d.ts.map +1 -0
- package/dist/internal/constants.js +2 -0
- package/dist/internal/constants.js.map +1 -0
- package/dist/internal/css-length.js +4 -4
- package/dist/internal/css-length.js.map +1 -1
- package/dist/internal/size-info.d.ts +3 -1
- package/dist/internal/size-info.d.ts.map +1 -1
- package/dist/internal/size-info.js +3 -3
- package/dist/internal/size-info.js.map +1 -1
- package/dist/internal/tailwind-length.js +2 -2
- package/dist/internal/tailwind-length.js.map +1 -1
- package/dist/smart-image/create-smart-image.d.ts +3 -0
- package/dist/smart-image/create-smart-image.d.ts.map +1 -0
- package/dist/smart-image/create-smart-image.js +53 -0
- package/dist/smart-image/create-smart-image.js.map +1 -0
- package/dist/smart-image/create-smart-image.types.d.ts +11 -0
- package/dist/smart-image/create-smart-image.types.d.ts.map +1 -0
- package/dist/smart-image/create-smart-image.types.js +2 -0
- package/dist/smart-image/create-smart-image.types.js.map +1 -0
- package/dist/smart-image/index.d.ts +2 -0
- package/dist/smart-image/index.d.ts.map +1 -1
- package/dist/smart-image/index.js +1 -0
- package/dist/smart-image/index.js.map +1 -1
- package/dist/smart-image/smart-image.d.ts +1 -1
- package/dist/smart-image/smart-image.d.ts.map +1 -1
- package/dist/smart-image/smart-image.js +4 -25
- package/dist/smart-image/smart-image.js.map +1 -1
- package/dist/types.d.ts +0 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -5
- package/LICENSE +0 -21
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to
|
|
6
|
+
[Semantic Versioning](https://semver.org/).
|
|
7
|
+
|
|
8
|
+
## [1.0.0] - 2026-01-02
|
|
9
|
+
|
|
10
|
+
Features:
|
|
11
|
+
|
|
12
|
+
- Supports all Tailwind sizing utilities: `w-*`, `h-*`, `size-*`, `max-w-*`, `max-h-*`
|
|
13
|
+
- Handles responsive variants (`sm:`, `md:`, `lg:`, `xl:`, `2xl:`)
|
|
14
|
+
- Parses arbitrary values (`w-[300px]`, `h-[50vh]`)
|
|
15
|
+
- Infers aspect ratio from static image imports
|
|
16
|
+
- Custom spacing and breakpoint configuration
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- `SmartImage` component: Tailwind-first Next.js image with automatic `sizes` inference
|
|
21
|
+
- `createSmartImage` factory: Create custom SmartImage with your own `tailwind-merge` config
|
|
22
|
+
- `inferImageSizes` function: Standalone sizes inference from Tailwind classes
|
|
23
|
+
- `DEFAULT_BREAKPOINTS`: Tailwind v4 breakpoint configuration
|
|
24
|
+
- Standalone export path `tw-next-image/infer-sizes` for React-free usage
|
|
25
|
+
- Full TypeScript support with exported types
|
package/LICENSE.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 prb
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
|
6
|
+
documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
|
|
7
|
+
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
|
8
|
+
persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
|
|
11
|
+
Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
|
14
|
+
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
15
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
16
|
+
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,16 +1,62 @@
|
|
|
1
1
|
# tw-next-image
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/tw-next-image)
|
|
4
|
+
[](./LICENSE)
|
|
5
|
+
|
|
3
6
|
Tailwind-first Next.js image component with automatic `sizes` inference.
|
|
4
7
|
|
|
5
8
|
See [DOCS.md](./DOCS.md) for full examples and API reference.
|
|
6
9
|
|
|
7
|
-
##
|
|
10
|
+
## Why
|
|
11
|
+
|
|
12
|
+
The `next/image` component requires a [`sizes`][mdn-sizes] attribute to serve optimally-sized images. Without it,
|
|
13
|
+
Next.js defaults to `100vw`—meaning a 64px thumbnail requests the same massive image as a full-width hero. This wastes
|
|
14
|
+
bandwidth and hurts Core Web Vitals.
|
|
15
|
+
|
|
16
|
+
The problem: crafting `sizes` by hand is tedious. Every responsive image needs a media query string that mirrors your
|
|
17
|
+
CSS breakpoints:
|
|
18
|
+
|
|
19
|
+
```tsx
|
|
20
|
+
// Manual sizes for a responsive image 😴
|
|
21
|
+
<Image src="/avatar.webp" sizes="(min-width: 1024px) 120px, 100px" className="size-25 lg:size-30" />
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**`tw-next-image` eliminates this busywork.** It parses your Tailwind classes and infers the correct `sizes`
|
|
25
|
+
automatically:
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
// Same result, zero mental overhead 🎉
|
|
29
|
+
<SmartImage src="/avatar.webp" className="size-25 lg:size-30" />
|
|
30
|
+
// → sizes="(min-width: 1024px) 120px, 100px"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
<details>
|
|
34
|
+
<summary>Further reading</summary>
|
|
35
|
+
|
|
36
|
+
- [next/image responsive behavior discussion](https://github.com/vercel/next.js/discussions/25564)
|
|
37
|
+
- [Tailwind + next/image integration request](https://github.com/vercel/next.js/discussions/38945)
|
|
38
|
+
- [Inefficient srcset generation issue](https://github.com/vercel/next.js/issues/27547)
|
|
39
|
+
- [Deep dive: the sizes attribute in Next.js](https://morganfeeney.com/posts/sizes-attribute-nextjs-image)
|
|
40
|
+
|
|
41
|
+
</details>
|
|
42
|
+
|
|
43
|
+
[mdn-sizes]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/sizes
|
|
44
|
+
|
|
45
|
+
## 📦 Install
|
|
8
46
|
|
|
9
47
|
```bash
|
|
48
|
+
npm install tw-next-image
|
|
49
|
+
# or
|
|
50
|
+
pnpm add tw-next-image
|
|
51
|
+
# or
|
|
52
|
+
yarn add tw-next-image
|
|
53
|
+
# or
|
|
10
54
|
bun add tw-next-image
|
|
11
55
|
```
|
|
12
56
|
|
|
13
|
-
|
|
57
|
+
**Requirements**: Next.js ≥13, React ≥18
|
|
58
|
+
|
|
59
|
+
## 🚀 Quick Start
|
|
14
60
|
|
|
15
61
|
```tsx
|
|
16
62
|
import { SmartImage } from "tw-next-image";
|
|
@@ -27,6 +73,31 @@ import { SmartImage } from "tw-next-image";
|
|
|
27
73
|
`SmartImage` wraps `next/image` with `fill` mode—ensure the wrapper has height via `size-*`, `h-*`, `aspect-*`, or
|
|
28
74
|
inline styles.
|
|
29
75
|
|
|
30
|
-
##
|
|
76
|
+
## 🔧 Custom `tailwind-merge`
|
|
77
|
+
|
|
78
|
+
If your app uses a custom `tailwind-merge` config, inject it via `createSmartImage`:
|
|
79
|
+
|
|
80
|
+
```tsx
|
|
81
|
+
import { createSmartImage } from "tw-next-image";
|
|
82
|
+
import { customTwMerge } from "./tailwind/merge";
|
|
83
|
+
|
|
84
|
+
export const SmartImage = createSmartImage({ cx: customTwMerge });
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## 📖 Standalone Inference
|
|
88
|
+
|
|
89
|
+
Use `inferImageSizes` without the React component:
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
import { inferImageSizes } from "tw-next-image/infer-sizes";
|
|
93
|
+
|
|
94
|
+
inferImageSizes({ className: "w-75" });
|
|
95
|
+
// → "300px"
|
|
96
|
+
|
|
97
|
+
inferImageSizes({ className: "size-25 lg:size-30" });
|
|
98
|
+
// → "(min-width: 1024px) 120px, 100px"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 📄 License
|
|
31
102
|
|
|
32
|
-
MIT
|
|
103
|
+
[MIT](./LICENSE) © [Paul Razvan Berg](https://github.com/PaulRBerg)
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { type Breakpoint, type BreakpointConfig, DEFAULT_BREAKPOINTS } from "./breakpoints.js";
|
|
2
2
|
export { inferImageSizes } from "./infer-sizes.js";
|
|
3
|
-
export type { SmartImageProps } from "./smart-image/index.js";
|
|
4
|
-
export { SmartImage } from "./smart-image/index.js";
|
|
3
|
+
export type { CreateSmartImageOptions, SmartImageClassNameFn, SmartImageComponent, SmartImageProps, } from "./smart-image/index.js";
|
|
4
|
+
export { createSmartImage, SmartImage } from "./smart-image/index.js";
|
|
5
5
|
export type { InferSizesInput, InferSizesStyle, SizeInfo, StaticImageData } from "./types.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EACV,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACtE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { DEFAULT_BREAKPOINTS } from "./breakpoints.js";
|
|
2
2
|
export { inferImageSizes } from "./infer-sizes.js";
|
|
3
|
-
export { SmartImage } from "./smart-image/index.js";
|
|
3
|
+
export { createSmartImage, SmartImage } from "./smart-image/index.js";
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0C,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0C,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAQnD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infer-sizes.d.ts","sourceRoot":"","sources":["../src/infer-sizes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAY,MAAM,YAAY,CAAC;AA6E5D,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,KAAK,EACL,KAAK,EACL,aAAuC,EACvC,GAAG,EACH,WAAiC,EACjC,aAAkB,GACnB,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"infer-sizes.d.ts","sourceRoot":"","sources":["../src/infer-sizes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAY,MAAM,YAAY,CAAC;AA6E5D,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,KAAK,EACL,KAAK,EACL,aAAuC,EACvC,GAAG,EACH,WAAiC,EACjC,aAAkB,GACnB,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAwBjC"}
|
package/dist/infer-sizes.js
CHANGED
|
@@ -3,7 +3,7 @@ import { getAspectRatioFromClassName, getSrcAspectRatio } from "./internal/aspec
|
|
|
3
3
|
import { formatPx, minPx, parsePxNumber } from "./internal/css-length.js";
|
|
4
4
|
import { mergeStyleIntoSizeInfo, parseSizeInfoByBreakpoint } from "./internal/size-info.js";
|
|
5
5
|
const DEFAULT_BASE_SPACING_PX = 4;
|
|
6
|
-
function
|
|
6
|
+
function computeResolvedWidth(info, aspectRatio) {
|
|
7
7
|
const fromWidthOrMax = (() => {
|
|
8
8
|
if (info.width && info.maxWidth) {
|
|
9
9
|
return minPx(info.width, info.maxWidth) ?? `min(${info.width}, ${info.maxWidth})`;
|
|
@@ -37,29 +37,28 @@ function buildBreakpointConditions(byBreakpoint, aspectRatio, breakpoints) {
|
|
|
37
37
|
const conditions = [];
|
|
38
38
|
const orderedBreakpoints = Object.entries(breakpoints).sort((a, b) => b[1] - a[1]);
|
|
39
39
|
for (const [breakpoint, minWidthPx] of orderedBreakpoints) {
|
|
40
|
-
const
|
|
41
|
-
if (!
|
|
40
|
+
const sizeInfo = byBreakpoint[breakpoint];
|
|
41
|
+
if (!sizeInfo) {
|
|
42
42
|
continue;
|
|
43
43
|
}
|
|
44
|
-
const
|
|
45
|
-
if (!
|
|
44
|
+
const resolvedWidth = computeResolvedWidth(sizeInfo, aspectRatio);
|
|
45
|
+
if (!resolvedWidth) {
|
|
46
46
|
continue;
|
|
47
47
|
}
|
|
48
|
-
conditions.push(`(min-width: ${minWidthPx}px) ${
|
|
48
|
+
conditions.push(`(min-width: ${minWidthPx}px) ${resolvedWidth}`);
|
|
49
49
|
}
|
|
50
50
|
return conditions;
|
|
51
51
|
}
|
|
52
52
|
export function inferImageSizes({ className, style, ratio, baseSpacingPx = DEFAULT_BASE_SPACING_PX, src, breakpoints = DEFAULT_BREAKPOINTS, customSpacing = {}, }) {
|
|
53
53
|
const byBreakpoint = parseSizeInfoByBreakpoint(className, baseSpacingPx, breakpoints, customSpacing);
|
|
54
|
-
const baseInfo = byBreakpoint.base ?? {};
|
|
55
|
-
byBreakpoint.base = baseInfo;
|
|
54
|
+
const baseInfo = { ...(byBreakpoint.base ?? {}) };
|
|
56
55
|
mergeStyleIntoSizeInfo(baseInfo, style);
|
|
57
56
|
const aspectRatio = ratio ?? getSrcAspectRatio(src) ?? getAspectRatioFromClassName(className);
|
|
58
|
-
const resolvedBase =
|
|
57
|
+
const resolvedBase = computeResolvedWidth(baseInfo, aspectRatio);
|
|
59
58
|
if (!resolvedBase) {
|
|
60
59
|
return null;
|
|
61
60
|
}
|
|
62
|
-
const conditions = buildBreakpointConditions(byBreakpoint, aspectRatio, breakpoints);
|
|
61
|
+
const conditions = buildBreakpointConditions({ ...byBreakpoint, base: baseInfo }, aspectRatio, breakpoints);
|
|
63
62
|
return conditions.length === 0 ? resolvedBase : `${conditions.join(", ")}, ${resolvedBase}`;
|
|
64
63
|
}
|
|
65
64
|
//# sourceMappingURL=infer-sizes.js.map
|
package/dist/infer-sizes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infer-sizes.js","sourceRoot":"","sources":["../src/infer-sizes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAG5F,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAElC,SAAS,
|
|
1
|
+
{"version":3,"file":"infer-sizes.js","sourceRoot":"","sources":["../src/infer-sizes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aspect-ratio.d.ts","sourceRoot":"","sources":["../../src/internal/aspect-ratio.ts"],"names":[],"mappings":"AAkBA,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"aspect-ratio.d.ts","sourceRoot":"","sources":["../../src/internal/aspect-ratio.ts"],"names":[],"mappings":"AAkBA,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAe7D;AAwDD,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAcxF"}
|
|
@@ -1,21 +1,24 @@
|
|
|
1
|
+
import { WHITESPACE_REGEX } from "./constants.js";
|
|
1
2
|
import { parseVariantToken } from "./tailwind-variants.js";
|
|
2
|
-
const WHITESPACE_REGEX = /\s+/;
|
|
3
3
|
const ASPECT_FRACTION_REGEX = /^aspect-(\d+(?:\.\d+)?)\/(\d+(?:\.\d+)?)$/;
|
|
4
|
-
const
|
|
5
|
-
function
|
|
4
|
+
const ASPECT_BRACKET_REGEX = /^aspect-\[(.+)\]$/;
|
|
5
|
+
function isPlainObject(value) {
|
|
6
6
|
return typeof value === "object" && value !== null;
|
|
7
7
|
}
|
|
8
8
|
function isStaticImageData(value) {
|
|
9
|
-
if (!
|
|
9
|
+
if (!isPlainObject(value)) {
|
|
10
10
|
return false;
|
|
11
11
|
}
|
|
12
12
|
return typeof value.width === "number" && typeof value.height === "number";
|
|
13
13
|
}
|
|
14
14
|
export function getSrcAspectRatio(src) {
|
|
15
|
-
if (isStaticImageData(src) && src.height
|
|
15
|
+
if (isStaticImageData(src) && src.height > 0 && src.width > 0) {
|
|
16
16
|
return src.width / src.height;
|
|
17
17
|
}
|
|
18
|
-
if (
|
|
18
|
+
if (isPlainObject(src) &&
|
|
19
|
+
isStaticImageData(src.default) &&
|
|
20
|
+
src.default.height > 0 &&
|
|
21
|
+
src.default.width > 0) {
|
|
19
22
|
return src.default.width / src.default.height;
|
|
20
23
|
}
|
|
21
24
|
return null;
|
|
@@ -31,12 +34,15 @@ function parseAspectRatioFromBaseToken(baseToken) {
|
|
|
31
34
|
if (fractionMatch) {
|
|
32
35
|
const numerator = Number(fractionMatch[1]);
|
|
33
36
|
const denominator = Number(fractionMatch[2]);
|
|
34
|
-
if (Number.isFinite(numerator) &&
|
|
37
|
+
if (Number.isFinite(numerator) &&
|
|
38
|
+
Number.isFinite(denominator) &&
|
|
39
|
+
numerator > 0 &&
|
|
40
|
+
denominator > 0) {
|
|
35
41
|
return numerator / denominator;
|
|
36
42
|
}
|
|
37
43
|
return null;
|
|
38
44
|
}
|
|
39
|
-
const match =
|
|
45
|
+
const match = ASPECT_BRACKET_REGEX.exec(baseToken);
|
|
40
46
|
if (!match) {
|
|
41
47
|
return null;
|
|
42
48
|
}
|
|
@@ -46,13 +52,16 @@ function parseAspectRatioFromBaseToken(baseToken) {
|
|
|
46
52
|
}
|
|
47
53
|
if (raw.includes("/")) {
|
|
48
54
|
const [numerator, denominator] = raw.split("/", 2).map((part) => Number(part.trim()));
|
|
49
|
-
if (Number.isFinite(numerator) &&
|
|
55
|
+
if (Number.isFinite(numerator) &&
|
|
56
|
+
Number.isFinite(denominator) &&
|
|
57
|
+
numerator > 0 &&
|
|
58
|
+
denominator > 0) {
|
|
50
59
|
return numerator / denominator;
|
|
51
60
|
}
|
|
52
61
|
return null;
|
|
53
62
|
}
|
|
54
63
|
const value = Number(raw);
|
|
55
|
-
if (Number.isFinite(value) && value
|
|
64
|
+
if (Number.isFinite(value) && value > 0) {
|
|
56
65
|
return value;
|
|
57
66
|
}
|
|
58
67
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aspect-ratio.js","sourceRoot":"","sources":["../../src/internal/aspect-ratio.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"aspect-ratio.js","sourceRoot":"","sources":["../../src/internal/aspect-ratio.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export type ClassNameValue =
|
|
1
|
+
export type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false;
|
|
2
|
+
type ClassNameArray = ClassNameValue[];
|
|
2
3
|
export declare function cx(...values: readonly ClassNameValue[]): string;
|
|
4
|
+
export {};
|
|
3
5
|
//# sourceMappingURL=class-names.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class-names.d.ts","sourceRoot":"","sources":["../../src/internal/class-names.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"class-names.d.ts","sourceRoot":"","sources":["../../src/internal/class-names.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;AACzF,KAAK,cAAc,GAAG,cAAc,EAAE,CAAC;AAIvC,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAU/D"}
|
|
@@ -1,11 +1,26 @@
|
|
|
1
|
+
import { WHITESPACE_REGEX } from "./constants.js";
|
|
1
2
|
import { isNonEmptyString } from "./is-non-empty-string.js";
|
|
2
|
-
const
|
|
3
|
+
const MAX_NESTING_DEPTH = 10;
|
|
3
4
|
export function cx(...values) {
|
|
4
5
|
if (values.length === 0) {
|
|
5
6
|
return "";
|
|
6
7
|
}
|
|
7
8
|
const tokens = [];
|
|
9
|
+
appendTokens(tokens, values, 0);
|
|
10
|
+
return tokens.join(" ");
|
|
11
|
+
}
|
|
12
|
+
function appendTokens(out, values, depth) {
|
|
13
|
+
if (depth > MAX_NESTING_DEPTH) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
8
16
|
for (const value of values) {
|
|
17
|
+
if (!value) {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
if (Array.isArray(value)) {
|
|
21
|
+
appendTokens(out, value, depth + 1);
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
9
24
|
if (!isNonEmptyString(value)) {
|
|
10
25
|
continue;
|
|
11
26
|
}
|
|
@@ -13,8 +28,7 @@ export function cx(...values) {
|
|
|
13
28
|
if (!trimmed) {
|
|
14
29
|
continue;
|
|
15
30
|
}
|
|
16
|
-
|
|
31
|
+
out.push(...trimmed.split(WHITESPACE_REGEX));
|
|
17
32
|
}
|
|
18
|
-
return tokens.join(" ");
|
|
19
33
|
}
|
|
20
34
|
//# sourceMappingURL=class-names.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class-names.js","sourceRoot":"","sources":["../../src/internal/class-names.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"class-names.js","sourceRoot":"","sources":["../../src/internal/class-names.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAK5D,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,MAAM,UAAU,EAAE,CAAC,GAAG,MAAiC;IACrD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAEhC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,YAAY,CAAC,GAAa,EAAE,MAAiC,EAAE,KAAa;IACnF,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACpC,SAAS;QACX,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/internal/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAE,MAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/internal/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAW,KAAK,CAAC"}
|
|
@@ -40,11 +40,11 @@ export function formatPx(value) {
|
|
|
40
40
|
return `${String(rounded).replace(TRAILING_ZEROES_REGEX, "")}px`;
|
|
41
41
|
}
|
|
42
42
|
export function minPx(a, b) {
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
-
if (
|
|
43
|
+
const firstPx = parsePxNumber(a);
|
|
44
|
+
const secondPx = parsePxNumber(b);
|
|
45
|
+
if (firstPx === null || secondPx === null) {
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
48
|
-
return formatPx(Math.min(
|
|
48
|
+
return formatPx(Math.min(firstPx, secondPx));
|
|
49
49
|
}
|
|
50
50
|
//# sourceMappingURL=css-length.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css-length.js","sourceRoot":"","sources":["../../src/internal/css-length.ts"],"names":[],"mappings":"AAAA,MAAM,wBAAwB,GAAG,kEAAkE,CAAC;AACpG,MAAM,qBAAqB,GAAG,8BAA8B,CAAC;AAC7D,MAAM,aAAa,GAAG,aAAa,CAAC;AACpC,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAC9C,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAEtC,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,GAAG,KAAK,IAAI,CAAC;IACtB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAChD,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,IAAI,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAS,EAAE,CAAS;IACxC,MAAM,
|
|
1
|
+
{"version":3,"file":"css-length.js","sourceRoot":"","sources":["../../src/internal/css-length.ts"],"names":[],"mappings":"AAAA,MAAM,wBAAwB,GAAG,kEAAkE,CAAC;AACpG,MAAM,qBAAqB,GAAG,8BAA8B,CAAC;AAC7D,MAAM,aAAa,GAAG,aAAa,CAAC;AACpC,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAC9C,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAEtC,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,GAAG,KAAK,IAAI,CAAC;IACtB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAChD,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,IAAI,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAS,EAAE,CAAS;IACxC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,OAAO,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { BreakpointConfig } from "../breakpoints.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { InferSizesStyle, SizeInfo } from "../types.js";
|
|
3
|
+
type BreakpointKey = string | "base";
|
|
3
4
|
export declare function parseSizeInfoByBreakpoint(className: string | undefined, baseSpacingPx: number, breakpoints: BreakpointConfig, customSpacing?: Record<string, string>): Partial<Record<BreakpointKey, SizeInfo>>;
|
|
4
5
|
export declare function mergeStyleIntoSizeInfo(info: SizeInfo, style: InferSizesStyle | undefined): void;
|
|
6
|
+
export {};
|
|
5
7
|
//# sourceMappingURL=size-info.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"size-info.d.ts","sourceRoot":"","sources":["../../src/internal/size-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"size-info.d.ts","sourceRoot":"","sources":["../../src/internal/size-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAM7D,KAAK,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AA+CrC,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,gBAAgB,EAC7B,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACzC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CA6B1C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,GAAG,SAAS,QAsBxF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { WHITESPACE_REGEX } from "./constants.js";
|
|
1
2
|
import { parseStyleLength } from "./css-length.js";
|
|
2
3
|
import { parseTailwindLength } from "./tailwind-length.js";
|
|
3
4
|
import { getBreakpoint, parseVariantToken } from "./tailwind-variants.js";
|
|
4
|
-
const WHITESPACE_REGEX = /\s+/;
|
|
5
5
|
const SIZE_REGEX = /^size-(.+)$/;
|
|
6
6
|
const WIDTH_REGEX = /^w-(.+)$/;
|
|
7
7
|
const MAX_WIDTH_REGEX = /^max-w-(.+)$/;
|
|
@@ -53,7 +53,7 @@ export function parseSizeInfoByBreakpoint(className, baseSpacingPx, breakpoints,
|
|
|
53
53
|
const breakpoint = getBreakpoint(variants, breakpoints);
|
|
54
54
|
const key = breakpoint ?? "base";
|
|
55
55
|
const existing = byBreakpoint[key] ?? {};
|
|
56
|
-
const didApply =
|
|
56
|
+
const didApply = applySizingToken({
|
|
57
57
|
baseSpacingPx,
|
|
58
58
|
baseToken,
|
|
59
59
|
breakpoints,
|
|
@@ -87,7 +87,7 @@ export function mergeStyleIntoSizeInfo(info, style) {
|
|
|
87
87
|
info.maxHeight = styleMaxHeight;
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
-
function
|
|
90
|
+
function applySizingToken({ baseSpacingPx, baseToken, breakpoints, customSpacing, info, }) {
|
|
91
91
|
for (const handler of SIZING_HANDLERS) {
|
|
92
92
|
const match = handler.regex.exec(baseToken);
|
|
93
93
|
if (!match) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"size-info.js","sourceRoot":"","sources":["../../src/internal/size-info.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"size-info.js","sourceRoot":"","sources":["../../src/internal/size-info.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ export function parseTailwindLength(raw, baseSpacingPx, breakpoints, customSpaci
|
|
|
10
10
|
parseTailwindLengthFromFraction(raw) ??
|
|
11
11
|
parseTailwindLengthFromArbitraryBrackets(raw) ??
|
|
12
12
|
parseTailwindLengthFromArbitraryParens(raw) ??
|
|
13
|
-
|
|
13
|
+
parseTailwindLengthFromSpacingUnit(raw, baseSpacingPx));
|
|
14
14
|
}
|
|
15
15
|
function parseTailwindLengthFromCustomSpacing(raw, customSpacing) {
|
|
16
16
|
if (raw in customSpacing) {
|
|
@@ -83,7 +83,7 @@ function parseTailwindLengthFromArbitraryParens(raw) {
|
|
|
83
83
|
}
|
|
84
84
|
return inner;
|
|
85
85
|
}
|
|
86
|
-
function
|
|
86
|
+
function parseTailwindLengthFromSpacingUnit(raw, baseSpacingPx) {
|
|
87
87
|
const numberValue = Number(raw);
|
|
88
88
|
if (!Number.isFinite(numberValue) || numberValue < 0) {
|
|
89
89
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind-length.js","sourceRoot":"","sources":["../../src/internal/tailwind-length.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAEtC,MAAM,UAAU,mBAAmB,CACjC,GAAW,EACX,aAAqB,EACrB,WAA6B,EAC7B,gBAAwC,EAAE;IAE1C,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,oCAAoC,CAAC,GAAG,EAAE,aAAa,CAAC;QACxD,6BAA6B,CAAC,GAAG,EAAE,WAAW,CAAC;QAC/C,+BAA+B,CAAC,GAAG,CAAC;QACpC,+BAA+B,CAAC,GAAG,CAAC;QACpC,wCAAwC,CAAC,GAAG,CAAC;QAC7C,sCAAsC,CAAC,GAAG,CAAC;QAC3C,
|
|
1
|
+
{"version":3,"file":"tailwind-length.js","sourceRoot":"","sources":["../../src/internal/tailwind-length.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-smart-image.d.ts","sourceRoot":"","sources":["../../src/smart-image/create-smart-image.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAqElG,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,mBAAmB,CAqD3F"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import NextImage from "next/image.js";
|
|
3
|
+
import { inferImageSizes } from "../infer-sizes.js";
|
|
4
|
+
import { cx as defaultCx } from "../internal/class-names.js";
|
|
5
|
+
import { getAltFromSrc } from "./get-alt-from-src.js";
|
|
6
|
+
const HAS_HEIGHT_OR_ASPECT_CLASS_REGEX = /(^|\s)(size-|h-|max-h-|aspect-)/;
|
|
7
|
+
function inferAltText({ alt, ariaHidden, src, }) {
|
|
8
|
+
if (alt !== undefined) {
|
|
9
|
+
return alt;
|
|
10
|
+
}
|
|
11
|
+
const isAriaHidden = ariaHidden === true || ariaHidden === "true";
|
|
12
|
+
if (isAriaHidden) {
|
|
13
|
+
return "";
|
|
14
|
+
}
|
|
15
|
+
return getAltFromSrc(typeof src === "string" ? src : "");
|
|
16
|
+
}
|
|
17
|
+
function warnMissingLayoutSizing({ className, ratio, style, shouldWarn, didWarn, }) {
|
|
18
|
+
if (!shouldWarn || didWarn) {
|
|
19
|
+
return didWarn;
|
|
20
|
+
}
|
|
21
|
+
const classTokens = className ?? "";
|
|
22
|
+
const hasHeightOrAspectClass = HAS_HEIGHT_OR_ASPECT_CLASS_REGEX.test(classTokens);
|
|
23
|
+
const hasHeightOrAspectStyle = Boolean(style?.height || style?.maxHeight || style?.aspectRatio);
|
|
24
|
+
if (hasHeightOrAspectClass || hasHeightOrAspectStyle || ratio) {
|
|
25
|
+
return didWarn;
|
|
26
|
+
}
|
|
27
|
+
console.warn("SmartImage: `fill` requires the wrapper to have a height. " +
|
|
28
|
+
"Use `size-*`/`h-*`, an `aspect-*` class, inline `style={{ aspectRatio }}`, or pass `ratio`.");
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
export function createSmartImage(options = {}) {
|
|
32
|
+
const cx = options.cx ?? defaultCx;
|
|
33
|
+
const baseWrapperClassName = options.wrapperClassName ?? "relative inline-block";
|
|
34
|
+
const baseImgClassName = options.imgClassName ?? "object-contain";
|
|
35
|
+
let didWarnMissingLayoutSizing = false;
|
|
36
|
+
return function SmartImage({ alt, className, imgClassName, imgStyle, ratio, sizes, src, style, ...props }) {
|
|
37
|
+
const derivedAlt = inferAltText({ alt, ariaHidden: props["aria-hidden"], src });
|
|
38
|
+
const inferredSizes = sizes ?? inferImageSizes({ className, ratio, src, style });
|
|
39
|
+
didWarnMissingLayoutSizing = warnMissingLayoutSizing({
|
|
40
|
+
className,
|
|
41
|
+
didWarn: didWarnMissingLayoutSizing,
|
|
42
|
+
ratio,
|
|
43
|
+
shouldWarn: process.env.NODE_ENV !== "production",
|
|
44
|
+
style,
|
|
45
|
+
});
|
|
46
|
+
if (!inferredSizes && process.env.NODE_ENV !== "production") {
|
|
47
|
+
throw new Error("SmartImage: missing `sizes` and couldn't infer from className/style. " +
|
|
48
|
+
"Add Tailwind sizing classes (size-*, w-*, max-w-*) or pass `sizes` explicitly.");
|
|
49
|
+
}
|
|
50
|
+
return (_jsx("span", { className: cx(baseWrapperClassName, className), style: style, children: _jsx(NextImage, { ...props, alt: derivedAlt, className: cx(baseImgClassName, imgClassName), fill: true, sizes: inferredSizes ?? "100vw", src: src, style: imgStyle }) }));
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=create-smart-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-smart-image.js","sourceRoot":"","sources":["../../src/smart-image/create-smart-image.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CSSProperties } from "react";
|
|
2
|
+
import type { ClassNameValue } from "../internal/class-names.js";
|
|
3
|
+
import type { SmartImageProps } from "./smart-image.types.js";
|
|
4
|
+
export type SmartImageClassNameFn = (...values: readonly ClassNameValue[]) => string;
|
|
5
|
+
export type CreateSmartImageOptions = {
|
|
6
|
+
cx?: SmartImageClassNameFn;
|
|
7
|
+
wrapperClassName?: ClassNameValue;
|
|
8
|
+
imgClassName?: ClassNameValue;
|
|
9
|
+
};
|
|
10
|
+
export type SmartImageComponent = <C extends string | undefined = undefined, S extends CSSProperties | undefined = undefined>(props: SmartImageProps<C, S>) => React.ReactElement;
|
|
11
|
+
//# sourceMappingURL=create-smart-image.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-smart-image.types.d.ts","sourceRoot":"","sources":["../../src/smart-image/create-smart-image.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,MAAM,EAAE,SAAS,cAAc,EAAE,KAAK,MAAM,CAAC;AAErF,MAAM,MAAM,uBAAuB,GAAG;IAOpC,EAAE,CAAC,EAAE,qBAAqB,CAAC;IAE3B,gBAAgB,CAAC,EAAE,cAAc,CAAC;IAElC,YAAY,CAAC,EAAE,cAAc,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAChC,CAAC,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,EACxC,CAAC,SAAS,aAAa,GAAG,SAAS,GAAG,SAAS,EAE/C,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,KACzB,KAAK,CAAC,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-smart-image.types.js","sourceRoot":"","sources":["../../src/smart-image/create-smart-image.types.ts"],"names":[],"mappings":""}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { createSmartImage } from "./create-smart-image.js";
|
|
2
|
+
export type { CreateSmartImageOptions, SmartImageClassNameFn, SmartImageComponent, } from "./create-smart-image.types.js";
|
|
1
3
|
export { SmartImage } from "./smart-image.js";
|
|
2
4
|
export type { SmartImageProps } from "./smart-image.types.js";
|
|
3
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/smart-image/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/smart-image/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EACV,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/smart-image/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/smart-image/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAM3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { CSSProperties } from "react";
|
|
2
2
|
import type { SmartImageProps } from "./smart-image.types.js";
|
|
3
|
-
export declare function SmartImage<C extends string | undefined = undefined, S extends CSSProperties | undefined = undefined>(
|
|
3
|
+
export declare function SmartImage<C extends string | undefined = undefined, S extends CSSProperties | undefined = undefined>(props: SmartImageProps<C, S>): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
4
4
|
//# sourceMappingURL=smart-image.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-image.d.ts","sourceRoot":"","sources":["../../src/smart-image/smart-image.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"smart-image.d.ts","sourceRoot":"","sources":["../../src/smart-image/smart-image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAgB9D,wBAAgB,UAAU,CACxB,CAAC,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,EACxC,CAAC,SAAS,aAAa,GAAG,SAAS,GAAG,SAAS,EAC/C,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,8FAE7B"}
|
|
@@ -1,27 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { getAltFromSrc } from "./get-alt-from-src.js";
|
|
6
|
-
const HAS_HEIGHT_OR_ASPECT_CLASS_REGEX = /(^|\s)(size-|h-|max-h-|aspect-)/;
|
|
7
|
-
let didWarnMissingLayoutSizing = false;
|
|
8
|
-
export function SmartImage({ alt, className, imgClassName, imgStyle, ratio, sizes, src, style, ...props }) {
|
|
9
|
-
const derivedAlt = alt ?? (props["aria-hidden"] ? "" : getAltFromSrc(typeof src === "string" ? src : ""));
|
|
10
|
-
const inferredSizes = sizes ?? inferImageSizes({ className, ratio, src, style });
|
|
11
|
-
if (!didWarnMissingLayoutSizing && process.env.NODE_ENV !== "production") {
|
|
12
|
-
const classTokens = className ?? "";
|
|
13
|
-
const hasHeightOrAspectClass = HAS_HEIGHT_OR_ASPECT_CLASS_REGEX.test(classTokens);
|
|
14
|
-
const hasHeightOrAspectStyle = Boolean(style?.height || style?.maxHeight || style?.aspectRatio);
|
|
15
|
-
if (!(hasHeightOrAspectClass || hasHeightOrAspectStyle || ratio)) {
|
|
16
|
-
didWarnMissingLayoutSizing = true;
|
|
17
|
-
console.warn("SmartImage: `fill` requires the wrapper to have a height. " +
|
|
18
|
-
"Use `size-*`/`h-*`, an `aspect-*` class, inline `style={{ aspectRatio }}`, or pass `ratio`.");
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
if (!inferredSizes && process.env.NODE_ENV !== "production") {
|
|
22
|
-
throw new Error("SmartImage: missing `sizes` and couldn't infer from className/style. " +
|
|
23
|
-
"Add Tailwind sizing classes (size-*, w-*, max-w-*) or pass `sizes` explicitly.");
|
|
24
|
-
}
|
|
25
|
-
return (_jsx("span", { className: cx("relative inline-block", className), style: style, children: _jsx(NextImage, { ...props, alt: derivedAlt, className: cx("object-contain", imgClassName), fill: true, sizes: inferredSizes ?? "100vw", src: src, style: imgStyle }) }));
|
|
1
|
+
import { createSmartImage } from "./create-smart-image.js";
|
|
2
|
+
const SmartImageImpl = createSmartImage();
|
|
3
|
+
export function SmartImage(props) {
|
|
4
|
+
return SmartImageImpl(props);
|
|
26
5
|
}
|
|
27
6
|
//# sourceMappingURL=smart-image.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-image.js","sourceRoot":"","sources":["../../src/smart-image/smart-image.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"smart-image.js","sourceRoot":"","sources":["../../src/smart-image/smart-image.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,MAAM,cAAc,GAAG,gBAAgB,EAAE,CAAC;AAc1C,MAAM,UAAU,UAAU,CAGxB,KAA4B;IAC5B,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC"}
|
package/dist/types.d.ts
CHANGED
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC;IACpC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAC/C,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG;IAK5B,aAAa,CAAC,EAAE,MAAM,CAAC;IAKvB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAMvC,KAAK,CAAC,EAAE,MAAM,CAAC;IAIf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"description": "Tailwind-first Next.js Image component with automatic sizes inference.",
|
|
3
|
-
"homepage": "https://github.com/PaulRBerg/tw-next-image",
|
|
3
|
+
"homepage": "https://github.com/PaulRBerg/tw-next-image#readme",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"name": "tw-next-image",
|
|
7
7
|
"sideEffects": false,
|
|
8
8
|
"type": "module",
|
|
9
9
|
"types": "./dist/index.d.ts",
|
|
10
|
-
"version": "1.0.0
|
|
10
|
+
"version": "1.0.0",
|
|
11
11
|
"files": [
|
|
12
12
|
"dist/**",
|
|
13
|
-
"
|
|
13
|
+
"CHANGELOG.md"
|
|
14
14
|
],
|
|
15
15
|
"keywords": [
|
|
16
16
|
"nextjs",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@biomejs/biome": "^2.3.10",
|
|
32
|
-
"@sablier/devkit": "^1.
|
|
32
|
+
"@sablier/devkit": "^1.10.0",
|
|
33
33
|
"@testing-library/jest-dom": "^6.9.1",
|
|
34
34
|
"@testing-library/react": "^16.3.1",
|
|
35
35
|
"@types/node": "^25.0.3",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
},
|
|
68
68
|
"repository": {
|
|
69
69
|
"type": "git",
|
|
70
|
-
"url": "https://github.com/PaulRBerg/tw-next-image.git"
|
|
70
|
+
"url": "git+https://github.com/PaulRBerg/tw-next-image.git"
|
|
71
71
|
},
|
|
72
72
|
"scripts": {
|
|
73
73
|
"setup": "husky"
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 prb
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|