@classytic/commerce-sdk 0.1.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.
Potentially problematic release.
This version of @classytic/commerce-sdk might be problematic. Click here for more details.
- package/LICENSE +14 -0
- package/README.md +104 -0
- package/dist/adjustment-DTSLM7AN.js +5 -0
- package/dist/adjustment-DTSLM7AN.js.map +1 -0
- package/dist/analytics/index.d.ts +27 -0
- package/dist/analytics/index.js +6 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics-DMcD-o8w.d.ts +76 -0
- package/dist/api-factory-B_h4RKBm.d.ts +280 -0
- package/dist/auth/index.d.ts +39 -0
- package/dist/auth/index.js +5 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/catalog/index.d.ts +479 -0
- package/dist/catalog/index.js +9 -0
- package/dist/catalog/index.js.map +1 -0
- package/dist/chunk-4ZQK3FFN.js +40 -0
- package/dist/chunk-4ZQK3FFN.js.map +1 -0
- package/dist/chunk-5L6EXDGH.js +465 -0
- package/dist/chunk-5L6EXDGH.js.map +1 -0
- package/dist/chunk-5ZFW3FEI.js +183 -0
- package/dist/chunk-5ZFW3FEI.js.map +1 -0
- package/dist/chunk-66OQAZSL.js +94 -0
- package/dist/chunk-66OQAZSL.js.map +1 -0
- package/dist/chunk-6RYGA6MF.js +123 -0
- package/dist/chunk-6RYGA6MF.js.map +1 -0
- package/dist/chunk-B6MPVOV7.js +328 -0
- package/dist/chunk-B6MPVOV7.js.map +1 -0
- package/dist/chunk-BDA2WSJA.js +148 -0
- package/dist/chunk-BDA2WSJA.js.map +1 -0
- package/dist/chunk-EIVYT3HM.js +126 -0
- package/dist/chunk-EIVYT3HM.js.map +1 -0
- package/dist/chunk-EPQN7ZKZ.js +27 -0
- package/dist/chunk-EPQN7ZKZ.js.map +1 -0
- package/dist/chunk-FA7QFJ2G.js +177 -0
- package/dist/chunk-FA7QFJ2G.js.map +1 -0
- package/dist/chunk-I5TIKUIQ.js +261 -0
- package/dist/chunk-I5TIKUIQ.js.map +1 -0
- package/dist/chunk-ILQUH444.js +135 -0
- package/dist/chunk-ILQUH444.js.map +1 -0
- package/dist/chunk-IXMWZJLV.js +616 -0
- package/dist/chunk-IXMWZJLV.js.map +1 -0
- package/dist/chunk-KZIGRIQG.js +75 -0
- package/dist/chunk-KZIGRIQG.js.map +1 -0
- package/dist/chunk-OF5M6R2S.js +769 -0
- package/dist/chunk-OF5M6R2S.js.map +1 -0
- package/dist/chunk-PYYLHUV6.js +3 -0
- package/dist/chunk-PYYLHUV6.js.map +1 -0
- package/dist/chunk-QO5AGZFP.js +159 -0
- package/dist/chunk-QO5AGZFP.js.map +1 -0
- package/dist/chunk-QUMTBLNE.js +76 -0
- package/dist/chunk-QUMTBLNE.js.map +1 -0
- package/dist/chunk-R5Z7NYLH.js +126 -0
- package/dist/chunk-R5Z7NYLH.js.map +1 -0
- package/dist/chunk-SZYWG5IB.js +75 -0
- package/dist/chunk-SZYWG5IB.js.map +1 -0
- package/dist/chunk-U3XT35GZ.js +202 -0
- package/dist/chunk-U3XT35GZ.js.map +1 -0
- package/dist/chunk-UGELTUIZ.js +830 -0
- package/dist/chunk-UGELTUIZ.js.map +1 -0
- package/dist/chunk-VR36QVX2.js +122 -0
- package/dist/chunk-VR36QVX2.js.map +1 -0
- package/dist/chunk-WUOQK7BO.js +13 -0
- package/dist/chunk-WUOQK7BO.js.map +1 -0
- package/dist/chunk-X6PV5MHG.js +582 -0
- package/dist/chunk-X6PV5MHG.js.map +1 -0
- package/dist/chunk-ZWLMFLLH.js +534 -0
- package/dist/chunk-ZWLMFLLH.js.map +1 -0
- package/dist/content/index.d.ts +309 -0
- package/dist/content/index.js +6 -0
- package/dist/content/index.js.map +1 -0
- package/dist/core/index.d.ts +107 -0
- package/dist/core/index.js +5 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/react.d.ts +107 -0
- package/dist/core/react.js +5 -0
- package/dist/core/react.js.map +1 -0
- package/dist/coupon-CHFcw7cd.d.ts +632 -0
- package/dist/coupon-zGkvO-Xx.d.ts +129 -0
- package/dist/crud.factory-DyKaPHcU.d.ts +181 -0
- package/dist/finance/index.d.ts +81 -0
- package/dist/finance/index.js +5 -0
- package/dist/finance/index.js.map +1 -0
- package/dist/finance-BJdfKRw0.d.ts +135 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/inventory/index.d.ts +512 -0
- package/dist/inventory/index.js +16 -0
- package/dist/inventory/index.js.map +1 -0
- package/dist/inventory-DCiIZh8P.d.ts +742 -0
- package/dist/logistics/index.d.ts +226 -0
- package/dist/logistics/index.js +7 -0
- package/dist/logistics/index.js.map +1 -0
- package/dist/logistics-V8a9lUN3.d.ts +428 -0
- package/dist/media-CNLJK93J.d.ts +721 -0
- package/dist/movement-7MV3ADY5.js +5 -0
- package/dist/movement-7MV3ADY5.js.map +1 -0
- package/dist/payment-BRboLqvU.d.ts +127 -0
- package/dist/payments/index.d.ts +55 -0
- package/dist/payments/index.js +6 -0
- package/dist/payments/index.js.map +1 -0
- package/dist/platform/index.d.ts +645 -0
- package/dist/platform/index.js +8 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/pos-D1jkkFl0.d.ts +885 -0
- package/dist/product-p09zXkXB.d.ts +260 -0
- package/dist/purchase-24BGT2HA.js +5 -0
- package/dist/purchase-24BGT2HA.js.map +1 -0
- package/dist/request-652PS6VR.js +5 -0
- package/dist/request-652PS6VR.js.map +1 -0
- package/dist/sales/index.d.ts +585 -0
- package/dist/sales/index.js +9 -0
- package/dist/sales/index.js.map +1 -0
- package/dist/server.d.ts +120 -0
- package/dist/server.js +27 -0
- package/dist/server.js.map +1 -0
- package/dist/size-guide-DgjzjM5P.d.ts +554 -0
- package/dist/stock-DEApGC-w.d.ts +632 -0
- package/dist/stock-OOUW57VQ.js +5 -0
- package/dist/stock-OOUW57VQ.js.map +1 -0
- package/dist/supplier-OC6JAWV6.js +5 -0
- package/dist/supplier-OC6JAWV6.js.map +1 -0
- package/dist/transaction/index.d.ts +104 -0
- package/dist/transaction/index.js +8 -0
- package/dist/transaction/index.js.map +1 -0
- package/dist/transaction-BTmoHpWh.d.ts +428 -0
- package/dist/transaction-u5oaNuav.d.ts +84 -0
- package/dist/transfer-7SYSH3RG.js +5 -0
- package/dist/transfer-7SYSH3RG.js.map +1 -0
- package/dist/user-data-DdLjAGwO.d.ts +132 -0
- package/package.json +146 -0
|
@@ -0,0 +1,721 @@
|
|
|
1
|
+
import { R as RequestOptions, A as ApiResponse, P as PaginatedResponse, D as DeleteResponse } from './api-factory-B_h4RKBm.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* CMS Types - Aligned with lib/cms-data.ts structure
|
|
5
|
+
*/
|
|
6
|
+
type CMSPageStatus = "draft" | "published" | "archived";
|
|
7
|
+
interface CMSMetadata {
|
|
8
|
+
title: string;
|
|
9
|
+
description: string;
|
|
10
|
+
keywords: string[];
|
|
11
|
+
ogImage?: string;
|
|
12
|
+
}
|
|
13
|
+
interface CMSPage<T = Record<string, unknown>> {
|
|
14
|
+
_id?: string;
|
|
15
|
+
name: string;
|
|
16
|
+
slug: string;
|
|
17
|
+
status: CMSPageStatus;
|
|
18
|
+
content: T;
|
|
19
|
+
metadata: CMSMetadata;
|
|
20
|
+
publishedAt?: string;
|
|
21
|
+
createdAt?: string;
|
|
22
|
+
updatedAt?: string;
|
|
23
|
+
}
|
|
24
|
+
interface CMSPagePayload {
|
|
25
|
+
name?: string;
|
|
26
|
+
status?: CMSPageStatus;
|
|
27
|
+
content?: Record<string, unknown>;
|
|
28
|
+
metadata?: Partial<CMSMetadata>;
|
|
29
|
+
}
|
|
30
|
+
interface CTA {
|
|
31
|
+
label: string;
|
|
32
|
+
href: string;
|
|
33
|
+
}
|
|
34
|
+
interface ContactInfo {
|
|
35
|
+
email?: string;
|
|
36
|
+
phone?: string;
|
|
37
|
+
address?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Home Page Content
|
|
41
|
+
*/
|
|
42
|
+
interface HomePageContent {
|
|
43
|
+
hero: {
|
|
44
|
+
badge: string;
|
|
45
|
+
headline: string[];
|
|
46
|
+
highlightedWord?: string;
|
|
47
|
+
description: string;
|
|
48
|
+
primaryCTA: CTA;
|
|
49
|
+
secondaryCTA?: CTA;
|
|
50
|
+
image?: string;
|
|
51
|
+
floatingBadge?: {
|
|
52
|
+
value: string;
|
|
53
|
+
label: string;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
marquee: {
|
|
57
|
+
items: string[];
|
|
58
|
+
};
|
|
59
|
+
brandStory: {
|
|
60
|
+
badge: string;
|
|
61
|
+
headline: string[];
|
|
62
|
+
paragraphs: string[];
|
|
63
|
+
stats: Array<{
|
|
64
|
+
value: string;
|
|
65
|
+
label: string;
|
|
66
|
+
}>;
|
|
67
|
+
images: string[];
|
|
68
|
+
cta: CTA;
|
|
69
|
+
};
|
|
70
|
+
featuredProducts: {
|
|
71
|
+
badge: string;
|
|
72
|
+
headline: string;
|
|
73
|
+
description: string;
|
|
74
|
+
cta: CTA;
|
|
75
|
+
};
|
|
76
|
+
testimonials: {
|
|
77
|
+
badge: string;
|
|
78
|
+
headline: string;
|
|
79
|
+
items: Array<{
|
|
80
|
+
id: number;
|
|
81
|
+
name: string;
|
|
82
|
+
location: string;
|
|
83
|
+
rating: number;
|
|
84
|
+
text: string;
|
|
85
|
+
avatar: string;
|
|
86
|
+
}>;
|
|
87
|
+
};
|
|
88
|
+
instagramFeed: {
|
|
89
|
+
badge: string;
|
|
90
|
+
headline: string;
|
|
91
|
+
description: string;
|
|
92
|
+
images: string[];
|
|
93
|
+
cta: CTA;
|
|
94
|
+
};
|
|
95
|
+
features?: {
|
|
96
|
+
items: Array<{
|
|
97
|
+
icon: string;
|
|
98
|
+
title: string;
|
|
99
|
+
description: string;
|
|
100
|
+
}>;
|
|
101
|
+
};
|
|
102
|
+
promoBanner?: {
|
|
103
|
+
headline: string;
|
|
104
|
+
subheadline: string;
|
|
105
|
+
description: string;
|
|
106
|
+
cta: CTA;
|
|
107
|
+
backgroundImage: string;
|
|
108
|
+
};
|
|
109
|
+
lookbook?: {
|
|
110
|
+
badge: string;
|
|
111
|
+
headline: string;
|
|
112
|
+
description: string;
|
|
113
|
+
items: Array<{
|
|
114
|
+
id: number;
|
|
115
|
+
title: string;
|
|
116
|
+
image: string;
|
|
117
|
+
href: string;
|
|
118
|
+
}>;
|
|
119
|
+
};
|
|
120
|
+
newsletter?: {
|
|
121
|
+
headline: string;
|
|
122
|
+
description: string;
|
|
123
|
+
placeholder: string;
|
|
124
|
+
buttonText: string;
|
|
125
|
+
disclaimer: string;
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Privacy/Terms/Cookies Page Content (Text pages with sections)
|
|
130
|
+
*/
|
|
131
|
+
interface PolicyPageContent {
|
|
132
|
+
title: string;
|
|
133
|
+
lastUpdated: string;
|
|
134
|
+
intro?: string;
|
|
135
|
+
sections: Array<{
|
|
136
|
+
title: string;
|
|
137
|
+
content?: string;
|
|
138
|
+
list?: string[];
|
|
139
|
+
subsections?: Array<{
|
|
140
|
+
title: string;
|
|
141
|
+
content: string;
|
|
142
|
+
}>;
|
|
143
|
+
contact?: ContactInfo;
|
|
144
|
+
}>;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Returns Page Content
|
|
148
|
+
*/
|
|
149
|
+
interface ReturnsPageContent {
|
|
150
|
+
title: string;
|
|
151
|
+
subtitle: string;
|
|
152
|
+
steps: Array<{
|
|
153
|
+
icon: string;
|
|
154
|
+
title: string;
|
|
155
|
+
description: string;
|
|
156
|
+
}>;
|
|
157
|
+
sections: Array<{
|
|
158
|
+
type: "policy" | "grid" | "text";
|
|
159
|
+
title: string;
|
|
160
|
+
highlight?: {
|
|
161
|
+
title: string;
|
|
162
|
+
content: string;
|
|
163
|
+
};
|
|
164
|
+
columns?: Array<{
|
|
165
|
+
title: string;
|
|
166
|
+
variant: "success" | "destructive";
|
|
167
|
+
items: string[];
|
|
168
|
+
}>;
|
|
169
|
+
content?: string;
|
|
170
|
+
paragraphs?: Array<string | {
|
|
171
|
+
text: string;
|
|
172
|
+
bold?: boolean;
|
|
173
|
+
suffix?: string;
|
|
174
|
+
}>;
|
|
175
|
+
list?: string[];
|
|
176
|
+
footer?: string;
|
|
177
|
+
}>;
|
|
178
|
+
contactSection: {
|
|
179
|
+
title: string;
|
|
180
|
+
content: string;
|
|
181
|
+
email: string;
|
|
182
|
+
phone: string;
|
|
183
|
+
hours: string;
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* FAQ Page Content
|
|
188
|
+
*/
|
|
189
|
+
interface FAQPageContent {
|
|
190
|
+
title: string;
|
|
191
|
+
subtitle: string;
|
|
192
|
+
categories: Array<{
|
|
193
|
+
title: string;
|
|
194
|
+
items: Array<{
|
|
195
|
+
question: string;
|
|
196
|
+
answer: string;
|
|
197
|
+
}>;
|
|
198
|
+
}>;
|
|
199
|
+
contactSection: {
|
|
200
|
+
title: string;
|
|
201
|
+
description: string;
|
|
202
|
+
email: string;
|
|
203
|
+
phone: string;
|
|
204
|
+
hours: string;
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* About Page Content
|
|
209
|
+
*/
|
|
210
|
+
interface AboutPageContent {
|
|
211
|
+
hero: {
|
|
212
|
+
badge: string;
|
|
213
|
+
headline: string;
|
|
214
|
+
description: string;
|
|
215
|
+
image: string;
|
|
216
|
+
};
|
|
217
|
+
story: {
|
|
218
|
+
title: string;
|
|
219
|
+
paragraphs: string[];
|
|
220
|
+
};
|
|
221
|
+
values: {
|
|
222
|
+
title: string;
|
|
223
|
+
items: Array<{
|
|
224
|
+
icon: string;
|
|
225
|
+
title: string;
|
|
226
|
+
description: string;
|
|
227
|
+
}>;
|
|
228
|
+
};
|
|
229
|
+
stats: Array<{
|
|
230
|
+
value: string;
|
|
231
|
+
label: string;
|
|
232
|
+
}>;
|
|
233
|
+
team: {
|
|
234
|
+
title: string;
|
|
235
|
+
description: string;
|
|
236
|
+
members: Array<{
|
|
237
|
+
name: string;
|
|
238
|
+
role: string;
|
|
239
|
+
image: string;
|
|
240
|
+
bio: string;
|
|
241
|
+
}>;
|
|
242
|
+
};
|
|
243
|
+
cta: {
|
|
244
|
+
title: string;
|
|
245
|
+
description: string;
|
|
246
|
+
buttonText: string;
|
|
247
|
+
buttonLink: string;
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Contact Page Content
|
|
252
|
+
* Note: contactInfo icons are static (MapPin, Phone, Mail) - no icon field needed
|
|
253
|
+
*/
|
|
254
|
+
interface ContactPageContent {
|
|
255
|
+
title: string;
|
|
256
|
+
subtitle: string;
|
|
257
|
+
contactInfo: Array<{
|
|
258
|
+
title: string;
|
|
259
|
+
lines: string[];
|
|
260
|
+
}>;
|
|
261
|
+
form: {
|
|
262
|
+
title: string;
|
|
263
|
+
description: string;
|
|
264
|
+
fields: Array<{
|
|
265
|
+
name: string;
|
|
266
|
+
label: string;
|
|
267
|
+
type: string;
|
|
268
|
+
placeholder?: string;
|
|
269
|
+
required: boolean;
|
|
270
|
+
options?: string[];
|
|
271
|
+
}>;
|
|
272
|
+
submitText: string;
|
|
273
|
+
};
|
|
274
|
+
faq?: {
|
|
275
|
+
title: string;
|
|
276
|
+
description: string;
|
|
277
|
+
link: string;
|
|
278
|
+
linkText: string;
|
|
279
|
+
};
|
|
280
|
+
socialTitle?: string;
|
|
281
|
+
socials: Array<{
|
|
282
|
+
platform: string;
|
|
283
|
+
handle: string;
|
|
284
|
+
url: string;
|
|
285
|
+
}>;
|
|
286
|
+
map?: {
|
|
287
|
+
title: string;
|
|
288
|
+
embedUrl: string;
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Size Guide Page Content
|
|
293
|
+
*/
|
|
294
|
+
interface SizeGuidePageContent {
|
|
295
|
+
title: string;
|
|
296
|
+
subtitle: string;
|
|
297
|
+
howToMeasure: {
|
|
298
|
+
title: string;
|
|
299
|
+
description: string;
|
|
300
|
+
measurements: Array<{
|
|
301
|
+
name: string;
|
|
302
|
+
icon: string;
|
|
303
|
+
instruction: string;
|
|
304
|
+
}>;
|
|
305
|
+
};
|
|
306
|
+
sizeTables: Array<{
|
|
307
|
+
category: string;
|
|
308
|
+
description: string;
|
|
309
|
+
headers: string[];
|
|
310
|
+
rows: string[][];
|
|
311
|
+
}>;
|
|
312
|
+
fitTypes: {
|
|
313
|
+
title: string;
|
|
314
|
+
types: Array<{
|
|
315
|
+
name: string;
|
|
316
|
+
description: string;
|
|
317
|
+
recommendation: string;
|
|
318
|
+
}>;
|
|
319
|
+
};
|
|
320
|
+
tips: {
|
|
321
|
+
title: string;
|
|
322
|
+
items: string[];
|
|
323
|
+
};
|
|
324
|
+
helpSection: {
|
|
325
|
+
title: string;
|
|
326
|
+
description: string;
|
|
327
|
+
email: string;
|
|
328
|
+
phone: string;
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Shipping & Delivery Page Content
|
|
333
|
+
*/
|
|
334
|
+
interface ShippingPageContent {
|
|
335
|
+
title: string;
|
|
336
|
+
subtitle: string;
|
|
337
|
+
deliveryMethods: Array<{
|
|
338
|
+
icon: string;
|
|
339
|
+
name: string;
|
|
340
|
+
duration: string;
|
|
341
|
+
price: string;
|
|
342
|
+
description: string;
|
|
343
|
+
}>;
|
|
344
|
+
deliveryAreas: {
|
|
345
|
+
title: string;
|
|
346
|
+
areas: Array<{
|
|
347
|
+
name: string;
|
|
348
|
+
duration: string;
|
|
349
|
+
cost: string;
|
|
350
|
+
}>;
|
|
351
|
+
};
|
|
352
|
+
orderTracking: {
|
|
353
|
+
title: string;
|
|
354
|
+
description: string;
|
|
355
|
+
steps: Array<{
|
|
356
|
+
title: string;
|
|
357
|
+
description: string;
|
|
358
|
+
}>;
|
|
359
|
+
};
|
|
360
|
+
policies: Array<{
|
|
361
|
+
title: string;
|
|
362
|
+
content: string;
|
|
363
|
+
list?: string[];
|
|
364
|
+
}>;
|
|
365
|
+
faq: Array<{
|
|
366
|
+
question: string;
|
|
367
|
+
answer: string;
|
|
368
|
+
}>;
|
|
369
|
+
contactSection: {
|
|
370
|
+
title: string;
|
|
371
|
+
description: string;
|
|
372
|
+
email: string;
|
|
373
|
+
phone: string;
|
|
374
|
+
hours: string;
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
type CMSContentBySlug = {
|
|
378
|
+
home: HomePageContent;
|
|
379
|
+
"privacy-policy": PolicyPageContent;
|
|
380
|
+
"terms-conditions": PolicyPageContent;
|
|
381
|
+
cookies: PolicyPageContent;
|
|
382
|
+
"returns-refunds": ReturnsPageContent;
|
|
383
|
+
faqs: FAQPageContent;
|
|
384
|
+
"about-us": AboutPageContent;
|
|
385
|
+
contact: ContactPageContent;
|
|
386
|
+
"size-guide": SizeGuidePageContent;
|
|
387
|
+
"shipping-delivery": ShippingPageContent;
|
|
388
|
+
};
|
|
389
|
+
type CMSSlug = keyof CMSContentBySlug;
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* CMS API - Slug-based content management
|
|
393
|
+
*
|
|
394
|
+
* Two endpoints only:
|
|
395
|
+
* - GET /api/v1/cms/:slug - Fetch page (public)
|
|
396
|
+
* - PATCH /api/v1/cms/:slug - Update page (admin, auto-creates if missing)
|
|
397
|
+
*/
|
|
398
|
+
|
|
399
|
+
/**
|
|
400
|
+
* Get CMS page by slug (public)
|
|
401
|
+
* Returns page data or null if not found
|
|
402
|
+
* Gracefully handles 404 errors by returning null instead of throwing
|
|
403
|
+
*/
|
|
404
|
+
declare function getCmsPage({ slug, options, }: {
|
|
405
|
+
slug: string;
|
|
406
|
+
options?: RequestOptions;
|
|
407
|
+
}): Promise<ApiResponse<CMSPage | null>>;
|
|
408
|
+
/**
|
|
409
|
+
* Update CMS page by slug (admin)
|
|
410
|
+
* Backend auto-creates if page doesn't exist
|
|
411
|
+
*/
|
|
412
|
+
declare function updateCmsPage({ slug, token, data, options, }: {
|
|
413
|
+
slug: string;
|
|
414
|
+
token: string;
|
|
415
|
+
data: CMSPagePayload;
|
|
416
|
+
options?: RequestOptions;
|
|
417
|
+
}): Promise<ApiResponse<CMSPage>>;
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* Media Types
|
|
421
|
+
* Simple types for media upload, management, and retrieval
|
|
422
|
+
*/
|
|
423
|
+
/**
|
|
424
|
+
* Allowed media folders
|
|
425
|
+
*/
|
|
426
|
+
type MediaFolder = "general" | "products" | "categories" | "blog" | "users" | "banners" | "brands";
|
|
427
|
+
/**
|
|
428
|
+
* Image variant names (auto-generated on upload)
|
|
429
|
+
* - thumbnail: 150x200 (for grids, lists)
|
|
430
|
+
* - medium: 600x800 (for detail views)
|
|
431
|
+
*/
|
|
432
|
+
type VariantName = "thumbnail" | "medium";
|
|
433
|
+
/**
|
|
434
|
+
* Image dimensions
|
|
435
|
+
*/
|
|
436
|
+
interface MediaDimensions {
|
|
437
|
+
width: number;
|
|
438
|
+
height: number;
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Image variant (resized version)
|
|
442
|
+
*/
|
|
443
|
+
interface MediaVariant {
|
|
444
|
+
name: VariantName;
|
|
445
|
+
url: string;
|
|
446
|
+
width: number;
|
|
447
|
+
height: number;
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* Media document (image file with metadata)
|
|
451
|
+
*/
|
|
452
|
+
interface Media {
|
|
453
|
+
_id: string;
|
|
454
|
+
url: string;
|
|
455
|
+
filename: string;
|
|
456
|
+
folder: MediaFolder;
|
|
457
|
+
alt?: string;
|
|
458
|
+
title?: string;
|
|
459
|
+
size: number;
|
|
460
|
+
dimensions: MediaDimensions;
|
|
461
|
+
variants?: MediaVariant[];
|
|
462
|
+
contentType?: string;
|
|
463
|
+
createdAt: string;
|
|
464
|
+
updatedAt?: string;
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Upload single file payload
|
|
468
|
+
*/
|
|
469
|
+
interface UploadPayload {
|
|
470
|
+
file: File | Blob;
|
|
471
|
+
folder?: MediaFolder;
|
|
472
|
+
alt?: string;
|
|
473
|
+
title?: string;
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Upload multiple files payload
|
|
477
|
+
*/
|
|
478
|
+
interface UploadMultiplePayload {
|
|
479
|
+
files: (File | Blob)[];
|
|
480
|
+
folder?: MediaFolder;
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Update media payload
|
|
484
|
+
*/
|
|
485
|
+
interface UpdateMediaPayload {
|
|
486
|
+
alt?: string;
|
|
487
|
+
title?: string;
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Bulk delete payload
|
|
491
|
+
*/
|
|
492
|
+
interface BulkDeletePayload {
|
|
493
|
+
ids: string[];
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Move files payload
|
|
497
|
+
*/
|
|
498
|
+
interface MoveFilesPayload {
|
|
499
|
+
ids: string[];
|
|
500
|
+
targetFolder: MediaFolder;
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* Query parameters for media listing
|
|
504
|
+
*/
|
|
505
|
+
interface MediaQueryParams {
|
|
506
|
+
page?: number;
|
|
507
|
+
limit?: number;
|
|
508
|
+
folder?: MediaFolder;
|
|
509
|
+
search?: string;
|
|
510
|
+
sort?: string;
|
|
511
|
+
}
|
|
512
|
+
/**
|
|
513
|
+
* Bulk delete result
|
|
514
|
+
*/
|
|
515
|
+
interface BulkDeleteResult {
|
|
516
|
+
success: string[];
|
|
517
|
+
failed: string[];
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Move files result
|
|
521
|
+
*/
|
|
522
|
+
interface MoveFilesResult {
|
|
523
|
+
modifiedCount: number;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
type FetchOptions = Omit<RequestOptions, "token" | "organizationId">;
|
|
527
|
+
/**
|
|
528
|
+
* Media API - Image upload and management
|
|
529
|
+
*
|
|
530
|
+
* Endpoints:
|
|
531
|
+
* - POST /api/media/upload (single file upload)
|
|
532
|
+
* - POST /api/media/upload-multiple (multiple files)
|
|
533
|
+
* - GET /api/media (list with filters)
|
|
534
|
+
* - GET /api/media/:id (get single)
|
|
535
|
+
* - PATCH /api/media/:id (update alt/title)
|
|
536
|
+
* - DELETE /api/media/:id (delete single)
|
|
537
|
+
* - GET /api/media/folders (get allowed folders)
|
|
538
|
+
*
|
|
539
|
+
* Features:
|
|
540
|
+
* - Auto WebP conversion
|
|
541
|
+
* - Auto variants: thumbnail (150x200), medium (600x800)
|
|
542
|
+
* - Max size: 50MB
|
|
543
|
+
* - S3 storage with CDN
|
|
544
|
+
*
|
|
545
|
+
* Usage Examples:
|
|
546
|
+
* - mediaApi.upload({ token: 'xxx', file, folder: 'products' })
|
|
547
|
+
* - mediaApi.getAll({ params: { folder: 'products', limit: 20 }})
|
|
548
|
+
* - mediaApi.update({ token: 'xxx', id: '123', data: { alt: 'New alt' }})
|
|
549
|
+
* - mediaApi.delete({ token: 'xxx', id: '123' })
|
|
550
|
+
*/
|
|
551
|
+
declare class MediaApi {
|
|
552
|
+
private readonly baseUrl;
|
|
553
|
+
private readonly defaultCache;
|
|
554
|
+
constructor(config?: {
|
|
555
|
+
basePath?: string;
|
|
556
|
+
cache?: RequestCache;
|
|
557
|
+
});
|
|
558
|
+
/**
|
|
559
|
+
* Upload single file
|
|
560
|
+
* POST /api/media/upload
|
|
561
|
+
*
|
|
562
|
+
* @example
|
|
563
|
+
* const file = event.target.files[0];
|
|
564
|
+
* const result = await mediaApi.upload({
|
|
565
|
+
* token: 'xxx',
|
|
566
|
+
* file,
|
|
567
|
+
* folder: 'products',
|
|
568
|
+
* alt: 'Product image'
|
|
569
|
+
* });
|
|
570
|
+
*/
|
|
571
|
+
upload({ token, file, folder, alt, title, options, }: {
|
|
572
|
+
token: string;
|
|
573
|
+
file: File | Blob;
|
|
574
|
+
folder?: MediaFolder;
|
|
575
|
+
alt?: string;
|
|
576
|
+
title?: string;
|
|
577
|
+
options?: FetchOptions;
|
|
578
|
+
}): Promise<ApiResponse<Media>>;
|
|
579
|
+
/**
|
|
580
|
+
* Upload multiple files (max 20)
|
|
581
|
+
* POST /api/media/upload-multiple
|
|
582
|
+
*
|
|
583
|
+
* @example
|
|
584
|
+
* const files = Array.from(event.target.files);
|
|
585
|
+
* const result = await mediaApi.uploadMultiple({
|
|
586
|
+
* token: 'xxx',
|
|
587
|
+
* files,
|
|
588
|
+
* folder: 'products'
|
|
589
|
+
* });
|
|
590
|
+
*/
|
|
591
|
+
uploadMultiple({ token, files, folder, options, }: {
|
|
592
|
+
token: string;
|
|
593
|
+
files: (File | Blob)[];
|
|
594
|
+
folder?: MediaFolder;
|
|
595
|
+
options?: FetchOptions;
|
|
596
|
+
}): Promise<ApiResponse<Media[]>>;
|
|
597
|
+
/**
|
|
598
|
+
* Get all media with filtering
|
|
599
|
+
* GET /api/media
|
|
600
|
+
*
|
|
601
|
+
* @example
|
|
602
|
+
* const result = await mediaApi.getAll({
|
|
603
|
+
* token: 'xxx',
|
|
604
|
+
* params: {
|
|
605
|
+
* folder: 'products',
|
|
606
|
+
* search: 'shirt',
|
|
607
|
+
* limit: 20,
|
|
608
|
+
* sort: '-createdAt'
|
|
609
|
+
* }
|
|
610
|
+
* });
|
|
611
|
+
*/
|
|
612
|
+
getAll({ token, params, options, }?: {
|
|
613
|
+
token: string;
|
|
614
|
+
params?: MediaQueryParams;
|
|
615
|
+
options?: FetchOptions;
|
|
616
|
+
}): Promise<PaginatedResponse<Media>>;
|
|
617
|
+
/**
|
|
618
|
+
* Get single media by ID
|
|
619
|
+
* GET /api/media/:id
|
|
620
|
+
*
|
|
621
|
+
* @example
|
|
622
|
+
* const result = await mediaApi.getById({ token: 'xxx', id: '123abc' });
|
|
623
|
+
*/
|
|
624
|
+
getById({ token, id, options, }: {
|
|
625
|
+
token: string;
|
|
626
|
+
id: string;
|
|
627
|
+
options?: FetchOptions;
|
|
628
|
+
}): Promise<ApiResponse<Media>>;
|
|
629
|
+
/**
|
|
630
|
+
* Update media metadata (alt, title)
|
|
631
|
+
* PATCH /api/media/:id
|
|
632
|
+
*
|
|
633
|
+
* @example
|
|
634
|
+
* await mediaApi.update({
|
|
635
|
+
* token: 'xxx',
|
|
636
|
+
* id: '123',
|
|
637
|
+
* data: { alt: 'New alt text', title: 'New title' }
|
|
638
|
+
* });
|
|
639
|
+
*/
|
|
640
|
+
update({ token, id, data, options, }: {
|
|
641
|
+
token: string;
|
|
642
|
+
id: string;
|
|
643
|
+
data: UpdateMediaPayload;
|
|
644
|
+
options?: FetchOptions;
|
|
645
|
+
}): Promise<ApiResponse<Media>>;
|
|
646
|
+
/**
|
|
647
|
+
* Delete single media
|
|
648
|
+
* DELETE /api/media/:id
|
|
649
|
+
*
|
|
650
|
+
* @example
|
|
651
|
+
* await mediaApi.delete({ token: 'xxx', id: '123' });
|
|
652
|
+
*/
|
|
653
|
+
delete({ token, id, options, }: {
|
|
654
|
+
token: string;
|
|
655
|
+
id: string;
|
|
656
|
+
options?: FetchOptions;
|
|
657
|
+
}): Promise<DeleteResponse>;
|
|
658
|
+
/**
|
|
659
|
+
* Bulk delete multiple files
|
|
660
|
+
* POST /api/media/bulk-delete
|
|
661
|
+
*
|
|
662
|
+
* @example
|
|
663
|
+
* await mediaApi.bulkDelete({
|
|
664
|
+
* token: 'xxx',
|
|
665
|
+
* ids: ['123', '456', '789']
|
|
666
|
+
* });
|
|
667
|
+
*/
|
|
668
|
+
bulkDelete({ token, ids, options, }: {
|
|
669
|
+
token: string;
|
|
670
|
+
ids: string[];
|
|
671
|
+
options?: FetchOptions;
|
|
672
|
+
}): Promise<ApiResponse<BulkDeleteResult>>;
|
|
673
|
+
/**
|
|
674
|
+
* Move files to different folder
|
|
675
|
+
* POST /api/media/move
|
|
676
|
+
*
|
|
677
|
+
* @example
|
|
678
|
+
* await mediaApi.moveToFolder({
|
|
679
|
+
* token: 'xxx',
|
|
680
|
+
* ids: ['123', '456'],
|
|
681
|
+
* targetFolder: 'banners'
|
|
682
|
+
* });
|
|
683
|
+
*/
|
|
684
|
+
moveToFolder({ token, data, options, }: {
|
|
685
|
+
token: string;
|
|
686
|
+
data: MoveFilesPayload;
|
|
687
|
+
options?: FetchOptions;
|
|
688
|
+
}): Promise<ApiResponse<MoveFilesResult>>;
|
|
689
|
+
/**
|
|
690
|
+
* Get allowed folders
|
|
691
|
+
* GET /api/media/folders
|
|
692
|
+
*
|
|
693
|
+
* @example
|
|
694
|
+
* const result = await mediaApi.getFolders({ token: 'xxx' });
|
|
695
|
+
* // result.data = ['general', 'products', 'categories', ...]
|
|
696
|
+
*/
|
|
697
|
+
getFolders({ token, options, }: {
|
|
698
|
+
token: string;
|
|
699
|
+
options?: FetchOptions;
|
|
700
|
+
}): Promise<ApiResponse<MediaFolder[]>>;
|
|
701
|
+
/**
|
|
702
|
+
* Helper: Get variant URL by name
|
|
703
|
+
* Falls back to original URL if variant not found
|
|
704
|
+
*
|
|
705
|
+
* @example
|
|
706
|
+
* const thumbnailUrl = mediaApi.getVariantUrl(media, 'thumbnail');
|
|
707
|
+
* <img src={thumbnailUrl} />
|
|
708
|
+
*/
|
|
709
|
+
getVariantUrl(media: Media, variantName: string): string;
|
|
710
|
+
/**
|
|
711
|
+
* Helper: Get thumbnail URL
|
|
712
|
+
*/
|
|
713
|
+
getThumbnailUrl(media: Media): string;
|
|
714
|
+
/**
|
|
715
|
+
* Helper: Get medium URL
|
|
716
|
+
*/
|
|
717
|
+
getMediumUrl(media: Media): string;
|
|
718
|
+
}
|
|
719
|
+
declare const mediaApi: MediaApi;
|
|
720
|
+
|
|
721
|
+
export { type AboutPageContent as A, type BulkDeletePayload as B, type CMSPageStatus as C, type FAQPageContent as F, type HomePageContent as H, MediaApi as M, type PolicyPageContent as P, type ReturnsPageContent as R, type SizeGuidePageContent as S, type UploadPayload as U, type VariantName as V, type CMSMetadata as a, type CMSPage as b, type CMSPagePayload as c, type ContactPageContent as d, type ShippingPageContent as e, type CMSContentBySlug as f, getCmsPage as g, type CMSSlug as h, type MediaFolder as i, type MediaDimensions as j, type MediaVariant as k, type Media as l, mediaApi as m, type UploadMultiplePayload as n, type UpdateMediaPayload as o, type MoveFilesPayload as p, type MediaQueryParams as q, type BulkDeleteResult as r, type MoveFilesResult as s, updateCmsPage as u };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"movement-7MV3ADY5.js"}
|