nextjs-cms 0.7.2 → 0.7.4

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.
@@ -306,7 +306,7 @@ declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
306
306
  thumbnail?: {
307
307
  width: number;
308
308
  height: number;
309
- crop: boolean;
309
+ fit: "cover" | "contain";
310
310
  quality: number;
311
311
  };
312
312
  } | undefined;
@@ -355,7 +355,7 @@ declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
355
355
  thumbnail?: {
356
356
  width: number;
357
357
  height: number;
358
- crop: boolean;
358
+ fit: "cover" | "contain";
359
359
  quality: number;
360
360
  };
361
361
  } | undefined;
@@ -452,7 +452,7 @@ declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
452
452
  thumbnail?: {
453
453
  width: number;
454
454
  height: number;
455
- crop: boolean;
455
+ fit: "cover" | "contain";
456
456
  quality: number;
457
457
  };
458
458
  } | undefined;
@@ -66,7 +66,7 @@ export declare const createSimpleSectionPage: (session: Session, sectionName: st
66
66
  thumbnail?: {
67
67
  width: number;
68
68
  height: number;
69
- crop: boolean;
69
+ fit: "cover" | "contain";
70
70
  quality: number;
71
71
  };
72
72
  } | undefined;
@@ -113,7 +113,7 @@ export declare const createEditPage: (session: Session, sectionName: string, sec
113
113
  thumbnail?: {
114
114
  width: number;
115
115
  height: number;
116
- crop: boolean;
116
+ fit: "cover" | "contain";
117
117
  quality: number;
118
118
  };
119
119
  } | undefined;
@@ -173,7 +173,7 @@ export declare const createNewPage: (session: Session, sectionName: string) => P
173
173
  thumbnail?: {
174
174
  width: number;
175
175
  height: number;
176
- crop: boolean;
176
+ fit: "cover" | "contain";
177
177
  quality: number;
178
178
  };
179
179
  } | undefined;
@@ -297,7 +297,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
297
297
  thumbnail?: {
298
298
  width: number;
299
299
  height: number;
300
- crop: boolean;
300
+ fit: "cover" | "contain";
301
301
  quality: number;
302
302
  };
303
303
  } | undefined;
@@ -346,7 +346,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
346
346
  thumbnail?: {
347
347
  width: number;
348
348
  height: number;
349
- crop: boolean;
349
+ fit: "cover" | "contain";
350
350
  quality: number;
351
351
  };
352
352
  } | undefined;
@@ -443,7 +443,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
443
443
  thumbnail?: {
444
444
  width: number;
445
445
  height: number;
446
- crop: boolean;
446
+ fit: "cover" | "contain";
447
447
  quality: number;
448
448
  };
449
449
  } | undefined;
@@ -1170,7 +1170,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
1170
1170
  thumbnail?: {
1171
1171
  width: number;
1172
1172
  height: number;
1173
- crop: boolean;
1173
+ fit: "cover" | "contain";
1174
1174
  quality: number;
1175
1175
  };
1176
1176
  } | undefined;
@@ -1219,7 +1219,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
1219
1219
  thumbnail?: {
1220
1220
  width: number;
1221
1221
  height: number;
1222
- crop: boolean;
1222
+ fit: "cover" | "contain";
1223
1223
  quality: number;
1224
1224
  };
1225
1225
  } | undefined;
@@ -1316,7 +1316,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
1316
1316
  thumbnail?: {
1317
1317
  width: number;
1318
1318
  height: number;
1319
- crop: boolean;
1319
+ fit: "cover" | "contain";
1320
1320
  quality: number;
1321
1321
  };
1322
1322
  } | undefined;
@@ -82,7 +82,7 @@ export declare const hasItemsSectionRouter: import("@trpc/server").TRPCBuiltRout
82
82
  thumbnail?: {
83
83
  width: number;
84
84
  height: number;
85
- crop: boolean;
85
+ fit: "cover" | "contain";
86
86
  quality: number;
87
87
  };
88
88
  } | undefined;
@@ -131,7 +131,7 @@ export declare const hasItemsSectionRouter: import("@trpc/server").TRPCBuiltRout
131
131
  thumbnail?: {
132
132
  width: number;
133
133
  height: number;
134
- crop: boolean;
134
+ fit: "cover" | "contain";
135
135
  quality: number;
136
136
  };
