@stndrds/constants 0.1.0-alpha.67 → 1.0.0-alpha.102

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/dist/index.mjs CHANGED
@@ -1,3 +1,162 @@
1
+ // src/mimeTypes.ts
2
+ var IMAGE_MIME_TYPES = {
3
+ JPEG: "image/jpeg",
4
+ PNG: "image/png",
5
+ GIF: "image/gif",
6
+ WEBP: "image/webp",
7
+ SVG: "image/svg+xml",
8
+ BMP: "image/bmp",
9
+ TIFF: "image/tiff",
10
+ ICO: "image/x-icon",
11
+ HEIC: "image/heic",
12
+ HEIF: "image/heif"
13
+ };
14
+ var IMAGE_MIME_TYPES_ARRAY = Object.values(IMAGE_MIME_TYPES);
15
+ var DOCUMENT_MIME_TYPES = {
16
+ PDF: "application/pdf",
17
+ DOC: "application/msword",
18
+ DOCX: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
19
+ XLS: "application/vnd.ms-excel",
20
+ XLSX: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
21
+ PPT: "application/vnd.ms-powerpoint",
22
+ PPTX: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
23
+ ODT: "application/vnd.oasis.opendocument.text",
24
+ ODS: "application/vnd.oasis.opendocument.spreadsheet",
25
+ ODP: "application/vnd.oasis.opendocument.presentation",
26
+ RTF: "application/rtf",
27
+ TXT: "text/plain",
28
+ CSV: "text/csv",
29
+ MARKDOWN: "text/markdown"
30
+ };
31
+ var DOCUMENT_MIME_TYPES_ARRAY = Object.values(DOCUMENT_MIME_TYPES);
32
+ var ARCHIVE_MIME_TYPES = {
33
+ ZIP: "application/zip",
34
+ RAR: "application/vnd.rar",
35
+ TAR: "application/x-tar",
36
+ GZIP: "application/gzip",
37
+ "7Z": "application/x-7z-compressed",
38
+ BZ2: "application/x-bzip2"
39
+ };
40
+ var ARCHIVE_MIME_TYPES_ARRAY = Object.values(ARCHIVE_MIME_TYPES);
41
+ var AUDIO_MIME_TYPES = {
42
+ MP3: "audio/mpeg",
43
+ WAV: "audio/wav",
44
+ OGG: "audio/ogg",
45
+ AAC: "audio/aac",
46
+ FLAC: "audio/flac",
47
+ M4A: "audio/mp4",
48
+ WEBM: "audio/webm"
49
+ };
50
+ var AUDIO_MIME_TYPES_ARRAY = Object.values(AUDIO_MIME_TYPES);
51
+ var VIDEO_MIME_TYPES = {
52
+ MP4: "video/mp4",
53
+ WEBM: "video/webm",
54
+ OGG: "video/ogg",
55
+ AVI: "video/x-msvideo",
56
+ MOV: "video/quicktime",
57
+ MKV: "video/x-matroska",
58
+ FLV: "video/x-flv",
59
+ WMV: "video/x-ms-wmv",
60
+ MPEG: "video/mpeg"
61
+ };
62
+ var VIDEO_MIME_TYPES_ARRAY = Object.values(VIDEO_MIME_TYPES);
63
+ var CODE_MIME_TYPES = {
64
+ JAVASCRIPT: "text/javascript",
65
+ TYPESCRIPT: "text/typescript",
66
+ JSON: "application/json",
67
+ XML: "application/xml",
68
+ HTML: "text/html",
69
+ CSS: "text/css",
70
+ PYTHON: "text/x-python",
71
+ JAVA: "text/x-java-source",
72
+ C: "text/x-c",
73
+ CPP: "text/x-c++",
74
+ YAML: "application/x-yaml",
75
+ SQL: "application/sql"
76
+ };
77
+ var CODE_MIME_TYPES_ARRAY = Object.values(CODE_MIME_TYPES);
78
+ var FONT_MIME_TYPES = {
79
+ TTF: "font/ttf",
80
+ OTF: "font/otf",
81
+ WOFF: "font/woff",
82
+ WOFF2: "font/woff2",
83
+ EOT: "application/vnd.ms-fontobject"
84
+ };
85
+ var FONT_MIME_TYPES_ARRAY = Object.values(FONT_MIME_TYPES);
86
+ var IMAGES = IMAGE_MIME_TYPES_ARRAY;
87
+ var DOCUMENTS = DOCUMENT_MIME_TYPES_ARRAY;
88
+ var ARCHIVES = ARCHIVE_MIME_TYPES_ARRAY;
89
+ var AUDIO = AUDIO_MIME_TYPES_ARRAY;
90
+ var VIDEO = VIDEO_MIME_TYPES_ARRAY;
91
+ var CODE = CODE_MIME_TYPES_ARRAY;
92
+ var FONTS = FONT_MIME_TYPES_ARRAY;
93
+ var WEB_IMAGES = [
94
+ IMAGE_MIME_TYPES.JPEG,
95
+ IMAGE_MIME_TYPES.PNG,
96
+ IMAGE_MIME_TYPES.GIF,
97
+ IMAGE_MIME_TYPES.WEBP
98
+ ];
99
+ var OFFICE_DOCUMENTS = [
100
+ DOCUMENT_MIME_TYPES.PDF,
101
+ DOCUMENT_MIME_TYPES.DOC,
102
+ DOCUMENT_MIME_TYPES.DOCX,
103
+ DOCUMENT_MIME_TYPES.XLS,
104
+ DOCUMENT_MIME_TYPES.XLSX,
105
+ DOCUMENT_MIME_TYPES.PPT,
106
+ DOCUMENT_MIME_TYPES.PPTX
107
+ ];
108
+ var MEDIA = [...IMAGES, ...AUDIO, ...VIDEO];
109
+ var ALL_MIME_TYPES = [
110
+ ...IMAGES,
111
+ ...DOCUMENTS,
112
+ ...ARCHIVES,
113
+ ...AUDIO,
114
+ ...VIDEO,
115
+ ...CODE,
116
+ ...FONTS
117
+ ];
118
+ var isImageMimeType = (mimeType) => {
119
+ return IMAGES.includes(mimeType);
120
+ };
121
+ var isDocumentMimeType = (mimeType) => {
122
+ return DOCUMENTS.includes(mimeType);
123
+ };
124
+ var isArchiveMimeType = (mimeType) => {
125
+ return ARCHIVES.includes(mimeType);
126
+ };
127
+ var isAudioMimeType = (mimeType) => {
128
+ return AUDIO.includes(mimeType);
129
+ };
130
+ var isVideoMimeType = (mimeType) => {
131
+ return VIDEO.includes(mimeType);
132
+ };
133
+ var isCodeMimeType = (mimeType) => {
134
+ return CODE.includes(mimeType);
135
+ };
136
+
137
+ // src/aiChat.ts
138
+ var AI_CHAT_SUPPORTED_IMAGES = [
139
+ IMAGE_MIME_TYPES.JPEG,
140
+ IMAGE_MIME_TYPES.PNG,
141
+ IMAGE_MIME_TYPES.WEBP,
142
+ IMAGE_MIME_TYPES.GIF
143
+ ];
144
+ var AI_CHAT_SUPPORTED_DOCUMENTS = [
145
+ DOCUMENT_MIME_TYPES.PDF,
146
+ DOCUMENT_MIME_TYPES.DOC,
147
+ DOCUMENT_MIME_TYPES.DOCX,
148
+ DOCUMENT_MIME_TYPES.TXT,
149
+ DOCUMENT_MIME_TYPES.MARKDOWN,
150
+ DOCUMENT_MIME_TYPES.CSV
151
+ ];
152
+ var AI_CHAT_SUPPORTED_MIME_TYPES = [
153
+ ...AI_CHAT_SUPPORTED_IMAGES,
154
+ ...AI_CHAT_SUPPORTED_DOCUMENTS
155
+ ];
156
+ var AI_CHAT_ACCEPTED_TYPES = AI_CHAT_SUPPORTED_MIME_TYPES.join(",");
157
+ var AI_CHAT_MAX_FILE_SIZE = 50 * 1024 * 1024;
158
+ var AI_CHAT_MAX_FILES = 5;
159
+
1
160
  // src/attribute-icons.ts
