@crayonscodetech/cms-sdk 1.0.8 → 1.0.9
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/README.md +157 -26
- package/dist/index.cjs +294 -192
- package/dist/index.d.cts +141 -40
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +141 -40
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +291 -168
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -19
package/dist/index.cjs
CHANGED
|
@@ -1,29 +1,4 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
//#region \0rolldown/runtime.js
|
|
3
|
-
var __create = Object.create;
|
|
4
|
-
var __defProp = Object.defineProperty;
|
|
5
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
11
|
-
key = keys[i];
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
13
|
-
get: ((k) => from[k]).bind(null, key),
|
|
14
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
|
|
20
|
-
value: mod,
|
|
21
|
-
enumerable: true
|
|
22
|
-
}) : target, mod));
|
|
23
|
-
//#endregion
|
|
24
|
-
let react = require("react");
|
|
25
|
-
react = __toESM(react, 1);
|
|
26
|
-
let lucide_react = require("lucide-react");
|
|
27
2
|
//#region src/constants/pageTypes.ts
|
|
28
3
|
const pageTypes = [
|
|
29
4
|
"home",
|
|
@@ -106,6 +81,21 @@ const MEDIA = {
|
|
|
106
81
|
MAX_IMAGE_SIZE: 5242880
|
|
107
82
|
};
|
|
108
83
|
//#endregion
|
|
84
|
+
//#region src/types/contact.ts
|
|
85
|
+
/** Attachment caps enforced by the API; mirrored here to fail fast client-side. */
|
|
86
|
+
const MAX_CONTACT_ATTACHMENTS = 3;
|
|
87
|
+
const MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES = 4194304;
|
|
88
|
+
const CONTACT_ATTACHMENT_MIME_ALLOWLIST = [
|
|
89
|
+
"application/pdf",
|
|
90
|
+
"image/png",
|
|
91
|
+
"image/jpeg",
|
|
92
|
+
"image/webp",
|
|
93
|
+
"image/gif",
|
|
94
|
+
"text/plain",
|
|
95
|
+
"application/msword",
|
|
96
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
|
|
97
|
+
];
|
|
98
|
+
//#endregion
|
|
109
99
|
//#region src/core/client.ts
|
|
110
100
|
var CmsError = class extends Error {
|
|
111
101
|
message;
|
|
@@ -122,9 +112,9 @@ var CmsError = class extends Error {
|
|
|
122
112
|
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
123
113
|
function createCmsClient(config) {
|
|
124
114
|
const { baseUrl, defaultOptions = {} } = config;
|
|
125
|
-
async function cmsFetch(endpoint, options = {}
|
|
115
|
+
async function cmsFetch(endpoint, options = {}) {
|
|
126
116
|
const url = `${baseUrl}${endpoint}`;
|
|
127
|
-
const { revalidate = CACHE.NO_CACHE, tags, ...rest } = {
|
|
117
|
+
const { revalidate = CACHE.NO_CACHE, tags, retries = 1, ...rest } = {
|
|
128
118
|
...defaultOptions,
|
|
129
119
|
...options
|
|
130
120
|
};
|
|
@@ -135,12 +125,9 @@ function createCmsClient(config) {
|
|
|
135
125
|
...tags && { tags }
|
|
136
126
|
}
|
|
137
127
|
};
|
|
138
|
-
let lastError = null;
|
|
139
128
|
for (let attempt = 0; attempt <= retries; attempt++) try {
|
|
140
129
|
const response = await fetch(url, fetchConfig);
|
|
141
130
|
if (!response.ok) {
|
|
142
|
-
const errorMsg = `API request failed: ${response.status} ${url}`;
|
|
143
|
-
console.error(errorMsg);
|
|
144
131
|
if (attempt < retries && [
|
|
145
132
|
502,
|
|
146
133
|
503,
|
|
@@ -149,32 +136,29 @@ function createCmsClient(config) {
|
|
|
149
136
|
await sleep(Math.pow(2, attempt) * 1e3);
|
|
150
137
|
continue;
|
|
151
138
|
}
|
|
152
|
-
|
|
139
|
+
let errorMsg = `API request failed: ${response.status} ${url}`;
|
|
140
|
+
try {
|
|
141
|
+
const body = await response.json();
|
|
142
|
+
if (body?.message) errorMsg = body.message;
|
|
143
|
+
} catch {}
|
|
144
|
+
throw new CmsError(errorMsg, response.status, url);
|
|
153
145
|
}
|
|
154
146
|
if (response.status === 204) return null;
|
|
155
147
|
const result = await response.json();
|
|
156
148
|
return result.data ?? result;
|
|
157
149
|
} catch (error) {
|
|
158
|
-
|
|
159
|
-
console.error(`API request error (attempt ${attempt + 1}/${retries + 1}): ${url}`, lastError);
|
|
150
|
+
if (error instanceof CmsError) throw error;
|
|
160
151
|
if (attempt < retries) {
|
|
161
152
|
await sleep(Math.pow(2, attempt) * 1e3);
|
|
162
153
|
continue;
|
|
163
154
|
}
|
|
155
|
+
throw new CmsError(`Request failed: ${error instanceof Error ? error.message : String(error)}`, void 0, url);
|
|
164
156
|
}
|
|
165
|
-
|
|
166
|
-
}
|
|
167
|
-
async function cmsFetchPaginated(endpoint, options = {}
|
|
168
|
-
const emptyResponse = {
|
|
169
|
-
data: [],
|
|
170
|
-
pagination: {
|
|
171
|
-
page: 1,
|
|
172
|
-
limit: PAGINATION.DEFAULT_LIMIT,
|
|
173
|
-
total: 0
|
|
174
|
-
}
|
|
175
|
-
};
|
|
157
|
+
throw new CmsError(`Request failed after ${retries + 1} attempts`, void 0, url);
|
|
158
|
+
}
|
|
159
|
+
async function cmsFetchPaginated(endpoint, options = {}) {
|
|
176
160
|
const url = `${baseUrl}${endpoint}`;
|
|
177
|
-
const { revalidate = CACHE.NO_CACHE, tags, ...rest } = {
|
|
161
|
+
const { revalidate = CACHE.NO_CACHE, tags, retries = 1, ...rest } = {
|
|
178
162
|
...defaultOptions,
|
|
179
163
|
...options
|
|
180
164
|
};
|
|
@@ -188,7 +172,6 @@ function createCmsClient(config) {
|
|
|
188
172
|
for (let attempt = 0; attempt <= retries; attempt++) try {
|
|
189
173
|
const response = await fetch(url, fetchConfig);
|
|
190
174
|
if (!response.ok) {
|
|
191
|
-
console.error(`API request failed: ${response.status} ${url}`);
|
|
192
175
|
if (attempt < retries && [
|
|
193
176
|
502,
|
|
194
177
|
503,
|
|
@@ -197,17 +180,23 @@ function createCmsClient(config) {
|
|
|
197
180
|
await sleep(Math.pow(2, attempt) * 1e3);
|
|
198
181
|
continue;
|
|
199
182
|
}
|
|
200
|
-
|
|
183
|
+
let errorMsg = `API request failed: ${response.status} ${url}`;
|
|
184
|
+
try {
|
|
185
|
+
const body = await response.json();
|
|
186
|
+
if (body?.message) errorMsg = body.message;
|
|
187
|
+
} catch {}
|
|
188
|
+
throw new CmsError(errorMsg, response.status, url);
|
|
201
189
|
}
|
|
202
190
|
return await response.json();
|
|
203
191
|
} catch (error) {
|
|
204
|
-
|
|
192
|
+
if (error instanceof CmsError) throw error;
|
|
205
193
|
if (attempt < retries) {
|
|
206
194
|
await sleep(Math.pow(2, attempt) * 1e3);
|
|
207
195
|
continue;
|
|
208
196
|
}
|
|
197
|
+
throw new CmsError(`Request failed: ${error instanceof Error ? error.message : String(error)}`, void 0, url);
|
|
209
198
|
}
|
|
210
|
-
|
|
199
|
+
throw new CmsError(`Request failed after ${retries + 1} attempts`, void 0, url);
|
|
211
200
|
}
|
|
212
201
|
function buildQueryString(params) {
|
|
213
202
|
const query = new URLSearchParams();
|
|
@@ -249,17 +238,12 @@ function createCmsClient(config) {
|
|
|
249
238
|
});
|
|
250
239
|
}
|
|
251
240
|
async function fetchPageByUrl(siteId, urlPath, options) {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
});
|
|
259
|
-
} catch (error) {
|
|
260
|
-
console.error(`Error in fetchPageByUrl for ${urlPath}:`, error);
|
|
261
|
-
return null;
|
|
262
|
-
}
|
|
241
|
+
const targetUrl = urlPath === "/" || urlPath === "" ? "/" : `/${urlPath.replace(/^\/|\/$/g, "")}`;
|
|
242
|
+
return cmsFetch(`/api/public/cms/${siteId}/page/by-url/?url=${encodeURIComponent(targetUrl)}`, {
|
|
243
|
+
revalidate: CACHE.SHORT,
|
|
244
|
+
tags: ["pages", `page-${targetUrl || "root"}`],
|
|
245
|
+
...options
|
|
246
|
+
});
|
|
263
247
|
}
|
|
264
248
|
function fetchAboutUs(siteId, options) {
|
|
265
249
|
return cmsFetch(`/api/public/cms/${siteId}/about-us/`, {
|
|
@@ -385,14 +369,73 @@ function createCmsClient(config) {
|
|
|
385
369
|
...options
|
|
386
370
|
});
|
|
387
371
|
}
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
372
|
+
/**
|
|
373
|
+
* Public Turnstile settings for the site's contact form.
|
|
374
|
+
*
|
|
375
|
+
* Call this before rendering the form: when `turnstile.enabled` is true the
|
|
376
|
+
* widget must be rendered with `turnstile.site_key` and its token passed to
|
|
377
|
+
* `submitContactForm`, or every submission is rejected.
|
|
378
|
+
*/
|
|
379
|
+
function fetchContactConfig(siteId, options) {
|
|
380
|
+
return cmsFetch(`/api/public/cms/${siteId}/contact-config/`, {
|
|
381
|
+
revalidate: CACHE.SHORT,
|
|
382
|
+
tags: ["contact-config"],
|
|
383
|
+
...options
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Submit the contact form.
|
|
388
|
+
*
|
|
389
|
+
* Unlike the read methods, this THROWS `CmsError` on a rejection rather than
|
|
390
|
+
* returning null — a form needs to tell "captcha failed, reset the widget"
|
|
391
|
+
* (403) apart from "rate limited" (429) and a network blip, and a single
|
|
392
|
+
* `null` cannot carry that. `error.status` holds the HTTP status.
|
|
393
|
+
*
|
|
394
|
+
* Pass `attachments` to send files; the request then goes out as multipart
|
|
395
|
+
* instead of JSON. Caps are enforced server-side and pre-checked here.
|
|
396
|
+
*/
|
|
397
|
+
async function submitContactForm(siteId, payload, attachments, options) {
|
|
398
|
+
const url = `${baseUrl}/api/public/cms/${siteId}/contact/`;
|
|
399
|
+
if (attachments?.length) {
|
|
400
|
+
if (attachments.length > 3) throw new CmsError(`At most 3 attachments are allowed`, 400, url);
|
|
401
|
+
if (attachments.reduce((sum, f) => sum + f.size, 0) > 4194304) throw new CmsError("Attachments exceed the 4 MiB total size limit", 400, url);
|
|
402
|
+
for (const f of attachments) if (!CONTACT_ATTACHMENT_MIME_ALLOWLIST.includes(f.type)) throw new CmsError(`Attachment type not allowed: ${f.type || "unknown"}`, 400, url);
|
|
403
|
+
}
|
|
404
|
+
let body;
|
|
405
|
+
const headers = {};
|
|
406
|
+
if (attachments?.length) {
|
|
407
|
+
const form = new FormData();
|
|
408
|
+
for (const [key, value] of Object.entries(payload)) if (value !== void 0 && value !== null) form.append(key, String(value));
|
|
409
|
+
for (const file of attachments) form.append("attachments", file, file.name);
|
|
410
|
+
body = form;
|
|
411
|
+
} else {
|
|
412
|
+
headers["Content-Type"] = "application/json";
|
|
413
|
+
body = JSON.stringify(payload);
|
|
414
|
+
}
|
|
415
|
+
let response;
|
|
416
|
+
try {
|
|
417
|
+
response = await fetch(url, {
|
|
418
|
+
...options,
|
|
419
|
+
method: "POST",
|
|
420
|
+
headers: {
|
|
421
|
+
...headers,
|
|
422
|
+
...options?.headers
|
|
423
|
+
},
|
|
424
|
+
body
|
|
425
|
+
});
|
|
426
|
+
} catch (error) {
|
|
427
|
+
throw new CmsError(error instanceof Error ? error.message : "Network request failed", void 0, url);
|
|
428
|
+
}
|
|
429
|
+
if (!response.ok) {
|
|
430
|
+
let message = `Request failed with status ${response.status}`;
|
|
431
|
+
try {
|
|
432
|
+
const parsed = await response.json();
|
|
433
|
+
if (parsed?.message) message = parsed.message;
|
|
434
|
+
} catch {}
|
|
435
|
+
throw new CmsError(message, response.status, url);
|
|
436
|
+
}
|
|
437
|
+
const result = await response.json();
|
|
438
|
+
return result.data ?? result;
|
|
396
439
|
}
|
|
397
440
|
function fetchFaqs(siteId, params, options) {
|
|
398
441
|
return cmsFetchPaginated(`/api/public/cms/${siteId}/faqs/?${buildQueryString({
|
|
@@ -433,8 +476,9 @@ function createCmsClient(config) {
|
|
|
433
476
|
referrer
|
|
434
477
|
}),
|
|
435
478
|
revalidate: CACHE.NO_CACHE,
|
|
436
|
-
tags: ["redirects", "redirect-404-logs"]
|
|
437
|
-
|
|
479
|
+
tags: ["redirects", "redirect-404-logs"],
|
|
480
|
+
retries: 0
|
|
481
|
+
});
|
|
438
482
|
}
|
|
439
483
|
function fetchStoreSettings(siteId, options) {
|
|
440
484
|
return cmsFetch(`/api/public/store/${siteId}/settings/`, {
|
|
@@ -514,6 +558,7 @@ function createCmsClient(config) {
|
|
|
514
558
|
headers: { "Content-Type": "application/json" },
|
|
515
559
|
body: JSON.stringify(payload),
|
|
516
560
|
revalidate: CACHE.NO_CACHE,
|
|
561
|
+
retries: 0,
|
|
517
562
|
...options
|
|
518
563
|
});
|
|
519
564
|
}
|
|
@@ -549,6 +594,70 @@ function createCmsClient(config) {
|
|
|
549
594
|
...options
|
|
550
595
|
});
|
|
551
596
|
}
|
|
597
|
+
const SITEMAP_ROUTES = {
|
|
598
|
+
blogs: {
|
|
599
|
+
segment: "blogs",
|
|
600
|
+
store: false
|
|
601
|
+
},
|
|
602
|
+
pages: {
|
|
603
|
+
segment: "pages",
|
|
604
|
+
store: false
|
|
605
|
+
},
|
|
606
|
+
services: {
|
|
607
|
+
segment: "services",
|
|
608
|
+
store: false
|
|
609
|
+
},
|
|
610
|
+
events: {
|
|
611
|
+
segment: "events",
|
|
612
|
+
store: false
|
|
613
|
+
},
|
|
614
|
+
albums: {
|
|
615
|
+
segment: "albums",
|
|
616
|
+
store: false
|
|
617
|
+
},
|
|
618
|
+
"team-members": {
|
|
619
|
+
segment: "team-members",
|
|
620
|
+
store: false
|
|
621
|
+
},
|
|
622
|
+
"team-categories": {
|
|
623
|
+
segment: "team-categories",
|
|
624
|
+
store: false
|
|
625
|
+
},
|
|
626
|
+
"brand-groups": {
|
|
627
|
+
segment: "brand-groups",
|
|
628
|
+
store: false
|
|
629
|
+
},
|
|
630
|
+
products: {
|
|
631
|
+
segment: "products",
|
|
632
|
+
store: true
|
|
633
|
+
},
|
|
634
|
+
collections: {
|
|
635
|
+
segment: "collections",
|
|
636
|
+
store: true
|
|
637
|
+
},
|
|
638
|
+
"product-categories": {
|
|
639
|
+
segment: "categories",
|
|
640
|
+
store: true
|
|
641
|
+
},
|
|
642
|
+
"product-brands": {
|
|
643
|
+
segment: "brands",
|
|
644
|
+
store: true
|
|
645
|
+
}
|
|
646
|
+
};
|
|
647
|
+
/**
|
|
648
|
+
* Fetch any sitemap resource. Returns slug/url, title/name, image (where
|
|
649
|
+
* the content type has one) and `updatedAt` for `lastModified`.
|
|
650
|
+
*/
|
|
651
|
+
function fetchSitemap(siteId, resource, params = {}, options) {
|
|
652
|
+
const { segment, store } = SITEMAP_ROUTES[resource];
|
|
653
|
+
const namespace = store ? "store" : "cms";
|
|
654
|
+
const query = buildQueryString(params);
|
|
655
|
+
return cmsFetchPaginated(`/api/public/${namespace}/${siteId}/sitemap/${segment}/${query ? `?${query}` : ""}`, {
|
|
656
|
+
revalidate: CACHE.STATIC,
|
|
657
|
+
tags: ["sitemap", `sitemap-${resource}`],
|
|
658
|
+
...options
|
|
659
|
+
});
|
|
660
|
+
}
|
|
552
661
|
return {
|
|
553
662
|
LIST_DEFAULT_LIMIT,
|
|
554
663
|
fetchHeader,
|
|
@@ -578,6 +687,7 @@ function createCmsClient(config) {
|
|
|
578
687
|
resolveRedirect,
|
|
579
688
|
reportRedirect404,
|
|
580
689
|
submitContactForm,
|
|
690
|
+
fetchContactConfig,
|
|
581
691
|
fetchStoreSettings,
|
|
582
692
|
fetchProductCategories,
|
|
583
693
|
fetchProductBrands,
|
|
@@ -588,6 +698,7 @@ function createCmsClient(config) {
|
|
|
588
698
|
fetchCollectionDetail,
|
|
589
699
|
fetchCollectionDetailById,
|
|
590
700
|
placeOrder,
|
|
701
|
+
fetchSitemap,
|
|
591
702
|
fetchSitemapBlogs,
|
|
592
703
|
fetchSitemapPages,
|
|
593
704
|
fetchSitemapProducts,
|
|
@@ -598,134 +709,125 @@ function createCmsClient(config) {
|
|
|
598
709
|
};
|
|
599
710
|
}
|
|
600
711
|
//#endregion
|
|
601
|
-
//#region src/
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
Brain: lucide_react.Brain,
|
|
711
|
-
Lightbulb: lucide_react.Lightbulb
|
|
712
|
-
};
|
|
713
|
-
/**
|
|
714
|
-
* Dynamic Icon component that renders Lucide icons by name.
|
|
715
|
-
* Useful for CMS-driven icons where names are stored as strings.
|
|
716
|
-
*/
|
|
717
|
-
function Icon({ name, fallback = "HelpCircle", ...props }) {
|
|
718
|
-
const IconComponent = ICON_MAP[name] ?? ICON_MAP[fallback] ?? lucide_react.HelpCircle;
|
|
719
|
-
return react.default.createElement(IconComponent, props);
|
|
720
|
-
}
|
|
712
|
+
//#region src/types/icon.ts
|
|
713
|
+
const ICON_NAMES = [
|
|
714
|
+
"Home",
|
|
715
|
+
"User",
|
|
716
|
+
"Settings",
|
|
717
|
+
"Mail",
|
|
718
|
+
"Bell",
|
|
719
|
+
"Calendar",
|
|
720
|
+
"Star",
|
|
721
|
+
"Heart",
|
|
722
|
+
"Bookmark",
|
|
723
|
+
"Search",
|
|
724
|
+
"Filter",
|
|
725
|
+
"Download",
|
|
726
|
+
"Upload",
|
|
727
|
+
"Trash",
|
|
728
|
+
"Edit",
|
|
729
|
+
"Plus",
|
|
730
|
+
"Minus",
|
|
731
|
+
"Check",
|
|
732
|
+
"X",
|
|
733
|
+
"ChevronRight",
|
|
734
|
+
"ChevronLeft",
|
|
735
|
+
"ChevronUp",
|
|
736
|
+
"ChevronDown",
|
|
737
|
+
"ChevronsUpDown",
|
|
738
|
+
"ArrowRight",
|
|
739
|
+
"ArrowLeft",
|
|
740
|
+
"ArrowUp",
|
|
741
|
+
"ArrowDown",
|
|
742
|
+
"File",
|
|
743
|
+
"Folder",
|
|
744
|
+
"Image",
|
|
745
|
+
"Video",
|
|
746
|
+
"Music",
|
|
747
|
+
"Lock",
|
|
748
|
+
"Unlock",
|
|
749
|
+
"Eye",
|
|
750
|
+
"EyeOff",
|
|
751
|
+
"Sun",
|
|
752
|
+
"Moon",
|
|
753
|
+
"Cloud",
|
|
754
|
+
"Zap",
|
|
755
|
+
"Activity",
|
|
756
|
+
"TrendingUp",
|
|
757
|
+
"TrendingDown",
|
|
758
|
+
"BarChart",
|
|
759
|
+
"PieChart",
|
|
760
|
+
"Database",
|
|
761
|
+
"Server",
|
|
762
|
+
"Wifi",
|
|
763
|
+
"Battery",
|
|
764
|
+
"Camera",
|
|
765
|
+
"Mic",
|
|
766
|
+
"Phone",
|
|
767
|
+
"MessageSquare",
|
|
768
|
+
"Send",
|
|
769
|
+
"Share",
|
|
770
|
+
"Link",
|
|
771
|
+
"ExternalLink",
|
|
772
|
+
"Globe",
|
|
773
|
+
"MapPin",
|
|
774
|
+
"Users",
|
|
775
|
+
"ShoppingCart",
|
|
776
|
+
"CreditCard",
|
|
777
|
+
"Package",
|
|
778
|
+
"Briefcase",
|
|
779
|
+
"Target",
|
|
780
|
+
"Flag",
|
|
781
|
+
"Clipboard",
|
|
782
|
+
"List",
|
|
783
|
+
"Grid",
|
|
784
|
+
"Layout",
|
|
785
|
+
"Layers",
|
|
786
|
+
"Copy",
|
|
787
|
+
"Save",
|
|
788
|
+
"RefreshCw",
|
|
789
|
+
"Maximize",
|
|
790
|
+
"Code",
|
|
791
|
+
"AlertCircle",
|
|
792
|
+
"Info",
|
|
793
|
+
"HelpCircle",
|
|
794
|
+
"CheckCircle",
|
|
795
|
+
"XCircle",
|
|
796
|
+
"Menu",
|
|
797
|
+
"MoreVertical",
|
|
798
|
+
"MoreHorizontal",
|
|
799
|
+
"PlayCircle",
|
|
800
|
+
"PauseCircle",
|
|
801
|
+
"LogIn",
|
|
802
|
+
"LogOut",
|
|
803
|
+
"UserPlus",
|
|
804
|
+
"UserMinus",
|
|
805
|
+
"Tag",
|
|
806
|
+
"Award",
|
|
807
|
+
"Gift",
|
|
808
|
+
"Truck",
|
|
809
|
+
"Clock",
|
|
810
|
+
"Handshake",
|
|
811
|
+
"Stethoscope",
|
|
812
|
+
"Microscope",
|
|
813
|
+
"GraduationCap",
|
|
814
|
+
"BookOpen",
|
|
815
|
+
"Building2",
|
|
816
|
+
"Trees",
|
|
817
|
+
"HeartHandshake",
|
|
818
|
+
"Brain",
|
|
819
|
+
"Lightbulb"
|
|
820
|
+
];
|
|
721
821
|
//#endregion
|
|
722
822
|
exports.ANIMATION = ANIMATION;
|
|
723
823
|
exports.CACHE = CACHE;
|
|
824
|
+
exports.CONTACT_ATTACHMENT_MIME_ALLOWLIST = CONTACT_ATTACHMENT_MIME_ALLOWLIST;
|
|
724
825
|
exports.CONTACT_SUBJECTS = CONTACT_SUBJECTS;
|
|
725
826
|
exports.CmsError = CmsError;
|
|
726
827
|
exports.HTTP_STATUS = HTTP_STATUS;
|
|
727
|
-
exports.
|
|
728
|
-
exports.
|
|
828
|
+
exports.ICON_NAMES = ICON_NAMES;
|
|
829
|
+
exports.MAX_CONTACT_ATTACHMENTS = MAX_CONTACT_ATTACHMENTS;
|
|
830
|
+
exports.MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES = MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES;
|
|
729
831
|
exports.MEDIA = MEDIA;
|
|
730
832
|
exports.PAGINATION = PAGINATION;
|
|
731
833
|
exports.SEARCH = SEARCH;
|