137
137
  } | undefined;
@@ -46,7 +46,7 @@ export declare const simpleSectionRouter: import("@trpc/server").TRPCBuiltRouter
46
46
  thumbnail?: {
47
47
  width: number;
48
48
  height: number;
49
- crop: boolean;
49
+ fit: "cover" | "contain";
50
50
  quality: number;
51
51
  };
52
52
  } | undefined;
@@ -30,11 +30,28 @@ declare const cmsConfigSchema: z.ZodObject<{
30
30
  b: z.ZodNumber;
31
31
  alpha: z.ZodNumber;
32
32
  }, z.core.$strip>>;
33
+ image: z.ZodOptional<z.ZodObject<{
34
+ size: z.ZodOptional<z.ZodObject<{
35
+ width: z.ZodNumber;
36
+ height: z.ZodNumber;
37
+ fit: z.ZodEnum<{
38
+ cover: "cover";
39
+ contain: "contain";
40
+ }>;
41
+ strict: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
42
+ }, z.core.$strip>>;
43
+ quality: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
44
+ }, z.core.$strip>>;
33
45
  thumbnail: z.ZodOptional<z.ZodObject<{
34
- width: z.ZodNumber;
35
- height: z.ZodNumber;
36
- crop: z.ZodBoolean;
37
- quality: z.ZodOptional<z.ZodNumber>;
46
+ size: z.ZodOptional<z.ZodObject<{
47
+ width: z.ZodNumber;
48
+ height: z.ZodNumber;
49
+ fit: z.ZodEnum<{
50
+ cover: "cover";
51
+ contain: "contain";
52
+ }>;
53
+ }, z.core.$strip>>;
54
+ quality: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
38
55
  }, z.core.$strip>>;
39
56
  watermark: z.ZodOptional<z.ZodBoolean>;
40
57
  }, z.core.$strip>>;
@@ -112,10 +129,21 @@ export interface ComputedCMSConfig {
112
129
  b: number;
113
130
  alpha: number;
114
131
  };
132
+ image: {
133
+ size: {
134
+ width: number;
135
+ height: number;
136
+ fit: 'cover' | 'contain';
137
+ strict: boolean;
138
+ };
139
+ quality: number;
140
+ };
115
141
  thumbnail: {
116
- width: number;
117
- height: number;
118
- crop: boolean;
142
+ size: {
143
+ width: number;
144
+ height: number;
145
+ fit: 'cover' | 'contain';
146
+ };
119
147
  quality: number;
120
148
  };
