@styleframe/theme 1.0.1 → 1.0.3
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 +12 -0
- package/LICENSE +21 -0
- package/dist/theme.d.ts +772 -0
- package/dist/theme.js +2507 -0
- package/dist/theme.umd.cjs +4 -0
- package/package.json +14 -4
- package/.tsbuildinfo +0 -1
- package/src/constants/border.ts +0 -0
- package/src/constants/breakpoint.ts +0 -0
- package/src/constants/color.ts +0 -0
- package/src/constants/index.ts +0 -4
- package/src/constants/scale.ts +0 -3
- package/src/constants/typography.ts +0 -0
- package/src/index.ts +0 -4
- package/src/shims.d.ts +0 -8
- package/src/types.ts +0 -32
- package/src/utils/createUseVariable.test.ts +0 -928
- package/src/utils/createUseVariable.ts +0 -107
- package/src/utils/index.ts +0 -1
- package/src/variables/index.ts +0 -20
- package/src/variables/useBorderColor.ts +0 -27
- package/src/variables/useBorderRadius.test.ts +0 -335
- package/src/variables/useBorderRadius.ts +0 -26
- package/src/variables/useBorderStyle.test.ts +0 -569
- package/src/variables/useBorderStyle.ts +0 -49
- package/src/variables/useBorderWidth.test.ts +0 -535
- package/src/variables/useBorderWidth.ts +0 -38
- package/src/variables/useBoxShadow.test.ts +0 -336
- package/src/variables/useBoxShadow.ts +0 -54
- package/src/variables/useBreakpoint.test.ts +0 -447
- package/src/variables/useBreakpoint.ts +0 -38
- package/src/variables/useColor.test.ts +0 -360
- package/src/variables/useColor.ts +0 -35
- package/src/variables/useColorLightness.test.ts +0 -168
- package/src/variables/useColorLightness.ts +0 -59
- package/src/variables/useColorShade.test.ts +0 -166
- package/src/variables/useColorShade.ts +0 -52
- package/src/variables/useColorTint.test.ts +0 -164
- package/src/variables/useColorTint.ts +0 -52
- package/src/variables/useEasing.ts +0 -0
- package/src/variables/useFontFamily.test.ts +0 -228
- package/src/variables/useFontFamily.ts +0 -33
- package/src/variables/useFontSize.test.ts +0 -299
- package/src/variables/useFontSize.ts +0 -32
- package/src/variables/useFontStyle.test.ts +0 -555
- package/src/variables/useFontStyle.ts +0 -37
- package/src/variables/useFontWeight.test.ts +0 -650
- package/src/variables/useFontWeight.ts +0 -55
- package/src/variables/useLetterSpacing.test.ts +0 -455
- package/src/variables/useLetterSpacing.ts +0 -41
- package/src/variables/useLineHeight.test.ts +0 -410
- package/src/variables/useLineHeight.ts +0 -41
- package/src/variables/useMultiplier.test.ts +0 -722
- package/src/variables/useMultiplier.ts +0 -44
- package/src/variables/useScale.test.ts +0 -393
- package/src/variables/useScale.ts +0 -52
- package/src/variables/useScalePowers.test.ts +0 -412
- package/src/variables/useScalePowers.ts +0 -35
- package/src/variables/useSpacing.test.ts +0 -309
- package/src/variables/useSpacing.ts +0 -26
- package/src/vite-env.d.ts +0 -1
- package/test-scale.js +0 -22
- package/tsconfig.json +0 -7
- package/vite.config.ts +0 -5
|
@@ -1,336 +0,0 @@
|
|
|
1
|
-
import type { Variable } from "@styleframe/core";
|
|
2
|
-
import { styleframe } from "@styleframe/core";
|
|
3
|
-
import { consume } from "@styleframe/transpiler";
|
|
4
|
-
import { useBoxShadow } from "./useBoxShadow";
|
|
5
|
-
|
|
6
|
-
describe("useBoxShadow", () => {
|
|
7
|
-
it("should create a single box-shadow variable with 'default' key", () => {
|
|
8
|
-
const s = styleframe();
|
|
9
|
-
const { boxShadow } = useBoxShadow(s, {
|
|
10
|
-
default: "0 2px 4px rgba(0, 0, 0, 0.1)",
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
expect(boxShadow).toEqual({
|
|
14
|
-
type: "variable",
|
|
15
|
-
name: "box-shadow",
|
|
16
|
-
value: "0 2px 4px rgba(0, 0, 0, 0.1)",
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
const css = consume(boxShadow, s.options);
|
|
20
|
-
expect(css).toBe(`--box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);`);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it("should create box-shadow variable with modifier for non-default keys", () => {
|
|
24
|
-
const s = styleframe();
|
|
25
|
-
const { boxShadowSm } = useBoxShadow(s, {
|
|
26
|
-
sm: "0 1px 2px rgba(0, 0, 0, 0.05)",
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
expect(boxShadowSm).toEqual({
|
|
30
|
-
type: "variable",
|
|
31
|
-
name: "box-shadow--sm",
|
|
32
|
-
value: "0 1px 2px rgba(0, 0, 0, 0.05)",
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
const css = consume(boxShadowSm, s.options);
|
|
36
|
-
expect(css).toBe(`--box-shadow--sm: 0 1px 2px rgba(0, 0, 0, 0.05);`);
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
it("should create multiple box-shadow variables", () => {
|
|
40
|
-
const s = styleframe();
|
|
41
|
-
const { boxShadow, boxShadowSm, boxShadowMd, boxShadowLg } = useBoxShadow(
|
|
42
|
-
s,
|
|
43
|
-
{
|
|
44
|
-
default: "0 2px 4px rgba(0, 0, 0, 0.1)",
|
|
45
|
-
sm: "0 1px 2px rgba(0, 0, 0, 0.05)",
|
|
46
|
-
md: "0 4px 8px rgba(0, 0, 0, 0.1)",
|
|
47
|
-
lg: "0 8px 16px rgba(0, 0, 0, 0.15)",
|
|
48
|
-
},
|
|
49
|
-
);
|
|
50
|
-
|
|
51
|
-
expect(boxShadow).toEqual({
|
|
52
|
-
type: "variable",
|
|
53
|
-
name: "box-shadow",
|
|
54
|
-
value: "0 2px 4px rgba(0, 0, 0, 0.1)",
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
expect(boxShadowSm).toEqual({
|
|
58
|
-
type: "variable",
|
|
59
|
-
name: "box-shadow--sm",
|
|
60
|
-
value: "0 1px 2px rgba(0, 0, 0, 0.05)",
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
expect(boxShadowMd).toEqual({
|
|
64
|
-
type: "variable",
|
|
65
|
-
name: "box-shadow--md",
|
|
66
|
-
value: "0 4px 8px rgba(0, 0, 0, 0.1)",
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
expect(boxShadowLg).toEqual({
|
|
70
|
-
type: "variable",
|
|
71
|
-
name: "box-shadow--lg",
|
|
72
|
-
value: "0 8px 16px rgba(0, 0, 0, 0.15)",
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
it("should add variables to root", () => {
|
|
77
|
-
const s = styleframe();
|
|
78
|
-
useBoxShadow(s, {
|
|
79
|
-
default: "0 2px 4px rgba(0, 0, 0, 0.1)",
|
|
80
|
-
sm: "0 1px 2px rgba(0, 0, 0, 0.05)",
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
expect(s.root.variables).toHaveLength(2);
|
|
84
|
-
expect(s.root.variables[0]?.name).toBe("box-shadow");
|
|
85
|
-
expect(s.root.variables[1]?.name).toBe("box-shadow--sm");
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
it("should handle kebab-case box-shadow names", () => {
|
|
89
|
-
const s = styleframe();
|
|
90
|
-
const { boxShadowExtraLarge } = useBoxShadow(s, {
|
|
91
|
-
"extra-large": "0 20px 40px rgba(0, 0, 0, 0.2)",
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
expect(boxShadowExtraLarge).toEqual({
|
|
95
|
-
type: "variable",
|
|
96
|
-
name: "box-shadow--extra-large",
|
|
97
|
-
value: "0 20px 40px rgba(0, 0, 0, 0.2)",
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
it("should handle snake_case box-shadow names", () => {
|
|
102
|
-
const s = styleframe();
|
|
103
|
-
const { boxShadowCardElevation } = useBoxShadow(s, {
|
|
104
|
-
card_elevation: "0 4px 6px rgba(0, 0, 0, 0.1)",
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
expect(boxShadowCardElevation).toEqual({
|
|
108
|
-
type: "variable",
|
|
109
|
-
name: "box-shadow--card_elevation",
|
|
110
|
-
value: "0 4px 6px rgba(0, 0, 0, 0.1)",
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
it("should handle numeric box-shadow names", () => {
|
|
115
|
-
const s = styleframe();
|
|
116
|
-
const { boxShadow100 } = useBoxShadow(s, {
|
|
117
|
-
"100": "0 1px 3px rgba(0, 0, 0, 0.12)",
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
expect(boxShadow100).toEqual({
|
|
121
|
-
type: "variable",
|
|
122
|
-
name: "box-shadow--100",
|
|
123
|
-
value: "0 1px 3px rgba(0, 0, 0, 0.12)",
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
it("should handle none value", () => {
|
|
128
|
-
const s = styleframe();
|
|
129
|
-
const { boxShadowNone } = useBoxShadow(s, {
|
|
130
|
-
none: "none",
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
expect(boxShadowNone).toEqual({
|
|
134
|
-
type: "variable",
|
|
135
|
-
name: "box-shadow--none",
|
|
136
|
-
value: "none",
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
it("should handle inset shadows", () => {
|
|
141
|
-
const s = styleframe();
|
|
142
|
-
const { boxShadowInset } = useBoxShadow(s, {
|
|
143
|
-
inset: "inset 0 2px 4px rgba(0, 0, 0, 0.1)",
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
expect(boxShadowInset).toEqual({
|
|
147
|
-
type: "variable",
|
|
148
|
-
name: "box-shadow--inset",
|
|
149
|
-
value: "inset 0 2px 4px rgba(0, 0, 0, 0.1)",
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
it("should handle multiple shadows", () => {
|
|
154
|
-
const s = styleframe();
|
|
155
|
-
const { boxShadowMultiple } = useBoxShadow(s, {
|
|
156
|
-
multiple: "0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24)",
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
expect(boxShadowMultiple.value).toBe(
|
|
160
|
-
"0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24)",
|
|
161
|
-
);
|
|
162
|
-
});
|
|
163
|
-
|
|
164
|
-
it("should handle colored shadows", () => {
|
|
165
|
-
const s = styleframe();
|
|
166
|
-
const { boxShadowColored } = useBoxShadow(s, {
|
|
167
|
-
colored: "0 4px 8px rgba(59, 130, 246, 0.3)",
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
expect(boxShadowColored.value).toBe("0 4px 8px rgba(59, 130, 246, 0.3)");
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
it("should handle spread radius", () => {
|
|
174
|
-
const s = styleframe();
|
|
175
|
-
const { boxShadowSpread } = useBoxShadow(s, {
|
|
176
|
-
spread: "0 4px 8px 2px rgba(0, 0, 0, 0.1)",
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
expect(boxShadowSpread.value).toBe("0 4px 8px 2px rgba(0, 0, 0, 0.1)");
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
it("should handle hex color values", () => {
|
|
183
|
-
const s = styleframe();
|
|
184
|
-
const { boxShadowHex } = useBoxShadow(s, {
|
|
185
|
-
hex: "0 2px 4px #00000019",
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
expect(boxShadowHex.value).toBe("0 2px 4px #00000019");
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
it("should handle hsl color values", () => {
|
|
192
|
-
const s = styleframe();
|
|
193
|
-
const { boxShadowHsl } = useBoxShadow(s, {
|
|
194
|
-
hsl: "0 4px 8px hsl(0, 0%, 0%, 0.1)",
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
expect(boxShadowHsl.value).toBe("0 4px 8px hsl(0, 0%, 0%, 0.1)");
|
|
198
|
-
});
|
|
199
|
-
|
|
200
|
-
it("should handle CSS variables in shadow values", () => {
|
|
201
|
-
const s = styleframe();
|
|
202
|
-
const { boxShadowVar } = useBoxShadow(s, {
|
|
203
|
-
var: "0 2px 4px var(--shadow-color)",
|
|
204
|
-
});
|
|
205
|
-
|
|
206
|
-
expect(boxShadowVar.value).toBe("0 2px 4px var(--shadow-color)");
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
it("should handle empty box-shadow object", () => {
|
|
210
|
-
const s = styleframe();
|
|
211
|
-
const result = useBoxShadow(s, {});
|
|
212
|
-
|
|
213
|
-
expect(result).toEqual({});
|
|
214
|
-
expect(s.root.variables).toHaveLength(0);
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
it("should handle box-shadow references", () => {
|
|
218
|
-
const s = styleframe();
|
|
219
|
-
const baseBoxShadow = s.variable(
|
|
220
|
-
"base-box-shadow",
|
|
221
|
-
"0 2px 4px rgba(0, 0, 0, 0.1)",
|
|
222
|
-
);
|
|
223
|
-
const { boxShadow } = useBoxShadow(s, {
|
|
224
|
-
default: s.ref(baseBoxShadow),
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
expect(boxShadow.value).toEqual({
|
|
228
|
-
type: "reference",
|
|
229
|
-
name: "base-box-shadow",
|
|
230
|
-
fallback: undefined,
|
|
231
|
-
});
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
it("should compile to correct CSS output using consume", () => {
|
|
235
|
-
const s = styleframe();
|
|
236
|
-
useBoxShadow(s, {
|
|
237
|
-
default: "0 2px 4px rgba(0, 0, 0, 0.1)",
|
|
238
|
-
none: "none",
|
|
239
|
-
sm: "0 1px 2px rgba(0, 0, 0, 0.05)",
|
|
240
|
-
md: "0 4px 8px rgba(0, 0, 0, 0.1)",
|
|
241
|
-
lg: "0 8px 16px rgba(0, 0, 0, 0.15)",
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
const css = consume(s.root, s.options);
|
|
245
|
-
|
|
246
|
-
expect(css).toBe(`:root {
|
|
247
|
-
--box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
248
|
-
--box-shadow--none: none;
|
|
249
|
-
--box-shadow--sm: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
250
|
-
--box-shadow--md: 0 4px 8px rgba(0, 0, 0, 0.1);
|
|
251
|
-
--box-shadow--lg: 0 8px 16px rgba(0, 0, 0, 0.15);
|
|
252
|
-
}`);
|
|
253
|
-
});
|
|
254
|
-
|
|
255
|
-
it("should handle a complete box-shadow scale", () => {
|
|
256
|
-
const s = styleframe();
|
|
257
|
-
const shadows = useBoxShadow(s, {
|
|
258
|
-
none: "none",
|
|
259
|
-
xs: "0 1px 2px rgba(0, 0, 0, 0.05)",
|
|
260
|
-
sm: "0 1px 3px rgba(0, 0, 0, 0.1)",
|
|
261
|
-
default: "0 2px 4px rgba(0, 0, 0, 0.1)",
|
|
262
|
-
md: "0 4px 8px rgba(0, 0, 0, 0.1)",
|
|
263
|
-
lg: "0 8px 16px rgba(0, 0, 0, 0.15)",
|
|
264
|
-
xl: "0 12px 24px rgba(0, 0, 0, 0.2)",
|
|
265
|
-
"2xl": "0 16px 32px rgba(0, 0, 0, 0.25)",
|
|
266
|
-
"3xl": "0 24px 48px rgba(0, 0, 0, 0.3)",
|
|
267
|
-
});
|
|
268
|
-
|
|
269
|
-
expect(shadows.boxShadowNone.value).toBe("none");
|
|
270
|
-
expect(shadows.boxShadowXs.value).toBe("0 1px 2px rgba(0, 0, 0, 0.05)");
|
|
271
|
-
expect(shadows.boxShadowSm.value).toBe("0 1px 3px rgba(0, 0, 0, 0.1)");
|
|
272
|
-
expect(shadows.boxShadow.value).toBe("0 2px 4px rgba(0, 0, 0, 0.1)");
|
|
273
|
-
expect(shadows.boxShadowMd.value).toBe("0 4px 8px rgba(0, 0, 0, 0.1)");
|
|
274
|
-
expect(shadows.boxShadowLg.value).toBe("0 8px 16px rgba(0, 0, 0, 0.15)");
|
|
275
|
-
expect(shadows.boxShadowXl.value).toBe("0 12px 24px rgba(0, 0, 0, 0.2)");
|
|
276
|
-
expect(shadows.boxShadow2xl.value).toBe("0 16px 32px rgba(0, 0, 0, 0.25)");
|
|
277
|
-
expect(shadows.boxShadow3xl.value).toBe("0 24px 48px rgba(0, 0, 0, 0.3)");
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
it("should handle elevation system", () => {
|
|
281
|
-
const s = styleframe();
|
|
282
|
-
const shadows = useBoxShadow(s, {
|
|
283
|
-
"1": "0 1px 3px rgba(0, 0, 0, 0.12)",
|
|
284
|
-
"2": "0 3px 6px rgba(0, 0, 0, 0.16)",
|
|
285
|
-
"3": "0 10px 20px rgba(0, 0, 0, 0.19)",
|
|
286
|
-
"4": "0 14px 28px rgba(0, 0, 0, 0.25)",
|
|
287
|
-
"5": "0 19px 38px rgba(0, 0, 0, 0.30)",
|
|
288
|
-
});
|
|
289
|
-
|
|
290
|
-
expect(shadows.boxShadow1.value).toBe("0 1px 3px rgba(0, 0, 0, 0.12)");
|
|
291
|
-
expect(shadows.boxShadow2.value).toBe("0 3px 6px rgba(0, 0, 0, 0.16)");
|
|
292
|
-
expect(shadows.boxShadow3.value).toBe("0 10px 20px rgba(0, 0, 0, 0.19)");
|
|
293
|
-
expect(shadows.boxShadow4.value).toBe("0 14px 28px rgba(0, 0, 0, 0.25)");
|
|
294
|
-
expect(shadows.boxShadow5.value).toBe("0 19px 38px rgba(0, 0, 0, 0.30)");
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
describe("type safety", () => {
|
|
298
|
-
it("should preserve exact box-shadow names in return type", () => {
|
|
299
|
-
const s = styleframe();
|
|
300
|
-
const shadows = useBoxShadow(s, {
|
|
301
|
-
default: "0 2px 4px rgba(0, 0, 0, 0.1)",
|
|
302
|
-
sm: "0 1px 2px rgba(0, 0, 0, 0.05)",
|
|
303
|
-
});
|
|
304
|
-
|
|
305
|
-
// Type assertions to verify the generic types are preserved
|
|
306
|
-
const defaultBoxShadow: Variable<"box-shadow"> = shadows.boxShadow;
|
|
307
|
-
const smBoxShadow: Variable<"box-shadow--sm"> = shadows.boxShadowSm;
|
|
308
|
-
|
|
309
|
-
expect(defaultBoxShadow.name).toBe("box-shadow");
|
|
310
|
-
expect(smBoxShadow.name).toBe("box-shadow--sm");
|
|
311
|
-
});
|
|
312
|
-
|
|
313
|
-
it("should maintain type information for kebab-case names", () => {
|
|
314
|
-
const s = styleframe();
|
|
315
|
-
const { boxShadowExtraLarge } = useBoxShadow(s, {
|
|
316
|
-
"extra-large": "0 20px 40px rgba(0, 0, 0, 0.2)",
|
|
317
|
-
});
|
|
318
|
-
|
|
319
|
-
const typed: Variable<"box-shadow--extra-large"> = boxShadowExtraLarge;
|
|
320
|
-
expect(typed.name).toBe("box-shadow--extra-large");
|
|
321
|
-
});
|
|
322
|
-
|
|
323
|
-
it("should work with const assertion", () => {
|
|
324
|
-
const s = styleframe();
|
|
325
|
-
const boxShadowConfig = {
|
|
326
|
-
default: "0 2px 4px rgba(0, 0, 0, 0.1)",
|
|
327
|
-
sm: "0 1px 2px rgba(0, 0, 0, 0.05)",
|
|
328
|
-
} as const;
|
|
329
|
-
|
|
330
|
-
const shadows = useBoxShadow(s, boxShadowConfig);
|
|
331
|
-
|
|
332
|
-
expect(shadows.boxShadow.name).toBe("box-shadow");
|
|
333
|
-
expect(shadows.boxShadowSm.name).toBe("box-shadow--sm");
|
|
334
|
-
});
|
|
335
|
-
});
|
|
336
|
-
});
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { createUseVariable } from "../utils";
|
|
2
|
-
|
|
3
|
-
export const defaultBoxShadowValues = {
|
|
4
|
-
default: "@md",
|
|
5
|
-
none: "none",
|
|
6
|
-
// subtle card / surfaces
|
|
7
|
-
xs: "0 1px 1px oklch(var(--box-shadow-color, 0 0 0) / 0.12), 0 2px 2px -1px oklch(var(--box-shadow-color, 0 0 0) / 0.06)",
|
|
8
|
-
// default
|
|
9
|
-
sm: "0 1px 2px oklch(var(--box-shadow-color, 0 0 0) / 0.14), 0 3px 6px -1px oklch(var(--box-shadow-color, 0 0 0) / 0.10)",
|
|
10
|
-
// popover / raised button
|
|
11
|
-
md: "0 2px 4px oklch(var(--box-shadow-color, 0 0 0) / 0.16), 0 8px 16px -4px oklch(var(--box-shadow-color, 0 0 0) / 0.10)",
|
|
12
|
-
// modal / floating panel
|
|
13
|
-
lg: "0 4px 8px oklch(var(--box-shadow-color, 0 0 0) / 0.18), 0 16px 24px -8px oklch(var(--box-shadow-color, 0 0 0) / 0.12)",
|
|
14
|
-
// drawer / high elevation
|
|
15
|
-
xl: "0 8px 12px oklch(var(--box-shadow-color, 0 0 0) / 0.20), 0 24px 48px -12px oklch(var(--box-shadow-color, 0 0 0) / 0.14)",
|
|
16
|
-
// highest elevation / toast over content
|
|
17
|
-
"2xl":
|
|
18
|
-
"0 12px 16px oklch(var(--box-shadow-color, 0 0 0) / 0.22), 0 32px 64px -16px oklch(var(--box-shadow-color, 0 0 0) / 0.16)",
|
|
19
|
-
// borders-for-free on dark backgrounds and inset wells
|
|
20
|
-
inner:
|
|
21
|
-
"inset 0 1px 0 oklch(var(--box-shadow-color, 0 0 0) / 0.08), inset 0 0 0 1px oklch(var(--box-shadow-color, 0 0 0) / 0.06)",
|
|
22
|
-
// focus rings that still read as elevation
|
|
23
|
-
ring: "0 0 0 1px oklch(var(--box-shadow-color, 0 0 0) / 0.12), 0 1px 2px oklch(var(--box-shadow-color, 0 0 0) / 0.08)",
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Create a set of box-shadow variables for use in a Styleframe instance.
|
|
28
|
-
*
|
|
29
|
-
* @usage
|
|
30
|
-
* ```typescript
|
|
31
|
-
* import { styleframe } from "styleframe";
|
|
32
|
-
* import { useBoxShadow } from "styleframe/theme";
|
|
33
|
-
*
|
|
34
|
-
* const s = styleframe();
|
|
35
|
-
* const { variable } = s;
|
|
36
|
-
*
|
|
37
|
-
* const boxShadowColor = s.variable("box-shadow-color", "0 0 0");
|
|
38
|
-
*
|
|
39
|
-
* const {
|
|
40
|
-
* boxShadow, // Variable<'box-shadow'>
|
|
41
|
-
* boxShadowSm, // Variable<'box-shadow--sm'>
|
|
42
|
-
* boxShadowMd, // Variable<'box-shadow--md'>
|
|
43
|
-
* boxShadowLg, // Variable<'box-shadow--lg'>
|
|
44
|
-
* } = useBoxShadow(s, {
|
|
45
|
-
* default: '@md',
|
|
46
|
-
* sm: css`0 1px 2px oklcha(${ref(boxShadowColor)} / 0.05)`,
|
|
47
|
-
* md: css`0 4px 8px oklcha(${ref(boxShadowColor)} / 0.1)`,
|
|
48
|
-
* lg: css`0 8px 16px oklcha(${ref(boxShadowColor)} / 0.15)`,
|
|
49
|
-
* });
|
|
50
|
-
* ```
|
|
51
|
-
*/
|
|
52
|
-
export const useBoxShadow = createUseVariable("box-shadow", {
|
|
53
|
-
defaults: defaultBoxShadowValues,
|
|
54
|
-
});
|