@niibase/uniwind 1.1.4 → 1.1.5
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/LICENSE +1 -1
- package/dist/common/css/insets.js +49 -30
- package/dist/metro/index.cjs +2 -4
- package/dist/metro/index.mjs +2 -4
- package/dist/metro/metro-transformer.cjs +1 -1
- package/dist/metro/metro-transformer.mjs +1 -1
- package/dist/module/css/insets.js +61 -36
- package/dist/shared/{uniwind.D8_HBWsJ.mjs → uniwind.BiEpLI6n.mjs} +59 -36
- package/dist/shared/{uniwind.DeQhDtT7.cjs → uniwind.DWS2R6_d.cjs} +59 -36
- package/dist/vite/index.cjs +1 -1
- package/dist/vite/index.mjs +1 -1
- package/package.json +1 -1
- package/readme.md +1 -1
- package/src/css/insets.ts +74 -41
- package/src/metro/resolvers.ts +3 -4
- package/uniwind.css +137 -14
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2026 Uniwind
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
5
|
of this software and associated documentation files (the "Software"), to deal
|
|
6
6
|
in the Software without restriction, including without limitation the rights
|
|
@@ -4,61 +4,80 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.generateCSSForInsets = void 0;
|
|
7
|
-
const types = ["
|
|
8
|
-
const sides = ["", "x", "y", "
|
|
7
|
+
const types = ["margin", "padding", "inset"];
|
|
8
|
+
const sides = ["inset", "x", "y", "top", "bottom", "left", "right"];
|
|
9
|
+
const safeAreaTypes = ["safe", "safe-or-*", "safe-offset-*"];
|
|
9
10
|
const spacing = "--spacing(--value(integer))";
|
|
10
11
|
const length = "--value([length])";
|
|
11
12
|
const generateCSSForInsets = () => {
|
|
12
13
|
let css = `@utility h-screen-safe {
|
|
13
14
|
height: calc(100vh - (env(safe-area-inset-top) + env(safe-area-inset-bottom)));
|
|
14
15
|
}
|
|
16
|
+
|
|
15
17
|
`;
|
|
16
18
|
const getInsetsForSide = side => {
|
|
17
19
|
switch (side) {
|
|
18
|
-
case "
|
|
20
|
+
case "top":
|
|
19
21
|
return ["top"];
|
|
20
|
-
case "
|
|
22
|
+
case "bottom":
|
|
21
23
|
return ["bottom"];
|
|
22
|
-
case "
|
|
24
|
+
case "left":
|
|
23
25
|
return ["left"];
|
|
24
|
-
case "
|
|
26
|
+
case "right":
|
|
25
27
|
return ["right"];
|
|
26
28
|
case "x":
|
|
27
29
|
return ["left", "right"];
|
|
28
30
|
case "y":
|
|
29
31
|
return ["top", "bottom"];
|
|
30
|
-
|
|
32
|
+
case "inset":
|
|
31
33
|
return ["top", "bottom", "left", "right"];
|
|
34
|
+
default:
|
|
35
|
+
side;
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const getUtilityName = (typeName, side, safeAreaType) => {
|
|
40
|
+
if (typeName === "inset") {
|
|
41
|
+
return `${side}-${safeAreaType}`;
|
|
42
|
+
}
|
|
43
|
+
const sideSuffix = side === "inset" ? "" : side.at(0);
|
|
44
|
+
return `${typeName.at(0)}${sideSuffix}-${safeAreaType}`;
|
|
45
|
+
};
|
|
46
|
+
const getStyleProperty = (typeName, inset) => {
|
|
47
|
+
if (typeName === "inset") {
|
|
48
|
+
return inset;
|
|
49
|
+
}
|
|
50
|
+
return `${typeName}-${inset}`;
|
|
51
|
+
};
|
|
52
|
+
const getStylesForSafeAreaType = (safeAreaType, styles) => {
|
|
53
|
+
switch (safeAreaType) {
|
|
54
|
+
case "safe":
|
|
55
|
+
return styles;
|
|
56
|
+
case "safe-or-*":
|
|
57
|
+
return styles.flatMap(style => {
|
|
58
|
+
const styleWithoutSemicolon = style.replace(";", "");
|
|
59
|
+
return [styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: max(${env}, ${spacing});`), styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: max(${env}, ${length});`)];
|
|
60
|
+
});
|
|
61
|
+
case "safe-offset-*":
|
|
62
|
+
return styles.flatMap(style => {
|
|
63
|
+
const styleWithoutSemicolon = style.replace(";", "");
|
|
64
|
+
return [styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${spacing});`), styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${length});`)];
|
|
65
|
+
});
|
|
66
|
+
default:
|
|
67
|
+
safeAreaType;
|
|
68
|
+
return [];
|
|
32
69
|
}
|
|
33
70
|
};
|
|
34
71
|
types.forEach(type => {
|
|
35
72
|
sides.forEach(side => {
|
|
36
|
-
const styleName = type === "m" ? "margin" : "padding";
|
|
37
73
|
const insets = getInsetsForSide(side);
|
|
38
|
-
const styles = insets.map(inset => `${
|
|
39
|
-
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
});
|
|
43
|
-
const safeOffsetStyles = styles.flatMap(style => {
|
|
44
|
-
const styleWithoutSemicolon = style.replace(";", "");
|
|
45
|
-
return [styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${spacing});`), styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${length});`)];
|
|
74
|
+
const styles = insets.map(inset => `${getStyleProperty(type, inset)}: env(safe-area-inset-${inset});`);
|
|
75
|
+
safeAreaTypes.forEach(safeAreaType => {
|
|
76
|
+
const utilityName = getUtilityName(type, side, safeAreaType);
|
|
77
|
+
css += [`@utility ${utilityName} {`, ...getStylesForSafeAreaType(safeAreaType, styles).map(style => ` ${style}`), "}", "", ""].join("\n");
|
|
46
78
|
});
|
|
47
|
-
css += `
|
|
48
|
-
@utility ${type}${side}-safe {
|
|
49
|
-
${styles.join("\n ")}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
@utility ${type}${side}-safe-or-* {
|
|
53
|
-
${safeStyles.join("\n ")}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
@utility ${type}${side}-safe-offset-* {
|
|
57
|
-
${safeOffsetStyles.join("\n ")}
|
|
58
|
-
}
|
|
59
|
-
`;
|
|
60
79
|
});
|
|
61
80
|
});
|
|
62
|
-
return css.
|
|
81
|
+
return css.slice(0, -1);
|
|
63
82
|
};
|
|
64
83
|
exports.generateCSSForInsets = generateCSSForInsets;
|
package/dist/metro/index.cjs
CHANGED
|
@@ -79,10 +79,8 @@ const nativeResolver = (extraComponents) => ({
|
|
|
79
79
|
}) => {
|
|
80
80
|
const resolution = resolver(context, moduleName, platform);
|
|
81
81
|
const isInternal = isFromThisModule(context.originModulePath);
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
);
|
|
85
|
-
if (isInternal || resolution.type !== "sourceFile" || isReactNativeIndex) {
|
|
82
|
+
const isFromReactNative = context.originModulePath.includes(`${node_path.sep}react-native${node_path.sep}`) || context.originModulePath.includes(`${node_path.sep}@react-native${node_path.sep}`);
|
|
83
|
+
if (isInternal || resolution.type !== "sourceFile" || isFromReactNative) {
|
|
86
84
|
return resolution;
|
|
87
85
|
}
|
|
88
86
|
if (moduleName === "react-native") {
|
package/dist/metro/index.mjs
CHANGED
|
@@ -71,10 +71,8 @@ const nativeResolver = (extraComponents) => ({
|
|
|
71
71
|
}) => {
|
|
72
72
|
const resolution = resolver(context, moduleName, platform);
|
|
73
73
|
const isInternal = isFromThisModule(context.originModulePath);
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
);
|
|
77
|
-
if (isInternal || resolution.type !== "sourceFile" || isReactNativeIndex) {
|
|
74
|
+
const isFromReactNative = context.originModulePath.includes(`${sep}react-native${sep}`) || context.originModulePath.includes(`${sep}@react-native${sep}`);
|
|
75
|
+
if (isInternal || resolution.type !== "sourceFile" || isFromReactNative) {
|
|
78
76
|
return resolution;
|
|
79
77
|
}
|
|
80
78
|
if (moduleName === "react-native") {
|
|
@@ -6,7 +6,7 @@ const common = require('../shared/uniwind.BDoX4wlN.cjs');
|
|
|
6
6
|
const node = require('@tailwindcss/node');
|
|
7
7
|
const oxide = require('@tailwindcss/oxide');
|
|
8
8
|
const types = require('../shared/uniwind.BZIuaszw.cjs');
|
|
9
|
-
const stringifyThemes = require('../shared/uniwind.
|
|
9
|
+
const stringifyThemes = require('../shared/uniwind.DWS2R6_d.cjs');
|
|
10
10
|
const lightningcss = require('lightningcss');
|
|
11
11
|
const culori = require('culori');
|
|
12
12
|
|
|
@@ -4,7 +4,7 @@ import { p as pipe, r as roundToPrecision, i as isNumber, a as isValidJSValue, s
|
|
|
4
4
|
import { compile } from '@tailwindcss/node';
|
|
5
5
|
import { Scanner } from '@tailwindcss/oxide';
|
|
6
6
|
import { P as Platform } from '../shared/uniwind.CyoRUwOj.mjs';
|
|
7
|
-
import { L as Logger, p as processFunctions, s as stringifyThemes, b as buildDtsFile, a as buildCSS } from '../shared/uniwind.
|
|
7
|
+
import { L as Logger, p as processFunctions, s as stringifyThemes, b as buildDtsFile, a as buildCSS } from '../shared/uniwind.BiEpLI6n.mjs';
|
|
8
8
|
import { transform as transform$1 } from 'lightningcss';
|
|
9
9
|
import { converter, parse, formatHex, formatHex8 } from 'culori';
|
|
10
10
|
|
|
@@ -1,63 +1,88 @@
|
|
|
1
|
-
const types = ["
|
|
2
|
-
const sides = ["", "x", "y", "
|
|
1
|
+
const types = ["margin", "padding", "inset"];
|
|
2
|
+
const sides = ["inset", "x", "y", "top", "bottom", "left", "right"];
|
|
3
|
+
const safeAreaTypes = ["safe", "safe-or-*", "safe-offset-*"];
|
|
3
4
|
const spacing = "--spacing(--value(integer))";
|
|
4
5
|
const length = "--value([length])";
|
|
5
6
|
export const generateCSSForInsets = () => {
|
|
6
7
|
let css = `@utility h-screen-safe {
|
|
7
8
|
height: calc(100vh - (env(safe-area-inset-top) + env(safe-area-inset-bottom)));
|
|
8
9
|
}
|
|
10
|
+
|
|
9
11
|
`;
|
|
10
12
|
const getInsetsForSide = (side) => {
|
|
11
13
|
switch (side) {
|
|
12
|
-
case "
|
|
14
|
+
case "top":
|
|
13
15
|
return ["top"];
|
|
14
|
-
case "
|
|
16
|
+
case "bottom":
|
|
15
17
|
return ["bottom"];
|
|
16
|
-
case "
|
|
18
|
+
case "left":
|
|
17
19
|
return ["left"];
|
|
18
|
-
case "
|
|
20
|
+
case "right":
|
|
19
21
|
return ["right"];
|
|
20
22
|
case "x":
|
|
21
23
|
return ["left", "right"];
|
|
22
24
|
case "y":
|
|
23
25
|
return ["top", "bottom"];
|
|
24
|
-
|
|
26
|
+
case "inset":
|
|
25
27
|
return ["top", "bottom", "left", "right"];
|
|
28
|
+
default:
|
|
29
|
+
side;
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const getUtilityName = (typeName, side, safeAreaType) => {
|
|
34
|
+
if (typeName === "inset") {
|
|
35
|
+
return `${side}-${safeAreaType}`;
|
|
36
|
+
}
|
|
37
|
+
const sideSuffix = side === "inset" ? "" : side.at(0);
|
|
38
|
+
return `${typeName.at(0)}${sideSuffix}-${safeAreaType}`;
|
|
39
|
+
};
|
|
40
|
+
const getStyleProperty = (typeName, inset) => {
|
|
41
|
+
if (typeName === "inset") {
|
|
42
|
+
return inset;
|
|
43
|
+
}
|
|
44
|
+
return `${typeName}-${inset}`;
|
|
45
|
+
};
|
|
46
|
+
const getStylesForSafeAreaType = (safeAreaType, styles) => {
|
|
47
|
+
switch (safeAreaType) {
|
|
48
|
+
case "safe":
|
|
49
|
+
return styles;
|
|
50
|
+
case "safe-or-*":
|
|
51
|
+
return styles.flatMap((style) => {
|
|
52
|
+
const styleWithoutSemicolon = style.replace(";", "");
|
|
53
|
+
return [
|
|
54
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: max(${env}, ${spacing});`),
|
|
55
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: max(${env}, ${length});`)
|
|
56
|
+
];
|
|
57
|
+
});
|
|
58
|
+
case "safe-offset-*":
|
|
59
|
+
return styles.flatMap((style) => {
|
|
60
|
+
const styleWithoutSemicolon = style.replace(";", "");
|
|
61
|
+
return [
|
|
62
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${spacing});`),
|
|
63
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${length});`)
|
|
64
|
+
];
|
|
65
|
+
});
|
|
66
|
+
default:
|
|
67
|
+
safeAreaType;
|
|
68
|
+
return [];
|
|
26
69
|
}
|
|
27
70
|
};
|
|
28
71
|
types.forEach((type) => {
|
|
29
72
|
sides.forEach((side) => {
|
|
30
|
-
const styleName = type === "m" ? "margin" : "padding";
|
|
31
73
|
const insets = getInsetsForSide(side);
|
|
32
|
-
const styles = insets.map((inset) => `${
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return [
|
|
43
|
-
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${spacing});`),
|
|
44
|
-
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${length});`)
|
|
45
|
-
];
|
|
74
|
+
const styles = insets.map((inset) => `${getStyleProperty(type, inset)}: env(safe-area-inset-${inset});`);
|
|
75
|
+
safeAreaTypes.forEach((safeAreaType) => {
|
|
76
|
+
const utilityName = getUtilityName(type, side, safeAreaType);
|
|
77
|
+
css += [
|
|
78
|
+
`@utility ${utilityName} {`,
|
|
79
|
+
...getStylesForSafeAreaType(safeAreaType, styles).map((style) => ` ${style}`),
|
|
80
|
+
"}",
|
|
81
|
+
"",
|
|
82
|
+
""
|
|
83
|
+
].join("\n");
|
|
46
84
|
});
|
|
47
|
-
css += `
|
|
48
|
-
@utility ${type}${side}-safe {
|
|
49
|
-
${styles.join("\n ")}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
@utility ${type}${side}-safe-or-* {
|
|
53
|
-
${safeStyles.join("\n ")}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
@utility ${type}${side}-safe-offset-* {
|
|
57
|
-
${safeOffsetStyles.join("\n ")}
|
|
58
|
-
}
|
|
59
|
-
`;
|
|
60
85
|
});
|
|
61
86
|
});
|
|
62
|
-
return css.
|
|
87
|
+
return css.slice(0, -1);
|
|
63
88
|
};
|
|
@@ -76,68 +76,91 @@ const processFunctions = {
|
|
|
76
76
|
hairlineWidth: () => ONE_PX
|
|
77
77
|
};
|
|
78
78
|
|
|
79
|
-
const types = ["
|
|
80
|
-
const sides = ["", "x", "y", "
|
|
79
|
+
const types = ["margin", "padding", "inset"];
|
|
80
|
+
const sides = ["inset", "x", "y", "top", "bottom", "left", "right"];
|
|
81
|
+
const safeAreaTypes = ["safe", "safe-or-*", "safe-offset-*"];
|
|
81
82
|
const spacing = "--spacing(--value(integer))";
|
|
82
83
|
const length = "--value([length])";
|
|
83
84
|
const generateCSSForInsets = () => {
|
|
84
85
|
let css = `@utility h-screen-safe {
|
|
85
86
|
height: calc(100vh - (env(safe-area-inset-top) + env(safe-area-inset-bottom)));
|
|
86
87
|
}
|
|
88
|
+
|
|
87
89
|
`;
|
|
88
90
|
const getInsetsForSide = (side) => {
|
|
89
91
|
switch (side) {
|
|
90
|
-
case "
|
|
92
|
+
case "top":
|
|
91
93
|
return ["top"];
|
|
92
|
-
case "
|
|
94
|
+
case "bottom":
|
|
93
95
|
return ["bottom"];
|
|
94
|
-
case "
|
|
96
|
+
case "left":
|
|
95
97
|
return ["left"];
|
|
96
|
-
case "
|
|
98
|
+
case "right":
|
|
97
99
|
return ["right"];
|
|
98
100
|
case "x":
|
|
99
101
|
return ["left", "right"];
|
|
100
102
|
case "y":
|
|
101
103
|
return ["top", "bottom"];
|
|
102
|
-
|
|
104
|
+
case "inset":
|
|
103
105
|
return ["top", "bottom", "left", "right"];
|
|
106
|
+
default:
|
|
107
|
+
return [];
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
const getUtilityName = (typeName, side, safeAreaType) => {
|
|
111
|
+
if (typeName === "inset") {
|
|
112
|
+
return `${side}-${safeAreaType}`;
|
|
113
|
+
}
|
|
114
|
+
const sideSuffix = side === "inset" ? "" : side.at(0);
|
|
115
|
+
return `${typeName.at(0)}${sideSuffix}-${safeAreaType}`;
|
|
116
|
+
};
|
|
117
|
+
const getStyleProperty = (typeName, inset) => {
|
|
118
|
+
if (typeName === "inset") {
|
|
119
|
+
return inset;
|
|
120
|
+
}
|
|
121
|
+
return `${typeName}-${inset}`;
|
|
122
|
+
};
|
|
123
|
+
const getStylesForSafeAreaType = (safeAreaType, styles) => {
|
|
124
|
+
switch (safeAreaType) {
|
|
125
|
+
case "safe":
|
|
126
|
+
return styles;
|
|
127
|
+
case "safe-or-*":
|
|
128
|
+
return styles.flatMap((style) => {
|
|
129
|
+
const styleWithoutSemicolon = style.replace(";", "");
|
|
130
|
+
return [
|
|
131
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: max(${env}, ${spacing});`),
|
|
132
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: max(${env}, ${length});`)
|
|
133
|
+
];
|
|
134
|
+
});
|
|
135
|
+
case "safe-offset-*":
|
|
136
|
+
return styles.flatMap((style) => {
|
|
137
|
+
const styleWithoutSemicolon = style.replace(";", "");
|
|
138
|
+
return [
|
|
139
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${spacing});`),
|
|
140
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${length});`)
|
|
141
|
+
];
|
|
142
|
+
});
|
|
143
|
+
default:
|
|
144
|
+
return [];
|
|
104
145
|
}
|
|
105
146
|
};
|
|
106
147
|
types.forEach((type) => {
|
|
107
148
|
sides.forEach((side) => {
|
|
108
|
-
const styleName = type === "m" ? "margin" : "padding";
|
|
109
149
|
const insets = getInsetsForSide(side);
|
|
110
|
-
const styles = insets.map((inset) => `${
|
|
111
|
-
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
return [
|
|
121
|
-
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${spacing});`),
|
|
122
|
-
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${length});`)
|
|
123
|
-
];
|
|
150
|
+
const styles = insets.map((inset) => `${getStyleProperty(type, inset)}: env(safe-area-inset-${inset});`);
|
|
151
|
+
safeAreaTypes.forEach((safeAreaType) => {
|
|
152
|
+
const utilityName = getUtilityName(type, side, safeAreaType);
|
|
153
|
+
css += [
|
|
154
|
+
`@utility ${utilityName} {`,
|
|
155
|
+
...getStylesForSafeAreaType(safeAreaType, styles).map((style) => ` ${style}`),
|
|
156
|
+
"}",
|
|
157
|
+
"",
|
|
158
|
+
""
|
|
159
|
+
].join("\n");
|
|
124
160
|
});
|
|
125
|
-
css += `
|
|
126
|
-
@utility ${type}${side}-safe {
|
|
127
|
-
${styles.join("\n ")}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
@utility ${type}${side}-safe-or-* {
|
|
131
|
-
${safeStyles.join("\n ")}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
@utility ${type}${side}-safe-offset-* {
|
|
135
|
-
${safeOffsetStyles.join("\n ")}
|
|
136
|
-
}
|
|
137
|
-
`;
|
|
138
161
|
});
|
|
139
162
|
});
|
|
140
|
-
return css.
|
|
163
|
+
return css.slice(0, -1);
|
|
141
164
|
};
|
|
142
165
|
|
|
143
166
|
const readFileSafe = (filePath) => {
|
|
@@ -83,68 +83,91 @@ const processFunctions = {
|
|
|
83
83
|
hairlineWidth: () => ONE_PX
|
|
84
84
|
};
|
|
85
85
|
|
|
86
|
-
const types = ["
|
|
87
|
-
const sides = ["", "x", "y", "
|
|
86
|
+
const types = ["margin", "padding", "inset"];
|
|
87
|
+
const sides = ["inset", "x", "y", "top", "bottom", "left", "right"];
|
|
88
|
+
const safeAreaTypes = ["safe", "safe-or-*", "safe-offset-*"];
|
|
88
89
|
const spacing = "--spacing(--value(integer))";
|
|
89
90
|
const length = "--value([length])";
|
|
90
91
|
const generateCSSForInsets = () => {
|
|
91
92
|
let css = `@utility h-screen-safe {
|
|
92
93
|
height: calc(100vh - (env(safe-area-inset-top) + env(safe-area-inset-bottom)));
|
|
93
94
|
}
|
|
95
|
+
|
|
94
96
|
`;
|
|
95
97
|
const getInsetsForSide = (side) => {
|
|
96
98
|
switch (side) {
|
|
97
|
-
case "
|
|
99
|
+
case "top":
|
|
98
100
|
return ["top"];
|
|
99
|
-
case "
|
|
101
|
+
case "bottom":
|
|
100
102
|
return ["bottom"];
|
|
101
|
-
case "
|
|
103
|
+
case "left":
|
|
102
104
|
return ["left"];
|
|
103
|
-
case "
|
|
105
|
+
case "right":
|
|
104
106
|
return ["right"];
|
|
105
107
|
case "x":
|
|
106
108
|
return ["left", "right"];
|
|
107
109
|
case "y":
|
|
108
110
|
return ["top", "bottom"];
|
|
109
|
-
|
|
111
|
+
case "inset":
|
|
110
112
|
return ["top", "bottom", "left", "right"];
|
|
113
|
+
default:
|
|
114
|
+
return [];
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
const getUtilityName = (typeName, side, safeAreaType) => {
|
|
118
|
+
if (typeName === "inset") {
|
|
119
|
+
return `${side}-${safeAreaType}`;
|
|
120
|
+
}
|
|
121
|
+
const sideSuffix = side === "inset" ? "" : side.at(0);
|
|
122
|
+
return `${typeName.at(0)}${sideSuffix}-${safeAreaType}`;
|
|
123
|
+
};
|
|
124
|
+
const getStyleProperty = (typeName, inset) => {
|
|
125
|
+
if (typeName === "inset") {
|
|
126
|
+
return inset;
|
|
127
|
+
}
|
|
128
|
+
return `${typeName}-${inset}`;
|
|
129
|
+
};
|
|
130
|
+
const getStylesForSafeAreaType = (safeAreaType, styles) => {
|
|
131
|
+
switch (safeAreaType) {
|
|
132
|
+
case "safe":
|
|
133
|
+
return styles;
|
|
134
|
+
case "safe-or-*":
|
|
135
|
+
return styles.flatMap((style) => {
|
|
136
|
+
const styleWithoutSemicolon = style.replace(";", "");
|
|
137
|
+
return [
|
|
138
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: max(${env}, ${spacing});`),
|
|
139
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: max(${env}, ${length});`)
|
|
140
|
+
];
|
|
141
|
+
});
|
|
142
|
+
case "safe-offset-*":
|
|
143
|
+
return styles.flatMap((style) => {
|
|
144
|
+
const styleWithoutSemicolon = style.replace(";", "");
|
|
145
|
+
return [
|
|
146
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${spacing});`),
|
|
147
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${length});`)
|
|
148
|
+
];
|
|
149
|
+
});
|
|
150
|
+
default:
|
|
151
|
+
return [];
|
|
111
152
|
}
|
|
112
153
|
};
|
|
113
154
|
types.forEach((type) => {
|
|
114
155
|
sides.forEach((side) => {
|
|
115
|
-
const styleName = type === "m" ? "margin" : "padding";
|
|
116
156
|
const insets = getInsetsForSide(side);
|
|
117
|
-
const styles = insets.map((inset) => `${
|
|
118
|
-
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
return [
|
|
128
|
-
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${spacing});`),
|
|
129
|
-
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${length});`)
|
|
130
|
-
];
|
|
157
|
+
const styles = insets.map((inset) => `${getStyleProperty(type, inset)}: env(safe-area-inset-${inset});`);
|
|
158
|
+
safeAreaTypes.forEach((safeAreaType) => {
|
|
159
|
+
const utilityName = getUtilityName(type, side, safeAreaType);
|
|
160
|
+
css += [
|
|
161
|
+
`@utility ${utilityName} {`,
|
|
162
|
+
...getStylesForSafeAreaType(safeAreaType, styles).map((style) => ` ${style}`),
|
|
163
|
+
"}",
|
|
164
|
+
"",
|
|
165
|
+
""
|
|
166
|
+
].join("\n");
|
|
131
167
|
});
|
|
132
|
-
css += `
|
|
133
|
-
@utility ${type}${side}-safe {
|
|
134
|
-
${styles.join("\n ")}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
@utility ${type}${side}-safe-or-* {
|
|
138
|
-
${safeStyles.join("\n ")}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
@utility ${type}${side}-safe-offset-* {
|
|
142
|
-
${safeOffsetStyles.join("\n ")}
|
|
143
|
-
}
|
|
144
|
-
`;
|
|
145
168
|
});
|
|
146
169
|
});
|
|
147
|
-
return css.
|
|
170
|
+
return css.slice(0, -1);
|
|
148
171
|
};
|
|
149
172
|
|
|
150
173
|
const readFileSafe = (filePath) => {
|
package/dist/vite/index.cjs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
const node = require('@tailwindcss/node');
|
|
4
4
|
const path = require('path');
|
|
5
5
|
const common = require('../shared/uniwind.BDoX4wlN.cjs');
|
|
6
|
-
const stringifyThemes = require('../shared/uniwind.
|
|
6
|
+
const stringifyThemes = require('../shared/uniwind.DWS2R6_d.cjs');
|
|
7
7
|
require('fs');
|
|
8
8
|
require('lightningcss');
|
|
9
9
|
|
package/dist/vite/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { normalizePath } from '@tailwindcss/node';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { u as uniq, n as name } from '../shared/uniwind.DhluOugg.mjs';
|
|
4
|
-
import { s as stringifyThemes, p as processFunctions, a as buildCSS, b as buildDtsFile } from '../shared/uniwind.
|
|
4
|
+
import { s as stringifyThemes, p as processFunctions, a as buildCSS, b as buildDtsFile } from '../shared/uniwind.BiEpLI6n.mjs';
|
|
5
5
|
import 'fs';
|
|
6
6
|
import 'lightningcss';
|
|
7
7
|
|
package/package.json
CHANGED
package/readme.md
CHANGED
package/src/css/insets.ts
CHANGED
|
@@ -1,73 +1,106 @@
|
|
|
1
|
-
const types = ['
|
|
2
|
-
const sides = ['', 'x', 'y', '
|
|
1
|
+
const types = ['margin', 'padding', 'inset'] as const
|
|
2
|
+
const sides = ['inset', 'x', 'y', 'top', 'bottom', 'left', 'right'] as const
|
|
3
|
+
const safeAreaTypes = ['safe', 'safe-or-*', 'safe-offset-*'] as const
|
|
3
4
|
const spacing = '--spacing(--value(integer))'
|
|
4
5
|
const length = '--value([length])'
|
|
5
6
|
|
|
6
7
|
type Side = (typeof sides)[number]
|
|
8
|
+
type TypeName = (typeof types)[number]
|
|
9
|
+
type SafeAreaType = (typeof safeAreaTypes)[number]
|
|
10
|
+
type Inset = 'top' | 'bottom' | 'left' | 'right'
|
|
7
11
|
|
|
8
12
|
export const generateCSSForInsets = () => {
|
|
9
13
|
let css = `@utility h-screen-safe {
|
|
10
14
|
height: calc(100vh - (env(safe-area-inset-top) + env(safe-area-inset-bottom)));
|
|
11
|
-
}\n`
|
|
15
|
+
}\n\n`
|
|
12
16
|
|
|
13
|
-
const getInsetsForSide = (side: Side) => {
|
|
17
|
+
const getInsetsForSide = (side: Side): Array<Inset> => {
|
|
14
18
|
switch (side) {
|
|
15
|
-
case '
|
|
19
|
+
case 'top':
|
|
16
20
|
return ['top']
|
|
17
|
-
case '
|
|
21
|
+
case 'bottom':
|
|
18
22
|
return ['bottom']
|
|
19
|
-
case '
|
|
23
|
+
case 'left':
|
|
20
24
|
return ['left']
|
|
21
|
-
case '
|
|
25
|
+
case 'right':
|
|
22
26
|
return ['right']
|
|
23
27
|
case 'x':
|
|
24
28
|
return ['left', 'right']
|
|
25
29
|
case 'y':
|
|
26
30
|
return ['top', 'bottom']
|
|
27
|
-
|
|
31
|
+
case 'inset':
|
|
28
32
|
return ['top', 'bottom', 'left', 'right']
|
|
33
|
+
default:
|
|
34
|
+
side satisfies never
|
|
35
|
+
return []
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const getUtilityName = (typeName: TypeName, side: Side, safeAreaType: SafeAreaType) => {
|
|
40
|
+
if (typeName === 'inset') {
|
|
41
|
+
return `${side}-${safeAreaType}`
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const sideSuffix = side === 'inset' ? '' : side.at(0)
|
|
45
|
+
|
|
46
|
+
return `${typeName.at(0)}${sideSuffix}-${safeAreaType}`
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const getStyleProperty = (typeName: TypeName, inset: Inset) => {
|
|
50
|
+
if (typeName === 'inset') {
|
|
51
|
+
return inset
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return `${typeName}-${inset}`
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const getStylesForSafeAreaType = (safeAreaType: SafeAreaType, styles: Array<string>) => {
|
|
58
|
+
switch (safeAreaType) {
|
|
59
|
+
case 'safe':
|
|
60
|
+
return styles
|
|
61
|
+
case 'safe-or-*':
|
|
62
|
+
return styles.flatMap(style => {
|
|
63
|
+
const styleWithoutSemicolon = style.replace(';', '')
|
|
64
|
+
|
|
65
|
+
return [
|
|
66
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: max(${env}, ${spacing});`),
|
|
67
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: max(${env}, ${length});`),
|
|
68
|
+
]
|
|
69
|
+
})
|
|
70
|
+
case 'safe-offset-*':
|
|
71
|
+
return styles.flatMap(style => {
|
|
72
|
+
const styleWithoutSemicolon = style.replace(';', '')
|
|
73
|
+
|
|
74
|
+
return [
|
|
75
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${spacing});`),
|
|
76
|
+
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: calc(${env} + ${length});`),
|
|
77
|
+
]
|
|
78
|
+
})
|
|
79
|
+
default:
|
|
80
|
+
safeAreaType satisfies never
|
|
81
|
+
return []
|
|
29
82
|
}
|
|
30
83
|
}
|
|
31
84
|
|
|
32
85
|
types.forEach(type => {
|
|
33
86
|
sides.forEach(side => {
|
|
34
|
-
const styleName = type === 'm' ? 'margin' : 'padding'
|
|
35
87
|
const insets = getInsetsForSide(side)
|
|
36
|
-
const styles = insets.map(inset => `${
|
|
37
|
-
const safeStyles = styles.flatMap(style => {
|
|
38
|
-
const styleWithoutSemicolon = style.replace(';', '')
|
|
88
|
+
const styles = insets.map(inset => `${getStyleProperty(type, inset)}: env(safe-area-inset-${inset});`)
|
|
39
89
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
styleWithoutSemicolon.replace(/: (env.*)/, (_, env) => `: max(${env}, ${length});`),
|
|
43
|
-
]
|
|
44
|
-
})
|
|
45
|
-
const safeOffsetStyles = styles.flatMap(style => {
|
|
46
|
-
const styleWithoutSemicolon = style.replace(';', '')
|
|
90
|
+
safeAreaTypes.forEach(safeAreaType => {
|
|
91
|
+
const utilityName = getUtilityName(type, side, safeAreaType)
|
|
47
92
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
93
|
+
css += [
|
|
94
|
+
`@utility ${utilityName} {`,
|
|
95
|
+
...getStylesForSafeAreaType(safeAreaType, styles).map(style => ` ${style}`),
|
|
96
|
+
'}',
|
|
97
|
+
'',
|
|
98
|
+
'',
|
|
99
|
+
].join('\n')
|
|
52
100
|
})
|
|
53
|
-
|
|
54
|
-
css += `
|
|
55
|
-
@utility ${type}${side}-safe {
|
|
56
|
-
${styles.join('\n ')}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
@utility ${type}${side}-safe-or-* {
|
|
60
|
-
${safeStyles.join('\n ')}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
@utility ${type}${side}-safe-offset-* {
|
|
64
|
-
${safeOffsetStyles.join('\n ')}
|
|
65
|
-
}
|
|
66
|
-
`
|
|
67
101
|
})
|
|
68
102
|
})
|
|
69
103
|
|
|
70
|
-
// Remove
|
|
71
|
-
|
|
72
|
-
return css.replaceAll(' ', '').trim() + '\n'
|
|
104
|
+
// Remove the last newline character
|
|
105
|
+
return css.slice(0, -1)
|
|
73
106
|
}
|
package/src/metro/resolvers.ts
CHANGED
|
@@ -48,11 +48,10 @@ export const nativeResolver = (extraComponents: Record<string, string>) =>
|
|
|
48
48
|
}: ResolverConfig) => {
|
|
49
49
|
const resolution = resolver(context, moduleName, platform)
|
|
50
50
|
const isInternal = isFromThisModule(context.originModulePath)
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
)
|
|
51
|
+
const isFromReactNative = context.originModulePath.includes(`${sep}react-native${sep}`)
|
|
52
|
+
|| context.originModulePath.includes(`${sep}@react-native${sep}`)
|
|
54
53
|
|
|
55
|
-
if (isInternal || resolution.type !== 'sourceFile' ||
|
|
54
|
+
if (isInternal || resolution.type !== 'sourceFile' || isFromReactNative) {
|
|
56
55
|
return resolution
|
|
57
56
|
}
|
|
58
57
|
|
package/uniwind.css
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
margin-right: calc(env(safe-area-inset-right) + --spacing(--value(integer)));
|
|
36
36
|
margin-right: calc(env(safe-area-inset-right) + --value([length]));
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
@utility mx-safe {
|
|
40
40
|
margin-left: env(safe-area-inset-left);
|
|
41
41
|
margin-right: env(safe-area-inset-right);
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
margin-right: calc(env(safe-area-inset-right) + --spacing(--value(integer)));
|
|
55
55
|
margin-right: calc(env(safe-area-inset-right) + --value([length]));
|
|
56
56
|
}
|
|
57
|
-
|
|
57
|
+
|
|
58
58
|
@utility my-safe {
|
|
59
59
|
margin-top: env(safe-area-inset-top);
|
|
60
60
|
margin-bottom: env(safe-area-inset-bottom);
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
margin-bottom: calc(env(safe-area-inset-bottom) + --spacing(--value(integer)));
|
|
74
74
|
margin-bottom: calc(env(safe-area-inset-bottom) + --value([length]));
|
|
75
75
|
}
|
|
76
|
-
|
|
76
|
+
|
|
77
77
|
@utility mt-safe {
|
|
78
78
|
margin-top: env(safe-area-inset-top);
|
|
79
79
|
}
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
margin-top: calc(env(safe-area-inset-top) + --spacing(--value(integer)));
|
|
88
88
|
margin-top: calc(env(safe-area-inset-top) + --value([length]));
|
|
89
89
|
}
|
|
90
|
-
|
|
90
|
+
|
|
91
91
|
@utility mb-safe {
|
|
92
92
|
margin-bottom: env(safe-area-inset-bottom);
|
|
93
93
|
}
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
margin-bottom: calc(env(safe-area-inset-bottom) + --spacing(--value(integer)));
|
|
102
102
|
margin-bottom: calc(env(safe-area-inset-bottom) + --value([length]));
|
|
103
103
|
}
|
|
104
|
-
|
|
104
|
+
|
|
105
105
|
@utility ml-safe {
|
|
106
106
|
margin-left: env(safe-area-inset-left);
|
|
107
107
|
}
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
margin-left: calc(env(safe-area-inset-left) + --spacing(--value(integer)));
|
|
116
116
|
margin-left: calc(env(safe-area-inset-left) + --value([length]));
|
|
117
117
|
}
|
|
118
|
-
|
|
118
|
+
|
|
119
119
|
@utility mr-safe {
|
|
120
120
|
margin-right: env(safe-area-inset-right);
|
|
121
121
|
}
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
margin-right: calc(env(safe-area-inset-right) + --spacing(--value(integer)));
|
|
130
130
|
margin-right: calc(env(safe-area-inset-right) + --value([length]));
|
|
131
131
|
}
|
|
132
|
-
|
|
132
|
+
|
|
133
133
|
@utility p-safe {
|
|
134
134
|
padding-top: env(safe-area-inset-top);
|
|
135
135
|
padding-bottom: env(safe-area-inset-bottom);
|
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
padding-right: calc(env(safe-area-inset-right) + --spacing(--value(integer)));
|
|
159
159
|
padding-right: calc(env(safe-area-inset-right) + --value([length]));
|
|
160
160
|
}
|
|
161
|
-
|
|
161
|
+
|
|
162
162
|
@utility px-safe {
|
|
163
163
|
padding-left: env(safe-area-inset-left);
|
|
164
164
|
padding-right: env(safe-area-inset-right);
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
padding-right: calc(env(safe-area-inset-right) + --spacing(--value(integer)));
|
|
178
178
|
padding-right: calc(env(safe-area-inset-right) + --value([length]));
|
|
179
179
|
}
|
|
180
|
-
|
|
180
|
+
|
|
181
181
|
@utility py-safe {
|
|
182
182
|
padding-top: env(safe-area-inset-top);
|
|
183
183
|
padding-bottom: env(safe-area-inset-bottom);
|
|
@@ -196,7 +196,7 @@
|
|
|
196
196
|
padding-bottom: calc(env(safe-area-inset-bottom) + --spacing(--value(integer)));
|
|
197
197
|
padding-bottom: calc(env(safe-area-inset-bottom) + --value([length]));
|
|
198
198
|
}
|
|
199
|
-
|
|
199
|
+
|
|
200
200
|
@utility pt-safe {
|
|
201
201
|
padding-top: env(safe-area-inset-top);
|
|
202
202
|
}
|
|
@@ -210,7 +210,7 @@
|
|
|
210
210
|
padding-top: calc(env(safe-area-inset-top) + --spacing(--value(integer)));
|
|
211
211
|
padding-top: calc(env(safe-area-inset-top) + --value([length]));
|
|
212
212
|
}
|
|
213
|
-
|
|
213
|
+
|
|
214
214
|
@utility pb-safe {
|
|
215
215
|
padding-bottom: env(safe-area-inset-bottom);
|
|
216
216
|
}
|
|
@@ -224,7 +224,7 @@
|
|
|
224
224
|
padding-bottom: calc(env(safe-area-inset-bottom) + --spacing(--value(integer)));
|
|
225
225
|
padding-bottom: calc(env(safe-area-inset-bottom) + --value([length]));
|
|
226
226
|
}
|
|
227
|
-
|
|
227
|
+
|
|
228
228
|
@utility pl-safe {
|
|
229
229
|
padding-left: env(safe-area-inset-left);
|
|
230
230
|
}
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
padding-left: calc(env(safe-area-inset-left) + --spacing(--value(integer)));
|
|
239
239
|
padding-left: calc(env(safe-area-inset-left) + --value([length]));
|
|
240
240
|
}
|
|
241
|
-
|
|
241
|
+
|
|
242
242
|
@utility pr-safe {
|
|
243
243
|
padding-right: env(safe-area-inset-right);
|
|
244
244
|
}
|
|
@@ -253,5 +253,128 @@
|
|
|
253
253
|
padding-right: calc(env(safe-area-inset-right) + --value([length]));
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
+
@utility inset-safe {
|
|
257
|
+
top: env(safe-area-inset-top);
|
|
258
|
+
bottom: env(safe-area-inset-bottom);
|
|
259
|
+
left: env(safe-area-inset-left);
|
|
260
|
+
right: env(safe-area-inset-right);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
@utility inset-safe-or-* {
|
|
264
|
+
top: max(env(safe-area-inset-top), --spacing(--value(integer)));
|
|
265
|
+
top: max(env(safe-area-inset-top), --value([length]));
|
|
266
|
+
bottom: max(env(safe-area-inset-bottom), --spacing(--value(integer)));
|
|
267
|
+
bottom: max(env(safe-area-inset-bottom), --value([length]));
|
|
268
|
+
left: max(env(safe-area-inset-left), --spacing(--value(integer)));
|
|
269
|
+
left: max(env(safe-area-inset-left), --value([length]));
|
|
270
|
+
right: max(env(safe-area-inset-right), --spacing(--value(integer)));
|
|
271
|
+
right: max(env(safe-area-inset-right), --value([length]));
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
@utility inset-safe-offset-* {
|
|
275
|
+
top: calc(env(safe-area-inset-top) + --spacing(--value(integer)));
|
|
276
|
+
top: calc(env(safe-area-inset-top) + --value([length]));
|
|
277
|
+
bottom: calc(env(safe-area-inset-bottom) + --spacing(--value(integer)));
|
|
278
|
+
bottom: calc(env(safe-area-inset-bottom) + --value([length]));
|
|
279
|
+
left: calc(env(safe-area-inset-left) + --spacing(--value(integer)));
|
|
280
|
+
left: calc(env(safe-area-inset-left) + --value([length]));
|
|
281
|
+
right: calc(env(safe-area-inset-right) + --spacing(--value(integer)));
|
|
282
|
+
right: calc(env(safe-area-inset-right) + --value([length]));
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
@utility x-safe {
|
|
286
|
+
left: env(safe-area-inset-left);
|
|
287
|
+
right: env(safe-area-inset-right);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
@utility x-safe-or-* {
|
|
291
|
+
left: max(env(safe-area-inset-left), --spacing(--value(integer)));
|
|
292
|
+
left: max(env(safe-area-inset-left), --value([length]));
|
|
293
|
+
right: max(env(safe-area-inset-right), --spacing(--value(integer)));
|
|
294
|
+
right: max(env(safe-area-inset-right), --value([length]));
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
@utility x-safe-offset-* {
|
|
298
|
+
left: calc(env(safe-area-inset-left) + --spacing(--value(integer)));
|
|
299
|
+
left: calc(env(safe-area-inset-left) + --value([length]));
|
|
300
|
+
right: calc(env(safe-area-inset-right) + --spacing(--value(integer)));
|
|
301
|
+
right: calc(env(safe-area-inset-right) + --value([length]));
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
@utility y-safe {
|
|
305
|
+
top: env(safe-area-inset-top);
|
|
306
|
+
bottom: env(safe-area-inset-bottom);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
@utility y-safe-or-* {
|
|
310
|
+
top: max(env(safe-area-inset-top), --spacing(--value(integer)));
|
|
311
|
+
top: max(env(safe-area-inset-top), --value([length]));
|
|
312
|
+
bottom: max(env(safe-area-inset-bottom), --spacing(--value(integer)));
|
|
313
|
+
bottom: max(env(safe-area-inset-bottom), --value([length]));
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
@utility y-safe-offset-* {
|
|
317
|
+
top: calc(env(safe-area-inset-top) + --spacing(--value(integer)));
|
|
318
|
+
top: calc(env(safe-area-inset-top) + --value([length]));
|
|
319
|
+
bottom: calc(env(safe-area-inset-bottom) + --spacing(--value(integer)));
|
|
320
|
+
bottom: calc(env(safe-area-inset-bottom) + --value([length]));
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
@utility top-safe {
|
|
324
|
+
top: env(safe-area-inset-top);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
@utility top-safe-or-* {
|
|
328
|
+
top: max(env(safe-area-inset-top), --spacing(--value(integer)));
|
|
329
|
+
top: max(env(safe-area-inset-top), --value([length]));
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
@utility top-safe-offset-* {
|
|
333
|
+
top: calc(env(safe-area-inset-top) + --spacing(--value(integer)));
|
|
334
|
+
top: calc(env(safe-area-inset-top) + --value([length]));
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
@utility bottom-safe {
|
|
338
|
+
bottom: env(safe-area-inset-bottom);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
@utility bottom-safe-or-* {
|
|
342
|
+
bottom: max(env(safe-area-inset-bottom), --spacing(--value(integer)));
|
|
343
|
+
bottom: max(env(safe-area-inset-bottom), --value([length]));
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
@utility bottom-safe-offset-* {
|
|
347
|
+
bottom: calc(env(safe-area-inset-bottom) + --spacing(--value(integer)));
|
|
348
|
+
bottom: calc(env(safe-area-inset-bottom) + --value([length]));
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
@utility left-safe {
|
|
352
|
+
left: env(safe-area-inset-left);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
@utility left-safe-or-* {
|
|
356
|
+
left: max(env(safe-area-inset-left), --spacing(--value(integer)));
|
|
357
|
+
left: max(env(safe-area-inset-left), --value([length]));
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
@utility left-safe-offset-* {
|
|
361
|
+
left: calc(env(safe-area-inset-left) + --spacing(--value(integer)));
|
|
362
|
+
left: calc(env(safe-area-inset-left) + --value([length]));
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
@utility right-safe {
|
|
366
|
+
right: env(safe-area-inset-right);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
@utility right-safe-or-* {
|
|
370
|
+
right: max(env(safe-area-inset-right), --spacing(--value(integer)));
|
|
371
|
+
right: max(env(safe-area-inset-right), --value([length]));
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
@utility right-safe-offset-* {
|
|
375
|
+
right: calc(env(safe-area-inset-right) + --spacing(--value(integer)));
|
|
376
|
+
right: calc(env(safe-area-inset-right) + --value([length]));
|
|
377
|
+
}
|
|
378
|
+
|
|
256
379
|
@custom-variant light (&:where(.light, .light *));
|
|
257
|
-
@custom-variant dark (&:where(.dark, .dark *));
|
|
380
|
+
@custom-variant dark (&:where(.dark, .dark *));
|