121
149
  watermark: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/core/config/config-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAGxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAEzE,2DAA2D;AAC3D,eAAO,MAAM,sBAAsB,iBAAkB,CAAA;AAErD,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAA;AAGrE,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8OnB,CAAA;AAGF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAEvD,MAAM,WAAW,mBAAmB;IAChC,KAAK,CAAC,EAAE,eAAe,CAAA;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,iEAAiE;IACjE,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAC/C;AAGD,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE;QACA,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,EAAE,MAAM,CAAA;QACpB,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,OAAO,CAAA;QACf,QAAQ,EAAE;YACN,oBAAoB,EAAE,OAAO,CAAA;SAChC,CAAA;KACJ,CAAA;IACD,KAAK,EAAE;QACH,MAAM,EAAE;YACJ,IAAI,EAAE,MAAM,CAAA;YACZ,iBAAiB,EAAE,OAAO,CAAA;SAC7B,CAAA;QACD,MAAM,EAAE;YACJ,UAAU,EAAE;gBAAE,CAAC,EAAE,MAAM,CAAC;gBAAC,CAAC,EAAE,MAAM,CAAC;gBAAC,CAAC,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAA;aAAE,CAAA;YAC9D,SAAS,EAAE;gBACP,KAAK,EAAE,MAAM,CAAA;gBACb,MAAM,EAAE,MAAM,CAAA;gBACd,IAAI,EAAE,OAAO,CAAA;gBACb,OAAO,EAAE,MAAM,CAAA;aAClB,CAAA;YACD,SAAS,EAAE,OAAO,CAAA;SACrB,CAAA;KACJ,CAAA;IACD,gBAAgB,EAAE;QACd,OAAO,EAAE;YACL,OAAO,EAAE,OAAO,CAAA;YAChB,MAAM,EAAE,MAAM,CAAA;YACd,QAAQ,EAAE,MAAM,CAAA;YAChB,MAAM,EAAE;gBACJ,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,CAAA;gBAChD,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,CAAA;aACpD,CAAA;SACJ,CAAA;KACJ,CAAA;IACD,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,IAAI,EAAE;QACF,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAA;QACrC,gBAAgB,EAAE,MAAM,CAAA;KAC3B,CAAA;IACD,SAAS,EAAE;QACP,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAC1B,CAAA;CACJ;AA4KD;;;;;;GAMG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAazE"}
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/core/config/config-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAGxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAEzE,2DAA2D;AAC3D,eAAO,MAAM,sBAAsB,iBAAkB,CAAA;AAErD,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAA;AAGrE,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmQnB,CAAA;AAGF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAEvD,MAAM,WAAW,mBAAmB;IAChC,KAAK,CAAC,EAAE,eAAe,CAAA;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,iEAAiE;IACjE,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAC/C;AAGD,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE;QACA,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,EAAE,MAAM,CAAA;QACpB,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,OAAO,CAAA;QACf,QAAQ,EAAE;YACN,oBAAoB,EAAE,OAAO,CAAA;SAChC,CAAA;KACJ,CAAA;IACD,KAAK,EAAE;QACH,MAAM,EAAE;YACJ,IAAI,EAAE,MAAM,CAAA;YACZ,iBAAiB,EAAE,OAAO,CAAA;SAC7B,CAAA;QACD,MAAM,EAAE;YACJ,UAAU,EAAE;gBAAE,CAAC,EAAE,MAAM,CAAC;gBAAC,CAAC,EAAE,MAAM,CAAC;gBAAC,CAAC,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAA;aAAE,CAAA;YAC9D,KAAK,EAAE;gBACH,IAAI,EAAE;oBACF,KAAK,EAAE,MAAM,CAAA;oBACb,MAAM,EAAE,MAAM,CAAA;oBACd,GAAG,EAAE,OAAO,GAAG,SAAS,CAAA;oBACxB,MAAM,EAAE,OAAO,CAAA;iBAClB,CAAA;gBACD,OAAO,EAAE,MAAM,CAAA;aAClB,CAAA;YACD,SAAS,EAAE;gBACP,IAAI,EAAE;oBACF,KAAK,EAAE,MAAM,CAAA;oBACb,MAAM,EAAE,MAAM,CAAA;oBACd,GAAG,EAAE,OAAO,GAAG,SAAS,CAAA;iBAC3B,CAAA;gBACD,OAAO,EAAE,MAAM,CAAA;aAClB,CAAA;YACD,SAAS,EAAE,OAAO,CAAA;SACrB,CAAA;KACJ,CAAA;IACD,gBAAgB,EAAE;QACd,OAAO,EAAE;YACL,OAAO,EAAE,OAAO,CAAA;YAChB,MAAM,EAAE,MAAM,CAAA;YACd,QAAQ,EAAE,MAAM,CAAA;YAChB,MAAM,EAAE;gBACJ,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,CAAA;gBAChD,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,CAAA;aACpD,CAAA;SACJ,CAAA;KACJ,CAAA;IACD,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,IAAI,EAAE;QACF,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAA;QACrC,gBAAgB,EAAE,MAAM,CAAA;KAC3B,CAAA;IACD,SAAS,EAAE;QACP,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAC1B,CAAA;CACJ;AA+MD;;;;;;GAMG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAazE"}
@@ -91,8 +91,8 @@ const cmsConfigSchema = z.object({
91
91
  images: z
92
92
  .object({
93
93
  /**
94
- * Global background color for image resizing (used when crop is false).
95
- * Applied to both normal size images and thumbnails as a fallback.
94
+ * Global background color for image padding (used with fit: 'contain').
95
+ * Applied to both images and thumbnails as a fallback.
96
96
  */
97
97
  background: z
98
98
  .object({
@@ -103,14 +103,34 @@ const cmsConfigSchema = z.object({
103
103
  })
104
104
  .optional(),
105
105
  /**
106
- * Global images thumbnail configuration
106
+ * Global image defaults (used when individual fields don't specify size)
107
+ */
108
+ image: z
109
+ .object({
110
+ size: z
111
+ .object({
112
+ width: z.number(),
113
+ height: z.number(),
114
+ fit: z.enum(['cover', 'contain']),
115
+ strict: z.boolean().optional().default(false),
116
+ })
117
+ .optional(),
118
+ quality: z.number().min(50).max(100).optional().default(80),
119
+ })
120
+ .optional(),
121
+ /**
122
+ * Global thumbnail defaults (used when individual fields don't specify thumbnail)
107
123
  */
108
124
  thumbnail: z
109
125
  .object({
110
- width: z.number(),
111
- height: z.number(),
112
- crop: z.boolean(),
113
- quality: z.number().optional(),
126
+ size: z
127
+ .object({
128
+ width: z.number(),
129
+ height: z.number(),
130
+ fit: z.enum(['cover', 'contain']),
131
+ })
132
+ .optional(),
133
+ quality: z.number().min(50).max(100).optional().default(80),
114
134
  })
115
135
  .optional(),
116
136
  /**
@@ -278,10 +298,27 @@ function mergeConfig(defaults, userConfig) {
278
298
  },
279
299
  images: {
280
300
  background: userConfig.media?.images?.background ?? defaults.media.images.background,
301
+ image: {
302
+ size: {
303
+ width: userConfig.media?.images?.image?.size?.width ??
304
+ defaults.media.images.image.size.width,
305
+ height: userConfig.media?.images?.image?.size?.height ??
306
+ defaults.media.images.image.size.height,
307
+ fit: userConfig.media?.images?.image?.size?.fit ?? defaults.media.images.image.size.fit,
308
+ strict: userConfig.media?.images?.image?.size?.strict ??
309
+ defaults.media.images.image.size.strict,
310
+ },
311
+ quality: userConfig.media?.images?.image?.quality ?? defaults.media.images.image.quality,
312
+ },
281
313
  thumbnail: {
282
- width: userConfig.media?.images?.thumbnail?.width ?? defaults.media.images.thumbnail.width,
283
- height: userConfig.media?.images?.thumbnail?.height ?? defaults.media.images.thumbnail.height,
284
- crop: userConfig.media?.images?.thumbnail?.crop ?? defaults.media.images.thumbnail.crop,
314
+ size: {
315
+ width: userConfig.media?.images?.thumbnail?.size?.width ??
316
+ defaults.media.images.thumbnail.size.width,
317
+ height: userConfig.media?.images?.thumbnail?.size?.height ??
318
+ defaults.media.images.thumbnail.size.height,
319
+ fit: userConfig.media?.images?.thumbnail?.size?.fit ??
320
+ defaults.media.images.thumbnail.size.fit,
321
+ },
285
322
  quality: userConfig.media?.images?.thumbnail?.quality ?? defaults.media.images.thumbnail.quality,
286
323
  },
287
324
  watermark: userConfig.media?.images?.watermark ?? defaults.media.images.watermark,
@@ -330,10 +367,21 @@ const defaultConfig = {
330
367
  },
331
368
  images: {
332
369
  background: { r: 0, g: 0, b: 0, alpha: 0 },
370
+ image: {
371
+ size: {
372
+ width: 1200,
373
+ height: 630,
374
+ fit: 'cover',
375
+ strict: false,
376
+ },
377
+ quality: 80,
378
+ },
333
379
  thumbnail: {
334
- width: 200,
335
- height: 200,
336
- crop: false,
380
+ size: {
381
+ width: 200,
382
+ height: 200,
383
+ fit: 'contain',
384
+ },
337
385
  quality: 80,
338
386
  },
339
387
  watermark: false,
@@ -2,29 +2,54 @@ import type { BaseFieldConfig } from './field.js';
2
2
  import { entityKind } from '../helpers/index.js';
3
3
  import * as z from 'zod';
4
4
  import { FileField } from './fileField.js';
5
+ declare const sizeSchema: z.ZodUnion<readonly [z.ZodObject<{
6
+ width: z.ZodNumber;
7
+ height: z.ZodNumber;
8
+ strict: z.ZodLiteral<true>;
9
+ quality: z.ZodOptional<z.ZodNumber>;
10
+ }, z.core.$strict>, z.ZodDiscriminatedUnion<[z.ZodObject<{
11
+ width: z.ZodNumber;
12
+ height: z.ZodNumber;
13
+ fit: z.ZodLiteral<"cover">;
14
+ quality: z.ZodOptional<z.ZodNumber>;
15
+ }, z.core.$strict>, z.ZodObject<{
16
+ width: z.ZodNumber;
17
+ height: z.ZodNumber;
18
+ fit: z.ZodLiteral<"contain">;
19
+ quality: z.ZodOptional<z.ZodNumber>;
20
+ /**
21
+ * Background color for padding.
22
+ * Falls back to CMS config media.images.background if not provided.
23
+ */
24
+ background: z.ZodOptional<z.ZodObject<{
25
+ r: z.ZodNumber;
26
+ g: z.ZodNumber;
27
+ b: z.ZodNumber;
28
+ alpha: z.ZodNumber;
29
+ }, z.core.$strict>>;
30
+ }, z.core.$strict>], "fit">]>;
31
+ type SizeConfig = z.infer<typeof sizeSchema>;
5
32
  declare const configSchema: z.ZodObject<{
6
33
  /** Whether to add watermark to images */
7
34
  watermark: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
8
35
  blurPlaceholder: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
9
- size: z.ZodOptional<z.ZodObject<{
36
+ size: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
10
37
  width: z.ZodNumber;
11
38
  height: z.ZodNumber;
39
+ strict: z.ZodLiteral<true>;
40
+ quality: z.ZodOptional<z.ZodNumber>;
41
+ }, z.core.$strict>, z.ZodDiscriminatedUnion<[z.ZodObject<{
42
+ width: z.ZodNumber;
43
+ height: z.ZodNumber;
44
+ fit: z.ZodLiteral<"cover">;
45
+ quality: z.ZodOptional<z.ZodNumber>;
46
+ }, z.core.$strict>, z.ZodObject<{
47
+ width: z.ZodNumber;
48
+ height: z.ZodNumber;
49
+ fit: z.ZodLiteral<"contain">;
50
+ quality: z.ZodOptional<z.ZodNumber>;
12
51
  /**
13
- * @true The image will not have dimensions constraints,
14
- * and will be cropped to fit the specified dimensions
15
- *
16
- * @false The user will be forced to upload an image with the specified dimensions
17
- *
18
- * @example
19
- * size: {
20
- * width: 1200,
21
- * height: 450,
22
- * crop: true, // No constraints
23
- * }
24
- */
25
- crop: z.ZodBoolean;
26
- /**
27
- * Background color for padding when crop is false.
52
+ * Background color for padding.
28
53
  * Falls back to CMS config media.images.background if not provided.
29
54
  */
30
55
  background: z.ZodOptional<z.ZodObject<{
@@ -33,14 +58,19 @@ declare const configSchema: z.ZodObject<{
33
58
  b: z.ZodNumber;
34
59
  alpha: z.ZodNumber;
35
60
  }, z.core.$strict>>;
36
- }, z.core.$strict>>;
37
- thumbnail: z.ZodOptional<z.ZodObject<{
61
+ }, z.core.$strict>], "fit">]>>;
62
+ thumbnail: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
38
63
  width: z.ZodNumber;
39
64
  height: z.ZodNumber;
40
- crop: z.ZodBoolean;
65
+ fit: z.ZodLiteral<"cover">;
66
+ quality: z.ZodOptional<z.ZodNumber>;
67
+ }, z.core.$strict>, z.ZodObject<{
68
+ width: z.ZodNumber;
69
+ height: z.ZodNumber;
70
+ fit: z.ZodLiteral<"contain">;
41
71
  quality: z.ZodOptional<z.ZodNumber>;
42
72
  /**
43
- * Background color for padding when crop is false.
73
+ * Background color for padding.
44
74
  * Falls back to CMS config media.images.background if not provided.
45
75
  */
46
76
  background: z.ZodOptional<z.ZodObject<{
@@ -49,7 +79,7 @@ declare const configSchema: z.ZodObject<{
49
79
  b: z.ZodNumber;
50
80
  alpha: z.ZodNumber;
51
81
  }, z.core.$strict>>;
52
- }, z.core.$strict>>;
82
+ }, z.core.$strict>], "fit">>;
53
83
  /**
54
84
  * Maximum file size
55
85
  * @example
@@ -90,17 +120,7 @@ export declare class PhotoField extends FileField<'photo', Config> {
90
120
  static readonly [entityKind]: string;
91
121
  readonly watermark: boolean | null | undefined;
92
122
  readonly blurPlaceholder: boolean | null | undefined;
93
- readonly size: {
94
- width: number;
95
- height: number;
96
- crop: boolean;
97
- background?: {
98
- r: number;
99
- g: number;
100
- b: number;
101
- alpha: number;
102
- };
103
- } | undefined;
123
+ readonly size: SizeConfig | undefined;
104
124
  readonly maxFileSize: {
105
125
  size: number;
106
126
  unit: 'kb' | 'mb';
@@ -131,25 +151,41 @@ export declare class PhotoField extends FileField<'photo', Config> {
131
151
  thumbnail: {
132
152
  width: number;
133
153
  height: number;
134
- crop: boolean;
135
- quality?: number;
154
+ fit: "cover";
155
+ quality?: number | undefined;
156
+ } | {
157
+ width: number;
158
+ height: number;
159
+ fit: "contain";
160
+ quality?: number | undefined;
136
161
  background?: {
137
162
  r: number;
138
163
  g: number;
139
164
  b: number;
140
165
  alpha: number;
141
- };
166
+ } | undefined;
142
167
  };
143
168
  size: {
144
169
  width: number;
145
170
  height: number;
146
- crop: boolean;
171
+ fit: "cover";
172
+ quality?: number | undefined;
173
+ } | {
174
+ width: number;
175
+ height: number;
176
+ fit: "contain";
177
+ quality?: number | undefined;
147
178
  background?: {
148
179
  r: number;
149
180
  g: number;
150
181
  b: number;
151
182
  alpha: number;
152
- };
183
+ } | undefined;
184
+ } | {
185
+ width: number;
186
+ height: number;
187
+ strict: true;
188
+ quality?: number | undefined;
153
189
  } | undefined;
154
190
  maxFileSize: {
155
191
  size: number;
@@ -191,25 +227,23 @@ declare const optionsSchema: z.ZodObject<{
191
227
  /** Whether to add watermark to images */
192
228
  watermark: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
193
229
  blurPlaceholder: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
194
- size: z.ZodOptional<z.ZodObject<{
230
+ size: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
195
231
  width: z.ZodNumber;
196
232
  height: z.ZodNumber;
233
+ strict: z.ZodLiteral<true>;
234
+ quality: z.ZodOptional<z.ZodNumber>;
235
+ }, z.core.$strict>, z.ZodDiscriminatedUnion<[z.ZodObject<{
236
+ width: z.ZodNumber;
237
+ height: z.ZodNumber;
238
+ fit: z.ZodLiteral<"cover">;
239
+ quality: z.ZodOptional<z.ZodNumber>;
240
+ }, z.core.$strict>, z.ZodObject<{
241
+ width: z.ZodNumber;
242
+ height: z.ZodNumber;
243
+ fit: z.ZodLiteral<"contain">;
244
+ quality: z.ZodOptional<z.ZodNumber>;
197
245
  /**
198
- * @true The image will not have dimensions constraints,
199
- * and will be cropped to fit the specified dimensions
200
- *
201
- * @false The user will be forced to upload an image with the specified dimensions
202
- *
203
- * @example
204
- * size: {
205
- * width: 1200,
206
- * height: 450,
207
- * crop: true, // No constraints
208
- * }
209
- */
210
- crop: z.ZodBoolean;
211
- /**
212
- * Background color for padding when crop is false.
246
+ * Background color for padding.
213
247
  * Falls back to CMS config media.images.background if not provided.
214
248
  */
215
249
  background: z.ZodOptional<z.ZodObject<{
@@ -218,14 +252,19 @@ declare const optionsSchema: z.ZodObject<{
218
252
  b: z.ZodNumber;
219
253
  alpha: z.ZodNumber;
220
254
  }, z.core.$strict>>;
221
- }, z.core.$strict>>;
222
- thumbnail: z.ZodOptional<z.ZodObject<{
255
+ }, z.core.$strict>], "fit">]>>;
256
+ thumbnail: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
257
+ width: z.ZodNumber;
258
+ height: z.ZodNumber;
259
+ fit: z.ZodLiteral<"cover">;
260
+ quality: z.ZodOptional<z.ZodNumber>;
261
+ }, z.core.$strict>, z.ZodObject<{
223
262
  width: z.ZodNumber;
224
263
  height: z.ZodNumber;
225
- crop: z.ZodBoolean;
264
+ fit: z.ZodLiteral<"contain">;
226
265
  quality: z.ZodOptional<z.ZodNumber>;
227
266
  /**
228
- * Background color for padding when crop is false.
267
+ * Background color for padding.
229
268
  * Falls back to CMS config media.images.background if not provided.
230
269
  */
231
270
  background: z.ZodOptional<z.ZodObject<{
@@ -234,7 +273,7 @@ declare const optionsSchema: z.ZodObject<{
234
273
  b: z.ZodNumber;
235
274
  alpha: z.ZodNumber;
236
275
  }, z.core.$strict>>;
237
- }, z.core.$strict>>;
276
+ }, z.core.$strict>], "fit">>;
238
277
  /**
239
278
  * Maximum file size
240
279
  * @example
@@ -283,25 +322,23 @@ declare const photoFieldConfigSchema: z.ZodObject<{
283
322
  /** Whether to add watermark to images */