2
161
  var DEFAULT_ATTRIBUTE_ICONS = {
3
162
  text: "text-align-left",
@@ -23,6 +182,13 @@ function getDefaultAttributeIcon(type) {
23
182
  return DEFAULT_ATTRIBUTE_ICONS[type] ?? "circle";
24
183
  }
25
184
 
185
+ // src/cn.ts
186
+ import { clsx } from "clsx";
187
+ import { twMerge } from "tailwind-merge";
188
+ function cn(...inputs) {
189
+ return twMerge(clsx(inputs));
190
+ }
191
+
26
192
  // src/colors.ts
27
193
  var COLORS = {
28
194
  // Neutral & Gray tones
@@ -960,9 +1126,6 @@ var getCountryByIso3 = (iso3) => {
960
1126
  var getAllCountries = () => {
961
1127
  return Object.values(COUNTRIES);
962
1128
  };
963
- var getCountryPhoneCode = (iso2) => {
964
- return COUNTRIES[iso2.toUpperCase()]?.phoneCode || "";
965
- };
966
1129
  var getPhoneMaxDigits = (iso2) => {
967
1130
  return COUNTRIES[iso2.toUpperCase()]?.phoneMaxDigits ?? 15;
968
1131
  };
@@ -977,6 +1140,50 @@ var isValidIso3 = (code) => {
977
1140
  (country) => country.iso3.toUpperCase() === code.toUpperCase()
978
1141
  );
979
1142
  };
1143
+ var _displayNamesCache = /* @__PURE__ */ new Map();
1144
+ function _getDisplayNames(locales) {
1145
+ const key = locales.join("\0");
1146
+ const cached = _displayNamesCache.get(key);
1147
+ if (cached !== void 0) return cached;
1148
+ try {
1149
+ const dn = new Intl.DisplayNames(locales, { type: "region" });
1150
+ _displayNamesCache.set(key, dn);
1151
+ return dn;
1152
+ } catch {
1153
+ _displayNamesCache.set(key, null);
1154
+ return null;
1155
+ }
1156
+ }
1157
+ function getCountryDisplayName(iso2, locales = ["fr", "en"]) {
1158
+ const code = iso2.toUpperCase();
1159
+ const localeList = Array.isArray(locales) ? locales : [locales];
1160
+ const displayNames = _getDisplayNames(localeList);
1161
+ if (displayNames) {
1162
+ try {
1163
+ const name = displayNames.of(code);
1164
+ if (name) return name;
1165
+ } catch {
1166
+ }
1167
+ }
1168
+ return COUNTRIES[code]?.name ?? code;
1169
+ }
1170
+ function getCountryDisplayNameByIso3(iso3, locales) {
1171
+ const country = getCountryByIso3(iso3);
1172
+ if (!country) return iso3;
1173
+ return getCountryDisplayName(country.iso2, locales);
1174
+ }
1175
+ function getSortedCountries(locale = "fr") {
1176
+ return getAllCountries().sort(
1177
+ (a, b) => getCountryDisplayName(a.iso2, locale).localeCompare(
1178
+ getCountryDisplayName(b.iso2, locale),
1179
+ locale
1180
+ )
1181
+ );
1182
+ }
1183
+ function stripTrunkPrefix(phoneNumber, trunkPrefix) {
1184
+ if (!trunkPrefix) return phoneNumber;
1185
+ return phoneNumber.startsWith(trunkPrefix) ? phoneNumber.slice(trunkPrefix.length) : phoneNumber;
1186
+ }
980
1187
 
981
1188
  // src/currencies.ts
982
1189
  var CURRENCIES = {
@@ -1140,14 +1347,13 @@ var RECOMMENDED_MAX_SIZES = {
1140
1347
  /** Large archives: 1 GB */
1141
1348
  ARCHIVE: FILE_SIZE.GB_1
1142
1349
  };
1143
- var formatBytes = (bytes, decimals = 2) => {
1144
- if (bytes === 0) return "0 B";
1350
+ function formatBytes(bytes, decimals = 2) {
1351
+ if (bytes === 0) return "0 Bytes";
1145
1352
  const k = 1024;
1146
- const dm = decimals < 0 ? 0 : decimals;
1147
- const sizes = ["B", "KB", "MB", "GB", "TB"];
1353
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB"];
1148
1354
  const i = Math.floor(Math.log(bytes) / Math.log(k));
1149
- return `${Number.parseFloat((bytes / k ** i).toFixed(dm))} ${sizes[i]}`;
1150
- };
1355
+ return `${Number.parseFloat((bytes / k ** i).toFixed(decimals))} ${sizes[i]}`;
1356
+ }
1151
1357
  var mbToBytes = (mb) => {
1152
1358
  return mb * 1024 * 1024;
1153
1359
  };
@@ -2439,180 +2645,13 @@ var ICONS = [
2439
2645
  "zero-waves",
2440
2646
  "zero"
2441
2647
  ];
2442
-
2443
- // src/mimeTypes.ts
2444
- var IMAGE_MIME_TYPES = {
2445
- JPEG: "image/jpeg",
2446
- PNG: "image/png",
2447
- GIF: "image/gif",
2448
- WEBP: "image/webp",
2449
- SVG: "image/svg+xml",
2450
- BMP: "image/bmp",
2451
- TIFF: "image/tiff",
2452
- ICO: "image/x-icon",
2453
- HEIC: "image/heic",
2454
- HEIF: "image/heif"
2455
- };
2456
- var IMAGE_MIME_TYPES_ARRAY = Object.values(IMAGE_MIME_TYPES);
2457
- var DOCUMENT_MIME_TYPES = {
2458
- PDF: "application/pdf",
2459
- DOC: "application/msword",
2460
- DOCX: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
2461
- XLS: "application/vnd.ms-excel",
2462
- XLSX: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
2463
- PPT: "application/vnd.ms-powerpoint",
2464
- PPTX: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
2465
- ODT: "application/vnd.oasis.opendocument.text",
2466
- ODS: "application/vnd.oasis.opendocument.spreadsheet",
2467
- ODP: "application/vnd.oasis.opendocument.presentation",
2468
- RTF: "application/rtf",
2469
- TXT: "text/plain",
2470
- CSV: "text/csv",
2471
- MARKDOWN: "text/markdown"
2472
- };
2473
- var DOCUMENT_MIME_TYPES_ARRAY = Object.values(DOCUMENT_MIME_TYPES);
2474
- var ARCHIVE_MIME_TYPES = {
2475
- ZIP: "application/zip",
2476
- RAR: "application/vnd.rar",
2477
- TAR: "application/x-tar",
2478
- GZIP: "application/gzip",
2479
- "7Z": "application/x-7z-compressed",
2480
- BZ2: "application/x-bzip2"
2481
- };
2482
- var ARCHIVE_MIME_TYPES_ARRAY = Object.values(ARCHIVE_MIME_TYPES);
2483
- var AUDIO_MIME_TYPES = {
2484
- MP3: "audio/mpeg",
2485
- WAV: "audio/wav",
2486
- OGG: "audio/ogg",
2487
- AAC: "audio/aac",
2488
- FLAC: "audio/flac",
2489
- M4A: "audio/mp4",
2490
- WEBM: "audio/webm"
2491
- };
2492
- var AUDIO_MIME_TYPES_ARRAY = Object.values(AUDIO_MIME_TYPES);
2493
- var VIDEO_MIME_TYPES = {
2494
- MP4: "video/mp4",
2495
- WEBM: "video/webm",
2496
- OGG: "video/ogg",
2497
- AVI: "video/x-msvideo",
2498
- MOV: "video/quicktime",
2499
- MKV: "video/x-matroska",
2500
- FLV: "video/x-flv",
2501
- WMV: "video/x-ms-wmv",
2502
- MPEG: "video/mpeg"
2503
- };
2504
- var VIDEO_MIME_TYPES_ARRAY = Object.values(VIDEO_MIME_TYPES);
2505
- var CODE_MIME_TYPES = {
2506
- JAVASCRIPT: "text/javascript",
2507
- TYPESCRIPT: "text/typescript",
2508
- JSON: "application/json",
2509
- XML: "application/xml",
2510
- HTML: "text/html",
2511
- CSS: "text/css",
2512
- PYTHON: "text/x-python",
2513
- JAVA: "text/x-java-source",
2514
- C: "text/x-c",
2515
- CPP: "text/x-c++",
2516
- YAML: "application/x-yaml",
2517
- SQL: "application/sql"
2518
- };
2519
- var CODE_MIME_TYPES_ARRAY = Object.values(CODE_MIME_TYPES);
2520
- var FONT_MIME_TYPES = {
2521
- TTF: "font/ttf",
2522
- OTF: "font/otf",
2523
- WOFF: "font/woff",
2524
- WOFF2: "font/woff2",
2525
- EOT: "application/vnd.ms-fontobject"
2526
- };
2527
- var FONT_MIME_TYPES_ARRAY = Object.values(FONT_MIME_TYPES);
2528
- var OTHER_MIME_TYPES = {
2529
- BINARY: "application/octet-stream",
2530
- FORM_DATA: "multipart/form-data",
2531
- JSON_LD: "application/ld+json",
2532
- XHTML: "application/xhtml+xml"
2533
- };
2534
- var IMAGES = IMAGE_MIME_TYPES_ARRAY;
2535
- var DOCUMENTS = DOCUMENT_MIME_TYPES_ARRAY;
2536
- var ARCHIVES = ARCHIVE_MIME_TYPES_ARRAY;
2537
- var AUDIO = AUDIO_MIME_TYPES_ARRAY;
2538
- var VIDEO = VIDEO_MIME_TYPES_ARRAY;
2539
- var CODE = CODE_MIME_TYPES_ARRAY;
2540
- var FONTS = FONT_MIME_TYPES_ARRAY;
2541
- var WEB_IMAGES = [
2542
- IMAGE_MIME_TYPES.JPEG,
2543
- IMAGE_MIME_TYPES.PNG,
2544
- IMAGE_MIME_TYPES.GIF,
2545
- IMAGE_MIME_TYPES.WEBP
2546
- ];
2547
- var OFFICE_DOCUMENTS = [
2548
- DOCUMENT_MIME_TYPES.PDF,
2549
- DOCUMENT_MIME_TYPES.DOC,
2550
- DOCUMENT_MIME_TYPES.DOCX,
2551
- DOCUMENT_MIME_TYPES.XLS,
2552
- DOCUMENT_MIME_TYPES.XLSX,
2553
- DOCUMENT_MIME_TYPES.PPT,
2554
- DOCUMENT_MIME_TYPES.PPTX
2555
- ];
2556
- var MEDIA = [...IMAGES, ...AUDIO, ...VIDEO];
2557
- var ALL_MIME_TYPES = [
2558
- ...IMAGES,
2559
- ...DOCUMENTS,
2560
- ...ARCHIVES,
2561
- ...AUDIO,
2562
- ...VIDEO,
2563
- ...CODE,
2564
- ...FONTS,
2565
- ...Object.values(OTHER_MIME_TYPES)
2566
- ];
2567
- var isImageMimeType = (mimeType) => {
2568
- return IMAGES.includes(mimeType);
2569
- };
2570
- var isDocumentMimeType = (mimeType) => {
2571
- return DOCUMENTS.includes(mimeType);
2572
- };
2573
- var isArchiveMimeType = (mimeType) => {
2574
- return ARCHIVES.includes(mimeType);
2575
- };
2576
- var isAudioMimeType = (mimeType) => {
2577
- return AUDIO.includes(mimeType);
2578
- };
2579
- var isVideoMimeType = (mimeType) => {
2580
- return VIDEO.includes(mimeType);
2581
- };
2582
- var isCodeMimeType = (mimeType) => {
2583
- return CODE.includes(mimeType);
2584
- };
2585
- var getExtensionFromMimeType = (mimeType) => {
2586
- const mimeToExt = {
2587
- // Images
2588
- "image/jpeg": "jpg",
2589
- "image/png": "png",
2590
- "image/gif": "gif",
2591
- "image/webp": "webp",
2592
- "image/svg+xml": "svg",
2593
- // Documents
2594
- "application/pdf": "pdf",
2595
- "application/msword": "doc",
2596
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "docx",
2597
- "application/vnd.ms-excel": "xls",
2598
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "xlsx",
2599
- // Archives
2600
- "application/zip": "zip",
2601
- "application/vnd.rar": "rar",
2602
- // Audio
2603
- "audio/mpeg": "mp3",
2604
- "audio/wav": "wav",
2605
- // Video
2606
- "video/mp4": "mp4",
2607
- "video/webm": "webm",
2608
- // Text
2609
- "text/plain": "txt",
2610
- "text/csv": "csv",
2611
- "application/json": "json"
2612
- };
2613
- return mimeToExt[mimeType] || null;
2614
- };
2615
2648
  export {
2649
+ AI_CHAT_ACCEPTED_TYPES,
2650
+ AI_CHAT_MAX_FILES,
2651
+ AI_CHAT_MAX_FILE_SIZE,
2652
+ AI_CHAT_SUPPORTED_DOCUMENTS,
2653
+ AI_CHAT_SUPPORTED_IMAGES,
2654
+ AI_CHAT_SUPPORTED_MIME_TYPES,
2616
2655
  ALL_MIME_TYPES,
2617
2656
  ARCHIVES,
2618
2657
  ARCHIVE_MIME_TYPES,
@@ -2645,7 +2684,6 @@ export {
2645
2684
  MEDIA,
2646
2685
  MEGABYTES,
2647
2686
  OFFICE_DOCUMENTS,
2648
- OTHER_MIME_TYPES,
2649
2687
  RECOMMENDED_MAX_SIZES,
2650
2688
  STATUS_COLORS,
2651
2689
  VIDEO,
@@ -2654,6 +2692,7 @@ export {
2654
2692
  WEB_IMAGES,
2655
2693
  bytesToGb,
2656
2694
  bytesToMb,
2695
+ cn,
2657
2696
  formatBytes,
2658
2697
  gbToBytes,
2659
2698
  getAllColors,
@@ -2664,13 +2703,14 @@ export {
2664
2703
  getColorsByGroup,
2665
2704
  getCountryByIso2,
2666
2705
  getCountryByIso3,
2667
- getCountryPhoneCode,
2706
+ getCountryDisplayName,
2707
+ getCountryDisplayNameByIso3,
2668
2708
  getCurrency,
2669
2709
  getCurrencySymbol,
2670
2710
  getDefaultAttributeIcon,
2671
- getExtensionFromMimeType,
2672
2711
  getPhoneMaxDigits,
2673
2712
  getPhoneTrunkPrefix,
2713
+ getSortedCountries,
2674
2714
  isArchiveMimeType,
2675
2715
  isAudioMimeType,
2676
2716
  isCodeMimeType,
@@ -2682,5 +2722,6 @@ export {
2682
2722
  isValidIso3,
2683
2723
  isVideoMimeType,
2684
2724
  isWithinSizeLimit,
2685
- mbToBytes
2725
+ mbToBytes,
2726
+ stripTrunkPrefix
2686
2727
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stndrds/constants",
3
- "version": "0.1.0-alpha.67",
3
+ "version": "1.0.0-alpha.102",
4
4
  "description": "Currency and country data with ISO codes",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -15,6 +15,10 @@
15
15
  "files": [
16
16
  "dist"
17
17
  ],
18
+ "dependencies": {
19
+ "clsx": "^2.1.1",
20
+ "tailwind-merge": "^2.6.0"
21
+ },
18
22
  "devDependencies": {
19
23
  "@vitest/coverage-v8": "^2.1.9",
20
24
  "@vitest/ui": "^2.1.9",