@crayonscodetech/cms-sdk 1.0.7 → 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 +159 -26
- package/dist/index.cjs +300 -195
- package/dist/index.d.cts +173 -64
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +173 -64
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +297 -171
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -17
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 ? __defProp(target, "default", {
|
|
20
|
-
value: mod,
|
|
21
|
-
enumerable: true
|
|
22
|
-
}) : target, mod));
|
|
23
|
-
//#endregion
|
|
24
|
-
let react = require("react");
|
|
25
|
-
react = __toESM(react);
|
|
26
|
-
let lucide_react = require("lucide-react");
|
|
27
2
|
//#region src/constants/pageTypes.ts
|
|
28
3
|
const pageTypes = [
|
|
29
4
|
"home",
|
|
@@ -103,9 +78,24 @@ const MEDIA = {
|
|
|
103
78
|
".webm",
|
|
104
79
|
".ogg"
|
|
105
80
|
],
|
|
106
|
-
MAX_IMAGE_SIZE:
|
|
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,31 +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
|
}
|
|
146
|
+
if (response.status === 204) return null;
|
|
154
147
|
const result = await response.json();
|
|
155
148
|
return result.data ?? result;
|
|
156
149
|
} catch (error) {
|
|
157
|
-
|
|
158
|
-
console.error(`API request error (attempt ${attempt + 1}/${retries + 1}): ${url}`, lastError);
|
|
150
|
+
if (error instanceof CmsError) throw error;
|
|
159
151
|
if (attempt < retries) {
|
|
160
152
|
await sleep(Math.pow(2, attempt) * 1e3);
|
|
161
153
|
continue;
|
|
162
154
|
}
|
|
155
|
+
throw new CmsError(`Request failed: ${error instanceof Error ? error.message : String(error)}`, void 0, url);
|
|
163
156
|
}
|
|
164
|
-
|
|
165
|
-
}
|
|
166
|
-
async function cmsFetchPaginated(endpoint, options = {}
|
|
167
|
-
const emptyResponse = {
|
|
168
|
-
data: [],
|
|
169
|
-
pagination: {
|
|
170
|
-
page: 1,
|
|
171
|
-
limit: PAGINATION.DEFAULT_LIMIT,
|
|
172
|
-
total: 0
|
|
173
|
-
}
|
|
174
|
-
};
|
|
157
|
+
throw new CmsError(`Request failed after ${retries + 1} attempts`, void 0, url);
|
|
158
|
+
}
|
|
159
|
+
async function cmsFetchPaginated(endpoint, options = {}) {
|
|
175
160
|
const url = `${baseUrl}${endpoint}`;
|
|
176
|
-
const { revalidate = CACHE.NO_CACHE, tags, ...rest } = {
|
|
161
|
+
const { revalidate = CACHE.NO_CACHE, tags, retries = 1, ...rest } = {
|
|
177
162
|
...defaultOptions,
|
|
178
163
|
...options
|
|
179
164
|
};
|
|
@@ -187,7 +172,6 @@ function createCmsClient(config) {
|
|
|
187
172
|
for (let attempt = 0; attempt <= retries; attempt++) try {
|
|
188
173
|
const response = await fetch(url, fetchConfig);
|
|
189
174
|
if (!response.ok) {
|
|
190
|
-
console.error(`API request failed: ${response.status} ${url}`);
|
|
191
175
|
if (attempt < retries && [
|
|
192
176
|
502,
|
|
193
177
|
503,
|
|
@@ -196,23 +180,31 @@ function createCmsClient(config) {
|
|
|
196
180
|
await sleep(Math.pow(2, attempt) * 1e3);
|
|
197
181
|
continue;
|
|
198
182
|
}
|
|
199
|
-
|
|
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);
|
|
200
189
|
}
|
|
201
190
|
return await response.json();
|
|
202
191
|
} catch (error) {
|
|
203
|
-
|
|
192
|
+
if (error instanceof CmsError) throw error;
|
|
204
193
|
if (attempt < retries) {
|
|
205
194
|
await sleep(Math.pow(2, attempt) * 1e3);
|
|
206
195
|
continue;
|
|
207
196
|
}
|
|
197
|
+
throw new CmsError(`Request failed: ${error instanceof Error ? error.message : String(error)}`, void 0, url);
|
|
208
198
|
}
|
|
209
|
-
|
|
199
|
+
throw new CmsError(`Request failed after ${retries + 1} attempts`, void 0, url);
|
|
210
200
|
}
|
|
211
201
|
function buildQueryString(params) {
|
|
212
202
|
const query = new URLSearchParams();
|
|
213
203
|
Object.entries(params).forEach(([key, value]) => {
|
|
214
|
-
if (value !== void 0 && value !== null)
|
|
215
|
-
|
|
204
|
+
if (value !== void 0 && value !== null) {
|
|
205
|
+
if (Array.isArray(value)) value.forEach((v) => query.append(key, String(v)));
|
|
206
|
+
else query.append(key, String(value));
|
|
207
|
+
}
|
|
216
208
|
});
|
|
217
209
|
return query.toString();
|
|
218
210
|
}
|
|
@@ -246,17 +238,12 @@ function createCmsClient(config) {
|
|
|
246
238
|
});
|
|
247
239
|
}
|
|
248
240
|
async function fetchPageByUrl(siteId, urlPath, options) {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
});
|
|
256
|
-
} catch (error) {
|
|
257
|
-
console.error(`Error in fetchPageByUrl for ${urlPath}:`, error);
|
|
258
|
-
return null;
|
|
259
|
-
}
|
|
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
|
+
});
|
|
260
247
|
}
|
|
261
248
|
function fetchAboutUs(siteId, options) {
|
|
262
249
|
return cmsFetch(`/api/public/cms/${siteId}/about-us/`, {
|
|
@@ -382,14 +369,73 @@ function createCmsClient(config) {
|
|
|
382
369
|
...options
|
|
383
370
|
});
|
|
384
371
|
}
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
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;
|
|
393
439
|
}
|
|
394
440
|
function fetchFaqs(siteId, params, options) {
|
|
395
441
|
return cmsFetchPaginated(`/api/public/cms/${siteId}/faqs/?${buildQueryString({
|
|
@@ -430,8 +476,9 @@ function createCmsClient(config) {
|
|
|
430
476
|
referrer
|
|
431
477
|
}),
|
|
432
478
|
revalidate: CACHE.NO_CACHE,
|
|
433
|
-
tags: ["redirects", "redirect-404-logs"]
|
|
434
|
-
|
|
479
|
+
tags: ["redirects", "redirect-404-logs"],
|
|
480
|
+
retries: 0
|
|
481
|
+
});
|
|
435
482
|
}
|
|
436
483
|
function fetchStoreSettings(siteId, options) {
|
|
437
484
|
return cmsFetch(`/api/public/store/${siteId}/settings/`, {
|
|
@@ -511,6 +558,7 @@ function createCmsClient(config) {
|
|
|
511
558
|
headers: { "Content-Type": "application/json" },
|
|
512
559
|
body: JSON.stringify(payload),
|
|
513
560
|
revalidate: CACHE.NO_CACHE,
|
|
561
|
+
retries: 0,
|
|
514
562
|
...options
|
|
515
563
|
});
|
|
516
564
|
}
|
|
@@ -546,6 +594,70 @@ function createCmsClient(config) {
|
|
|
546
594
|
...options
|
|
547
595
|
});
|
|
548
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
|
+
}
|
|
549
661
|
return {
|
|
550
662
|
LIST_DEFAULT_LIMIT,
|
|
551
663
|
fetchHeader,
|
|
@@ -575,6 +687,7 @@ function createCmsClient(config) {
|
|
|
575
687
|
resolveRedirect,
|
|
576
688
|
reportRedirect404,
|
|
577
689
|
submitContactForm,
|
|
690
|
+
fetchContactConfig,
|
|
578
691
|
fetchStoreSettings,
|
|
579
692
|
fetchProductCategories,
|
|
580
693
|
fetchProductBrands,
|
|
@@ -585,6 +698,7 @@ function createCmsClient(config) {
|
|
|
585
698
|
fetchCollectionDetail,
|
|
586
699
|
fetchCollectionDetailById,
|
|
587
700
|
placeOrder,
|
|
701
|
+
fetchSitemap,
|
|
588
702
|
fetchSitemapBlogs,
|
|
589
703
|
fetchSitemapPages,
|
|
590
704
|
fetchSitemapProducts,
|
|
@@ -595,134 +709,125 @@ function createCmsClient(config) {
|
|
|
595
709
|
};
|
|
596
710
|
}
|
|
597
711
|
//#endregion
|
|
598
|
-
//#region src/
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
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
|
-
Brain: lucide_react.Brain,
|
|
708
|
-
Lightbulb: lucide_react.Lightbulb
|
|
709
|
-
};
|
|
710
|
-
/**
|
|
711
|
-
* Dynamic Icon component that renders Lucide icons by name.
|
|
712
|
-
* Useful for CMS-driven icons where names are stored as strings.
|
|
713
|
-
*/
|
|
714
|
-
function Icon({ name, fallback = "HelpCircle", ...props }) {
|
|
715
|
-
const IconComponent = ICON_MAP[name] ?? ICON_MAP[fallback] ?? lucide_react.HelpCircle;
|
|
716
|
-
return react.default.createElement(IconComponent, props);
|
|
717
|
-
}
|
|
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
|
+
];
|
|
718
821
|
//#endregion
|
|
719
822
|
exports.ANIMATION = ANIMATION;
|
|
720
823
|
exports.CACHE = CACHE;
|
|
824
|
+
exports.CONTACT_ATTACHMENT_MIME_ALLOWLIST = CONTACT_ATTACHMENT_MIME_ALLOWLIST;
|
|
721
825
|
exports.CONTACT_SUBJECTS = CONTACT_SUBJECTS;
|
|
722
826
|
exports.CmsError = CmsError;
|
|
723
827
|
exports.HTTP_STATUS = HTTP_STATUS;
|
|
724
|
-
exports.
|
|
725
|
-
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;
|
|
726
831
|
exports.MEDIA = MEDIA;
|
|
727
832
|
exports.PAGINATION = PAGINATION;
|
|
728
833
|
exports.SEARCH = SEARCH;
|