284
323
  watermark: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
285
324
  blurPlaceholder: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
286
- size: z.ZodOptional<z.ZodObject<{
325
+ size: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
287
326
  width: z.ZodNumber;
288
327
  height: z.ZodNumber;
328
+ strict: z.ZodLiteral<true>;
329
+ quality: z.ZodOptional<z.ZodNumber>;
330
+ }, z.core.$strict>, z.ZodDiscriminatedUnion<[z.ZodObject<{
331
+ width: z.ZodNumber;
332
+ height: z.ZodNumber;
333
+ fit: z.ZodLiteral<"cover">;
334
+ quality: z.ZodOptional<z.ZodNumber>;
335
+ }, z.core.$strict>, z.ZodObject<{
336
+ width: z.ZodNumber;
337
+ height: z.ZodNumber;
338
+ fit: z.ZodLiteral<"contain">;
339
+ quality: z.ZodOptional<z.ZodNumber>;
289
340
  /**
290
- * @true The image will not have dimensions constraints,
291
- * and will be cropped to fit the specified dimensions
292
- *
293
- * @false The user will be forced to upload an image with the specified dimensions
294
- *
295
- * @example
296
- * size: {
297
- * width: 1200,
298
- * height: 450,
299
- * crop: true, // No constraints
300
- * }
301
- */
302
- crop: z.ZodBoolean;
303
- /**
304
- * Background color for padding when crop is false.
341
+ * Background color for padding.
305
342
  * Falls back to CMS config media.images.background if not provided.
306
343
  */
307
344
  background: z.ZodOptional<z.ZodObject<{
@@ -310,14 +347,19 @@ declare const photoFieldConfigSchema: z.ZodObject<{
310
347
  b: z.ZodNumber;
311
348
  alpha: z.ZodNumber;
312
349
  }, z.core.$strict>>;
313
- }, z.core.$strict>>;
314
- thumbnail: z.ZodOptional<z.ZodObject<{
350
+ }, z.core.$strict>], "fit">]>>;
351
+ thumbnail: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
352
+ width: z.ZodNumber;
353
+ height: z.ZodNumber;
354
+ fit: z.ZodLiteral<"cover">;
355
+ quality: z.ZodOptional<z.ZodNumber>;
356
+ }, z.core.$strict>, z.ZodObject<{
315
357
  width: z.ZodNumber;
316
358
  height: z.ZodNumber;
317
- crop: z.ZodBoolean;
359
+ fit: z.ZodLiteral<"contain">;
318
360
  quality: z.ZodOptional<z.ZodNumber>;
319
361
  /**
320
- * Background color for padding when crop is false.
362
+ * Background color for padding.
321
363
  * Falls back to CMS config media.images.background if not provided.
322
364
  */
323
365
  background: z.ZodOptional<z.ZodObject<{
@@ -326,7 +368,7 @@ declare const photoFieldConfigSchema: z.ZodObject<{
326
368
  b: z.ZodNumber;
327
369
  alpha: z.ZodNumber;
328
370
  }, z.core.$strict>>;
329
- }, z.core.$strict>>;
371
+ }, z.core.$strict>], "fit">>;
330
372
  /**
331
373
  * Maximum file size
332
374
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"photo.d.ts","sourceRoot":"","sources":["../../../src/core/fields/photo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"photo.d.ts","sourceRoot":"","sources":["../../../src/core/fields/photo.ts"],"names":[],"mappings":"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"}